Przejdź do treści
Secret Knock

Ukryj SSH za port knockingiem

Otwarty port SSH przyciąga próby logowania z całego internetu. Port knocking utrzymuje port zamknięty, dopóki nie potwierdzisz znajomości sekretu — następnie otwiera go tylko dla Twojego adresu i tylko na kilka sekund.

Z użyciem knockd i nftables

Domyślnie odrzucaj SSH i akceptuj je wyłącznie z adresów znajdujących się w zbiorze z limitem czasu. knockd dodaje pukający adres do tego zbioru; nftables usuwa go po upływie limitu, a ustanowiona sesja SSH nadal działa.

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 (fragment)

Sekcja knockd, która wypełnia zbiór:

[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

Oddziel stały dostęp

Jeśli chcesz również stale zezwalać na dostęp z niektórych adresów, przechowuj je w osobnym zbiorze bez limitu czasu. Dodanie adresu, który już znajduje się w zbiorze z limitem czasu, nie resetuje tego limitu, więc łączenie obu rodzajów wpisów w jednym zbiorze może odciąć Ci dostęp po upływie czasu.

Możesz też użyć fwknop

fwknop SPA jest bezpieczniejsze niż sekwencja: to jeden zaszyfrowany, uwierzytelniony pakiet, którego nie można odtworzyć. Zobacz przewodnik fwknop.

Z iPhone’a do SSH

  1. 1Przytrzymaj mosiężną kołatkę. Secret Knock sprawdza, czy port 22 odpowiada, i pokazuje, jak długo pozostaje otwarty.
  2. 2Otwórz SSH otwiera Twoją aplikację SSH za pomocą łącza ssh:// do serwera.
  3. 3Opcja „Utrzymuj uchylone drzwi, gdy wyświetlany jest ich ekran” ponawia pukanie na krótko przed końcem okna, gdy drzwi są widoczne na ekranie.

Wszystkie przykłady na GitHubie → Każda konfiguracja z tej strony, gotowa do skopiowania: github.com/mobilcomm/secretknock-examples (domena publiczna).

Pytania

Czy to zastępuje klucze SSH?

Nie. Port knocking ukrywa usługę; nadal używaj silnych kluczy SSH i wyłącz logowanie za pomocą hasła.

Przewodniki dotyczące Twojej konfiguracji