Jak zapukać do sieci, część 2 Chroń swój VPN (DD-WRT)
Pokazaliśmy, jak zdalnie wywołać WOL przez "Port Knocking" na routerze. W tym artykule pokażemy, jak z niego korzystać, aby chronić usługę VPN.
Zdjęcie autorstwa Aviad Raviv & bfick.
Przedmowa
Jeśli korzystałeś z wbudowanej funkcji DD-WRT dla VPN lub masz inny serwer VPN w swojej sieci, możesz docenić możliwość ochrony przed atakami brutalnej siły przez ukrycie go za sekwencją pukającą. W ten sposób odfiltrujesz dziecięce skrypty, które próbują uzyskać dostęp do twojej sieci. W związku z tym, jak stwierdzono w poprzednim artykule, pukanie portów nie zastępuje dobrego hasła i / lub polityki bezpieczeństwa. Pamiętaj, że przy wystarczającej cierpliwości atakujący może odkryć sekwencję i wykonać atak powtórki.
Należy również pamiętać, że wadą implementacji tego jest to, że gdy dowolny klient VPN chce się połączyć, musiałby wywołać sekwencję domina uprzednio i jeśli nie będą w stanie ukończyć sekwencji z jakiegokolwiek powodu, nie będą w stanie w ogóle nawiązać połączenia VPN.
Przegląd
W celu ochrony * usługi VPN najpierw wyłączymy wszelką możliwą komunikację z nią poprzez zablokowanie portu inicjowania 1723. Aby osiągnąć ten cel, użyjemy iptables. Dzieje się tak dlatego, że w ten sposób komunikacja jest filtrowana na większości nowoczesnych dystrybucji Linuksa / GNU, aw szczególności na DD-WRT. Jeśli chcesz uzyskać więcej informacji na temat iptables checkout jego wpis wiki, i spójrz na nasz poprzedni artykuł na ten temat. Po zabezpieczeniu usługi utworzymy sekwencję blokowania, która tymczasowo otworzy port inicjujący VPN, a także automatycznie zamknie go po skonfigurowanym czasie, zachowując jednocześnie nawiązaną już sesję VPN.
Uwaga: w tym przewodniku korzystamy z usługi PPTP VPN jako przykładu. Przy tym, ta sama metoda może być użyta dla innych typów VPN, wystarczy zmienić zablokowany port i / lub typ komunikacji.
Wymagania wstępne, założenia i zalecenia
- Zakłada się / wymagane jest posiadanie routera DD-WRT z włączoną opkg.
- Zakłada się / wymagane jest, że już wykonałeś czynności opisane w przewodniku "Jak zapukać w sieć (DD-WRT)".
- Zakłada się pewną znajomość sieci.
Do roboty.
Domyślna Zasada "Blokuj nowe VPNy" na DD-WRT
Podczas gdy poniższy fragment "kodu" prawdopodobnie działałby na każdym, szanującym się, iptables przy użyciu dystrybucji Linux / GNU, ponieważ istnieje tak wiele wariantów tam, tylko pokażemy, jak używać go na DD-WRT. Nic nie powstrzyma cię, jeśli chcesz, od implementacji bezpośrednio na skrzynce VPN. Jednak, jak to zrobić, wykracza poza zakres tego przewodnika.
Ponieważ chcemy rozszerzyć zaporę routera, logiczne jest, że dodalibyśmy ją do skryptu "Firewall". Spowoduje to, że polecenie iptables zostanie wykonane za każdym razem, gdy zapora zostanie odświeżona, dzięki czemu nasze ulepszenie będzie utrzymane.
Z web-GUI DD-WRT:
- Idź do "Administracja" -> "Polecenia".
- Wpisz poniżej "kod" w polu tekstowym:
inline = "$ (iptables -L INPUT -n | grep -n" stan ZWOLNIONE, USTAWIONE "| awk -F: 'print $ 1')"; inline = $ (($ inline-2 + 1)); iptables -I INPUT "$ inline" -p tcp --dport 1723 -j DROP
- Kliknij "Zapisz zaporę".
- Gotowe.
Czym jest to polecenie "Voodoo"?
Powyższe polecenie "magia voodoo" wykonuje następujące czynności:
- Odnajduje, gdzie znajduje się linia iptable, która umożliwia już nawiązaną komunikację. Robimy to, ponieważ A. Na routerach DD-WRT, jeśli usługa VPN jest włączona, będzie zlokalizowana tuż poniżej tej linii i B. Ważne jest, aby nasz cel polegał na umożliwieniu już ustanowionych sesji VPN do życia po pukanie.
- Odejmuje dwa (2) od wyniku polecenia listingu, aby uwzględnić przesunięcie spowodowane przez nagłówki kolumn informacyjnych. Gdy to zrobisz, dodaje jeden (1) do powyższego numeru, tak aby reguła, którą wstawiamy, nadejdzie zaraz po regule, która pozwala na już nawiązaną komunikację. Opuściłem tutaj ten bardzo prosty "problem matematyczny", aby logika "dlaczego trzeba zredukować jeden z miejsca reguły, zamiast dodawać do niej".
Konfiguracja KnockD
Musimy utworzyć nową sekwencję wyzwalania, która umożliwi tworzenie nowych połączeń VPN. Aby to zrobić, edytuj plik knockd.conf, wydając w terminalu:
vi /opt/etc/knockd.conf
Dołącz do istniejącej konfiguracji:
[włącz-VPN]
sekwencja = 02,02,02,0101,01,2010,2010,2010
seq_timeout = 60
start_command = iptables -I INPUT 1 -s% IP% -p tcp --dport 1723 -j AKCEPTUJ
cmd_timeout = 20
stop_command = iptables -D INPUT -s% IP% -p tcp --dport 1723 -j AKCEPTUJ
Ta konfiguracja:
- Ustaw okno możliwości ukończenia sekwencji, do 60 sekund. (Zaleca się, aby było to jak najkrótsze)
- Posłuchaj sekwencji trzech uderzeń na portach 2, 1 i 2010 (ta kolejność jest celowa, aby zeskanować skanery portów poza ścieżką).
- Po wykryciu sekwencji, wykonaj "polecenie_początkowe". To polecenie "iptables" umieści "zaakceptuj ruch przeznaczony do portu 1723, z którego pochodzą uderzenia" na górze reguł zapory sieciowej. (Dyrektywa% IP% jest traktowana specjalnie przez KnockD i jest zastępowana przez IP pochodzenia pukającego).
- Zaczekaj 20 sekund przed wydaniem polecenia "stop_command".
- Wykonaj "stop_command". Gdzie to polecenie "iptables" robi odwrotność powyższego i kasuje regułę, która umożliwia komunikację.
Autorwskazówki
Chociaż powinieneś być cały zestaw, jest kilka punktów, które muszę wspomnieć.
- Rozwiązywanie problemów. Pamiętaj, że jeśli masz problemy, segment "rozwiązywania problemów" na końcu pierwszego artykułu powinien być Twoim pierwszym przystankiem.
- Jeśli chcesz, możesz mieć polecenia "start / stop" wykonywać wiele poleceń, dzieląc je za pomocą semi-colen (;) lub nawet skryptu. Pozwoli ci to zrobić kilka fajnych rzeczy. Na przykład, mam knockd wysłać mi * e-mail informujący mnie, że sekwencja została uruchomiona i skąd.
- Nie zapominaj, że "jest na to aplikacja" i mimo że nie jest to wspomniane w tym artykule, zachęcamy do pobrania programu kołatkowego Android StavFX.
- Podczas gdy na temat Androida, nie zapominaj, że istnieje klient VPN PPTP zwykle wbudowany w system operacyjny od producenta.
- Metoda blokowania czegoś na początku, a następnie kontynuowania zezwolenia na już nawiązaną komunikację, może być wykorzystana w praktycznie każdej komunikacji opartej na protokole TCP. W rzeczywistości w Knockd na filmach DD-WRT 1 ~ 6, zrobiłem sobie drogę, kiedy użyłem protokołu zdalnego pulpitu (RDP), który używa portu 3389 jako przykładu.
Kto zakłóca mój sen?