Port knocking forklaret
Port knocking holder en tjeneste usynlig, indtil nogen beviser, at de kender en hemmelighed. Denne guide beskriver, hvordan det virker, de to almindelige implementeringer — knockd og fwknop — og hvorfor bank mislykkes i praksis.
Sådan fungerer port knocking
Firewallen afviser enhver forbindelse til den beskyttede port, så en scanner intet ser. En lille dæmon overvåger trafikken, der rammer firewallen. Når én kildeadresse frembringer det forventede mønster, tilføjer dæmonen en firewallregel, der tillader den adresse, normalt i kort tid.
Mønsteret er banket. Med knockd er det en sekvens af forbindelsesforsøg til bestemte porte i en bestemt rækkefølge og inden for en tidsgrænse. Med fwknop er det en enkelt krypteret pakke.
knockd: banksekvenser
knockd lytter på en grænseflade og sammenligner forbindelsesforsøg med sekvenserne i /etc/knockd.conf. En sekvens kan kombinere TCP- og UDP-porte. Når den matcher, kører knockd en kommando — typisk en iptables- eller nftables-regel for den bankende adresse (%IP%).
Dette eksempel åbner SSH for den bankende adresse og lukker igen efter 10 sekunder. Eksisterende SSH-sessioner fortsætter, hvis din firewall accepterer etablerede forbindelser.
[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 Vælg dine egne porte; genbrug aldrig porte fra offentliggjorte eksempler. tcpflags = syn får knockd til kun at tælle pakker med SYN-flaget — den første pakke i et forbindelsesforsøg.
fwknop: Single Packet Authorization
fwknop erstatter sekvensen med én UDP-pakke, der er krypteret (AES) og godkendt (HMAC). Serveren, fwknopd, opfanger den passivt, verificerer den, kontrollerer, at den ikke er en genafspilning, og åbner den anmodede port for adressen i pakken.
Opret nøgler med fwknop --key-gen, og læg dem i serverens access.conf. Secret Knock importerer klientsiden fra din .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 Da den tilladte adresse følger med i den krypterede pakke, kan SPA åbne en port for en anden adresse end den, der sender pakken — nyttigt når du banker fra en telefon på mobildata for en bærbar computer et andet sted.
Hvorfor bank mislykkes
- IPv4 kontra IPv6: Banket blev sendt via én adressefamilie, og SSH forbindes via den anden. Firewallen åbnede døren for en adresse, du ikke bruger.
- En anden offentlig adresse: På mobildata, bag operatør-NAT eller en VPN ser serveren en anden IP, end du forventer. Kontroller adressen, du banker fra.
- Genudsendte SYN'er: Hvis et TCP-bank ikke besvares, sender klientens operativsystem samme SYN igen. I vores test nulstillede knockd 0.8 sekvensen ved en sådan gentaget SYN, så en klient skal sende hvert bank én gang og stoppe forsøget hurtigt.
- Timing: Bank, der ankommer uden for seq_timeout eller i forkert rækkefølge, starter sekvensen forfra.
- Mellemliggende netværksudstyr: Nogle netværk blokerer eller omskriver trafik til usædvanlige porte, så et bank, der virker hjemme, kan mislykkes på et hotel- eller kontornetværk.
Er det sikkert?
En knockd-sekvens sendes ukrypteret; enhver, der kan overvåge din trafik, kan genafspille den. Brug den til at skjule en tjeneste for scannere, foran SSH-nøgler — ikke i stedet for dem. fwknop SPA lukker det hul med kryptering, HMAC og beskyttelse mod genafspilning og er det bedste valg, når din trafik kan observeres.
Bank fra iPhone, Mac og Apple Watch
Secret Knock sender knockd-sekvenser og fwknop SPA-pakker fra iPhone, iPad og Mac, kontrollerer, at porten svarer, og åbner din SSH-app. Apple Watch banker via den parrede iPhone, fordi watchOS ikke lader apps sende rå TCP- eller UDP-pakker; væk fra iPhone kan det sende SPA via HTTP til servere, der understøtter det.
Vejledninger til din opsætning
- knockd på iPhone, iPad og Mac →
- fwknop SPA på iPhone, Mac og Apple Watch →
- MikroTik-port knocking →
- DrayTek Vigor-port knocking →
- Skjul SSH bag port knocking →
- Portbankning på Apple Watch →
- Hvorfor en portbankning ikke åbner →
- knockd.conf-eksempler →
- opsætning af fwknop-server →
- Port knocking, VPN eller fail2ban? →
Hold døren lukket. Hav banket med dig.
Secret Knock kommer snart i App Store til iPhone, iPad, Mac og Apple Watch.
Secret Knock →