Port knocking förklarat
Port knocking håller en tjänst osynlig tills någon bevisar att de känner till en hemlighet. Den här guiden beskriver hur det fungerar, de två vanliga implementeringarna — knockd och fwknop — och varför knackningar misslyckas i praktiken.
Så fungerar port knocking
Brandväggen släpper inte igenom några anslutningar till den skyddade porten, så en skanner ser ingenting. En liten demon övervakar trafiken som når brandväggen. När en källadress skapar det förväntade mönstret lägger demonen till en brandväggsregel som tillåter adressen, vanligtvis under en kort tid.
Mönstret är knackningen. Med knockd är det en sekvens av anslutningsförsök till specifika portar i en bestämd ordning och inom en tidsgräns. Med fwknop är det ett enda krypterat paket.
knockd: knackningssekvenser
knockd lyssnar på ett gränssnitt och matchar anslutningsförsök mot sekvenserna i /etc/knockd.conf. En sekvens kan blanda TCP- och UDP-portar. När den matchar kör knockd ett kommando — vanligtvis en iptables- eller nftables-regel för den knackande adressen (%IP%).
Det här exemplet öppnar SSH för den knackande adressen och stänger åtkomsten igen efter 10 sekunder. Befintliga SSH-sessioner fortsätter att fungera om brandväggen tillåter etablerade anslutningar.
[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älj egna portar; återanvänd aldrig portar från publicerade exempel. tcpflags = syn gör att knockd bara räknar paket med SYN-flaggan — det första paketet i ett anslutningsförsök.
fwknop: Single Packet Authorization
fwknop ersätter sekvensen med ett UDP-paket som krypteras (AES) och autentiseras (HMAC). Servern, fwknopd, fångar det passivt, verifierar det, kontrollerar att det inte har återuppspelats och öppnar den begärda porten för adressen i paketet.
Generera nycklar med fwknop --key-gen och lägg dem i serverns access.conf. Secret Knock importerar klientsidan från 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 Eftersom den tillåtna adressen finns i det krypterade paketet kan SPA öppna en port för en annan adress än den som skickar paketet — användbart när du knackar från en telefon med mobildata för en bärbar dator någon annanstans.
Varför knackningar misslyckas
- IPv4 jämfört med IPv6: knackningen skickades över en adressfamilj och SSH ansluter över den andra. Brandväggen öppnade dörren för en adress som du inte använder.
- En annan offentlig adress: med mobildata, bakom operatörs-NAT eller en VPN ser servern en annan IP-adress än du förväntar dig. Kontrollera adressen du knackar från.
- Omsända SYN: om en TCP-knackning inte besvaras skickar klientens operativsystem samma SYN igen. I våra tester återställde knockd 0.8 sekvensen vid ett sådant upprepat SYN, så en klient måste skicka varje knackning en gång och avsluta försöket snabbt.
- Tidsinställning: knackningar som kommer utanför seq_timeout, eller i fel ordning, startar om sekvensen.
- Mellanliggande nätverksutrustning: vissa nätverk blockerar eller skriver om trafik till ovanliga portar, så en knackning som fungerar hemma kan misslyckas på ett hotell- eller kontorsnätverk.
Är det säkert?
En knockd-sekvens skickas okrypterad; alla som kan övervaka din trafik kan spela upp den igen. Använd den för att dölja en tjänst från skannrar, framför SSH-nycklar — inte i stället för dem. fwknop SPA täpper till den luckan med kryptering, HMAC och skydd mot återuppspelning, och är det bättre valet när din trafik kan övervakas.
Knacka från iPhone, Mac och Apple Watch
Secret Knock skickar knockd-sekvenser och fwknop SPA-paket från iPhone, iPad och Mac, kontrollerar att porten svarar och öppnar din SSH-app. Apple Watch knackar via den parkopplade iPhone, eftersom watchOS inte låter appar skicka råa TCP- eller UDP-paket; när iPhone inte är i närheten kan den skicka SPA över HTTP till servrar som har stöd för det.
Guider för din konfiguration
- knockd på iPhone, iPad och Mac →
- fwknop SPA på iPhone, Mac och Apple Watch →
- MikroTik-portknackning →
- DrayTek Vigor-portknackning →
- Dölj SSH bakom portknackning →
- Port knocking på Apple Watch →
- Varför en portknackning inte öppnar →
- Exempel på knockd.conf →
- Konfigurera fwknop-server →
- Port knocking, VPN eller fail2ban? →
Håll dörren stängd. Ha knackningen med dig.
Secret Knock kommer snart till App Store för iPhone, iPad, Mac och Apple Watch.
Secret Knock →