Maniatux's Blog

Welcome to the internet

Serveur: un peu de sécurité pour SSH

Rédigé par Xavier - -

Cet article est un complément au tutoriel "Monter son serveur web" écrit il y a quelques temps déjà.

openssh

Par défaut OpenSSH utilise le port 22 et autorise le login root. Il y a moyen d'augmenter un peu la sécurité en y remédiant. L'association SSH = 22 facilite grandement le travail d'éventuels pirates (ils connaissent déjà le port) et le login root permet de tout casser si le mot de passe est découvert.

Se logger en utilisateur standard n'est pas terrible non plus car des dégâts peuvent être faits dans le /home. Nous devons donc mettre en place un utilisateur inoffensif qui n'aura aucun droit. Il pourra néanmoins utiliser la commande "su" pour passer obtenir plus de droits.

Si un pirate trouve votre serveur, il devra d'abord trouver quel port est utilisé. Il devra ensuite trouver le login. Puis si il trouve votre mot de passe, il pourra se connecter mais n'aura aucun droit.

Objectifs

  • Changer le port
  • Créer un utilisateur inoffensif
  • Restreindre l'accès SSH

Changer le port

Ouvrez le fichier /etc/ssh/sshd_config et trouvez les lignes suivantes:

# What ports, IPs and protocols we listen for
Port 22

Et remplacez "22" par une valeur au moins supérieure à 4000 (les ports 0 à 1024 sont réservés, et ceux de 1024 à 4000 sont parfois utilisés aléatoirement). Relancez votre serveur.

# /etc/init.d/ssh restart

Maintenant, essayez de vous logger à distance:

$ ssh root@IPSERVEUR

Cela ne fonctionnera pas, car par défaut le port essayé sera 22. Si vous avez mis le port 6666 précédemment, vous devez taper:

$ ssh root@IPSERVEUR -p 6666

Créer un utilisateur inoffensif

Nous allons créer un utilisateur nommé "remotelogin" qui n'aura aucun droit:

# useradd remotelogin

Cet utilisateur n'a même pas de répertoire personnel. Ajoutez-lui un mot de passe:

# passwd remotelogin

Maintenant vous devez modifier les permissions du dossier de votre "véritable" utilisateur (si il y en a un). Imaginez par exemple que votre serveur web lise des pages situées dans le dossier /home/quentin/www. Passez ce dossier en permissions 750:

# chmod 750 /home/quentin

N'ajoutez pas l'option -R sinon les sous-dossiers seront aussi modifiés et cela pourrait causer des problèmes (ou du moins des comportements imprévus). La permission 750 c'est:

  • Propriétaire: tous les droits
  • Groupe: lecture et exécution
  • Autres: aucun droit

Notre nouvel utilisateur "remotelogin" ne faisant pas partie du groupe de quentin, il ne pourra donc pas accéder à ses fichiers. Si vous vous loggez en "remotelogin", vous ne pourrez pas entrer dans le répertoire /home/quentin (permission non accordée).

Restreindre l'accès SSH

Toujours dans votre fichier /etc/ssh/sshd_config, vous allez ajouter une ligne à la fin:

AllowUsers remotelogin

Puis relancez votre serveur

# /etc/init.d/ssh restart

Désormais, à distance, si vous essayez de vous logger en root ou en "quentin":

$ ssh root@IPSERVER -p 6666
$ ssh quentin@IPSERVEUR -p 6666

Cela ne fonctionnera pas! Mais SSH ne précisera pas que ces logins sont désactivés. C'est un peu comme négocier avec un videur pour entrer en boite de nuit, sans savoir que la porte principale est fermée à clé et qu'il faut passer par derrière. Une perte de temps pour les éventuels pirates. Evidemment seul le login en "remotelogin" fonctionnera:

$ ssh remotelogin@IPSERVEUR -p 6666

Aller plus loin

Phollowme a posté il y a quelques temps un article un peu plus poussé sur la sécurisation d'un serveur SSH à cette adresse.

Classé dans : Sysadmin - Mots clés : aucun