Prosty IPSec - czy to możliwe?

in

Zespół z Uniwersytetu Columbia i Microsoftu daje nową szansę protokołowi IPSec. Ich projekt ma rozwiązać jeden z głównych jego problemów czyli ogromną złożoność konfiguracji.

Protokół IPSec miał być w początkowych założeniach (przełom lat 80-tych i 90-tych) standardowym mechanizmem bezpieczeństwa dla sieci IP. Niestety, najwyraźniej został zaprojektowany bez udziału specjalistów od używalności bo już jego specyfikacja była niezwykle skomplikowana. Przez kilka lat po publikacji pierwszych wersji na początku lat 90-tych mało kto potrafił ją ogarnąć w całości i sensownie zaimplementować. Potem przez parę kolejnych lat mieliśmy problemy ze współdziałaniem różnych implementacji.

A potem okazało się że IPSec nie działa z NAT i ten niezwykle zaawansowana architektura została sprowadzona do roli niszowego protokołu do zabezpieczania ruchu między wyspecjalizowanymi szyfratorami. Dodatkowo, żeby skonfigurować prosty tunel trzeba albo przejść specjalistyczne szkolenie albo spędzić kilka wieczorów na czytaniu hermetycznej dokumentacji i zabawie w tunele testowe.

Pomysł zespołu Srivatsan, Johnson i Bellovin to stworzenie maksymalnie uproszczonego języka opisu topologii VPN (Simple-VPN), który jest następnie kompilowany na konfigurację tuneli. W różnych stopniu robią to od dawna wizardy konfiguracyjne różnych darmowych lub komercyjnych implementacji IPSec.

Simple-VPN opiera się o następujące założenia:

  • Nie używamy AH (Authentication Header), które i tak po zniesieniu ograniczeń eksportowych w 2001 roku nie ma sensu i nikt go nie używa.
  • ESP (Encapsulation Security Payload), czyli główny protokół roboczy IPSec, stosujemy w jednej konfiguracji - AES-128 w trybie CBC z ochroną autentyczności za pomocą HMAC-SHA1.
  • Zawsze używamy trybu głównego (main mode) w trybie tunelowym (tunnel mode).
  • Generalnie nie używamy szyfrowania selektywnego czyli filtrów w SPD (Security Policy Database), które pozwalają na szyfrowanie tylko ruchu na jednym wybranym porcie. Szyfrowane jest wszystko jak leci.
  • Do uwierzytelnienia są używane zawsze certyfikaty X.509. Domyślny czas ważności certyfikatu to 1 rok.

Przykład konfiguracji zapisanej w Simple-VPN:

access "direct"
type "racoon"
authgen
vpn sample {
   nodes "ubuntu" {
      host    128.59.11.1, 128.59.12.1
      gw 128.59.13.1 {
         subnet 128.59.13.0/24
      }
   }
}

Konfiguracja zapisana w ten sposób może być skompilowana do wynikowych plików przeznaczonych dla różnych systemów operacyjnych i implementacji IPSec. Kompilator jest dostępny na Sourceforge.

http://sourceforge.net/projects/simple-vpn/

Dokument opisujący założenia Simple-VPN:

https://mice.cs.columbia.edu/getTechreport.php?techreportID=1433

Comments

Comment viewing options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Select your preferred way to display the comments and click "Save settings" to activate your changes.

Parę lat temu musiałem na szybko ogarnąć tunele ipsec, zajęło mi to 15 minut. IKE to pluto, reszta to kernelowy ipsec.

Dziś używam racoon, i ten rzeczywiście jest duuuużo cięższy w konfiguracji i zrozumieniu o co tak naprawdę chodzi.

Dla miłośników ekstremu polecam konfigurację IPSec w Windows przy pomocy MMC :)

coś jak ipsec.conf w openbsd, konwertowany potem na zakręcony konfig isakmpd? ;)

W kwestii prostoty użycia IPSec (szczególnie w implementacji z Redmont) zawsze podobała mi się ta prezentacja:

http://www.openbsd.org/papers/asiabsdcon07-ipsec/index.html