Gå til indhold
Secret Knock

Hvorfor en portbankning ikke åbner døren

En bankning når enten aldrig serveren, når den i en form, som dæmonen ikke accepterer, eller åbner døren for en adresse, du ikke bruger. Gennemgå listen fra toppen — den er sorteret efter, hvor ofte hver årsag forekommer.

1. Døren åbnede for en anden adresse

Firewallen åbner porten for den kildeadresse, serveren så. Hvis du bankede over IPv6, og SSH derefter forbinder over IPv4 — eller omvendt — er døren åben for en adresse, du ikke bruger. Mobildata, operatør-NAT og VPN'er ændrer også adressen.

Sammenlign den adresse, Secret Knock viser på hjemmeskærmen ("Du banker fra …"), med adressen i serverens log, og fastlås IPv4 eller IPv6 for døren, hvis de er forskellige.

2. Pakkerne når ikke serveren

Hotel-, kontor- og mobilnetværk blokerer nogle gange usædvanlige porte, og en cloudfirewall foran serveren kan kassere pakker, før knockd eller fwknopd ser dem. Overvåg trafikken på serveren, mens du banker:

# knockd (UseSyslog): every recognised step and the command it ran
sudo journalctl -u knockd -f

# Do the packets reach the server at all? (use your interface and ports)
sudo tcpdump -ni eth0 'tcp port 7311 or tcp port 8822 or udp port 9133'

# fwknopd in the foreground with verbose output
sudo fwknopd -f -v
På serveren

3. Sekvensen ankommer i forkert form

  1. 1Genfremsendte SYN'er: Når en TCP-bankning ikke får svar, genfremsender klientens operativsystem det samme SYN. knockd 0.8 nulstiller sekvensen ved en sådan gentagelse. Secret Knock sender hver TCP-bankning som et enkelt SYN og stopper forsøget med det samme; andre klienter gør det muligvis ikke.
  2. 2Timing: Alle trin skal ankomme i rækkefølge inden for seq_timeout. Tilføj en kort forsinkelse før et trin, hvis en router undervejs omarrangerer pakker.
  3. 3Protokol: Et UDP-trin skal sendes som UDP, et TCP-trin som TCP — kontrollér hvert trin i forhold til knockd.conf.
  4. 4tcpflags = syn får knockd til at ignorere TCP-pakker uden SYN-flaget. Uden det tæller de øvrige pakker i en forbindelse til den samme port også som træffere og kan ødelægge sekvensen.

4. fwknop: nøgler, ure og gentagelser

  1. 1Begge nøgler skal matche access.conf: Rijndael-nøglen og HMAC-nøglen med samme digest (SHA-256 som standard).
  2. 2fwknopd afviser pakker, der er ældre end MAX_SPA_PACKET_AGE (120 sekunder som standard), så et enhedsur, der går meget forkert, får alle pakker til at se gamle ud.
  3. 3Hver SPA-pakke kan bruges én gang; fwknopd kasserer med vilje en gentaget pakke.
  4. 4Hvis du banker over HTTP, skal noget acceptere TCP-forbindelser på den port, ellers bliver anmodningen aldrig sendt.

5. Døren åbner, men SSH fejler stadig

  1. 1Regelrækkefølge: Reglen, som dæmonen tilføjer, skal komme før reglen, der kasserer porten — en iptables -A tilføjer efter en eksisterende DROP og matcher derfor aldrig.
  2. 2Tidsvinduet: cmd_timeout eller FW_ACCESS_TIMEOUT lukkede døren, før SSH forbandt. Forbind inden for tidsvinduet; etablerede sessioner bliver ved med at fungere, hvis din firewall accepterer etablerede forbindelser.
  3. 3Secret Knocks portkontrol efter bankningen fortæller dig, om porten overhovedet svarede, adskilt fra SSH-godkendelse.

Alle eksempler på GitHub → Alle konfigurationer på denne side, klar til kopiering: github.com/mobilcomm/secretknock-examples (public domain).

Spørgsmål

Hvordan ser jeg, hvad appen faktisk sendte?

Dørens historik viser hver bankning med tidspunkt, resultat og adressefamilie, og editoren viser den samme bankning som en terminalkommando, du kan køre fra en computer for at sammenligne.

Vejledninger til din opsætning