10 étapes pour sécuriser un serveur Linux pour un environnement de production

Nov 28, 2021
admin
Megha Pandey
Megha Pandey

Follow

Oct 5, 2017 – 6 min lu

Sécuriser un serveur Linux est essentiel pour protéger nos données des hackers. Mais sécuriser un serveur n’a pas besoin d’être compliqué .Nous devrions adopter une méthode qui protégera notre serveur des attaques les plus fréquentes en même temps qu’une administration efficace .

Cependant, ne prenez pas les choses pour acquises. Même les serveurs les plus endurcis peuvent être détournés en exploitant n’importe quel composant vulnérable fonctionnant sur ce serveur.

Installer ce dont vous avez besoin

La première règle est de garder votre serveur mince et méchant. N’installez que les paquets dont vous avez réellement besoin. S’il y a des paquets non désirés ; purgez-les. Moins il y a de paquets, moins il y a de chance d’avoir du code non patché.

Mettre en marche SELinux

Security-Enhanced Linux (SELinux) est un mécanisme de sécurité de contrôle d’accès fourni dans le noyau.

SELinux fournit 3 modes de fonctionnement de base :

  • Enforcing : C’est le mode par défaut qui permet d’activer et d’appliquer la politique de sécurité SELinux sur la machine.
  • Permissif : Dans ce mode, SELinux n’appliquera pas la politique de sécurité sur le système, seulement des avertissements et des actions de journal.
  • Désactivé : SELinux est désactivé.

Il peut être géré à partir du fichier ‘/etc/selinux/config’, où vous pouvez l’activer ou le désactiver.

Sécuriser l’accès à la console

Vous devez protéger l’accès à la console des serveurs Linux en désactivant le démarrage à partir de périphériques externes tels que les DVD / CD / stylo USB après la configuration du BIOS. Aussi ,définissez le mot de passe du BIOS et du chargeur de démarrage grub pour protéger ces paramètres.

Restreindre l’utilisation des anciens mots de passe

Nous pouvons restreindre les utilisateurs à utiliser les mêmes anciens mots de passe. Le fichier des anciens mots de passe est situé dans /etc/security/opasswd. Cela peut être fait en utilisant le module PAM.

Ouvrir le fichier ‘/etc/pam.d/system-auth’ sous RHEL / CentOS / Fedora.

# vi /etc/pam.d/system-auth

Ouvrir le fichier ‘/etc/pam.d/common-password’ sous Ubuntu/Debian/Linux.

# vi /etc/pam.d/common-password

Ajouter la ligne suivante à la section ‘auth’.

auth sufficient pam_unix.so likeauth nullok

Ajouter la ligne suivante à la section ‘password’ pour interdire à un utilisateur de réutiliser les 3 derniers mots de passe.

password sufficient pam_unix.so nullok use_authtok md5 shadow remember=3

Les 3 derniers mots de passe sont mémorisés par le serveur. Si vous essayez d’utiliser l’un des 3 derniers anciens mots de passe, vous obtiendrez une erreur comme.

Vérifier les ports d’écoute

Utiliser la commande ‘netstat’ pour voir les ports ouverts et et les services correspondants .

netstat -tunlp 

Désactiver les services indésirables du système en utilisant la commande ‘chkconfig’ et fermer les ports qui ne sont pas nécessaires.

chkconfig serviceName off

Désactiver le login root

Il n’est pas conseillé de ssh dans votre serveur en tant que superutilisateur(root). Nous devrions désactiver le ssh en tant qu’utilisateur root sur le serveur, mais avant de le faire, créons un utilisateur avec les pouvoirs sudo afin que vous puissiez vous connecter au serveur et effectuer des tâches administratives. Une fois que vous êtes connecté au serveur, vous pouvez toujours passer de l’utilisateur à root, si nécessaire.

Créer un nouvel utilisateur :

useradd user1

Créer un mot de passe pour l’utilisateur ajouté :

passwd user1

Prêter des autorisations sudo à l’utilisateur nouvellement ajouté :

echo 'user1 ALL=(ALL) ALL' >> /etc/sudoers

SSH au serveur avec le nouvel utilisateur et s’assurer que la connexion fonctionne.

Nous allons maintenant désactiver le login root, ce qui signifie que personne ne peut ssh ou se connecter au serveur en tant qu’utilisateur root. Pour ce faire, ouvrez le fichier de configuration sshd :

nano /etc/ssh/sshd_conf

Puis, décommentez la ligne qui dit

PermitRootLogin no

Puis enregistrez et fermez ce fichier et redémarrez le service

service sshd restart

Important : Ne vous déconnectez pas encore du serveur. Testez d’abord si vous pouvez réussir à vous connecter au serveur par ssh en utilisant l’utilisateur précédemment créé. Ouvrez une autre instance du terminal et connectez-vous au serveur avec l’utilisateur que vous avez créé précédemment. Si tout fonctionne bien, vous pouvez vous déconnecter du serveur en toute sécurité en tant que root.

Changer le port

Nous pouvons changer le port SSH par défaut pour ajouter une couche d’opacité pour garder votre serveur en sécurité .

Ouvrir le fichier /etc/ssh/sshd_config

remplacer le port 22 par défaut avec un numéro de port différent disons 1110

sauvegarder & sortir du fichier

service sshd restart

Maintenant pour se connecter définir le port No.

ssh username@IP -p 1110

Désactiver Ctrl+Alt+Suppression dans Inittab

La frappe de Ctrl+Alt+Suppression amènera votre serveur à un processus de redémarrage. Il est donc toujours conseillé de désactiver cela car quelqu’un peut redémarrer le système par erreur.

L’action ctrl+Alt+Del est définie dans /etc/init/control-alt-delete.conf .Commentez la ligne ci-dessous

La connexion sans mot de passe

Nous pouvons facilement nous connecter à notre serveur par SSH sans aucun mot de passe en générant les ssh-keys. Faites juste attention à ce que vous ne puissiez vous connecter à votre serveur que depuis la machine sur laquelle vous avez généré les clés ssh

Générer les clés SSH :

ssh-keygen - t rsa

Copiez votre clé SSH publique , puis ajoutez la même dans le serveur

cat ~/.ssh/id_rsa.pub

Pour ajouter des clés ssh dans le serveur

Supposons que nous avons l’utilisateur-user1 pour fournir un accès par clé ssh au serveur

cd /home/user1
ls -ll

Créer un répertoire .ssh et à l’intérieur de celui-ci créer un fichier nommé authorized_keys et ajouter la clé ssh publique des utilisateurs dans le même

mkdir .ssh
cd /home/admin/.ssh
vim authorized_keys

Ajouter la clé ssh publique et ensuite changer le propriétaire du . fichier

chown user1 authorized_keys

Désactiver la connexion ssh

Modifier /etc/ssh/sshd_config

Passwordauthentication no
PermitRootLogin no

Maintenant, seul l’utilisateur autorisé peut se connecter au serveur avec la commande

ssh user-name@serverIP -p(port Number)

Fail2Ban pour la connexion SSH

Fail2ban fonctionne en modifiant dynamiquement les règles du pare-feu pour interdire les adresses qui ont tenté sans succès de se connecter un certain nombre de fois.

Installer Fail2ban :

sudo apt-get update
apt-get install fail2ban

Créer un nouveau fichier jail.local et copier le contenu de jail.config dans le même et faire les changements dans le fichier jail.local seulement

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Modifier /etc/fail2ban/jail.local

Faites les changements souhaités:


enabled = true
port = ssh ( provide the port number if the default port is changed )
protocol = tcp
filter = sshd
logpath = /var/log/secure
maxretry = 3 ( max no. of tries after which the host should be banned)
findtime = 600 (This parameter sets the window that fail2ban will pay attention to when looking for repeated failed authentication attempts in seconds)
bantime = 600 (time duration for which the host is banned -in seconds)

Puis redémarrez les services fail2ban

service fail2ban restart

L’IP peut être bloqué de façon permanente en définissant bantime = -1.

Note : FAIL2BAN bloquera l’IP globale .

La sécurité était un inconvénient parfois, mais maintenant c’est une nécessité tout le temps – Martina Navratilova

Merci de lire . Si vous avez trouvé cet article utile, quelques applaudissements signifieraient beaucoup !

Stay tuned 🙂

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.