IPSec v Linuxe

IPSec v OS Linux bol implementovaný viacerými spôsobmi/knižnicami (napr. Racoon), aktuálne asi najrozšírenejší je v jadre používaný strongSwan, ktorý si ukážeme na cvičení.

Konfigurácia IPSec je sa nachádza v súbore ipsec.conf, kde sa nastavujú jednotlivé pripojenia, parametre spojenia, ako aj certifikačné autority.

Najjednoduchšie nastavenie konfigurácie /etc/ipsec.conf je:

conn OPSConnection
    left=<IP1>
    right=<IP2>
    auto=start
    authby=secret


Vopred dohodnuté kľúče sa ukladajú do súboru ipsec.secrets:

Najjednochšie nastavenie kľúčov /etc/ipsec.secrets je vo formáte:

<IP1> <IP2> : PSK "HESLO"

Medzi ďalšie možnosti patria:

<IP1> <IP2/MASKA_SIETE> : PSK 0s<BASE64>
<IP1> %any : RSA <KLUC>
%any : P12 <CERTIFIKAT>

Na prácu s IPSec môžeme použiť službu ipsec aj príkaz ipsec.

sudo ipsec start/stop/restart/status/statusall/reload/up/down/rereadsecrets
sudo service ipsec start/stop/restart/status

Po nastavenía zapnutí IPSec na oboch počítačoch môžeme vyskúšať ping. Sledovanie paketov vo Wireshark-u

Ako vidieť na zachytených paketoch, IPSec sa nepoužil. Potrebujeme ešte nastaviť Security Association, teda zapnúť spojenie nastavené v konfigurácii:

sudo ipsec up OPSConnection

Následne už ping je odosielaný cez IPSec, čo môžeme vidieť vo Wireshark-u (zapnutie IPSec na oboch počítačoch a následný ping - vidieť zobrazený aj zašifrovaný ESP paket aj dešifrovaný paket v tom istom čase): Sledovanie ESP paketov vo Wireshark-u

Po úspešnom pripojení si môžeme dať vypísať aktuálny stav podrobne príkazom sudo ipsec statusall. sudo ipsec statusall

IPSec v OS Windows

Spustíme MMC konzolu príkazom mmc (Okrem Windows Firewallu a MMC konzoly sa dá používať aj netsh). V ponuke File\Add or Remove Snap-in pridáme IPSecurity Monitor aj ÌP Security Policy Management (LocalHost). MMC Snap-ins V manažovaní politík vytvoríme novú politiku (Create IP Security Policy). Nastavíme FilterList (pre ktoré počítače to platí) aj ActionList (nastavenie - povolené, zakázané, vyžadované dohadovanie IPSec).

Samozrejme komunikáciu je nutné povoliť Firewall-i (Windows Defender\Inbound Rules). Windows Defender - Inboud Rule

Bez zapnutého IPSec ping funguje normálne (všimnite si posielanie začiatku abecedy ako dáta): Wireshark-Windows ICMP Ak zapneme IPSec iba na jednej strane, tak dostaneme chybu pripojenia: Wireshark-ISAKMP Destination Host Unreachable Pri funkčnom spojení dostaneme komunikáciu (paket ESP šifrovaný): IPSec Integrity+Encryption Wireshark-Windows ESP Pri zapnutí iba integrity sa zmení komunikácia nasledovne (paket ESP, ale dáta nešifrované): IPSec Integrity Wireshark-Windows ESP Integrity Pri integrity bez šifrovania vyzerá komunikácia takto: IPSec AH Wireshark-Windows AH

IPSec Windows <-> Linux

Po pripojení dostávame chybu No proposal (popísané chyby nájdete v Troubleshooting IPsec), teda nekompatibilitu v ponúkaných šifrovacích metódach.

Windows používa slabšie šifrovanie, a teda treba v Linux správne nastaviť ike=XXX, esp=YYY a type=ZZZ.

Ak sa nezhodne heslo, tak dostaneme chybu: Wrong PSK

Pri chybe INVALID_ID_INFORMATION ide o rozdielne nastavenie rozsahov IP (FilterList vs. left/right): Phase 2 Network Mismatch

Spojenie naviazané Windows/Linux

Naviazané spojenie v Linuxe Naviazané spojenie vo Windows Naviazané spojenie vo Wiresharku V odchytených paketoch vidno, že prvý ping neprešiel - vtedy sa len dohodlo SA.

Domáca úloha

V prípade, že v Linuxe nedostávate záznamy z aktivity IPSec, tak môžte pri zapnutí IPSec spustiť logovanie do súboru ipsec.log:

sudo ipsec start --debug-all --nofork --conf /etc/ipsec.conf &>>~/ipsec.log &

Ukončíte návratom do popredia a CTRL-C:

fg
<CTRL+C>

Na otestovanie komunikácie môžte používať ping so zaslaním jedného paketu:

  • Linux:
      ping <IP> -c 1    
  • Windows
      ping <IP> -n 1
In [ ]: