Date de publication: 15 octobre 2024

Premiers pas avec son VPS de chez OVH

Un utilisateur est créer 'debian' et à la première connexion ssh, le mot de passe est réinitialisé.

Changer l'utilisateur par défaut

Rien d'obligatoire ici, mais c'est toujours mieux de ne pas connaître votre nom d'utilisateur, non?

# ajout d'un nouvel utilisateur
sudo adduser _username_

# ajouter au sudo group
sudo usermod -aG sudo _username_

# vérifie
groups _username_

> _username_:_username_ sudo users

On peut ouvrir un nouvelle connexion avec notre nouvel utilisateur. Vérifier bien que vous avez accès à votre serveur avec le nouvel utilisateur avant de fermer la connexion initiale.

Et supprimer cet utilisateur 'debian':

# supprimer un compte utilisateur
sudo userdel -r -f _username_

Si on a besoin d'utiliser le 'root' et qu'on ne veux pas préfixer les commandes de 'sudo':

# passer par le root shell (on conserve notre profile)
sudo -s

# ou si vous avec besoin de l'environnement du root
# equivalent à su- 
sudo -i

En faisant ainsi, le root est accessible que depuis le système.

Connexion par clé SSH

Les clé ssh sont plus résistante au brute force.

On gagne en confort, puisque la connexion ne se fait plus par mot de passe mais via une passphrase.

Il faudra penser à bien stocker la clé privé.

ED25519 ou RSA?

Ici, j'utilise des clé ED25519 mais on peut tout aussi bien utiliser des clé RSA.
L'avantage des clé ED25519, c'est qu'elles sont plus concise.
L'avantage des clé RSA, c'est qu'elles sont plus compatible.
D'un point de vue sécurité, il me semble que les deux sont tout à fait correct. A condition pour les clés RSA d'utiliser une longueur de 4096.

Génération de la clé

# ED25519
ssh-keygen -t ed25519 -a 256

# ou RSA
ssh-keygen -b 4096

Mettre la clé publique sur le serveur

Étant sous windows, je fais cette étape manuellement.

# dans le dossier home
mkdir .ssh

# on y place notre cle
nano .ssh/authorized_keys

# on edit les droits
chmod 700 ~/.ssh -Rf

Sécuriser SSH

On va changer le port par défaut, régler le délai des sessions, désactiver l'authentication par mot de passe.

Le fichier de config. /etc/ssh/sshd_config

# edit la config.
sudo nano /etc/ssh/sshd_config

# change le port, nombre entre 49152 et 65535
Port 49655

#active la connexion par cle ssh
PubkeyAuthentication yes

# le timeout - 600 <= 10min
ClientAliveInterval 600
ClientAliveCountMax 0

# désactive la connexion par mot de passe
PasswordAuthentication no

# on redémarre le service
sudo systemctl restart ssh

Encore une fois, on vérifie qu'on arrive bien à se connecter au serveur avant de fermer la connexion initiale.

Configuration du par-feu

On va utiliser UFW (Uncomplicated FireWall).

Je vous invite à suivre ces étapes.

Fail2Ban

Son objectif est de bloquer les IP's qui tentent de pénétrer le serveur.

# installation
sudo apt install fail2ban

#on créer notre fichier de configuration
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# on edit
sudo nano /etc/fail2ban/jail.local

# restart le service
sudo service fail2ban restart

C'est un minimum, ici l'objectif est surtout de protéger contre les attaques par brute force.

Je ne peux que vous conseiller par la suite d'ajouter crowdsec

Sources utilisée, liens utiles

OVH permet de configurer le Network Firework OVHclound. C'est un par-feu qui permet de bloquer les connexions avant même qu'elles n'atteigne le serveur.
Je vous conseil de lire leur guide: Configurer le Network Firewall - ovhcloud.com