Sécuriser un serveur SSH

26 mai 2014 Sécurité 0 Commentaire

Si vous administrez votre propre serveur, vous vous y connecter forcement a distance via le protocole SSH. SSH est donc indispensable car en plus de fournir un accès en ligne de commande à votre serveur il permet de se passer complètement d’un FTP et de déposer vos fichiers en SFTP (SSH File Transfer Protocol).
Il est donc nécessaire et même vital de paramétrer et sécuriser un serveurSSH. Avant de nous y mettre je vous conseille fortement d’ouvrir deux connexions SSH, la première vous permettra de faire vos modifications tandis que la seconde vous permettra de garder un accès de secours en cas de mauvaise manip !

 

Commencez donc par ouvrir votre fichier de configuration

nano /etc/ssh/sshd_config

 

Voici a quoi cela devrait ressembler

# Package generated configuration file
# See the sshd(8) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile	%h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

UsePAM yes

 

Nous allons donc sécuriser notre serveur SSH en :

  1. Modifiant le port de connexion
  2. Interdisant un accès en root
  3. Restreignant l’accès a certains users
  4. Restreignant l’accès a certains users depuis une certaine IP

 

 

Modification du port de connexion

Recherchez les lignes suivantes

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

et modifiez le port, le mieux est de choisir un nombre supérieur à 20000, par exemple 27658 (choisissez VOUS-MÊME votre port de connexion)

 

 

Interdire les connexions root

Il est très important d’empêcher l’utilisateur root de pouvoir se connecter a votre serveur SSH, mais pourquoi ? La réponse est simple, de nombreux bots essaieront de se connecter sur votre serveur en utilisant l’utilisateur root et des mots de passes standard.

Recherchez la ligne suivante

PermitRootLogin yes

et modifiez la en

PermitRootLogin no

 

 

Restreindre les connexions a certains users

Dans votre fichier de configuration ajouter la ligne suivante

AllowUsers <nom_utilisateur>

Tout ne n’oubliant pas de bien remplacer la variable <nom_utilisateur> par votre user

 

 

Restreindre les connexions a certains users depuis une certaine IP

Dans votre fichier de configuration modifiant la ligne suivante

AllowUsers user@ip

Tout ne n’oubliant pas de bien remplacer la variable user par votre nom d’utilisateur et ip par votre ip

 

Vous pouvez maintenant recharger la configuration de votre serveur ssh en lancant la commande suivante

service sshd reload

 

Ne fermez pas votre fenêtre de connexion putty, ouvrez en une seconde et tentez de vous connecter, si vous pouvez vous connecter tout est ok, sinon il faudra revoir votre configuration !