Port knocking wyjaśniony
Port knocking ukrywa usługę, dopóki ktoś nie udowodni, że zna sekret. Ten przewodnik wyjaśnia jego działanie, dwie popularne implementacje — knockd i fwknop — oraz praktyczne przyczyny nieudanego pukania.
Jak działa port knocking
Zapora odrzuca każde połączenie z chronionym portem, więc skaner nic nie widzi. Niewielki demon obserwuje ruch docierający do zapory. Gdy jeden adres źródłowy utworzy oczekiwany wzorzec, demon dodaje regułę zapory zezwalającą temu adresowi na dostęp, zwykle na krótki czas.
Wzorcem jest pukanie. W przypadku knockd jest to sekwencja prób połączenia z określonymi portami, w określonej kolejności i limicie czasu. W przypadku fwknop jest to pojedynczy zaszyfrowany pakiet.
knockd: sekwencje pukania
knockd nasłuchuje na interfejsie i dopasowuje próby połączenia do sekwencji w /etc/knockd.conf. Sekwencja może łączyć porty TCP i UDP. Po dopasowaniu knockd uruchamia polecenie — zazwyczaj regułę iptables lub nftables dla adresu pukającego (%IP%).
Ten przykład otwiera SSH dla adresu pukającego i ponownie je zamyka po 10 sekundach. Istniejące sesje SSH nadal działają, jeśli zapora akceptuje ustanowione połączenia.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Wybierz własne porty; nigdy nie używaj ponownie portów z opublikowanych przykładów. tcpflags = syn sprawia, że knockd liczy tylko pakiety z flagą SYN — pierwszy pakiet próby połączenia.
fwknop: Single Packet Authorization
fwknop zastępuje sekwencję jednym pakietem UDP szyfrowanym (AES) i uwierzytelnianym (HMAC). Serwer, fwknopd, przechwytuje go pasywnie, weryfikuje, sprawdza, czy nie jest odtworzeniem, i otwiera żądany port dla adresu zawartego w pakiecie.
Wygeneruj klucze poleceniem fwknop --key-gen i umieść je w access.conf serwera. Secret Knock importuje część kliencką z .fwknoprc.
SOURCE ANY
OPEN_PORTS tcp/22
KEY_BASE64 <output of fwknop --key-gen>
HMAC_KEY_BASE64 <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT 30 Ponieważ dozwolony adres znajduje się w zaszyfrowanym pakiecie, SPA może otworzyć port dla adresu innego niż adres wysyłający pakiet — przydatne, gdy pukasz z telefonu przez dane komórkowe, aby udostępnić dostęp laptopowi w innym miejscu.
Dlaczego pukanie nie działa
- IPv4 a IPv6: pukanie wyszło przez jedną rodzinę adresów, a SSH łączy się przez drugą. Zapora otworzyła drzwi dla adresu, którego nie używasz.
- Inny adres publiczny: przy danych komórkowych, za NAT operatora lub VPN serwer widzi inny IP, niż się spodziewasz. Sprawdź adres, z którego pukasz.
- Ponownie wysyłane SYN: jeśli pukanie TCP nie otrzyma odpowiedzi, system operacyjny klienta wysyła ten sam SYN ponownie. W naszych testach knockd 0.8 resetował sekwencję po takim powtórzonym SYN, dlatego klient musi wysłać każde pukanie tylko raz i szybko zakończyć próbę.
- Czas: pukania, które docierają poza seq_timeout lub w niewłaściwej kolejności, rozpoczynają sekwencję od nowa.
- Urządzenia pośredniczące: niektóre sieci blokują lub modyfikują ruch do nietypowych portów, dlatego pukanie działające w domu może nie działać w sieci hotelowej lub biurowej.
Czy to jest bezpieczne?
Sekwencja knockd jest wysyłana bez szyfrowania; każda osoba mogąca obserwować ruch może ją odtworzyć. Używaj jej do ukrywania usługi przed skanerami, przed kluczami SSH — nie zamiast nich. fwknop SPA eliminuje tę lukę dzięki szyfrowaniu, HMAC i ochronie przed odtworzeniem oraz jest lepszym wyborem, gdy ruch może być obserwowany.
Pukanie z iPhone’a, Maca i zegarka Apple Watch
Secret Knock wysyła sekwencje knockd i pakiety fwknop SPA z iPhone’a, iPada i Maca, sprawdza, czy port odpowiada, i otwiera aplikację SSH. Apple Watch puka przez sparowanego iPhone’a, ponieważ watchOS nie pozwala aplikacjom wysyłać surowych pakietów TCP lub UDP; poza zasięgiem iPhone’a może wysyłać SPA przez HTTP do serwerów, które na to zezwalają.
Przewodniki dotyczące Twojej konfiguracji
- knockd na iPhone’a, iPada i Maca →
- fwknop SPA na iPhonie, Macu i Apple Watch →
- Pukanie portami MikroTik →
- Pukanie do portów DrayTek Vigor →
- Ukryj SSH za port knockingiem →
- Port knocking na Apple Watch →
- Dlaczego zapukanie nie otwiera portu →
- Przykłady knockd.conf →
- konfiguracja serwera fwknop →
- Port knocking, VPN czy fail2ban? →
Trzymaj drzwi zamknięte. Noś pukanie ze sobą.
Secret Knock wkrótce pojawi się w App Store na iPhone’a, iPada, Maca i zegarek Apple Watch.
Secret Knock →