Port knocking explicat
Port knocking păstrează un serviciu invizibil până când cineva dovedește că știe un secret. Acest ghid explică modul de funcționare, cele două implementări frecvente — knockd și fwknop — și motivele pentru care bătăile eșuează în practică.
Cum funcționează port knocking
Firewallul respinge fiecare conexiune către portul protejat, astfel încât un scaner nu vede nimic. Un daemon mic urmărește traficul care ajunge la firewall. Când o adresă sursă produce modelul așteptat, daemonul adaugă o regulă de firewall care permite acea adresă, de obicei pentru scurt timp.
Modelul este bătaia. Cu knockd, este o secvență de tentative de conexiune către anumite porturi, într-o anumită ordine și într-o limită de timp. Cu fwknop, este un singur pachet criptat.
knockd: secvențe de bătăi
knockd ascultă pe o interfață și compară tentativele de conexiune cu secvențele din /etc/knockd.conf. O secvență poate combina porturi TCP și UDP. Când există o potrivire, knockd rulează o comandă — de obicei o regulă iptables sau nftables pentru adresa care bate (%IP%).
Acest exemplu deschide SSH pentru adresa care bate și îl închide din nou după 10 secunde. Sesiunile SSH existente continuă să funcționeze dacă firewallul acceptă conexiuni stabilite.
[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 Alegeți propriile porturi; nu reutilizați niciodată porturi din exemple publicate. tcpflags = syn face ca knockd să numere numai pachetele cu fanionul SYN — primul pachet al unei tentative de conexiune.
fwknop: Single Packet Authorization
fwknop înlocuiește secvența cu un pachet UDP criptat (AES) și autentificat (HMAC). Serverul, fwknopd, îl capturează pasiv, îl verifică, verifică să nu fie o redare și deschide portul solicitat pentru adresa din pachet.
Generați chei cu fwknop --key-gen și introduceți-le în access.conf al serverului. Secret Knock importă partea clientului 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 Deoarece adresa permisă circulă în pachetul criptat, SPA poate deschide un port pentru o adresă diferită de cea care trimite pachetul — util când bateți de pe un telefon cu date mobile pentru un laptop aflat în alt loc.
De ce eșuează bătăile
- IPv4 vs IPv6: bătaia a plecat printr-o familie de adrese, iar SSH se conectează prin cealaltă. Firewallul a deschis ușa pentru o adresă pe care nu o utilizați.
- O adresă publică diferită: pe date mobile, în spatele unui NAT de operator sau al unui VPN, serverul vede un alt IP decât vă așteptați. Verificați adresa de la care bateți.
- SYN retransmise: dacă o bătaie TCP nu primește răspuns, sistemul de operare al clientului trimite din nou același SYN. În testele noastre, knockd 0.8 reseta secvența la un astfel de SYN repetat, deci un client trebuie să trimită fiecare bătaie o singură dată și să oprească rapid tentativa.
- Temporizare: bătăile care ajung în afara seq_timeout sau în ordine greșită reiau secvența de la început.
- Echipamente intermediare: unele rețele blochează sau rescriu traficul către porturi neobișnuite, astfel încât o bătaie care funcționează acasă poate eșua într-o rețea de hotel sau birou.
Este sigur?
O secvență knockd este trimisă necriptat; oricine vă poate urmări traficul o poate reda. Folosiți-o pentru a ascunde un serviciu de scanere, în fața cheilor SSH — nu în locul lor. fwknop SPA elimină această problemă prin criptare, HMAC și protecție împotriva redării și este alegerea mai bună când traficul dvs. poate fi observat.
Bătăi de pe iPhone, Mac și Apple Watch
Secret Knock trimite secvențe knockd și pachete fwknop SPA de pe iPhone, iPad și Mac, verifică dacă portul răspunde și deschide aplicația SSH. Apple Watch bate prin iPhone-ul asociat, deoarece watchOS nu permite aplicațiilor să trimită pachete TCP sau UDP brute; departe de iPhone, poate trimite SPA prin HTTP către servere care permit acest lucru.
Ghiduri pentru configurarea ta
- knockd pe iPhone, iPad și Mac →
- fwknop SPA pe iPhone, Mac și Apple Watch →
- Port knocking MikroTik →
- Port knocking DrayTek Vigor →
- Ascundeți SSH în spatele bătăilor în porturi →
- Port knocking pe Apple Watch →
- De ce o bătaie la port nu deschide →
- Exemple knockd.conf →
- configurarea serverului fwknop →
- Port knocking, VPN sau fail2ban? →
Păstrați ușa închisă. Purtați bătaia cu dvs.
Secret Knock vine în curând în App Store pentru iPhone, iPad, Mac și Apple Watch.
Secret Knock →