Sécuriser son serveur Linux (Partie 1)
Comme vous le savez (maintenant si), le compte root sur une machine Linux/Unix est le compte utilisateur (enfin administrateur) le plus important. Et pour cause, il permet de faire absolument tout sur la machine, le meilleur comme le pire. Beaucoup de débutants dans le monde des serveurs (je parle de personnes utilisant pour diverses raisons un serveur dédié loué à droite ou à gauche) ne connaissent rien en sécurité informatique et il faut le dire, ça se voit :
- Accès root depuis l’extérieur (accès en SSH)
- Accès SSH par mot de passe (et qui dit mot de passe de débutant, dit mot de passe avec 3 chiffres et 4 lettres)
- Firewall qui fait la tête (enfin non il laisse tout passer c’est plus simple comme ça)
Bref vous l’avez compris l’idée ici est de proposer quelques modifications simples pour sécuriser un minimum votre serveur linux à distance. On va partir sur deux parties :
- Partie I (ce tuto) : Ajout d’un utilisateur / Configuration SSH / Accès limité au compte « root »
- Partie II (http://blog.vincentcharles.ovh/index.php/2015/10/21/securiser-son-serveur-linux-partie-2/) : Configuration du firewall / Outils de protection DDOS – Scan de ports…
Création d’un utilisateur et ajout au groupe wheel
Pour commencer, on va faire un nouvel utilisateur qui aura donc l’accès à SSH (accès à distance) mais également la possibilité d’accèder au « root » par élévation de droits via la commande « su ».
Pour cella !
On peut ensuite changer son mot de passe pour commencer (même si on va vite le remplacer pour une clé RSA)
On tape le mot de passe souhaité, à deux reprises.
Au sujet du mot de passe, attention à utiliser un mot de passe fort pour vos utilisateurs et surtout pour votre compte root. Vous pouvez le modifier avec cette commande :
Nous le verrons plus tard, mais nous allons limité l’élévation de droits (c’est à dire le passage en root) qu’au utilisateur appartenant au groupe « wheel ». Il nous faut donc ajouter ce groupe à notre nouvel utilisateur :
Vous pouvez ajouter autant d’utilisateurs que vous voulez de cette façon, mais tout le monde n’a pas forcement besoin de cet accès, qu’en pensez-vous ?
Si vous souhaitez retirer les droits du groupe wheel à un utilisateur, c’est comme ça
La première méthode supprime tous les groupes secondaires de l’utilisateur (sur un utilisateur dédié à l’accès SSH c’est ok), la seconde retire juste le groupe en question (plus adapté si l’utilisateur en question gère d’autres choses sur la machine).
Maintenant, on a :
- un utilisateur root (avec son mot de passe mis à jour si on l’a changé)
- un utilisateur admin (qui a son propre mot de passe et appartient à wheel pour l’accès root)
Restreinte l’accès aux droits root aux membres de « wheel »
Vous pouvez vous déconnecté de l’utilisateur root (#logout ou #exit) et vous reconnectez en « admin ».
Pour repasser root :
puis votre mot de passe
Maintenant, nous allons restreindre l’utilisation de « su » qu’aux utilisateurs du groupe « wheel ». Pour ça, nous éditons le fichiers : /etc/pam.d/su en décommentant la ligne suivante :
Si vous créez un nouvel utilisateur qui n’appartient pas à wheel, il ne pourra pas passer en root même s’il connait le mot de passe de ce dernier.
Génération de clé RSA(2048bits) pour SSH
Depuis le début, on considère que l’on a accès à la machine via SSH. Nous allons passer à la configuration de ce service mais avant ça, on va créé notre couple de clé RSA pour un accès sans mot de passe, plus sécurisé donc.
La, il y a deux écoles :
- on utilise son utilisateur du coté serveur pour générer les clés :
Vous validez le dossier de création des fichiers puis choisissez un mot de passe pour déchiffrer la clé
A ce stade, vous avez deux fichiers générés : id_rsa (clé privée = SECRÈTE) et id_rsa.pub (clé publique).
- on utilise un générateur de clé SSH (celui de Putty sous Windows est très bien
On choisi le type de clé : RSA2048 puis on génère la clé. On enregistre sa clé privée quelque part (fichier .ppk) et on met de coté la clé publique.
La deuxième méthode est sans doute la plus simple puisque le fichier (clé privée) généré est disponible sur votre machine personnelle directement et surtout elle est compatible avec la majorité des applications ssh sous Windows (Putty, WinSCP)
Maintenant, il faut renseigner à votre serveur les clés publiques qui correspondent aux clés privées :
Dans ce fichier (authorized_keys) qui doit se trouver très exactement à cet emplacement : /home/admin/.ssh/, vous inscrivez vous clés publiques (copier/coller)… et vous laissez dans lignes vides à la suite des clés (une clé par ligne).
Il faut enfin vérifier les droits de chaque fichier :
Faites un essai en vous connectant maintenant avec votre clé et non votre mot de passe. Si tout est OK, on passe pour finir à la configuration de SSH pour limiter les accès.
Configuration de SSH
Dans la même foulée, on va :
- Empêcher la connexion par mot de passe
- Bloquer l’utilisateur root en SSH
- Permettre l’accès par clés publique/privée
- Restreindre SSH à certains utilisateurs
Pour ça, il faut éditer le fichier /etc/ssh/sshd_config :
A ce stade, c’est terminé. Si les modifications ont été sauvegardé, relancer le service ssh-server pour tester :
la partie 2 a un mauvaise url:
http://blog.vincentcharles.ovh/2015/10/21/securiser-son-serveur-linux-partie-2/
au lieu de
https://blog.vincentcharles.ovh/index.php/2015/10/21/securiser-son-serveur-linux-partie-2/
Merci pour votre commentaire. Je fais le changement.