Ugrás a tartalomra
Secret Knock

knockd.conf-példák

A knockd a /etc/knockd.conf fájlt olvassa be: egy [options] szakaszt és ajtónként egy szakaszt. Minden szakasz tartalmaz egy sorozatot, egy időkorlátot és a kopogó címére, %IP%-re futtatandó parancsot. Válasszon saját portokat — soha ne használja újra a példákban szereplőket.

Az SSH megnyitása néhány másodpercre

A leggyakoribb beállítás: egy kopogás megnyitja az SSH-t, a knockd pedig a cmd_timeout után ismét bezárja. A már megnyitott munkamenetek tovább működnek, ha a tűzfal engedélyezi a létrejött kapcsolatokat.

[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

Külön sorozatok a nyitáshoz és a záráshoz

Időzítő nélkül a port mindaddig nyitva marad, amíg be nem kopogja a záró sorozatot. Kényelmes, de könnyű elfelejteni — inkább az időzített változatot használja.

[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

Egyszer használatos sorozatok

Egyetlen rögzített sorozat helyett a knockd képes egy sorozatokat tartalmazó fájlt olvasni, és mindegyiket csak egyszer elfogadni, így a rögzített kopogás nem játszható vissza. A Secret Knock ugyanazt a listát kezeli, és egy, az ajtót megnyitó kopogás után a következő sorozatra lép.

[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 és a sorozatfájl

nftables használatával

Az nftables-t használó rendszereken hagyja, hogy a knockd időkorláttal adja hozzá a címet egy készlethez; az SSH elrejtéséről szóló útmutatóban megtalálja a hozzá tartozó nftables-táblát.

[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

Szerkesztés után

  1. 1Debian és Ubuntu rendszeren állítsa be a /etc/default/knockd fájlban azt a hálózati csatolót, amelyen a knockd figyel (KNOCKD_OPTS="-i eth0"), majd indítsa újra a knockd szolgáltatást.
  2. 2Kopogás közben a journalctl -u knockd -f paranccsal figyelheti a működését.
  3. 3A Secret Knockban a + › Importálás fájlból minden sorozatot tartalmazó szakaszt ajtóvá alakít; az egyszer használatos sorozatlistákat kézzel adja meg.

Minden példa a GitHubon → Az oldal minden konfigurációja másolásra készen: github.com/mobilcomm/secretknock-examples (közkincs).

Kérdések

TCP- vagy UDP-lépéseket használjak?

Mindkettő működik. A kettő vegyítése megnehezíti egy sorozat kitalálását portvizsgálat alapján. Az UDP-lépések hasznos adatot is hordozhatnak a Secret Knockban, ha a beállítása ezt ellenőrzi.

Útmutatók a beállításához