Cet article décrit comment sécuriser l'accès SSH à votre serveur en effectuant les actions suivantes :
- Empêcher les tentatives de connexion pour des adresses IP spécifiques dans la configuration permissive
- Autoriser l'accès à des adresses IP spécifiques dans la configuration restrictive
Configuration permissive
La configuration permissive permet l'accès à tout le monde sauf l'adresse IP refusée. Vous pouvez refuser l'accès à des adresses IP spécifiques des manières suivantes :
encapsuleurs TCP
Faites cette configuration dans le fichier /etc/hosts.deny en ajoutant la règle suivante :
# vi /etc/host.deny
Définissez une règle de refus de l'une des manières suivantes :
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
Cette configuration réside dans la configuration des règles de pare-feu du système d'exploitation.
# iptables -A INPUT -s "BAD_IP" -p tcp --dport SSH_Port -j DROP
Bloquer une adresse IP :
# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j DROP
Bloquer un segment :
# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j DROP
Configuration restrictive
Cette configuration permet d'accéder uniquement à des adresses IP spécifiques et supprime tout autre trafic entrant.
encapsuleurs TCP
Tout d'abord, refusez tout le trafic entrant vers SSH dans le fichier /etc/hosts.deny fichier :
# vi /etc/hosts.deny
sshd: ALL
Ensuite, autorisez l'accès aux adresses IP de confiance :
# 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
Pour les tables IP, l'ordre dans lequel vous placez les règles est très important. C'est pourquoi vous devez d'abord configurer les règles d'autorisation, puis la règle de refus.
# iptables -A INPUT --source Trusted_IP -p tcp --dport SSH_PORT -j ACCEPT
Accepter le trafic d'une adresse IP :
# iptables -A INPUT --source 192.168.0.8 -p tcp --dport 22 -j ACCEPT
Accepter le trafic d'un segment :
# iptables -A INPUT --source 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
Définition de la règle de blocage :
iptables -A INPUT -p tcp --dport 22 -j DROP
Comment améliorer les modifications
Vous pouvez revoir vos modifications en exécutant les commandes suivantes selon la configuration restrictive ou permissive :
# cat /etc/hosts.deny
# cat /etc/hosts.allow
# iptables -L
Remarque : Certaines distributions incluent un logiciel de pare-feu par défaut, tel que UFW pour Debian® et le système d'exploitation Ubuntu® et dérivés, Firewalld pour Red Hat® Enterprise Linux® 7 et dérivés.
Configurer ufw pour refuser une adresse IP, un numéro de port et un protocole spécifiques
Pour bloquer une adresse IP sur le port TCP 22 :
# ufw deny proto tcp from 192.168.0.8 to any port 22
Pour bloquer un sous-réseau :
# ufw deny proto tcp from 192.168.0.0/24 to any port 22
Pour lister les règles configurées :
# ufw status numbered
Configurer firewalld pour refuser une adresse IP, un numéro de port et un protocole spécifiques
Sur firewalld, vous pouvez interdire une adresse IP ou un segment, mais cela n'autorisera aucun type de connexion :
Bloquer une adresse IP :
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.0.8' reject"
Bloquer un segment :
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.0.0/24' reject"
C'est pourquoi vous pouvez choisir de mettre sur liste blanche des adresses IP de confiance pour vous connecter au port SSH :
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.20" port protocol="tcp" port="22" accept'
Vous devez recharger la configuration de firewalld :
# firewall-cmd --reload
Lister les règles configurées sur le pare-feu :
# firewall-cmd --list-all