Siirry sisältöön
Secret Knock

knockd.conf-esimerkkejä

knockd lukee tiedoston /etc/knockd.conf: [options]-osion ja yhden osion kutakin ovea varten. Jokaisessa osiossa on sarja, aikaraja ja komento koputtavalle osoitteelle, %IP%. Valitse omat porttisi — älä koskaan käytä uudelleen esimerkkien portteja.

Avaa SSH muutamaksi sekunniksi

Yleisin määritys: yksi koputus avaa SSH:n, ja knockd sulkee sen uudelleen cmd_timeout-ajan kuluttua. Jo avaamasi istunnot toimivat edelleen, jos palomuuri 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
/etc/knockd.conf

Erilliset sarjat avaamiseen ja sulkemiseen

Ilman ajastinta portti pysyy avoinna, kunnes koputat sulkevan sarjan. Se on kätevää, mutta helppo unohtaa — ajoitettua versiota kannattaa käyttää.

[options]
    UseSyslog

[openSSH]
    sequence    = 7311:tcp,8822:tcp,9133:udp
    seq_timeout = 10
    tcpflags    = syn
    command     = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

[closeSSH]
    sequence    = 9133:udp,8822:tcp,7311:tcp
    seq_timeout = 10
    tcpflags    = syn
    command     = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf

Kertakäyttöiset sarjat

Yhden kiinteän sarjan sijaan knockd voi lukea sarjojen tiedoston ja hyväksyä jokaisen vain kerran, joten tallennettua koputusta ei voi toistaa. Secret Knock ylläpitää samaa luetteloa ja siirtyy seuraavaan sarjaan oven avanneen koputuksen jälkeen.

[openSSH]
    one_time_sequences = /etc/knockd/ssh_sequences
    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

# /etc/knockd/ssh_sequences — one sequence per line, each used once
2222:udp,3333:tcp,4444:udp
5555:tcp,6666:udp,7777:tcp
8888:udp,9999:tcp,1111:tcp
/etc/knockd.conf ja sarjatiedosto

nftablesin kanssa

Järjestelmissä, joissa käytetään nftablesia, anna knockdin lisätä osoite joukkoon aikakatkaisulla; SSH:n piilottamista käsittelevässä oppaassa on vastaava nftables-taulukko.

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s }
/etc/knockd.conf

Muokkauksen jälkeen

  1. 1Määritä Debianissa ja Ubuntussa liitäntä, jota knockd kuuntelee, tiedostossa /etc/default/knockd (KNOCKD_OPTS="-i eth0") ja käynnistä knockd uudelleen.
  2. 2Seuraa toimintaa komennolla journalctl -u knockd -f koputtaessasi.
  3. 3Secret Knockissa + › Tuo tiedostosta muuttaa jokaisen sarjan sisältävän osion oveksi; syötä kertakäyttöisten sarjojen luettelot käsin.

Kaikki esimerkit GitHubissa → Jokainen tämän sivun määritys valmiina kopioitavaksi: github.com/mobilcomm/secretknock-examples (public domain).

Kysymyksiä

Pitäisikö käyttää TCP- vai UDP-vaiheita?

Kumpikin toimii. Molempien yhdistäminen tekee sarjan arvaamisesta porttiskannauksen perusteella vaikeampaa. UDP-vaiheisiin voi sisällyttää hyötykuorman Secret Knockissa, jos määrityksesi tarkistaa sen.

Oppaita määritystäsi varten