La sécurité est un aspect très important lorsque l'on provisionne un serveur. Par défaut Debian est assez permissif: pas de pare-feu, permissions de dossiers laxistes, accès SSH possible pour l'utilisateur root, etc... Cela peut poser de nombreux problèmes de sécurité si le VPS héberge un service fréquenté. Dans cet article je vais aborder les différents points à sécuriser lors du provisionnement d'un serveur Debian (bien que cela s'applique aux autres distro)

Sécurisation de l'accès SSH

Par défaut le service SSH est assez permissif, il écoute sur le port 22 ce qui le rend sensible aux attaquants, il suffit de voir les logs du service pour ce rendre compte du nombre de tentatives d'accès !

La première chose à faire est de changer le port d'écoute SSH, pour ce faire il faut éditer le fichier sshd_config

sudo vim /etc/ssh/sshd_config

Et de changer la ligne suivante

# Port 22

et de modifier 22 par n'importe quel port valide

Ensuite, désactiver les accès root via ssh peut être une bonne pratique aussi, pour ce faire il suffit de changer la ligne suivante

#PermitRootLogin prohibit-password

en

PermitRootLogin no

Finalement il peut être bien aussi de désactiver les accès par mot de passe et d'utiliser l'authentification par clef public plutôt.

Enfin il suffit de restart le service ssh pour appliquer les changements

sudo service sshd restart

Veuillez noter que maintenant il faut spécifier le port ssh lors de la connection. Pour ce faire:

ssh somone@monserver.tld -p <portNumber>

Mise en place d'un firewall

Mettre en place un pare-feu est une bonne pratique quand on souhaite renforcé la sécurité d'un serveur. Par défaut sous debian le mode de filtrage est "passive" : toutes les connections sont autorisé sauf si explicitement interdites. En d'autre mots on choisit ce que l'on veut interdire. Il convient alors d'installer ufw un petit programme qui wrapper iptables et rend son utilisation plus simple. De plus ufw par défaut est "restrictif" on doit donc autorisé les connections que l'on veut. Cela permet de mettre en place une meilleure sécurité.

Pour installer ufw rien de plus simple

sudo apt install ufw

Veuillez noté que ufw est désactivé par défaut, ce qui est très important car nous avons aucune règle pour le moment.

Pour autorisé une règle rien de plus simple:

sudo ufw allow <port>

cela va autorisé le port <port> à recevoir des connections de n'importe qui, en Ipv4/Ipv6. Veuillez noté que l'on peut aussi restreindre les IPs qui peuvent utilisé ce port.

Nous allons donc autorisé notre port SSH par exemple

sudo ufw allow <sshPort>

Puis ensuite on peut faire

sudo ufw enable

Pour active le firewall. Si l'on as toujours accès au serveur après ça tout va bien! Le pare feu est en place, et seule la connection au service SSH est autorisée.

Pour voir le status du firewall on peut effectuer la commande suivante:

creekorful@demo:~# sudo ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)

On peut voir ici que le port 22 est autorisé à recevoir des connections de n'importe quel IPv4/IPv6. Aucune autre connection ne sera acceptée car on peut voir que les règle (incoming) sont réglés à deny (refusé). Par contre toutes les connections sortantes sont autorisées (outgoing) allow.