Port knocking uitgelegd
Port knocking houdt een dienst onzichtbaar totdat iemand bewijst een geheim te kennen. Deze gids legt uit hoe het werkt, behandelt de twee veelgebruikte implementaties — knockd en fwknop — en waarom kloppen in de praktijk mislukken.
Hoe port knocking werkt
De firewall weigert elke verbinding met de beschermde poort, dus een scanner ziet niets. Een kleine daemon volgt het verkeer dat de firewall bereikt. Wanneer één bronadres het verwachte patroon produceert, voegt de daemon een firewallregel toe die dat adres toestaat, meestal voor korte tijd.
Het patroon is de klop. Met knockd is dit een reeks verbindingspogingen naar specifieke poorten in een specifieke volgorde en binnen een tijdslimiet. Met fwknop is het één versleuteld pakket.
knockd: klopreeksen
knockd luistert op een interface en vergelijkt verbindingspogingen met de reeksen in /etc/knockd.conf. Een reeks kan TCP- en UDP-poorten combineren. Bij een overeenkomst voert knockd een opdracht uit — meestal een iptables- of nftables-regel voor het kloppende adres (%IP%).
Dit voorbeeld opent SSH voor het kloppende adres en sluit het na 10 seconden weer. Bestaande SSH-sessies blijven werken als je firewall bestaande verbindingen accepteert.
[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 Kies je eigen poorten; hergebruik nooit poorten uit gepubliceerde voorbeelden. tcpflags = syn laat knockd alleen pakketten met de SYN-vlag tellen — het eerste pakket van een verbindingspoging.
fwknop: Single Packet Authorization
fwknop vervangt de reeks door één UDP-pakket dat versleuteld (AES) en geverifieerd (HMAC) is. De server, fwknopd, onderschept het passief, verifieert het, controleert of het geen herhaling is en opent de gevraagde poort voor het adres in het pakket.
Genereer sleutels met fwknop --key-gen en plaats ze in access.conf van de server. Secret Knock importeert de clientzijde vanuit je .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 Omdat het toegestane adres in het versleutelde pakket staat, kan SPA een poort openen voor een ander adres dan het adres dat het pakket verstuurt — handig wanneer je vanaf een telefoon met mobiele data klopt voor een laptop elders.
Waarom kloppen mislukken
- IPv4 versus IPv6: de klop ging via één adresfamilie en SSH maakt verbinding via de andere. De firewall opende de deur voor een adres dat je niet gebruikt.
- Een ander openbaar adres: bij mobiele data, achter carrier-NAT of een VPN ziet de server een ander IP dan je verwacht. Controleer het adres waarvandaan je klopt.
- Opnieuw verzonden SYNs: als een TCP-klop niet wordt beantwoord, verzendt het besturingssysteem van de client dezelfde SYN opnieuw. In onze tests stelde knockd 0.8 de reeks opnieuw in bij zo'n herhaalde SYN, dus een client moet elke klop één keer verzenden en de poging snel stoppen.
- Timing: kloppen die buiten seq_timeout aankomen, of in de verkeerde volgorde, starten de reeks opnieuw.
- Tussenliggende netwerkapparatuur: sommige netwerken blokkeren of herschrijven verkeer naar ongebruikelijke poorten, dus een klop die thuis werkt kan mislukken op een hotel- of kantoornetwerk.
Is het veilig?
Een knockd-reeks wordt onversleuteld verstuurd; iedereen die je verkeer kan bekijken, kan deze herhalen. Gebruik deze om een dienst voor scanners te verbergen, vóór SSH-sleutels — niet in plaats daarvan. fwknop SPA dicht dat gat met versleuteling, HMAC en bescherming tegen herhaling, en is de betere keuze wanneer je verkeer mogelijk wordt gevolgd.
Kloppen vanaf iPhone, Mac en Apple Watch
Secret Knock verstuurt knockd-reeksen en fwknop SPA-pakketten vanaf iPhone, iPad en Mac, controleert of de poort antwoordt en opent je SSH-app. Apple Watch klopt via de gekoppelde iPhone, omdat watchOS apps niet toestaat onbewerkte TCP- of UDP-pakketten te versturen; zonder iPhone in de buurt kan deze SPA via HTTP versturen naar servers die dit inschakelen.
Handleidingen voor je configuratie
- knockd op iPhone, iPad en Mac →
- fwknop SPA op iPhone, Mac en Apple Watch →
- MikroTik port knocking →
- DrayTek Vigor-port knocking →
- Verberg SSH achter port knocking →
- Port knocking op Apple Watch →
- Waarom een poortklop de deur niet opent →
- voorbeelden van knockd.conf →
- fwknop-server instellen →
- Port knocking, VPN of fail2ban? →
Houd de deur dicht. Neem de klop mee.
Secret Knock komt naar de App Store voor iPhone, iPad, Mac en Apple Watch.
Secret Knock →