Zum Inhalt springen
Secret Knock

SSH hinter Port Knocking verbergen

Ein offener SSH-Port zieht Anmeldeversuche aus dem gesamten Internet an. Port Knocking hält den Port geschlossen, bis du nachweist, dass du ein Geheimnis kennst — und öffnet ihn dann nur für deine Adresse und nur für einige Sekunden.

Mit knockd und nftables

SSH standardmäßig verwerfen und nur von Adressen in einer Menge mit Zeitüberschreitung akzeptieren. knockd fügt die klopfende Adresse dieser Menge hinzu; nftables entfernt sie, wenn die Zeitüberschreitung abläuft, und die bestehende SSH-Sitzung funktioniert weiterhin.

table inet filter {
    set knocked4 {
        type ipv4_addr
        flags timeout
    }
    chain input {
        type filter hook input priority 0; policy drop;
        ct state established,related accept
        iif "lo" accept
        tcp dport 22 ip saddr @knocked4 accept
    }
}
/etc/nftables.conf (Auszug)

Der knockd-Abschnitt, der die Menge füllt:

[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

Dauerhaften Zugriff getrennt halten

Wenn du einige Adressen zusätzlich dauerhaft zulässt, halte sie in einer separaten Menge ohne Zeitüberschreitung. Das Hinzufügen einer Adresse, die sich bereits in einer Menge mit Zeitüberschreitung befindet, setzt deren Zeitüberschreitung nicht zurück. Wenn du beide Arten von Einträgen in einer Menge mischst, kannst du ausgesperrt werden, sobald der Timer abläuft.

Oder fwknop verwenden

fwknop SPA ist sicherer als eine Sequenz: ein einzelnes verschlüsseltes, authentifiziertes Paket, das nicht erneut verwendet werden kann. Weitere Informationen findest du im fwknop-Handbuch.

Vom iPhone zu SSH

  1. 1Halte den Messingtürklopfer gedrückt. Secret Knock prüft, ob Port 22 antwortet, und zeigt an, wie lange er geöffnet bleibt.
  2. 2SSH öffnen öffnet deine SSH-App mit einem ssh://-Link für den Server.
  3. 3Die Option „Tür angelehnt halten, solange die Türansicht angezeigt wird“ lässt die App kurz vor Ablauf des Zeitfensters erneut anklopfen, während die Tür auf dem Bildschirm angezeigt wird.

Alle Beispiele auf GitHub → Jede Konfiguration auf dieser Seite, kopierbereit: github.com/mobilcomm/secretknock-examples (gemeinfrei).

Fragen

Ersetzt dies SSH-Schlüssel?

Nein. Port Knocking verbirgt den Dienst; verwende weiterhin starke SSH-Schlüssel und deaktiviere auch Anmeldungen mit Passwort.

Anleitungen für dein Setup