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.
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):
Po úspešnom pripojení si môžeme dať vypísať aktuálny stav podrobne príkazom sudo ipsec statusall
.
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)
.
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
).
Bez zapnutého IPSec ping funguje normálne (všimnite si posielanie začiatku abecedy ako dáta): Ak zapneme IPSec iba na jednej strane, tak dostaneme chybu pripojenia: Pri funkčnom spojení dostaneme komunikáciu (paket ESP šifrovaný): Pri zapnutí iba integrity sa zmení komunikácia nasledovne (paket ESP, ale dáta nešifrované): Pri integrity bez šifrovania vyzerá komunikácia takto:
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:
Pri chybe INVALID_ID_INFORMATION
ide o rozdielne nastavenie rozsahov IP (FilterList vs. left/right):
V odchytených paketoch vidno, že prvý ping neprešiel - vtedy sa len dohodlo SA.
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:
ping <IP> -c 1
ping <IP> -n 1