Introduction
Les trois premières étapes à réaliser pour sécuriser son nouveau serveur Ubuntu, dans le cloud ou pas :
- Modifier le port par défaut pour les connexions SSH.
- Désactiver les accès directs en SSH avec le compte root.
- Activer le parefeu ufw (Ubuntu Uncomplicated Firewall) en autorisant les connexions entrantes SSH.
Cet article n’explique pas comment activer et utiliser le parefeu ufw, il y a déjà beaucoup de tutoriels à propos d’ufw,
cet article se concentre sur comment pour la première fois activer ufw en toute sécurité en autorisant les connexions SSH avec SSH s’exécutant
sur un port différent de celui par défaut. Dans de nombreux articles, le lecteur est averti d’être prudent lors de l’activation d’ufw
mais sans mentionner la commande ufw show added
, cette commande garantissant qu’il n’y a pas d’erreur humaine avant l’activation
d’ufw, erreur humaine qui peut couper les connexions SSH existantes sans possibilité d’en établir de nouvelles autrement qu’en contactant
le fournisseur (cloud) ou en accèdant physiquement au serveur.
Dans cet article, le service ssh écoutera sur le port 1857 et ufw sera activé en autorisant les connexions SSH entrantes sur ce port. Des vérifications complémentaires sont faites avant l’activation d’ufw (IP v6 et les stratégies par défaut).
Modification du port par défaut des connexions SSH
Par défaut, le service SSH écoute sur le port 22. Sans configuration de sécurité et de parefeu définie, des tentatives de connexions nombreuses
apparaissent rapidement dans le fichier de log /var/log/auth.log
/var/log/auth.log
Mar 26 12:29:18 vps sshd[26691]: Failed password for invalid user cb from 103.36.30.157 port 56224 ssh2
Mar 26 12:29:18 vps sshd[26691]: Received disconnect from 103.36.30.157 port 56224:11: Bye Bye [preauth]
Mar 26 12:29:18 vps sshd[26691]: Disconnected from invalid user cb 103.36.30.157 port 56224 [preauth]
Donc, première chose à faire, modifier le port 22 par défaut du service SSH : ici le port 1857 est choisi.
Modifier le port du service SSH dans le fichier /etc/ssh/sshd_config
:
/etc/ssh/sshd_config
Port 1857
Redémarrer ensuite le service SSH :
root@vps$ /etc/init.d/ssh restart
Toutes les nouvelles connexions SSH avec Putty, ou tout autre outil (FTP Filezilla…), seront définies avec ce nouveau port.
netstat
ou lsof
sont des binaires pratiques pour verifier les ports d’écoute et l’id de process du service ssh :
root@vps$ lsof -i -P -n | grep LISTEN | grep 'sshd'
sshd 939 root 3u IPv4 18880 0t0 TCP *:1857 (LISTEN) sshd 939 root 4u IPv6 18891 0t0 TCP *:1857 (LISTEN)
root@vps$ netstat -tulpn | grep LISTEN | grep 'sshd'
tcp 0 0 0.0.0.0:1857 0.0.0.0:* LISTEN 939/sshd tcp6 0 0 :::1857 :::* LISTEN 939/sshd
Désactiver les accès directs avec le compte root
Pour renforcer la sécurité, désactiver les accès directs avec le compte root
via des connexions SSH.
Créér un compte qui servira de compte de rebond pour les accès root
, par exemple un compte qui s’appellera gateway
:
root@vps$ useradd -d /home/gateway -m -g wapp -s/bin/bash gateway
Appliquer un mot de passe fort pour ce compte gateway
:
root@vps$ passwd gateway
Enter new UNIX password:... passwd: password updated successfully
Dans le fichier /etc/ssh/sshd_config
, appliquer la valeur no
au paramètre PermitRootLogin
dans la section
Authentication
:
/etc/ssh/sshd_config
# Authentication:
...
PermitRootLogin no
...
Redémarrer le service SSH :
root@vps$ /etc/init.d/ssh restart
Le compte gateway
précédemment créé sera utilisé pour les accès root :
gateway@vps$ su - root
Configuration et activation d’ufw
Un port différent du port par défaut est à présent défini pour SSH et les accès directs avec le compte root
ne sont plus permis.
ufw va pouvoir être activé pour la première fois en autorisant les connexions SSH entrantes sur le port 1857.
Mais tout d’abord, IP v6 et les stratégies par défaut sont vérifiés.
IP v6
Avant d’activer ufw, vérifier si IP v6 est désactivé ou non sur le système Ubuntu.
IP v6 est supporté et activé si le fichier /proc/net/if_inet6
existe.
root@vps$ ls /proc/net/if_inet6
Ce fichier liste toutes les interfaces réseaux pour lesquelles IP v6 est activé :
root@vps$ cat /proc/net/if_inet6
fe80000000000000f8163efffeb7a0f0 02 40 20 80 ens3 00000000000000000000000000000001 01 80 10 80 lo
Ici, IP v6 est actif pour les interfaces réseaux ethernet
(ens3
, anciennement eth0
)
et loopback
(lo
).
Si IP v6 est actif sur le serveur Ubuntu, il faut s’assurer que ufw est configuré pour le support d’IP v6,
ainsi ufw gérera les règles de parefeu pour IP v6 en addition d’IP v4. Vérifier que le paramètre IPV6
est défini à yes
dans le fichier /etc/default/ufw
.
/etc/default/ufw
IPV6=yes
Avec ce paramètre, lorsque ufw est activé, les règles de parefeu seront configurées à la fois pour IP v4 et IP v6.
Policies
Toujours dans le fichier /etc/default/ufw
, s’assurer que les paramètres DEFAULT_INPUT_POLICY
et DEFAULT_OUTPUT_POLICY
sont définis respectivement à DROP
et ACCEPT
.
/etc/default/ufw
DEFAULT_INPUT_POLICY="DROP"
DEFAULT_OUTPUT_POLICY="ACCEPT"
Avec ces valeurs, lorsque ufw est activé pour la première fois, le règles de parefeu seront :
- autorisation de toutes les connexions sortantes (allow outgoing).
- interdiction de toutes les connexions entrantes (deny ingoing).
Autorisation des connexions SSH entrantes
Ajouter alors la règle de parefeu autorisant les connexions entrantes SSH sur le port 1857 :
root@vps$ ufw allow 1857
Rules updated Rules updated (v6)
Vérifier que la règle est ajoutée correctement avec la commande show added
:
root@vps$ ufw show added
Added user rules (see 'ufw status' for running firewall): ufw allow 1857
Activation d’ufw
Maintenant ufw peut être activé en tout sécurité, les connexions SSH existantes et futures ne seront pas rompues :
root@vps$ ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Pour vérifier le statut de ufw :
root@vps$ ufw status verbose
Status: active Logging: off Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 1857 ALLOW IN Anywhere 1857 (v6) ALLOW IN Anywhere (v6)
2 règles autorisant les connexions entrantes sur le port 1857 sont créées : une règle pour IP v4, la deuxième pour IP v6.