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 :
- Modifiant le port de connexion
- Interdisant un accès en root
- Restreignant l’accès a certains users
- 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 !