Vai al contenuto
Secret Knock

Nascondi SSH dietro il port knocking

Una porta SSH aperta raccoglie tentativi di accesso da tutto Internet. Il port knocking mantiene la porta chiusa finché non dimostri di conoscere un segreto, quindi la apre solo per il tuo indirizzo e solo per pochi secondi.

Con knockd e nftables

Blocca SSH per impostazione predefinita e accettalo solo dagli indirizzi in un set con timeout. knockd aggiunge l’indirizzo che bussa a quel set; nftables lo rimuove alla scadenza del timeout e la sessione SSH già stabilita continua a funzionare.

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

La sezione di knockd che popola il set:

[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

Tieni separato l’accesso permanente

Se consenti permanentemente anche alcuni indirizzi, conservali in un set separato senza timeout. L’aggiunta di un indirizzo già presente in un set temporizzato non ne reimposta il timeout, quindi mescolare entrambi i tipi di voce in un unico set può impedirti l’accesso quando il timer scade.

Oppure usa fwknop

fwknop SPA è più sicuro di una sequenza: un unico pacchetto crittografato e autenticato che non può essere riprodotto. Consulta la guida di fwknop.

Dal tuo iPhone a SSH

  1. 1Tieni premuto il battente in ottone. Secret Knock verifica che la porta 22 risponda e mostra per quanto tempo resta aperta.
  2. 2Apri SSH apre la tua app SSH con un link ssh:// per il server.
  3. 3L’opzione «Mantieni socchiusa la porta mentre la sua schermata è aperta» fa bussare di nuovo poco prima della fine della finestra, mentre la porta è visualizzata.

Tutti gli esempi su GitHub → Ogni configurazione di questa pagina, pronta da copiare: github.com/mobilcomm/secretknock-examples (di pubblico dominio).

Domande

Sostituisce le chiavi SSH?

No. Il port knocking nasconde il servizio; continua a usare chiavi SSH robuste e disattiva anche gli accessi con password.

Guide per la tua configurazione