SSH : bloquer une adresse IP

malekalmorte

Date création :

20 novembre 2022

Dernière modification :

SSH est un protocole important pour administrer un serveur Linux et Unix à distance.

Pour sécuriser votre serveur SSH, vous souhaitez bloquer et bannir une adresse IP.
Dans ce tutoriel, je vous donne plusieurs méthodes pour y parvenir.

SSH : bloquer une adresse IP

Comment bloquer une adresse IP sur SSH

via /etc/hosts.allow (TCP wrappers)

Il vous permet d’autoriser ou interdire une adresse IP ou sous-réseau pour un service (daemon).
Les fichiers /etc/hosts.allow et /etc/hosts.deny sont couramment utilisés par les TCP wrappers.

Voici quelques exemples de syntaxe /etc/hosts.allow afin de n’autoriser les connexions SSH que pour certains adresses IP :

#autoriser des adresses IP
sshd : 192.168.0.1: allow
sshd : 192.168.0.2: allow

# on peut aussi écrire plusieurs IP sur une seule ligne
sshd: 172.168.0.21, 10.83.33.77, 10.63.152.9, 10.12.100.11, 10.82.192.28

# Autoriser l'adresse IP 192.168.0.3
sshd : 192.168.0.3: allow    

# Autoriser le sous réseau 192.168.0.x
192.168.0.

# Autoriser le sous-réseau 192.168.x.x
192.168.

# Bloquer les autres adresses IP
sshd: ALL : deny

Ou encore si vous souhaitez autoriser toutes les IP provenant d’internet sauf le réseau local :

sshd: ALL EXCEPT LOCAL

Cela génère des entrées sshd « refused connect from » dans le journal /var/log/auth.log :

Nov 17 09:11:54 Ubuntu-VM sshd[3782]: refused connect from 10.0.0.15 (10.0.0.15)
Entrées sshd "refused connect from" dans le journal /var/log/auth.log

avec iptables

iptables est un logiciel libre qui permet de configurer le pare-feu Linux (netfilter).
Avec ce dernier vous pouvez créer des règles de Firewall pour bloquer les connexions entrantes provenant d’une adresse IP spécifiques.

Voici un exemple de règles, remplacez x.x.x.x par l’adresse IP source que vous souhaitez bannir :

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source x.x.x.x -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22 -j DROP

Avec ufw

ufw est un autre firewall qui vous permet de filtrer les connexions.
Vous pouvez créer une règle pour filtrer le port 22 sur l’adresse IP entrantes.

Voici un exemple de règle pour interdire l’adresse IP 192.168.1.162 :

sudo ufw deny from 192.168.1.162/24 port 22

avec pam.d sur Redhat

Sur Redhat, vous pouvez créer un fichier de configuration avec des règles d’accès.

  • Créez le fichier suivant /etc/security/access-sshd.conf
  • Puis donnez le contenu suivant :
# Bloquer l'accès pour l'utilisateur kevin
-:kevin:ALL

# N'autorisez l'accès qu'aux utilisateurs de confiance et à personne d'autre.
-:ALL EXCEPT trusted:ALL

# N'autoriser l'utilisateur 'kevin' que s'il vient de localhost.
+:kevin:127.0.0.1 ::1 192.168.0.0/24
-:kevin:ALL

Fail2ban : bloquer les attaques bruteforce

Enfin pour aller plus loin, si vous souhaitez bloquer les attaquers vers SSH, vous pouvez utiliser Fail2ban.
Ce dernier analyse les journaux et bloquent les multiples tentatives de connexions provenant d’internet.

Fail2ban : protéger son serveur des attaques DoS et Bruteforce

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.