6Aug

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

Pokazaliśmy ci, jak zdalnie uruchomić WOL przez "Port Knocking" na routerze. W tym artykule pokażemy, jak z niego korzystać, aby chronić usługę VPN.

Image autor: Aviad Raviv &bfick.

Wstęp

Jeśli korzystasz 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.
Pamiętaj również, że wadą implementacji tego jest to, że gdy dowolny klient / klienci VPN chcą się połączyć, będą musieli wywołać sekwencję knock przed i jeśli nie mogą ukończyć sekwencji z jakiejkolwiek przyczyny,w ogóle nie będzie można nawiązać połączenia VPN.

Omówienie

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, ponieważ w ten sposób komunikacja jest filtrowana na większości nowoczesnych dystrybucji Linuksa / GNU, a w 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 &Zalecenia

  • Zakłada się / wymagane jest posiadanie routera DD-WRT z włączoną opkg.
  • Zakłada się / wymagane, że wykonałeś już czynności opisane w przewodniku "Jak zapukać w sieć( DD-WRT)".
  • Zakłada się pewną znajomość sieci.

Pozwala się złamać.

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, gdzie będziemypokaż tylko jak go używać 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 interfejsu GUI DD-WRT:

  • Przejdź do "Administracja" - & gt;"Polecenia".
  • W polu tekstowym wpisz poniższy "kod":

    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 "Save Firewall".
  • Zrobione.

Co to za polecenie "Voodoo"?

Powyższe polecenie "voodoo magic" wykonuje następujące czynności:

  • Wyszukuje, 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 ona znajdować się tuż poniżej tej linii i B. Ważne jest, aby nasz cel polegał na umożliwieniu już ustanowionych sesji VPN do życia popukanie.
  • 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 stworzyć nową sekwencję wyzwalania, która umożliwi tworzenie nowych połączeń VPN.Aby to zrobić, edytuj plik knockd.conf, wydając terminal:

vi /opt/etc/ knockd.conf

Dołącz do istniejącej konfiguracji:

[enable-VPN]
sequence = 02,02,02,01,01,01,2010,2010,2010
seq_timeout = 60
start_command = iptables -I INPUT 1 -s% IP% -p tcp --dport 1723 -j ACCEPT
cmd_timeout = 20
stop_command = iptables -D INPUT -s% IP% -ptcp --dport 1723 -j AKCEPTUJ

Ta konfiguracja:

  • Ustaw okno możliwości ukończenia sekwencji, do 60 sekund.(Zaleca się, aby było to możliwie jak najkrótsze)
  • Posłuchaj sekwencji trzech uderzeń na portach 2, 1 i 2010( ta kolejność jest celowa, aby wyrzucić skanery portów poza ścieżkę).
  • 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).
  • Odczekaj 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".

Autor wskazówki

Podczas gdy powinieneś być cały zestaw, istnieje 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.
  • Podczas gdy na temat Androida, nie zapominaj, że jest 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ć używana praktycznie w 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ć, będziesz potrzebował uzyskać funkcjonalność poczty e-mail na routerze, który obecnie tak naprawdę 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?