Gå til innhold
Secret Knock

Port knocking forklart

Port knocking holder en tjeneste usynlig til noen beviser at de kjenner en hemmelighet. Denne veiledningen dekker hvordan det fungerer, de to vanlige implementasjonene — knockd og fwknop — og hvorfor bank mislykkes i praksis.

Slik fungerer port knocking

Brannmuren forkaster alle tilkoblinger til den beskyttede porten, så en skanner ser ingenting. En liten daemon overvåker trafikken som treffer brannmuren. Når én kildeadresse gir det forventede mønsteret, legger daemonen til en brannmurregel som tillater den adressen, vanligvis i en kort periode.

Mønsteret er banket. Med knockd er det en sekvens av tilkoblingsforsøk til bestemte porter i en bestemt rekkefølge og innen en tidsgrense. Med fwknop er det én kryptert pakke.

knockd: bankesekvenser

knockd lytter på et grensesnitt og sammenligner tilkoblingsforsøk med sekvensene i /etc/knockd.conf. En sekvens kan kombinere TCP- og UDP-porter. Når den samsvarer, kjører knockd en kommando — vanligvis en iptables- eller nftables-regel for adressen som banker (%IP%).

Dette eksempelet åpner SSH for adressen som banker og lukker den igjen etter 10 sekunder. Eksisterende SSH-økter fortsetter å fungere hvis brannmuren din godtar etablerte tilkoblinger.

[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 — åpne SSH i 10 sekunder

Velg egne porter; bruk aldri porter på nytt fra publiserte eksempler. tcpflags = syn gjør at knockd bare teller pakker med SYN-flagget — den første pakken i et tilkoblingsforsøk.

fwknop: Single Packet Authorization

fwknop erstatter sekvensen med én UDP-pakke som er kryptert (AES) og autentisert (HMAC). Serveren, fwknopd, fanger den opp passivt, bekrefter den, kontrollerer at den ikke er en gjentakelse, og åpner den forespurte porten for adressen i pakken.

Generer nøkler med fwknop --key-gen og legg dem i serverens access.conf. Secret Knock importerer klientsiden fra .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 — tillat SSH med en SPA-nøkkel

Siden den tillatte adressen følger med i den krypterte pakken, kan SPA åpne en port for en annen adresse enn den som sender pakken — nyttig når du banker fra en telefon på mobildata for en bærbar datamaskin et annet sted.

Hvorfor bank mislykkes

  • IPv4 kontra IPv6: Banket gikk ut over én adressefamilie, mens SSH kobler til over den andre. Brannmuren åpnet døren for en adresse du ikke bruker.
  • En annen offentlig adresse: På mobildata, bak operatør-NAT eller en VPN ser serveren en annen IP enn du forventer. Kontroller adressen du banker fra.
  • SYN-pakker sendt på nytt: Hvis et TCP-bank ikke besvares, sender klientens operativsystem samme SYN på nytt. I testene våre tilbakestilte knockd 0.8 sekvensen ved slik gjentatt SYN, så en klient må sende hvert bank én gang og avslutte forsøket raskt.
  • Tidspunkt: Bank som ankommer utenfor seq_timeout, eller i feil rekkefølge, starter sekvensen på nytt.
  • Mellomledd: Enkelte nettverk blokkerer eller skriver om trafikk til uvanlige porter, så et bank som virker hjemme, kan mislykkes på et hotell- eller kontornettverk.

Er det sikkert?

En knockd-sekvens sendes ukryptert; alle som kan overvåke trafikken din, kan gjenta den. Bruk den til å skjule en tjeneste for skannere, foran SSH-nøkler — ikke i stedet for dem. fwknop SPA lukker dette gapet med kryptering, HMAC og beskyttelse mot gjentakelse, og er et bedre valg når trafikken din kan bli overvåket.

Banking 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 åpner SSH-appen din. Apple Watch banker via den sammenkoblede iPhone, fordi watchOS ikke lar apper sende rå TCP- eller UDP-pakker. Når den ikke er i nærheten av iPhone, kan den sende SPA over HTTP til servere som aktiverer det.

Veiledninger for oppsettet ditt

Hold døren lukket. Ha med banket.

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

Secret Knock →