Se desideri consentire agli utenti di accedere a servizi specifici sul tuo server senza aprire un firewall, puoi utilizzare il port knocking. Il port knocking è un metodo che ti consente di proteggere il tuo servizio da utenti non autorizzati. Il port knocking consente le connessioni in entrata quando viene ricevuta una sequenza corretta di tentativi di connessione.
In questo post, metteremo in sicurezza la porta SSH 22 aperta con port knocking. Questa porta verrà aperta solo quando qualcuno richiede le porte 7000, 8000, 9000 in sequenza.
Prerequisiti
- Un server Ubuntu 20.04 sulla piattaforma Atlantic.Net Cloud
- Una password di root configurata sul tuo server
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 20.04 come sistema operativo con almeno 2GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al tuo server Ubuntu 20.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.
apt-get update -y
Fase 2 – Installa e configura Knockd
apt-get install knockd -y
Una volta installato il pacchetto, modifica il file di configurazione predefinito di port knocking:
nano /etc/knockd.conf
Trova la sequenza predefinita mostrata di seguito:
sequence = 7000,8000,9000 sequence = 9000,8000,7000
E sostituiscili con la seguente sequenza:
sequence = 7777,8888,9999 sequence = 9999,8888,7777
Inoltre, trova la seguente riga:
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
E sostituiscilo con la seguente riga:
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Salva e chiudi il file quando hai finito.
Nel file di configurazione sopra, la sequenza 7777, 8888, 9999 viene utilizzata per aprire la porta 22 per un sistema client e la sequenza 9999, 8888, 7777 viene utilizzata per chiudere la porta 22 per un sistema client.
Quindi, modifica /etc/default/knockd file di configurazione:
nano /etc/default/knockd
Modifica le seguenti righe:
# Start the Knockd service START_KNOCKD=1 # Name of your network interface KNOCKD_OPTS="-i eth0"
Salva e chiudi il file al termine, quindi riavvia il servizio Knockd e abilitalo all'avvio al riavvio del sistema:
systemctl restart knockd systemctl enable knockd
Successivamente, verifica lo stato del servizio Knockd con il comando seguente:
systemctl status knockd
Esempio di output:
● knockd.service - Port-Knock Daemon Loaded: loaded (/lib/systemd/system/knockd.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2021-08-15 13:26:31 UTC; 5s ago Docs: man:knockd(1) Main PID: 6555 (knockd) Tasks: 1 (limit: 2353) Memory: 296.0K CGroup: /system.slice/knockd.service └─6555 /usr/sbin/knockd -i eth0 Aug 15 13:26:31 ubuntu2004 systemd[1]: Started Port-Knock Daemon. Aug 15 13:26:31 ubuntu2004 knockd[6555]: starting up, listening on eth0
Fase 3 – Installa e configura Iptables
Knockd usa la regola Iptables per aprire e chiudere la porta SSH, quindi dovrai installare il pacchetto Iptables sul tuo server.
Esegui il comando seguente per installare il pacchetto Iptables:
apt-get install iptables iptables-persistent -y
Una volta installato il pacchetto, crea una regola Iptables per bloccare la porta SSH 22 per tutti gli utenti:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j REJECT
Quindi, salva la regola di Iptables e ricaricala con il seguente comando:
netfilter-persistent save netfilter-persistent reload
A questo punto, il port knocking è configurato per OpenSSH nel tuo server.
Passaggio 4:verifica della connessione OpenSSH dal sistema client
Quindi, vai al sistema client e controlla se la porta OpenSSH 22 è bloccata o meno.
Puoi verificarlo usando il comando NMAP:
nmap your-server-ip
Dovresti vedere che la porta 22 è filtrata sul server.
Nmap scan report for your-server-ip Host is up (0.38s latency). Not shown: 998 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp filtered ssh Nmap done: 1 IP address (1 host up) scanned in 277.58 seconds
Ora, prova a connetterti al tuo server usando SSH dalla macchina client:
ssh [email protected]
Dovresti vedere il messaggio di connessione rifiutata:
ssh: connect to host your-server-ip port 22: Connection refused
Passaggio 5:configurare Knockd on Client per connettere il server SSH
Ora dovrai installare il client Knock sul sistema client per connetterti al server SSH.
Innanzitutto, esegui il comando seguente per installare il pacchetto client di Knockd:
apt-get install knockd -y
Ora usa la seguente sequenza di colpi per aprire la porta SSH 22 sul server.
knock -v your-server-ip 7777 8888 9999
Quando il tuo server riceve una sequenza corretta che hai definito nel file di configurazione di Knockd, aprirà la porta SSH 22 per la tua macchina client e sarai in grado di connetterti al server SSH.
ssh [email protected]
Dopo aver completato l'attività sul server SSH remoto, puoi utilizzare la seguente sequenza dal computer client per chiudere nuovamente la porta SSH.
knock -v your-server-ip 9999 8888 7777
Conclusione
Nella guida sopra, hai imparato come proteggere un server SSH con il port knocking. Puoi usare lo stesso metodo per proteggere altre porte su un server Linux. Provalo sull'hosting VPS di Atlantic.Net!