Petit article Mémo, et au passage astuce pour les Administrateurs Système en herbe 🙂
Voici une petite explication sur la base de la sécurité en administration de serveur dédié Linux, à savoir sécuriser son compte “root” et son accès SSH.
Explications SSH et root
Pour ce qui est de l’accès SSH, il s’agit du protocole, du moyen, par lequel on prend la main sur un serveur dédié, et donc par lequel on s’identifie pour pouvoir envoyer des commandes la plus part du temps au travers d’un terminal.
Pour ce qui est du compte “root” il est créé par défaut sur un serveur dédié de type Unix et il à tout les droits sur le système.
Il est équivalent au compte “administrateur” que l’on peut avoir sur son Windows, mais il implique probablement beaucoup plus de risques que son homologue.
Avec un compte root, on à tout simplement accès à tout sur un serveur dédié !
Ainsi on peut par exemple installer ou supprimer des logiciels, effacer, déplacer ou modifier des fichiers qui ne sont pas associé à son utilisateur, ou encore tout simplement stopper ou redémarrer un service ou même le serveur dédié en lui même.
L’accès au compte root, est donc un peu comme le saint graal que recherche les hackeurs sur les serveurs dédiés, comme en témoigne les auth.log bourrés de tentative de bruteforce sur “root” …
Le but de cet article sera donc de vous expliquer comment, et en quoi, changer les réglages SSH et du compte root, seront utile à la sécurité de votre serveur dédié.
Sécuriser le compte root
A noter que comme mes collègues me l’ont fait remarquer, si vous avez une OS de type “desktop”, Ubuntu, Debian, ou autre, vous pouvez zapper cette première partie, car par défaut votre serveur dédié est livré avec compte root désactivé et avec un utilisateur de base créé avec droit sudo.
Pour les autres, évoluant sous OS de type purement “server”, vous pouvez continuer par ici 🙂
Je ne vais pas vous parler de la nécessité d’avoir un mot de passe compliqué pour ce compte root, ou encore de quel type de mot de passe choisir afin de ne pas ce faire hacker bêtement, dans tout les cas il semble logique d’utiliser un mot de passe assez complexe.
Mais au final, avec cette astuce, vous vous soucierez probablement moins de savoir si votre mot de passe root est assez fort ou pas, car, que vous ayez un mot de passe simple ou un mot de passe complexe, cette technique coupera l’herbe sous les pieds des hackings de base.
En effet, la plus part des tentatives de hack basique ce font sur des bruteforce du mot de passe de l’utilisateur “root”, car comme expliqué plus haut, une fois l’utilisateur “root” sous contrôle, on peut faire, en principe, ce que l’on veut sur le serveur dédié !
L’astuce consiste alors à tout simplement désactiver l’accès au protocol SSH pour l’utilisateur “root” !
Par ce biais, seul un accès “local” en étant physiquement à coté du serveur dédié, permettra d’utiliser le compte “root”, donc seul le technicien ou une personne habilité en datacenter.
Mais, avant de désactiver le compte “root”, comment administrer son serveur avec des droits équivalents ?
Tout simplement en donnant des accès “sudo” à un autre compte utilisateur !
Pour cela, vous pouvez télécharger le paquet “sudo” si vous ne l’avez pas déjà (apt-get install sudo) et il vous permettra de donner des droits de type root mais de manière plus sécurisée 🙂
D’autant plus qu’en utilisant un autre compte que “root” pour l’administration, vous pouvez aussi choisir un login personnalisé, et parfois aussi complexe qu’un mot de passe, vous aurez alors un couple login mot de passe encore plus difficile à “cracker” car il ne suffira pas de trouver le mot de passe, mais aussi le login utilisateur 😀
Alors voyons comment créer le compte secondaire et le rajouter dans les “sudoers” =>
Créons un utilisateur
# useradd -m -d /home/nomDossierUtilisateur/ -s /bin/bash nomUtilisateur
Puis on renseigne un mot de passe pour cet utilisateur
# passwd nomUtilisateur Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
On vérifie que l’utilisateur nouvellement créé soit fonctionnel en SSH
# ssh -l nomUtilisateur adresseipduserveur
Et on rajoute l’utilisateur dans le groupe des “sudoers”
# sudo visudo
Soit en rajoutant une ligne après
# User privilege specification root ALL=(ALL:ALL) ALL
Du type :
nomUtilisateur ALL=(ALL:ALL) ALL
Ou bien en autorisant tout les utilisateurs du groupe “sudo” et donc en confirmant les réglages suivant toujours dans le visudo
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
Pour rajouter un utilisateur dans le groupe sudo
# sudo usermod -a -G sudo nomUtilisateur
Une fois votre utilisateur dans la liste de sudoers, vous devrez utiliser la commande “sudo -s”, qui vous demandera une confirmation par mot de passe, pour lancer toutes les commandes comme si vous étiez “root” 🙂
Pour procéder à la désactivation de l’accès SSH pour l’utilisateur “root” voici la série de commandes =>
Editer la configuration ssh
# sudo vi /etc/ssh/sshd_config
Et modifier le texte “PermitRootLogin yes” en “PermitRootLogin no”
Il suffira alors de redémarrer le service SSH
# sudo service ssh restart
Dorénavant, le compte root n’est plus exploitable, et vous devrez utiliser votre nouveau compte utilisateur.
Coté hacking, la tâche sera donc plus hardue car il faudra aussi bien trouvé le bon login, que le bon mot de passe 🙂
Sécuriser le protocole SSH
La deuxième partie de cet article va donc vous expliquer comment sécuriser votre accès SSH, en modifiant tout simplement le port de fonctionnement de celui ci !
En effet, comme évoqué plus haut, il suffit de jeter un coup d’oeil à votre fichier /var/log/auth.log pour y trouver toutes les tentatives de hacking faite par des robots.
Extrait d’un /var/log/auth.log
Oct 13 10:41:39 xxx sshd[22582]: Failed password for root from 122.225.97.94 port 51911 ssh2 Oct 13 10:41:41 xxx sshd[22582]: Failed password for root from 122.225.97.94 port 51911 ssh2 Oct 13 10:41:44 xxx sshd[22582]: Failed password for root from 122.225.97.94 port 51911 ssh2 Oct 13 10:41:47 xxx sshd[22582]: Failed password for root from 122.225.97.94 port 51911 ssh2 Oct 13 10:41:50 xxx sshd[22582]: Failed password for root from 122.225.97.94 port 51911 ssh2 Oct 13 10:41:53 xxx sshd[22864]: Failed password for root from 122.225.97.94 port 56221 ssh2 Oct 13 10:41:53 xxx sshd[22582]: Failed password for root from 122.225.97.94 port 51911 ssh2 Oct 13 10:41:55 xxx sshd[22864]: Failed password for root from 122.225.97.94 port 56221 ssh2 Oct 14 03:25:52 xxx sshd[16831]: Failed password for invalid user admin from 62.210.180.15 port 62027 ssh2 Oct 14 03:25:54 xxx sshd[16833]: Failed password for invalid user support from 62.210.180.15 port 63653 ssh2
Le fait de changer le port d’utilisation est en soit très simple, mais sacrément efficace pour ce qui est de grandement diminuer, voir complètement stopper ce genre de bruteforce par des robots …
Voici la manipulation à faire pour éditer la config ssh =>
Editer la configuration ssh
# sudo vi /etc/ssh/sshd_config
Remplacer la section “Port 22” par le chiffre que vous voudrez (un chiffre supérieur à 2000 pour éviter les conflits avec des programmes importants).
Et enfin redémarrer le service SSH
# sudo service ssh restart
Vous devrez relancer votre connexion SSH, en prenant bien le soin d’utiliser le nouveau port, afin de constater le changement.
Voilà donc la petite sécurisation du SSH est terminée, et associée à celle du compte root, vous avez là un bon combo sécuritaire 🙂
Je peut vous indiquer que depuis ces manipulations, pour ma part, je n’ai quasiment plus de tentatives de bruteforce sur mon /var/log/auth.log .
A noter que vous pouvez aussi vous tourner vers cet article si vous souhaitez sécuriser d’avantage votre serveur dédié =>
http://www.wolwx.net/securiser-son-serveur-dedie-alerte-email-lors-dune-connexion-ssh-reussie/
En espérant que tout ça vous sera utile, et au besoin n’hésitez pas à commenter si vous avez des questions, ou à partager 😉