Linux - Sécuriser votre Serveur SSH
Par Gerald Lonlas le lundi 28 mai, 2007, 15:12 - Admin reseau - Serveurs - Lien permanent

Si vous avez laissé la configuration de base de votre serveur SSH, vous avez sûrement du remarquer dans vos logs que votre serveur SSH était très sollicité par des tentatives de connexions.
Généralement dû à un brute-force ce type de tentatives peuvent risquer la compromission de votre serveur.
Cet article vous présente une solution simple à mettre en place pour sécuriser votre serveur SSH contre les attaques extérieures.
Cette solution se base autour des trois modifications suivantes :
- Changer le port du serveur SSH
- Interdire les connexions en tant que Root
- Limiter le nombre de tentative
La configuration ci-dessus à été faite sur des distributions Debian Sarge et Etch.
Changer le port du serveur SSH
- Ouvrir le fichier de configuration du serveur SSH (/etc/ssh/sshd_config)
- Changer Port 22 par Port xxxx (où xxxx représente le nouveau port de votre serveur ssh, choisissez de préférence un port au dessus de 1024)
ex : Port 3456
Interdire les connexions en tant que Root
- Ouvrir le fichier de configuration du serveur SSH (/etc/ssh/sshd_config)
- Changer PermitRootLogin yes par PermitRootLogin no
Limiter le nombre de tentative
Bien que le changement du port et l’interdiction de connexion sous Root limite le nombre de tentative par les scripts de brute-force.
Nous allons voir comment limiter le nombre de tentatives de connexion pour être sûr de ne plus être harcelé par un brute-force.
Pour cela il faut éditer votre script d’Iptables et ajouter la ligne suivante :
-A INPUT -p tcp -m tcp -s votre_IP --dport xxxx -j ACCEPT
-A INPUT -p tcp -m tcp -m limit --dport xxxx --limit 5/hour -j ACCEPT
(où xxxx représente le nouveau port de votre serveur ssh)
La première directive est optionnelle elle permet de dire à IPtables de toujours autoriser votre IP à se connecter au serveur SSH (à utiliser seulement si vous avez une IP fixe)
La deuxième directive IPtables permet de limiter le nombre de tentatives à 5 par heures.
N’oubliez pas d’enlever la ligne qui autorise les connexions sur le port 22.

Commentaires
Merci bien, je vais le faire de ce pas sur mon serveur
Très bon article. La technique est pas mal.
Je vais essayer de l'appliquer sur mon serveur.
Je cherchais à supprimer l'accès root en ssh, concis précis.
Merci.
Ravis de savoir que tu as trouvé ce que tu voulais dans cet article.
bonjour,
Vous nous dites d'Interdire les connexions en tant que Root , mais alors comment créer un user et le configurer pour remplacer root ?
merci d'avance de nous montrer , je pense que ce serait un grand plus à votre toturial
ce serait très utile pour un novice en ligne de commande comme moi
Phillipe une fois l'accès au root interdit,
tu te log avec un user ^^ tu entre son mot de passe et c'est bon
ensuite pour se connecter en tant que root doirt supérieur à l'utilisateur de base proposé lors de l'install d'une debian ou autre ^^^tu utilise sudo
sous debian "su -" et il réclame le pass de root et te voila en root ^^^^
Merci Chris !
C'est tout a fait ça. Il faut se connecter en tant qu'utilisateur normal sur le serveur (déjà ça limite la casse si quelqu'un arrive à récuperer votre mot de passe utilisateur). Ensuite il faut utiliser les commandes "su -" ou "sudo" (en fonction de votre distribution linux), le serveur vous demandera votre mot de passe root.
Vous voila connecté en Root
Attention : il faut bien faire attention à ne pas mettre le même mot de passe pour l'utilisateur normal et l'utilisateur root (sans quoi un pirate connaissant votre mot de passe utilisateur pourra se connecter en root sans aucun problème).
Tin bande de nazes!!
Philippe a raison !
Comment peut on créer un user normal jsutement pour ne pas se logger en root ??
Dans le cas d'un serveur dédié (et pas d'une version desktop type ubuntu pour les nazes comme vous), l'installation ne crée qu'un user root.
Ensuite il faut en créer un autre donc!!
Et là, ça se passe obligatoirement par le ssh
Donc, comme le demande philippe, comment fais ton pour créer un user "normal" en ligne de commande en ssh ?
Merci par avance pour ceux qui savent.
et bah .. tu sais ce qu'ils te disent les utilisateurs d'Ubuntu et autre ?
je sais pas si on est des nazes mais toi tu fait un beau connard !
+ 1 Sndk
Comment peut-on traiter les autres de noob quand on est pas foutu de savoir comment créer un utilisateur standard.
Y'a vraiment des abrutis
Je ne pense pas que commencer en traitant les autres de nazes soit la meilleur façon d'avoir de l'aide.
En revanche, je suis curieux de savoir quelle distribution tu utilises. Je suis sous Slack et il me semble que lors de l'installation il est proposé de choisir un utilisateur lambda.
J'ai essayé du debian, du opensuse et du mandriva et j'ai le même souvenir (pour opensuse je suis sûr : c'est récent)
Sinon, va voir du côté de adduser (ajouter utilisateur) et useradd (utilisateur ajouter), les 2 ne sont pas forcément présent (useradd si ?) et lis les pages de man.
Salut ;
Très bon article, mais juste une chose.. comment on édite le fichier d'iptable sous une Debian Etch 4.0 ?
Merci de votre aide
Réponse au post n°8 "8. Le mardi 10 juin, 2008, 02:44 par Vousetes trop con bande de noob"
Il s'agit dans le cas de cet article de sécuriser son serveur ...
En effet, je pense que tu fait parti de ces gens qui installe tout leurs services et applis via l'user root ...
Très pro comme solution, il ne reste plus qu'a un pirate de trouver des failles logiciels, les exploiter, et comme tu les auras installés avec l'user root ... bon on a deviné la suite !
C'est la raison pour laquel il est vivement conseiller de créer un nouvel user (en étant root), et d'interdire la connexion root direct ... en passant par la commande su après, oui, mais pas directement !
Alors comme dis précédemment, quand on ne sait même pas ajouter un utilisateur standart, on ne viens pas insulter les braves gens qui font des tutos interessant de "noob" ou encore "connard" ...
Si t'es pas content de ma réponse, je t'invite a venir me rejoindre sur mon site ou par mail ... il n'y a aucun soucis petit.
Thib.
PS => Thomas, avec vi tu dois pouvoir le faire sans problème
Bonjour,
Le net est vraiment à l'image du monde !
Franchement, à quoi ca sert de s'insulter ainsi.
Bref, pour information, tout user du système peut se connecter au serveur ssh sauf contre ordre dans la config du serveur ssh. (AllowUser ou cf whitelist et blacklist)
Sinon, il y a apparemment une commande ds la config du serveur qui permet de limiter les tentatives. Ca peut éviter d'aller le faire au niveau IP dans le firewall.
J'ai pas encore essayé mais je vais le faire.
MaxStartups 10:30:60
Cette option permet de limiter le nombre de connexion : le 10 représente le nombre de connexions acceptées sans qu'un utilisateur ait réussi à s'identifier, si cela passe au dessus de 10, il y a 30 % de chances que les suivantes soient bloquées, ça augmente linéairement jusqu'à complétement bloquer les connexions à 60 %.
CF
http://virologie.free.fr/documents/...