Gå til indhold
Secret Knock

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
/etc/knockd.conf — åbn SSH i 10 sekunder

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
/etc/fwknop/access.conf — tillad SSH med en SPA-nøgle

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

Hold døren lukket. Hav banket med dig.

Secret Knock kommer snart i App Store til iPhone, iPad, Mac og Apple Watch.

Secret Knock →