Sécuriser votre VPS : pare-feu, SSH et mises à jour automatiques
Durcissez un nouveau VPS en une heure environ : SSH par clé uniquement, un pare-feu qui ne vous enferme pas dehors, fail2ban réglé au-delà de ses valeurs par défaut trop faibles, et les mises à jour de sécurité automatiques.
Un VPS vous appartient à administrer : myPandos gère le matériel, le réseau et les sauvegardes, mais le système d'exploitation et tout ce qui s'y trouve relèvent de vous. Un serveur sur une IP publique est scanné quelques minutes après sa mise en ligne : cela vaut une heure dès le premier jour.
Ces étapes proviennent du durcissement d'un vrai VPS client. Avant l'intervention, son journal d'authentification contenait 1 721 tentatives SSH échouées, la source la plus active en ayant tenté 154.
1. Utilisez des clés SSH, pas un mot de passe
C'est le changement le plus rentable. Un mot de passe se devine à raison de milliers d'essais par heure ; une clé, non. Voir Comment créer une clé SSH et l'ajouter à votre tableau de bord.
Une fois la connexion par clé fonctionnelle, désactivez les mots de passe dans /etc/ssh/sshd_config :
PermitRootLogin no
PasswordAuthentication nosudo systemctl reload sshGardez votre session ouverte pendant que vous testez une nouvelle connexion depuis un second terminal. Si elle échoue, l'ancienne session vous permet d'annuler ; fermez-la d'abord et vous êtes bloqué dehors.
2. Activez le pare-feu
Ubuntu livre ufw installé et inactif. Un pare-feu inactif n'est pas un pare-feu permissif bien réglé : c'est l'absence de pare-feu, et chaque port ouvert par quoi que ce soit est joignable depuis Internet.
Autorisez avant d'interdire. Activer une politique de refus par défaut sans règle pour SSH vous déconnectera de votre propre serveur :
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH — à faire EN PREMIER
sudo ufw allow 80/tcp # uniquement si vous servez un site
sudo ufw allow 443/tcp
sudo ufw enableSi vous travaillez en SSH sans accès console, armez d'abord un filet de sécurité :
sudo nohup bash -c 'sleep 300; ufw --force disable' &Le pare-feu se désactive au bout de cinq minutes. Vérifiez que vous pouvez ouvrir une nouvelle session SSH, puis annulez avec sudo pkill -f 'sleep 300'.
Regardez ce qui écoute réellement avant de choisir les ports :
sudo ss -tlnpTout ce qui est lié à 127.0.0.1 est déjà local et ne nécessite aucune règle. Les bases de données en font partie : un port MySQL ou PostgreSQL ouvert sur Internet est une brèche annoncée.
3. Activez fail2ban
Ubuntu a souvent fail2ban installé mais non activé, ce qui ressemble en tout point à l'avoir jusqu'à vérification :
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshdLes valeurs par défaut sont faibles face à un attaquant patient : cinq échecs sur dix minutes, bannissement de dix minutes. Créez /etc/fail2ban/jail.d/custom.conf :
[sshd]
enabled = true
maxretry = 5
findtime = 3600
bantime = 3600sudo systemctl reload fail2banVérifiez qu'il sait réellement bannir, plutôt que de le supposer :
sudo fail2ban-client set sshd banip 203.0.113.99
sudo iptables -S | grep f2b
sudo fail2ban-client set sshd unbanip 203.0.113.994. Laissez les mises à jour de sécurité s'appliquer seules
sudo apt install -y unattended-upgrades
sudo systemctl status unattended-upgradesLa plupart des compromissions exploitent une faille corrigée depuis des mois. C'est la protection la moins chère de cette liste.
5. Vérifiez votre travail
sudo ufw status verbose
sudo systemctl is-enabled fail2ban
sudo fail2ban-client status sshd
sudo ss -tlnpis-enabled compte autant que is-active : un service actif mais non activé disparaît au prochain redémarrage.
Ce que myPandos gère, et ce qui vous revient
- Nous gérons : le matériel, la plateforme de virtualisation, le réseau, l'alimentation et les snapshots.
- Vous gérez : le système d'exploitation, tout ce que vous y installez, les mises à jour de sécurité et les règles de pare-feu de vos applications.
Si vous pensez avoir été compromis
Ouvrez un ticket depuis dash.mypandos.io immédiatement. Ne redémarrez pas : un redémarrage détruit les processus et connexions qui montrent ce qui s'est passé. Prenez un snapshot si possible, puis prévenez-nous.