Sécuriser un serveur LAMP : port SSH + protection firewall (pare-feu) + fail2ban

Bonjour internaute ! Je vous propose quelques astuces pour sécuriser votre serveur dédié ou VPS, afin de limiter les risque de piratage. Fail2ban est un outil vous permettant de bannir des pirates qui tenteraient d'accéder à votre site. Notamment, au bout d'un certain nombre d'essais que vous définissez, l'IP est bannie pour une durée illimitée ou définie par vous. Il s'agit donc d'une protection efficace de votre serveur ! Associé à un pare-feu, votre serveur est désormais sécurisé. Mais les pirates essaieront souvent de se connecter en SSH sur votre machine, en utilisant le port par défaut (22). Nous vous proposons tout d'abord de le modifier.

Changement du port SSH

C'est très simple ! Il suffit d'éditer le fichier /etc/ssh/sshd_config, de décommenter la ligne Port 22 et de remplacer 22 par un autre port non utilisé jusqu'alors. Important : le numéro de port doit être inférieur à 65535. Quand c'est fait, redémarrez le serveur ssh. Sous CentOS 7 :
service sshd restart

Mise en place du firewall (pare-feu)

S'il n'est pas installé, installez-le. Sous CentOS 7 :
yum install firewall
Sous Debian 8 :
apt-get install firewalld
Regardez la zone active pour votre firewall :
firewall-cmd --get-default-zone
Pour la suite, nous dirons que la zone est public. Ajoutez les services nécessaires. Par exemple, http et https qui devront être débloqué pour que le port 80 et 443 soient ouverts (le premier est indispensable pour un serveur web, le second indispensable si vous utilisez une connexion sécurisée pour un de vos sites hébergés) :
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https
Ajoutez les autres ports nécessaires, comme le nouveau port SSH :
firewall-cmd --zone=public --add-port=1289/tcp --permanent
En remplaçant 1289 par votre numéro de port. Validez ensuite la configuration :
firewall-cmd --reload
Vérifiez que tout est bon :
firewall-cmd --list-all
Si vous voyez apparaître le service ssh, et que SSH n'utilise plus le port 22, supprimez ce service :
firewall-cmd --permanent --zone=public --remove-service=ssh firewall-cmd --reload

Installation de fail2ban

Je vous propose ici la procédure pour CentOS 7, une distribution linux des mieux adaptées aux serveurs, sinon la mieux. Elle fonctionne également sous Debian 8. Tout d'abord, pour installer fail2ban : Centos :
yum install fail2ban
Debian :
apt-get install fail2ban
Configurez votre configuration fail2ban dans le dossier /etc/fail2ban/jail.local. Ce fichier ne sera pas écrasé lors d'une mise à jour ! Sous CentOS 7, vous pouvez vous baser sur ce fichier qui vous propose nombre de protections. Remplacez dans ce fichier mail@example.com par votre adresse e-mail (vous y recevrez les notifications de fail2ban). Remplacez port=ssh par le numéro du port ssh en service si celui-ci n'est pas le 22 (pour plus de sécurité choisissez un autre port). Démarrez fail2ban :
service fail2ban start
Si vous êtes sous CentOS 7 (ou que vous avez la même version de fail2ban), un bug fait qu'après redémarrage, fail2ban ne fonctionnera plus. La raison est un dossier qui est supprimé au redémarrage. Pour remédier à ça, copiez le texte suivant dans le nouveau fichier /etc/tmpfiles.d/fail2ban.conf (le nom du fichier n'a pas d'importance, seulement son emplacement) :
D /run/fail2ban 0755 root root -

Finalisation

Sans vous déconnecter de SSH, dans un nouvel onglet, essayez de vous connecter :
  1. Avec le port par défaut : ssh user@adresse.fr : la connection échoue en vous répondant : No route to host. Très bien, le pare-feu a fonctionné !
  2. Avec le nouveau port : ssh -p 1289 user@adresse.fr (en remplaçant 1289 par votre port SSH) : là ça doit fonctionner.
Si tout fonctionne, redémarrez votre serveur et vérifiez que tout va toujours bien ! Lors du redémarrage, fail2ban doit vous indiquer que les services ont été stoppés, puis d'autres mails mettant qu'ils ont été démarrés.

Test de fail2ban

Depuis une IP que vous n'utiliserez plus, essayez de vous connecter sur le serveur avec le bon port SSH, en mettant un mot de passe erroné. Faites-le jusqu'à dépasser la limite de nombre de tentatives (3 avec le fichier de configuration fournit). Vous êtes alors banni : on ne vous demande même plus le mot de passe, c'est refusé direct. Et un mail vous est envoyé indiquant que l'IP utilisée pour le test a été bannie. Fin ! Vous avez un serveur bien sécurisé.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.