Ga naar inhoud
Secret Knock

voorbeelden van knockd.conf

knockd leest /etc/knockd.conf: een sectie [options] en één sectie per deur. Elke sectie heeft een reeks, een tijdslimiet en de opdracht die voor het kloppende adres, %IP%, wordt uitgevoerd. Kies je eigen poorten — hergebruik nooit die uit voorbeelden.

Open SSH enkele seconden

De meest gebruikelijke configuratie: één klop opent SSH, en knockd sluit het na cmd_timeout weer. Sessies die je al hebt geopend blijven werken als de firewall bestaande verbindingen accepteert.

[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

Afzonderlijke reeksen om te openen en te sluiten

Zonder timer blijft de poort open totdat je de sluitreeks klopt. Handig, maar gemakkelijk te vergeten — geef de voorkeur aan de versie met tijdslimiet.

[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

Eenmalige reeksen

In plaats van één vaste reeks kan knockd een bestand met reeksen lezen en elke reeks slechts één keer accepteren, zodat een opgenomen klop niet opnieuw kan worden afgespeeld. Secret Knock bewaart dezelfde lijst en gaat naar de volgende reeks na een klop die de deur heeft geopend.

[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 en het reeksenbestand

Met nftables

Op systemen met nftables laat je knockd het adres toevoegen aan een set met een time-out; de handleiding SSH verbergen toont de bijbehorende nftables-tabel.

[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

Na het bewerken

  1. 1Stel op Debian en Ubuntu de interface waarop knockd luistert in via /etc/default/knockd (KNOCKD_OPTS="-i eth0") en herstart knockd.
  2. 2Bekijk het in werking met journalctl -u knockd -f terwijl je klopt.
  3. 3In Secret Knock zet + › Importeer uit bestand elke sectie met een reeks om in een deur; voer lijsten met eenmalige reeksen handmatig in.

Alle voorbeelden op GitHub → Elke configuratie op deze pagina, klaar om te kopiëren: github.com/mobilcomm/secretknock-examples (publiek domein).

Vragen

Moet ik TCP- of UDP-stappen gebruiken?

Beide werken. Een combinatie van beide maakt een reeks moeilijker te raden via een poortscan. UDP-stappen kunnen in Secret Knock een payload bevatten als je configuratie die controleert.

Handleidingen voor je configuratie