If-Koubou

Jak zapukać do sieci, część 2: Chroń swój VPN (DD-WRT)

Jak zapukać do sieci, część 2: Chroń swój VPN (DD-WRT) (Jak)

Pokazaliśmy ci, jak zdalnie uruchamiać 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 poprzez 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ę dominauprzednio 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żywana 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 wykonałeś już 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

Chociaż 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 dodamy skrypt "Firewall". Wykonanie tej czynności spowoduje wykonanie polecenia iptables za każdym razem, gdy zapora zostanie odświeżona, a tym samym utrzymanie naszej rozbudowy na miejscu.

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.

Co to za 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, 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 ktoś musi zredukować jeden z miejsca reguły, zamiast dodawać do niego", jest jasna.

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 na 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 wyrzucić skanery portów z toru).
  • Po wykryciu sekwencji wykonaj polecenie "polecenie_początkowe". To polecenie "iptables" umieści "zaakceptuj ruch skierowany do portu 1723, z którego pochodzą uderzenia" na górze reguł zapory ogniowej. (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 pozwala na komunikację.
To wszystko, twoja usługa VPN powinna być teraz podłączana dopiero po udanym "pukaniu".

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ć pewne fajne rzeczy. Na przykład mam knockd wysłać mi * e-mail z informacją, że sekwencja została uruchomiona i skąd.
  • Nie zapominaj, że "jest na to aplikacja" i chociaż nie jest to wspomniane w tym artykule, zachęcamy do pobrania programu kołatkowego Android StavFX.
  • W przypadku Androida nie należy zapominać, ż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 wykorzystuje port 3389 jako przykład.
Uwaga: Aby to zrobić, musisz uzyskać funkcjonalność poczty e-mail na routerze, który aktualnie nie działa, ponieważ migawka SVN pakietów opkg OpenWRT jest w rozsypce. Dlatego sugeruję użycie knockd bezpośrednio na skrzynce VPN, która umożliwia korzystanie z wszystkich opcji wysyłania wiadomości e-mail dostępnych w systemie Linux / GNU, takich jak SSMTP i sendEmail, aby wymienić tylko kilka.

Kto zakłóca mój sen?