Cel: bramka VPN na IPSec dla laboratorium. Bramkę udało się postawić po dłuższej walce ze strongswanem 4.2 – była ona dłuższa z powodu dotychczasowej niedużej wiedzy na temat budowy i funkcjonowania protokołu IPSec. Ale w końcu ruszyła. Horror i wyrywanie włosów z głowy rozpoczęło się przy próbie podłączenia klienta Windows… w końcu owocne, ale dostać można było szewskiej pasji…
Bo klient na Linuksie – znowuż strongswan – poszedł względnie szybko. Obsługuje on zarówno IKEv1 jak i IKEv2. To działa, jest szeroko konfigurowalne i debugowalne – da się w tym połapać. Początkowo z wersją 1 miałem problem – ale to tylko niedpopatrzenie reguł firewalla (obok reguły dla ruchu UDP na porty 500 i 4500 musi być i reguła dla protokołu ESP… ciemny jestem
).
Skoro IKEv1 zaskoczyło… to można było przystąpić do poprawnej konfiguracji IPSec na Windows XP. Bo jak wiadomo implementacja Microsoftu jest porąbana:
- obsługuje tylko IKEv1
- ogólnie Microsoft wspiera i zachęca do używania IPSec/L2TP (to można bez trudu standardowo wyklikać; VPN na czystym IPSec to mordęga… czemu? bo Microsoft IPSec dla połączeń typu bramka-road warrior uważa za „niebezpieczny”… WTF?)
Bardzo dużo informacji można znaleźć na stronie Jacco’s networking stuff – generalnie opisuje on konfigurację IPSec//L2TP, ale wspomina i o alternatywnych rozwiązaniach. A w przypadku połączeń VPN bazujących tylko na protokole IPSec można to zrobić korzystając z:
- ręcznego wyklikania reguł zabezpieczeń IP (przystawki mmc) – co jest chorym pomysłem;
- użyć otwartego ipsec.exe Marcus Müllera (poradnik Nate Carlsona) – co nie obsługuje przypadków z wirtualnym IP po stronie klienta;
- użyć darmowego Shrew Soft VPN Client for Windows z GUI – który obsługuje wszystko co nam potrzeba: wirtualny IP dla road-warriora, PFS, różne metody szyfrowania.
Zdecydowanie polecam trzecią opcję (Shrew Soft VPN Client), bo da się wszystko wyklikać, co dla zwykłego usera jest ważne. Jedyny zonk, to konieczność ręcznego wybrania grupy 5 dla PFS oraz wpisania zdalnej sieci (czyli LAN po stronie bramki) zamiast bazowania na tym co bramka przyśle.
Na koniec wycinek konfiguracji ipsec.conf:
ca %default
cacert=ca_cert.pem
conn %default
left=bramka_ip
leftid="C=PL, ... itp. itd."
leftsubnet=192.168.1.0/24
leftcert=bramka_cert.pem
auto=add
conn kozik
right=%any
rightid="C=PL, ... CN=kozik@kozik_lap, E=kozik@kozik_lap"
auto=add
rightsourceip=192.168.5.10
kozik
