introduzione
Oltre a modificare la porta predefinita per SSH e utilizzare una coppia di chiavi per l'autenticazione, il knocking delle porte può essere utilizzato per proteggere ulteriormente (o più accuratamente, oscurare) il server SSH. Funziona rifiutando le connessioni alla porta di rete SSH. Questo in sostanza nasconde il fatto che stai eseguendo un server SSH fino a quando non viene effettuata una sequenza di tentativi di connessione a porte predefinite. Molto sicuro e semplice da implementare, il port knocking è uno dei modi migliori per proteggere il tuo server da tentativi di connessione SSH dannosi.
Prerequisiti
- Un server Vultr che esegue Ubuntu 18.04.
- Accesso al Sudo.
Prima di seguire i passaggi seguenti, se non si è effettuato l'accesso come utente root, ottenere una shell root temporanea eseguendo sudo -i
e immettendo la password. In alternativa, puoi anteporre sudo
ai comandi mostrati in questo articolo.
Passaggio 1: installazione Knockd
Knockd è il pacchetto utilizzato in combinazione con iptables per implementare il port knocking sul tuo server. iptables-persistent
È inoltre richiesto il pacchetto " ".
apt update
apt install -y knockd iptables-persistent
Passaggio 2: regole di iptables
Esegui i seguenti comandi in ordine:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
iptables-save > /etc/iptables/rules.v4
Questi comandi eseguiranno rispettivamente le seguenti operazioni:
- Indicare a iptables di mantenere attive le connessioni esistenti.
- Indicare a iptables di eliminare qualsiasi connessione alla porta tcp / 22 (se il demone SSH è in ascolto su una porta diversa da 22, è necessario modificare di conseguenza il comando sopra).
- Salvare queste due regole in modo che persistano dopo il riavvio.
Passaggio 3: configurazione Knockd
Utilizzando un editor di testo a tua scelta, apri il file /etc/knockd.conf
.
Vedrai quanto segue:
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
È necessario modificare la sequenza delle porte (scegliere i numeri di porta sopra 1024
e non utilizzati da altri servizi) e archiviarli in modo sicuro. Questa combinazione deve essere trattata come una password. Se dimenticato, perderai l'accesso a SSH. Ci riferiremo a questa nuova sequenza come x,y,z
.
la seq-timeout
linea è il numero di secondi che Knockd attenderà che il client completi la sequenza di port knocking. Sarebbe una buona idea cambiarlo in qualcosa di più grande, specialmente se il port knocking verrà eseguito manualmente. Tuttavia, un valore di timeout inferiore è più sicuro. Si 15
consiglia di cambiarlo in poiché busseremo manualmente in questo tutorial.
Cambia la sequenza di apertura in base alle porte scelte:
[openSSH]
sequence = x,y,z
Modificare il valore del comando nel modo seguente:
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Ora cambia la sequenza di chiusura di conseguenza:
[closeSSH]
sequence = z,y,x
Salvare le modifiche e uscire, quindi aprire il file /etc/default/knockd
:
- Sostituisci
START_KNOCKD=0
con START_KNOCKD=1
.
- Aggiungi la seguente riga alla fine del file:
KNOCKD_OPTS="-i ens3"
(sostituisci ens3
con il nome della tua interfaccia di rete pubblica se differisce.)
- Salva ed esci.
Ora avvia Knockd:
systemctl start knockd
Se ora disconnette dal server, dovrete battere sulle porte x
, y
e z
di collegare di nuovo.
Passaggio 4: test
Ora non sarai in grado di connetterti al tuo server SSH.
È possibile testare il port knocking con un client Telnet.
Gli utenti Windows possono avviare Telnet dal prompt dei comandi. Se telnet non è installato, accedi alla sezione "Programmi" del Pannello di controllo, quindi individua "Attiva o disattiva le funzionalità di Windows". Nel pannello delle funzionalità, individuare "Client Telnet" e abilitarlo.
Nel terminale / prompt dei comandi digitare quanto segue:
telnet youripaddress x
telnet youripaddress y
telnet youripaddress z
Fallo tutto in quindici secondi, poiché questo è il limite imposto nella configurazione. Ora, prova a connetterti al tuo server tramite SSH. Sarà accessibile.
Per chiudere l'accesso al server SSH, eseguire i comandi in ordine inverso.
telnet youripaddress z
telnet youripaddress y
telnet youripaddress z
Conclusione
La parte migliore dell'utilizzo del port knocking è che se è configurato insieme all'autenticazione con chiave privata, non c'è praticamente alcuna possibilità che qualcun altro possa entrare a meno che qualcuno non conosca la sequenza di port knocking e abbia la chiave privata.