fwknop - dostęp do chronionych zasobów

Sun 16 May 2010 by admin

Sposobów na dostęp do chronionych zasobów jest wiele wśród nich otwarte na zewnątrz porty (sic!), dostęp realizowany przez VPN lub selektywne otwieranie portów na żądanie. Ten ostatni sposób postaram się dzisiaj przedstawić trochę szerzej.

Mowa będzie o rozwiązaniu fwknop [1], które stanowi rozwinięcie metody port-knocking. W stosunku do standardowego rozwiązania ,,odpukiwania'' określonych zamkniętych portów, fwknop wysła tylko jeden zaszyfrowany niepowtarzalny pakiet SPA. W celu wygenerowania ,,otwierającego'' pakietu SPA, musimy dodatkowo znać tajne hasło bądź posłużyć się kluczem GPG, w standardowej metodzie port-knocking wystarczyło tylko znać kombinację portów, tak samo jak wystarczyło prostym snifferem podsłuchać taką kombinację. Po pomyślnej akceptacji pakietu SPA wyłuskiwany jest adres IP nadawcy i modyfikowany jest na określony czas zestaw reguł netfilter/ipfw umożliwiając połączenie z wybraną usługą. Najczęściej stosowany jest scenariusz z ukryciem dostępu SSH, ja postaram się omówić metodę uzyskania dostępu do usługi działającej w chronionej sieci (tej samej, w której działa fwknopd).

Konfiguracja fwknopd sprowadza się do edycji dwóch plików: access.conf i fwknopd.conf.

W pierwszym pliku access.conf definiujemy dane potrzebne do uzyskania dostępu:

# dopuszczalne adresy źródłowe
SOURCE: ANY;
# otwarte porty
OPEN_PORTS: tcp/3389;
# tajne hasło
KEY: tajnehaslo;
# czas otwarcia portu
FW_ACCESS_TIMEOUT: 45;
# czy połączenie ma być forwardowane do innej maszyny
ENABLE_FORWARD_ACCESS: Y;

W drugim pliku fwknop.conf definujemy konfiguracje samego fwknopd.conf

# adres na jaki będą wysyłane powiadomienia o uzyskanym dostępie
EMAIL_ADDRESSES root@localhost;
# adres hostanme
HOSTANAME   hostame;
# linux netfilter
FIREWALL_TYPE   iptables;
# interfejs, na którym fwknop będzie nasłuchiwał pakiety SPA
PCAP_INTF   eth0;
# translacja adresów oraz adres IP fwknopd w chronionej sieci 
ENABLE_IPT_SNAT Y;
SNAT_TRANSLATE_IP   _CHANGEME_;
# włączenie trybu forward
ENABLE_IPT_FORWARDING   Y;
# forwarding w linuxie 
ENABLE_PROC_IP_FORWARD  Y;

Po stronie firewall'a chroniącego dostęp prócz otwarcia i przekierowania chronionego portu, musimy przekierować std. port udp/62201 do hosta z fwknopd.
W celu uzyskania dostępu do zdalnego pulpitu maszyny 10.0.0.3 (chroniona sieć) z poziomu klienta wydajemy polecenie:

fwknop -A tcp/3389 -F 10.0.0.3:3389 --Resolve-external-IP -D <adres_fwknopd>

nasz zew. adres IP zostanie automatycznie uzyskany bądź  możemy go zdefiniowaniu po podaniu argumentu -a
Warto w przypadku netfilter'a dodać po stronie fwknopd regułkę, do łańcucha FORWARD i INPUT przepuszczającą połączenia już istniejące (ESTABLISHED,RELATED).
Gdyż przy braku tej regułki po zdefiniowanym timeout'cie w access.conf zostaniemy rozłączeni.

Tym prostym sposobem uzyskaliśmy łatwy i w miarę bezpieczny dostęp do konkretnych zasobów chronionych w naszej sieci, bez uciekania się do dostępu VPN. Zaś użycie klucza GPG ułatwi nam definiowanie dostępu w przypadku wielu użytkowników, gdyż nie musimy się martwić zmianą hasła w przypadku wykluczenia jednego z użytkowników.

[1] http://cipherdyne.org/fwknop/


Comments