Port knocking selitetty
Port knocking pitää palvelun näkymättömänä, kunnes joku osoittaa tietävänsä salaisuuden. Tämä opas kertoo, miten se toimii, esittelee kaksi yleistä toteutusta — knockd ja fwknop — sekä käytännön syyt koputusten epäonnistumiseen.
Näin port knocking toimii
Palomuuri hylkää kaikki yhteydet suojattuun porttiin, joten skanneri ei näe mitään. Pieni taustaprosessi tarkkailee palomuuriin tulevaa liikennettä. Kun yksi lähdeosoite muodostaa odotetun kuvion, taustaprosessi lisää palomuurisäännön, joka sallii kyseisen osoitteen yleensä lyhyeksi ajaksi.
Kuvio on koputus. knockd:ssä se on yhteysyritysten sarja tiettyihin portteihin tietyssä järjestyksessä ja aikarajan sisällä. fwknop:ssa se on yksi salattu paketti.
knockd: koputussekvenssit
knockd kuuntelee rajapintaa ja vertaa yhteysyrityksiä /etc/knockd.conf-tiedostossa oleviin sekvensseihin. Sekvenssi voi yhdistää TCP- ja UDP-portteja. Kun se täsmää, knockd suorittaa komennon — tyypillisesti iptables- tai nftables-säännön koputtavalle osoitteelle (%IP%).
Tämä esimerkki avaa SSH:n koputtavalle osoitteelle ja sulkee sen uudelleen 10 sekunnin kuluttua. Nykyiset SSH-istunnot toimivat edelleen, jos palomuurisi hyväksyy muodostetut yhteydet.
[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 Valitse omat porttisi; älä koskaan käytä julkaistujen esimerkkien portteja uudelleen. tcpflags = syn saa knockd:n laskemaan vain SYN-lipulla varustetut paketit — yhteysyrityksen ensimmäisen paketin.
fwknop: Single Packet Authorization
fwknop korvaa sekvenssin yhdellä UDP-paketilla, joka on salattu (AES) ja todennettu (HMAC). Palvelin, fwknopd, kaappaa sen passiivisesti, vahvistaa sen, tarkistaa ettei se ole toisto ja avaa pyydetyn portin paketissa olevalle osoitteelle.
Luo avaimet komennolla fwknop --key-gen ja lisää ne palvelimen access.conf-tiedostoon. Secret Knock tuo asiakaspuolen .fwknoprc-tiedostostasi.
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 Koska sallittu osoite kulkee salatun paketin sisällä, SPA voi avata portin muulle kuin paketin lähettävälle osoitteelle — hyödyllistä, kun koputat mobiilidataa käyttävästä puhelimesta toisessa paikassa olevaa kannettavaa varten.
Miksi koputukset epäonnistuvat
- IPv4 vs IPv6: koputus lähti yhden osoiteperheen kautta ja SSH yhdistää toisen kautta. Palomuuri avasi oven osoitteelle, jota et käytä.
- Eri julkinen osoite: mobiilidatassa, operaattorin NAT:n tai VPN:n takana palvelin näkee muun IP-osoitteen kuin odotat. Tarkista osoite, josta koputat.
- Uudelleenlähetetyt SYN-paketit: jos TCP-koputukseen ei vastata, asiakkaan käyttöjärjestelmä lähettää saman SYN-paketin uudelleen. Testeissämme knockd 0.8 nollasi sekvenssin tällaisesta toistetusta SYN-paketista, joten asiakkaan on lähetettävä jokainen koputus kerran ja lopetettava yritys nopeasti.
- Ajoitus: seq_timeout-ajan ulkopuolella tai väärässä järjestyksessä saapuvat koputukset aloittavat sekvenssin alusta.
- Välilaitteet: jotkin verkot estävät tai muokkaavat liikennettä epätavallisiin portteihin, joten kotona toimiva koputus voi epäonnistua hotelli- tai toimistoverkossa.
Onko se turvallista?
knockd-sekvenssi lähetetään salaamattomana; kuka tahansa liikennettäsi tarkkaileva voi toistaa sen. Käytä sitä palvelun piilottamiseen skannereilta SSH-avainten edessä — älä niiden sijaan. fwknop SPA korjaa tämän puutteen salauksella, HMAC:lla ja toistosuojauksella, ja on parempi valinta, kun liikennettäsi voidaan tarkkailla.
Koputtaminen iPhone-, Mac- ja Apple Watch -laitteilla
Secret Knock lähettää knockd-sekvenssejä ja fwknop SPA -paketteja iPhonesta, iPadista ja Macista, tarkistaa että portti vastaa ja avaa SSH-appisi. Apple Watch koputtaa pariksi liitetyn iPhonen kautta, koska watchOS ei anna appien lähettää raakoja TCP- tai UDP-paketteja; kun iPhone ei ole lähellä, se voi lähettää SPA:n HTTP:n kautta palvelimille, jotka sallivat sen.
Oppaita määritystäsi varten
- knockd iPhonessa, iPadissa ja Macissa →
- fwknop SPA iPhonessa, Macissa ja Apple Watchissa →
- MikroTik-porttikoputus →
- DrayTek Vigor -porttikoputus →
- Piilota SSH port knockingilla →
- Porttikoputus Apple Watchissa →
- Miksi porttikoputus ei avaa →
- knockd.conf-esimerkkejä →
- fwknop-palvelimen käyttöönotto →
- Port knocking, VPN vai fail2ban? →
Pidä ovi suljettuna. Ota koputus mukaasi.
Secret Knock on tulossa App Storeen iPhone-, iPad-, Mac- ja Apple Watch -laitteille.
Secret Knock →