Pukanie do portu
W sieciach komputerowych pukanie do portów to metoda zewnętrznego otwierania portów w zaporze ogniowej poprzez generowanie próby połączenia na zestawie wcześniej określonych zamkniętych portów. Po odebraniu prawidłowej sekwencji prób połączenia reguły zapory są dynamicznie modyfikowane, aby umożliwić hostowi, który wysłał połączenie, próbę połączenia się przez określone porty. wariant zwany autoryzacją pojedynczego pakietu (SPA), w którym potrzebne jest tylko jedno „puknięcie” składające się z zaszyfrowanego pakietu .
Podstawowym celem pukania do portów jest uniemożliwienie atakującemu przeskanowania systemu w poszukiwaniu usług, które mogą zostać wykorzystane, poprzez wykonanie skanowania portów , ponieważ jeśli osoba atakująca nie wyśle prawidłowej sekwencji pukania, chronione porty będą wyglądać na zamknięte.
Przegląd
Pukanie do portów jest zwykle realizowane poprzez skonfigurowanie demona tak, aby obserwował plik dziennika zapory sieciowej pod kątem prób połączeń z określonymi punktami, a następnie odpowiednio modyfikował konfigurację zapory. [ potrzebne źródło ] Można to również wykonać na poziomie jądra (przy użyciu filtru pakietów na poziomie jądra, takiego jak iptables ) lub za pomocą procesu przestrzeni użytkownika sprawdzającego pakiety na wyższym poziomie (przy użyciu interfejsów przechwytywania pakietów, takich jak pcap ), umożliwiając użycie już „otwarte” porty TCP, które mają być użyte w sekwencji pukania.
Samo „pukanie” do portu jest podobne do tajnego uzgadniania i może składać się z dowolnej liczby pakietów TCP , UDP , a czasami nawet ICMP i innych protokołów kierowanych do ponumerowanych portów na maszynie docelowej. Złożoność pukania może być dowolna, od prostej uporządkowanej listy (np. port TCP 1000, port TCP 2000, port UDP 3000) do złożonego, zależnego od czasu, zaszyfrowanego skrótu opartego na źródłowym adresie IP i innych czynnikach.
Demon portknock na komputerze zapory nasłuchuje pakietów na określonych portach (albo poprzez dziennik zapory, albo poprzez przechwytywanie pakietów). Użytkownik klienta będzie miał przy sobie dodatkowe narzędzie, które może być tak proste, jak netcat lub zmodyfikowany program ping, lub tak skomplikowane, jak pełny generator skrótu, i użyje go przed próbą połączenia się z maszyną w zwykły sposób.
Większość portknoków to systemy stanowe w tym sensie, że jeśli pierwsza część „puknięcia” została odebrana pomyślnie, niepoprawna druga część uniemożliwi zdalnemu użytkownikowi kontynuację i w rzeczywistości nie dałaby mu żadnej wskazówki co do tego, jak daleko sekwencja, w której ponieśli porażkę. Zwykle jedyną oznaką awarii jest to, że pod koniec sekwencji stukania port, który ma być otwarty, nie zostaje otwarty. Żadne pakiety nie są wysyłane do użytkownika zdalnego w żadnym momencie.
Chociaż ta technika zabezpieczania dostępu do zdalnych demonów sieciowych nie została powszechnie przyjęta przez społeczność zajmującą się bezpieczeństwem, była aktywnie wykorzystywana w wielu rootkitach jeszcze przed rokiem 2000. [ potrzebne źródło ]
Korzyści
Pokonanie ochrony przed pukaniem do portów wymaga ataków brutalną na dużą skalę, aby odkryć nawet proste sekwencje. Anonimowy atak brute-force na TCP składającą się z trzech kliknięć (np. port 1000, 2000, 3000) wymagałby od osoby atakującej przetestowania każdej kombinacji trzech portów w zakresie 1–65535, a następnie przeskanowania każdego portu pomiędzy atakami w celu wykrycia wszelkich zmian w porcie dostęp do systemu docelowego. Ponieważ pukanie do portów jest z definicji stanowe, żądany port nie zostanie otwarty, dopóki poprawna sekwencja numerów trzech portów nie zostanie odebrana we właściwej kolejności i bez otrzymania innych pakietów pośredniczących ze źródła. Przeciętny przypadek scenariusz wymaga około 141 bilionów (65535 3/2 ) pakietów, aby określić poprawny numer trzech portów. Technika ta, w połączeniu z dłuższymi lub bardziej złożonymi sekwencjami i skrótami kryptograficznymi, ograniczającymi próby pukania, sprawia, że pomyślne próby dostępu do portów są niezwykle trudne.
Po dostarczeniu pomyślnej sekwencji pukania do portu w celu otwarcia portu , reguły zapory zazwyczaj otwierają port tylko dla adresu IP , który dostarczył prawidłowe pukanie, dodając dynamiczną funkcjonalność do zachowania zapory. Zamiast korzystać ze wstępnie skonfigurowanej białej listy statycznych adresów IP na zaporze, autoryzowany użytkownik znajdujący się w dowolnym miejscu na świecie będzie mógł otworzyć dowolny niezbędny port bez pomocy administratora serwera. System można również skonfigurować tak, aby umożliwiał uwierzytelnionemu użytkownikowi ręczne zamknięcie portu po zakończeniu sesji lub automatyczne zamknięcie portu przy użyciu mechanizmu przekroczenia limitu czasu. Aby ustanowić nową sesję, użytkownik zdalny będzie musiał dokonać ponownego uwierzytelnienia przy użyciu prawidłowej sekwencji.
Stanowe zachowanie pukania portów umożliwia kilku użytkownikom z różnych źródłowych adresów IP jednoczesne korzystanie z różnych poziomów uwierzytelniania portów, umożliwiając legalnemu użytkownikowi przejście przez zaporę z prawidłową sekwencją pukania, podczas gdy sama zapora jest w trakcie ataku na port z wiele adresów IP (zakładając, że przepustowość zapory nie jest całkowicie wykorzystana). Z każdego innego atakującego adresu IP porty zapory będą nadal wyglądać na zamknięte.
Używanie skrótów kryptograficznych w sekwencji pukania portu chroni przed wąchaniem pakietów pomiędzy maszyną źródłową a maszyną docelową, uniemożliwiając wykrycie sekwencji pukania portu lub wykorzystanie informacji do tworzenia ataków polegających na powtarzaniu ruchu w celu powtórzenia wcześniejszych sekwencji pukania na portach.
Pukanie do portów jest wykorzystywane jako część strategii głębokiej obrony. Nawet jeśli atakującemu uda się uzyskać dostęp do portu, nadal działają inne mechanizmy bezpieczeństwa portów wraz z przypisanymi mechanizmami uwierzytelniania usług na otwartych portach.
Implementacja tej techniki jest prosta i wymaga użycia co najmniej skryptu powłoki na serwerze oraz pliku wsadowego systemu Windows lub narzędzia wiersza poleceń na kliencie. Narzut zarówno na serwerze, jak i na kliencie w zakresie ruchu, zużycia procesora i pamięci jest minimalny. Kodowanie demonów blokowania portów nie jest skomplikowane; każdy rodzaj luki w kodzie jest oczywisty i możliwy do sprawdzenia.
System blokowania portów zaimplementowany na portach takich jak SSH pozwala uniknąć problemu ataków brutalną siłą na loginy. W przypadku SSH demon SSH nie jest aktywowany bez prawidłowego pukania do portu, a atak jest filtrowany przez stos TCP/IP , a nie przy użyciu zasobów uwierzytelniania SSH. Dla atakującego demon jest niedostępny, dopóki nie zostanie dostarczone prawidłowe pukanie do portu.
Względy bezpieczeństwa
Port knocking to elastyczny, konfigurowalny dodatek systemowy. Jeśli administrator zdecyduje się powiązać sekwencję pukania z działaniem, takim jak uruchomienie skryptu powłoki, do skryptu można łatwo włączyć inne zmiany, takie jak wdrożenie dodatkowych reguł zapory sieciowej w celu otwarcia portów dla określonych adresów IP. Jednoczesne sesje są łatwe do dostosowania.
Stosowanie strategii takich jak długość dynamiczna i pula długości może zmniejszyć prawdopodobieństwo włamania się do sekwencji pukania niemal do zera.
Oprócz ograniczania ataków typu brute-force na hasła i nieuniknionego wzrostu liczby dzienników powiązanych z demonem procesu, pukanie do portów chroni również przed exploitami wykorzystującymi luki w zabezpieczeniach protokołu. Jeśli zostanie wykryty exploit, który może zagrozić demonowi w jego domyślnej konfiguracji, użycie pukania portów na porcie nasłuchującym zmniejsza możliwość naruszenia bezpieczeństwa do czasu aktualizacji oprogramowania lub procesu. Autoryzowani użytkownicy będą nadal obsługiwani, jeśli podają prawidłową sekwencję pukania, a próby dostępu losowego będą ignorowane.
Pukanie portów należy postrzegać jedynie jako część ogólnej strategii obrony sieci zapewniającej ochronę przed przypadkowymi i ukierunkowanymi atakami, a nie jako kompletne, samodzielne rozwiązanie.
W przeszłości specjaliści ds. bezpieczeństwa sieci w dużej mierze ignorowali opcję blokowania portów jako rozwiązanie, ponieważ wczesne wdrożenia polegały wyłącznie na zapewnieniu prawidłowych kombinacji portów w celu uzyskania dostępu. Nowoczesne systemy blokowania portów obejmują takie funkcje, jak bezpieczne skróty kryptograficzne, czarne i białe listy oraz dynamiczne reakcje na ataki, aby jeszcze bardziej zwiększyć możliwości systemu. Pukanie do portów to skuteczny sposób maksymalizacji zasobów serwera w sieciach internetowych. [ potrzebne źródło ]
Prawidłowo zaimplementowane pukanie do portów nie obniża ogólnego bezpieczeństwa systemu. Jest to skuteczny środek zapewniający dodatkową warstwę bezpieczeństwa przy minimalnym obciążeniu zasobów serwera. W najgorszym przypadku systemy takie jak przebijanie portów wprowadzają nowe problemy związane z bezpieczeństwem w wyniku złego wdrożenia lub ujawniają ambiwalentne podejście administracji w sytuacjach takich jak kompensacja ryzyka . [ potrzebne źródło ]
Niedogodności
Pukanie do portów jest całkowicie zależne od niezawodności demona pukania do portów. Awaria demona spowoduje odmowę dostępu do portu wszystkim użytkownikom, a z punktu widzenia użyteczności i bezpieczeństwa jest to niepożądany pojedynczy punkt awarii . Nowoczesne implementacje pukania do portów łagodzą ten problem, udostępniając demona monitorowania procesów, który ponownie uruchamia proces demona pukania do portów, który zakończył się niepowodzeniem lub został zatrzymany.
Systemy, które nie używają skrótów kryptograficznych, są podatne na ataki polegające na fałszowaniu adresów IP . Ataki te, będące formą odmowy usługi , wykorzystują funkcję blokowania portów w celu zablokowania znanych adresów IP (np. stacji zarządzania administratorami) poprzez wysyłanie pakietów ze sfałszowanym adresem IP do losowych portów. Serwery korzystające z adresowania statycznego są szczególnie podatne na tego typu ataki typu „odmowa usługi”, ponieważ ich adresy są dobrze znane.
Pukanie portów może być problematyczne w sieciach charakteryzujących się dużymi opóźnieniami. Pukanie do portów zależy od pakietów przychodzących we właściwej kolejności, aby uzyskać dostęp do zaprojektowanej funkcjonalności. Z drugiej strony protokół TCP/IP został zaprojektowany do działania poprzez łączenie nieuporządkowanych pakietów w spójny komunikat. W takich sytuacjach jedynym rozwiązaniem jest kontynuowanie przez klienta okresowego ponownego wysyłania prawidłowej sekwencji pakietów do czasu potwierdzenia tej sekwencji przez serwer.
Pukanie do portów nie może być używane jako jedyny mechanizm uwierzytelniania serwera. Z punktu widzenia bezpieczeństwa proste pukanie do portów opiera się na bezpieczeństwie poprzez zaciemnienie ; niezamierzona publikacja sekwencji pukania oznacza kompromis dla wszystkich urządzeń obsługujących sekwencję. Co więcej, pukanie do niezaszyfrowanych portów jest podatne na podsłuchiwanie pakietów. Ślad sieci o odpowiedniej długości może wykryć prawidłową sekwencję pukania z pojedynczego adresu IP, zapewniając w ten sposób mechanizm nieautoryzowanego dostępu do serwera, a co za tym idzie, podłączonej sieci. Po naruszeniu bezpieczeństwa pliki dziennika na urządzeniu są źródłem innych prawidłowych sekwencji stukania, ujawniających kolejny punkt awarii. Rozwiązania takie jak traktowanie każdej sekwencji pukania jako a hasło jednorazowe mija się z celem uproszczonej administracji. W praktyce pukanie do portów musi być połączone z innymi formami uwierzytelniania, które nie są podatne na „replay” lub „man-in-the-middle”, aby cały system był skuteczny.
Linki zewnętrzne
- SilentKnock: praktyczne, niewykrywalne uwierzytelnianie
- Praca magisterska „Analiza pukania do portów i autoryzacji pojedynczych pakietów” autorstwa Sebastiena Jeanquiera
- Praca dyplomowa „Wdrożenie systemu pukania do portów w języku C” autorstwa Matta Doyle'a.
- Lista zasobów o PK i SPA (artykuły, wdrożenia, prezentacje...)
- PortKnocking — system tajnego uwierzytelniania na zamkniętych portach. (archiwum)
- Linux Journal: Pukanie do portów (2003)
- Krytyka pukania do portu (2004)
- fwknop: Implementacja łącząca pukanie do portów i pasywne pobieranie odcisków palców systemu operacyjnego
- WebKnock: internetowy klient Port Knock i Single Packet Authorization (SPA) oparty na fwknop
- webknocking: używanie stron internetowych zamiast portów.
- Pukanie do portów w celu ukrycia backdoora Pukanie do portów w celu ukrycia kanału komunikacyjnego dla złośliwego oprogramowania, na przykład z środowiska naturalnego
- Techniki lekkiego ukrywania i uwierzytelniania w sieciach IP (2002)