1. Première connexion
Connexion avec l’utilisateur fourni par votre Host :
ssh ubuntu@IP_DU_SERVEUR
Mise à jour du système :
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo apt autoclean
sudo reboot
2. Création de l’administrateur
Créer l’utilisateur :
sudo adduser arkan
Ajouter les droits administrateur :
sudo usermod -aG sudo arkan
Vérifier :
id arkan
Résultat attendu :
uid=1001(arkan)
groups=1001(arkan),27(sudo)
Tester les droits :
su - arkan
sudo whoami
Résultat attendu :
root
3. Installation de la clé SSH
Depuis Windows PowerShell, vérifier les clés disponibles :
dir $HOME\.ssh
Afficher la clé publique :
type $HOME\.ssh\id_ed25519.pub
Installer la clé sur le serveur :
type $HOME\.ssh\id_ed25519.pub | ssh arkan@IP_DU_SERVEUR "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Tester la connexion :
ssh arkan@IP_DU_SERVEUR
Vérifier l’authentification par clé :
ssh -v arkan@IP_DU_SERVEUR
Le résultat doit contenir :
Offering public key...
Authenticated ... using "publickey"
4. Sauvegarde de la configuration SSH
sudo mkdir -p /opt/backup/config
sudo cp /etc/ssh/sshd_config /opt/backup/config/
sudo cp -r /etc/ssh/sshd_config.d /opt/backup/config/
5. Sécurisation de SSH
Créer un fichier dédié :
sudo nano /etc/ssh/sshd_config.d/99-arkanov-security.conf
Ajouter :
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
KbdInteractiveAuthentication no
X11Forwarding no
MaxAuthTries 3
LoginGraceTime 30
Ubuntu Cloud peut activer l’authentification par mot de passe via :
/etc/ssh/sshd_config.d/50-cloud-init.conf
Désactiver cette directive :
sudo sed -i 's/^PasswordAuthentication yes/#PasswordAuthentication yes/' /etc/ssh/sshd_config.d/50-cloud-init.conf
Vérifier la configuration :
sudo sshd -t
Redémarrer SSH :
sudo systemctl restart ssh
Contrôler les paramètres actifs :
sudo sshd -T | grep -E "permitrootlogin|passwordauthentication|pubkeyauthentication|kbdinteractiveauthentication"
Résultat attendu :
permitrootlogin no
pubkeyauthentication yes
passwordauthentication no
kbdinteractiveauthentication no
Conserver une session SSH ouverte pendant les tests afin d’éviter tout verrouillage accidentel.
6. Installation du pare-feu UFW
Installer UFW :
sudo apt install ufw -y
Définir les règles par défaut :
sudo ufw default deny incoming
sudo ufw default allow outgoing
Autoriser les ports nécessaires :
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
Activer le pare-feu :
sudo ufw enable
Vérifier :
sudo ufw status numbered
Remplacer la règle SSH par une limitation des tentatives :
sudo ufw delete allow 22/tcp
sudo ufw limit 22/tcp comment 'SSH'
Contrôler :
sudo ufw status verbose
Le port SSH doit apparaître avec la mention :
LIMIT
7. Installation de Fail2ban
Installer Fail2ban :
sudo apt install fail2ban -y
Créer la configuration :
sudo nano /etc/fail2ban/jail.local
Contenu recommandé :
[DEFAULT]
backend = systemd
bantime = 24h
findtime = 10m
maxretry = 5
banaction = ufw
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
Tester la configuration :
sudo fail2ban-client -t
Résultat attendu :
OK
Redémarrer Fail2ban :
sudo systemctl restart fail2ban
Vérifier le service :
sudo systemctl status fail2ban --no-pager
Afficher les jails actives :
sudo fail2ban-client status
Contrôler la protection SSH :
sudo fail2ban-client status sshd
État final du serveur
Le VPS dispose maintenant de :
- Ubuntu 26.04 LTS à jour ;
- un utilisateur administrateur dédié :
arkanov; - une authentification SSH par clé ED25519 ;
- une connexion directe de
rootdésactivée ; - une authentification SSH par mot de passe désactivée ;
- une sauvegarde de la configuration SSH ;
- un pare-feu UFW actif ;
- une politique entrante par défaut en
deny; - SSH limité par UFW ;
- HTTP et HTTPS autorisés ;
- Fail2ban configuré pour protéger SSH ;
- un bannissement de 24 heures après 5 échecs en 10 minutes.
Architecture prévue
Ubuntu Server 26.04 LTS
│
├── UFW
├── Fail2ban
├── Docker Engine
├── Dockge
├── Nginx Proxy Manager
├── Ollama
├── Open WebUI
├── n8n
├── MariaDB
├── Beszel
└── Uptime Kuma
Sauvegardes recommandées
Conserver régulièrement une copie des répertoires suivants :
/etc/ssh/
/etc/fail2ban/
/etc/ufw/
/opt/backup/config/
Ces sauvegardes permettront de restaurer rapidement la configuration de sécurité lors d’une reconstruction ou d’un remplacement du VPS.