Questo articolo descrive come proteggere l'accesso SSH al tuo server eseguendo le seguenti azioni:
- Impedisci tentativi di accesso per indirizzi IP specifici nella configurazione permissiva
- Consenti l'accesso per indirizzi IP specifici nella configurazione restrittiva
Configurazione permissiva
La configurazione permissiva consente l'accesso a tutti tranne l'indirizzo IP negato. Puoi negare l'accesso a indirizzi IP specifici nei seguenti modi:
wrapper TCP
Effettua questa configurazione nel file /etc/hosts.deny aggiungendo la seguente regola:
# vi /etc/host.deny
Imposta una regola di rifiuto in uno dei seguenti modi:
sshd: Bad_IP_address
sshd: 192.168.0.8
sshd: Bad_Segment/CIDR
sshd: 192.168.0.0/24
sshd: Bad_IP_address, Bad_IP_address
sshd: 192.168.0.3, 192.168.0.4
iptables
Questa configurazione risiede nella configurazione delle regole del firewall del sistema operativo.
# iptables -A INPUT -s "BAD_IP" -p tcp --dport SSH_Port -j DROP
Blocca un indirizzo IP :
# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j DROP
Blocca un segmento :
# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j DROP
Configurazione restrittiva
Questa configurazione consente l'accesso solo a indirizzi IP specifici e interrompe altro traffico in entrata.
wrapper TCP
Innanzitutto, nega tutto il traffico in entrata a SSH in /etc/hosts.deny file:
# vi /etc/hosts.deny
sshd: ALL
Quindi, consenti l'accesso agli indirizzi IP affidabili:
# vi /etc/hosts.allow
sshd: Trusted_IP_address
sshd: 192.168.0.8
sshd: Trusted_Segment/CIDR
sshd: 192.168.0.0/24
sshd: Trusted_IP_address, Trusted_IP_address
sshd: 192.168.0.3, 192.168.0.4
iptables
Per le tabelle IP, l'ordine in cui metti le regole è molto importante. Ecco perché devi configurare prima le regole di autorizzazione e poi la regola di negazione.
# iptables -A INPUT --source Trusted_IP -p tcp --dport SSH_PORT -j ACCEPT
Accettazione del traffico da un IP:
# iptables -A INPUT --source 192.168.0.8 -p tcp --dport 22 -j ACCEPT
Accettazione del traffico da un segmento:
# iptables -A INPUT --source 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
Impostazione della regola di blocco:
iptables -A INPUT -p tcp --dport 22 -j DROP
Come migliorare le modifiche
Puoi rivedere le tue modifiche eseguendo i seguenti comandi a seconda della configurazione restrittiva o permissiva:
# cat /etc/hosts.deny
# cat /etc/hosts.allow
# iptables -L
Nota: Alcune distribuzioni includono software firewall predefinito, come UFW per Debian® e il sistema operativo Ubuntu® e derivati, Firewalld per Red Hat® Enterprise Linux® 7 e derivati.
Configura ufw per negare IP, numero di porta e protocollo specifici
Per bloccare un indirizzo IP sulla porta TCP 22:
# ufw deny proto tcp from 192.168.0.8 to any port 22
Per bloccare una sottorete:
# ufw deny proto tcp from 192.168.0.0/24 to any port 22
Per elencare le regole configurate:
# ufw status numbered
Configura firewalld per negare un indirizzo IP, un numero di porta e un protocollo specifici
Su firewalld puoi bannare un indirizzo IP o un segmento, ma non consentirà nessun tipo di connessione:
Blocca un indirizzo IP:
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.0.8' reject"
Blocca un segmento:
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.0.0/24' reject"
Ecco perché potresti scegliere di inserire nella whitelist indirizzi IP affidabili per la connessione alla porta SSH:
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.20" port protocol="tcp" port="22" accept'
Devi ricaricare la configurazione del firewalld:
# firewall-cmd --reload
Elenca le regole configurate sul firewall:
# firewall-cmd --list-all