IPSec
 

Pojem IPsec(IP Security Protocol) definuje přidání bezpečnostního mechanismu do standardní IP vrstvy. Bezpečnostní mechanismy, které definuje IPsec jsou dva:

 

Jak již bylo řečeno výše toto rozšíření je definováno na IP ůrovni. Je tedy nezávislé na protokolech vyšších vrstev. Aplikace nemusí podporovat žádné speciální komunikační metody, aby mohla komunikovat přes IPsec. Mohou se vytvářet šifrované tunely (VPN) nebo se může jenom šifrovat komunikace mezi dvěma počítači.

Rodina protokolů IPSec se skládá z těchto protokolů:

Implementace IPSec pro Linux - FreeS/WAN (Free Secure Wide Area Network)

FreeS/WAN implementuje protokoly ESP a AH na úrovni jádra částí nazvanou KLIPS a protokol IKE, nastavení směrování a další podpůrné služby prostřednictvím démonu Pluto.

Instalace na Debian GNU/Linux

Zde uvádíme postup instalace na strojích ve školní laboratoři (postup je shodný pro oba stroje):

  1. Nejprve jsme aktualizovali indexy zdrojů pro instalaci balíčků příkazem 
    apt-get update
     

     

  2. Instalace záplaty (patche) na OS Linux příkazem: 
    apt-get install kernel-patch-freeswan 

     

  3. Instalace zdrojů jádra příslušné verze (v našem případě 2.4.18): 
    apt-get install kernel-source-2.4.18 

     

  4. Rozbalení: 
    cd /usr/src/
    tar xvfj kernel-source-2.4.18.tar.bz2
     

     

  5. K vytvoření balíčku jsme museli doinstalovat nástroj make-kpkg: 
    apt-get install kernel-package 

     

  6. Přeložení a vytvoření balíčku: 
    cd /usr/src/kernel-source-2.4.18 
    PATCH_THE_KERNEL=YES make-kpkg --config=menuconfig --revision=ipsec1 kernel_image 


     

  7. Instalace vytvořeného jádra 
    dpkg -i /usr/src/kernel-image-2.4.18-ipsec1.deb 

     

  8. Instalace obslužných programů, konfiguračnních souborů, ... 
    apt-get install freeswan 
    Zvolili jsme automatické vygenerování klíčů „Plain RSA“ čímž mi byly jednotlivé komponenty klíče uloženy přehledně textově v šestnáctkové soustavě do souboru 
    /etc/ipsec.secrets

     

  9. Na závěr jsme upravili nastavení sítě v souboru /etc/network/options: 
    ip_forward=no 
    spoofprotect=no 
    syncookies=no 


     

  10. Úplně posledním krokem je nastavení firewallu pomocí iptables.

Konfigurační soubor ipsec.conf

Spojení mezi dvěma počítači se vytvoří přidáním sekce conn název_spojení do souboru /etc/ipsec.conf, ve které se pomocí parametrů a jejich hodnot nastaví vlastnosti spojení. Spojení mezi počítači s adresami 158.196.135.21 a 158.196.135.22 se vytvoří následovně: 

conn MicPet
            left=158.196.135.21
            right=158.196.135.22
            auth=ah
            auto=route
            leftrsasigkey=0sAQN1+...
            rightrsasigkey=0sAQNgT...

Parametry 
left a right definují IP adresy levé a pravé strany spojení.
Parametr 
auth říká, jestli se má použít protokol AH.
Parametr 
auto ovlivňuje, co se s tímto spojením bude dít při bootování systému. V tomto případě se spojení aktivuje. Parametry leftrsasigkey a rightrsasigkey
 jsou veřejné klíče levé a pravé strany spojení.

Závěr

Výsledkem našeho snažení je bezpečná komunikace mezi dvěma stroji (konkrétně 158.196.135.22 a 158.196.135.21) přes rozhraní „ipsec0“. Používá se protokol ESP, autentifikaci zajišťuje hlavička AH. Na obou stranách (levé i pravé) je soubor /etc/ipsec.conf, který obsahuje konfiguraci spojení conn. Ta je shodná pro obě strany, obsahuje mj. ip identifikace a veřejné klíče. Klíče jsme „nakopírovali“ manuálně ze souborů /etc/ipsec.secret.

Potom jsme vyzkoušeli připojit ještě jeden počítač „.17“ (158.196.135.21 a 158.196.135.17). Postup byl stejný, ale na „.21“ jsou nyní v 
ipsec.conf nakonfigurována dvě spojení conn
. (Pozn. Kdybychom chtěli tímto způsobem propojit n strojů každý s každým, znamenalo by to n(n-1)/2 konfigurací na každém z nich)

Kryptovaný přenos dat jsme otestovali zachycením paketů programem Ethereal na „cizím“ stroji, zatímco jsme přenášeli pomocí protokolu ftp textový soubor. Byly zachyceny pouze ESP pakety, které v sobě samozřejmě obsahují i datovou část ftp paketů, ovšem v zašifrované podobě.

 

ESP paket 
Výstup programu Ethereal, sledujícího rozhraní ipsec0 (zachycen ftp přenos), AH - autentifikace, ESP - šifrovaná data