[Tuto] Renforcer la sécurité de son VPS avec fail2ban, clés SSH, What’s Up Docker…
Des choses de prévues ce week-end ?
Illustration : Flock
Le 13 mars à 16h11
Vous utilisez un VPS, mais vous n’avez pas encore configuré sa sécurité ? C’est un problème à prendre au sérieux puisque votre serveur est attaqué plusieurs milliers de fois par jour. Next vous donne quelques bases pour mettre à jour les composants, les conteneurs Docker, surveiller les tentatives de connexions, etc.
[Tuto] Renforcer la sécurité de son VPS avec fail2ban, clés SSH, What’s Up Docker…
Des choses de prévues ce week-end ?
Illustration : Flock
Vous utilisez un VPS, mais vous n’avez pas encore configuré sa sécurité ? C’est un problème à prendre au sérieux puisque votre serveur est attaqué plusieurs milliers de fois par jour. Next vous donne quelques bases pour mettre à jour les composants, les conteneurs Docker, surveiller les tentatives de connexions, etc.
Le 13 mars à 16h11
Sécurité
Sécurité
18 min
Les VPS ont l’avantage de vous permettre, pour quelques euros par mois, de reprendre la main sur la gestion de certaines de vos données. Nous avons déjà expliqué comment installer un gestionnaire de mots de passe. D’autres tutos arrivent avec un serveur VPN dès la semaine prochaine.
Un VPS, c’est aussi un serveur hébergé chez une société tierce et directement exposé sur Internet. Il mérite donc une attention particulière au niveau de la sécurité, surtout s’il dispose de vos données (personnelles). À titre d’exemples, nos VPS sont attaqués en moyenne 10 000 fois par jour sur le port 22 (SSH).
- Suivez en direct des milliers de bots attaquer un de nos serveurs
- Nous avons laissé sept VPS sur Internet, ils sont attaqués 10 000 fois par jour en moyenne
Dans ce tuto, nous allons passer en revue quelques règles simples à mettre en place pour les mises à jour et bloquer ceux qui tenteraient de passer. Attention, cela ne remplace pas l’expertise d’un sysadmin car il existe évidemment de nombreuses autres bonnes pratiques à mettre en place, notamment une surveillance constante des logs, du fonctionnement du serveur et des applications.
Suivant l’importance des données que vous souhaitez mettre sur un serveur exposé sur Internet, il faudra passer la seconde avec des serveurs « gérés » (managed) avec des professionnels, s’occupant de l’installation et des mises à jour.
Le problème des versions non-LTS de Ubuntu (9 mois de support)
Dans notre cas, nous sommes avec Ubuntu 25.04 (la dernière disponible chez OVHcloud actuellement pour notre gamme de VPS), un problème car cette version n’est plus officiellement maintenue. Nous devons donc passer en 25.10, en attendant la 26.04 LTS qui sera maintenue plusieurs années.
Le choix d’une version LTS est intéressant pour cela, car les versions classiques ne sont maintenues que pendant neuf mois). Une solution aurait été d’installer le serveur dès le début en 24.04 (LTS), une version proposée par OVHcloud. Si vous installez votre VPS pour la première fois, partir sur une LTS peut être une bonne idée.
La commande sudo do-release-upgrade permet de se mettre à jour notre Ubuntu… sauf que non, le système nous répond : « Your Ubuntu release is not supported anymore. For upgrade information, please visit: http://www.ubuntu.com/releaseendoflife. Please install all available updates for your release before upgrading ».
Pour passer à Ubuntu 25.10, nous devons donc d’abord mettre à jour toutes nos applications, avec les commandes sudo apt update && sudo apt upgrade, puis relancer sudo do-release-upgrade pour le système d’exploitation en lui-même. Cette fois-ci ça marche !
Attention, à la fin nous avons eu un message : « System upgrade is complete. Restart required. To finish the upgrade, a restart is required ». Un reboot plus tard, retour à PuTTY et nous voilà bien avec Ubuntu 25.10. Reste maintenant plus qu’à attendre Ubuntu 26.04 LTS pour migrer sur cette version, et rester ensuite quelques années dessus (cinq ans actuellement, avec une LTS tous les deux ans).
Des mises à jour (de sécurité) installées automatiquement
Il reste 83% de l'article à découvrir.
Déjà abonné ou lecteur ? Se connecter
Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.
Accédez en illimité aux articles
Profitez d'un média expert et unique
Intégrez la communauté et prenez part aux débats
Partagez des articles premium à vos contacts
expert et sans pub.
Commentaires (53)
Le 13 mars à 16h19
Le 13 mars à 16h21
Modifié le 13 mars à 17h14
Et perso, j’utilise les tuto d’howtoforge, exemple :
https://www.howtoforge.com/ispconfig-autoinstall-debian-ubuntu/
Le 13 mars à 16h21
ufw limit 22/tcp plutot que ufw allow 22/tcp
Eventuellement un restriction des IP entrantes
ufw allow from 192.168.1.0/24 to any port 22 proto tcp
2) Dans ce genre de setup je conseille de mettre un reverse proxy pour faire la terminaison SSL et aussi pour se prendre tous le trafic HPPT moisi et ne passer que ce qui est un minimum ok.
Cela permet aussi d’agréger les confs TLS et les logs des différents containers web.
3) Pour aller plus loin, il y a les benchmark CIS qui sont gratuit.
https://www.cisecurity.org/benchmark/ubuntu_linux
Modifié le 13 mars à 17h14
Si il y a compromission d'un truc sur le LAN, Firewall ou pas, j'imagine que la sécurité du serveur est de toute façon morte ?
Le 13 mars à 17h36
Le 13 mars à 17h37
Silo, moindre privilège, limiter l'exposition et sauvegarder.
Modifié le 13 mars à 21h50
Ce n'est pas non plus le cas si l'universal plug and play (uPNP), est actif sur la box, ce qui est le cas par défaut sur toutes les box il me semble. Avec l'uPNP, un logiciel peut demander l'ouverture d'un port sur la box et une redirection vers une machine du réseau local, sans ton intervention. Un régal pour les logiciels malveillants.
Le 13 mars à 22h03
Je n'ai plus rien en v4, uniquement du v6.
Modifié le 13 mars à 17h24
Tuto intéressant en tout cas, j'ai appris des trucs. Notamment que je suis pas prêt de connecter une machine un tout petit peu sensible à Internet. J'ai pas le niveau et les risques sont trop élevés à mon goût, c'est vraiment un métier
Le 13 mars à 19h21
Le 13 mars à 17h35
Bravo pour cet article essentiel.
Perso j'ai un petit soft local qui met à jour des autorisations IPv4 avec l'IP de ma freebox pour certains services. J'ai mis un nom à ma freebox et je le fais résoudre toutes les 4h.
Je commence aussi un truc: n'autoriser que IPv6 sur certains services. La plupart des attaques restent en IPv4. Ca durera ce que ça durera.
Enfin, j'ai de l'auth via un certificat client généré par moi-même depuis mon propre certificat racine sur des services web (ma visio familiale notamment - que mamie n'aie pas besoin de login).
J'ai tenté de mettre un bastion docker, mais je tremblais un peu à l'idée de me scier l'herbe sur laquelle j'étais assis :)
Le 13 mars à 17h52
Le 13 mars à 19h16
https://ubuntu.com/about/release-cycle
Le 13 mars à 23h07
Le 15 mars à 14h16
Je ne sais pas quelle est la situation pour ubuntu, je suppose qu’elle est assez similaire. Le support à 15 ans doit s’arrêter au kernel et deux trois trucs. Je l’imagine plutôt pour l’indus (avec du coup une vraie gestion de sbom et une des exécutables où tout est linké en statique) que pour un serveur web.
Le 13 mars à 19h42
Le 13 mars à 23h03
Regardons ce qu'ils en pensent chez Ubuntu :
https://doc.ubuntu-fr.org/debian_ubuntu_comparaison
Pour un serveur, donc a priori quelqu'un qui sait ce qu'il fait, qui veut un truc stable, et qui n'a pas besoin d'un truc user-friendly pour le desktop, je ne vois pas l'intérêt d'Ubuntu.
Le 13 mars à 23h40
Le 14 mars à 09h44
Le 14 mars à 10h51
(mon serveur associé au NAS chez moi l'est presque, sous Manjaro - ça peut amener des surprises par moment, mais pas plus que ça)
Le 13 mars à 19h24
Il y a la phrase : "Voici enfin une série de commandes qui permettent de bloquer tout le trafic entrant et sortant par défaut, puis d’ouvrir certains ports."
Puis l'exemple :
sudo ufw default deny incoming
sudo ufw default
allowdeny outgoingnon ?
Je continue ma lecture.
Le 14 mars à 09h12
Pour moi en out j’autoriserais rien par défaut, puis autoriser les ports aléatoires (si le firewall n’est pas stateful), le DNS, https et éventuellement http, ntp, icmp éventuellement.
Le 13 mars à 19h37
Et une autres table pour les IP pas tres sympa que je bloque direct. liste créé a partir de iplists.firehol.org et de www.spamhaus.org.
Et psad pour bannir les IP (jusqu'au reboot).
Le 13 mars à 21h56
Pour cela, tu peux te faire une liste des ASN autorisés et utiliser geoip2
Le 13 mars à 23h30
Merci
Le 14 mars à 09h14
Si quelqu’un est abonné chez ovh en fibre et que tu bloque toutes les Ip ovh peut être qu’il ne pourra pas consulter ton site auto hébergemé.
Le 14 mars à 09h27
Une bonne adresse pour ce type de recherches: https://hackertarget.com/as-ip-lookup/
Le 14 mars à 09h47
À mon avis, c'est donc à éviter.
Le 14 mars à 10h11
Si le blocage est fait par nginx, il y a toujours le moyen de créer des logs dédiés à certaines règles pour pouvoir analyser les conséquences d'un filtrage.
Le 13 mars à 20h27
Le 13 mars à 20h31
Le 13 mars à 20h44
Le 13 mars à 21h40
Le 14 mars à 08h32
Le 13 mars à 21h32
A noter qu'utiliser un pare-feux comme nftable permet aussi de faire du géoblocage mais cela génère certainement une charge de travail importante.
UFW, c'est vraiment le service minimum. Sur une machine cliente qui ne propose aucun service, cela suffit bien mais sur un serveur, je trouve cela limite.
Le 13 mars à 23h43
Modifié le 14 mars à 00h03
Perso, je limite aussi les écoutes inutiles de mes services et le nombre de services. A ce titre, il y a pas mal de mauvais élèves parmi les logiciels courant, qui écoutent sur toutes les interfaces réseau, sans vergogne. Ce n'est pas toujours simple de les faire rentrer dans les rangs.
Pour ce qui est local, je privilégie les socket unix à l'écoute sur localhost
Modifié le 16 mars à 23h14
Le 14 mars à 09h10
Ainsi, un serveur web ? Le ssh peut être autorisé que vers son ip en inbound et le web depuis tout le monde en inbound.
Ça évite d’ouvrir des ports vers tout internet.
J’ai une Vm chez scaleway, ipv6 (ça coûte moins cher), j’ai ouvert les flux depuis les préfixes IPv6 de chez moi et basta, ça fonctionne. C’est simple, et c’est secure.
Modifié le 14 mars à 13h22
Pourquoi ne pas avoir conseillé d'interdire les connexions ssh en IPv4. ssh, c'est principalement pour de l'administration distante donc si on a IPv6 chez soit, on peut se contenter de ce type de connexion. Pour l'instant, ça élimine beaucoup d'attaques.
Le 14 mars à 10h18
Le 14 mars à 13h23
Modifié le 14 mars à 10h50
Le 14 mars à 13h29
Après fail2ban… si Docker est déjà installé, on peut mettre en place Crowdsec plutôt, non ?
Plus innovant, plus intéressant d’un point de sécu.
Modifié le 14 mars à 17h05
Comme d'autres l'ont soulevé dans les commentaires, Iptables est quand même un peu (beaucoup) merdique (fonctionnalités et performances) dès que tu as un peu de règles et/ou du volume/charge.
Ipset (indispensable) améliore un peu les choses mais tu peux vite atteindre ses limites également.
Nftables (ré-écriture complète de l'auteur de Iptables est dispo depuis... 15 ans ?) est incomparablement plus
performants.
La gestion des tables avec les priorités permet d'isoler tes sets (Sur Iptables c'est l'ordre des règles qui jouent, bonne chance quand tu as des process qui les modifient à la volée).
Ex : listes blanche d'abord -> géoban -> Honeypots -> ban manuel -> Crowdsec -> rules générales
Avec Nftable les honeypots sont triviaux, pas besoin de trucs en plus genre Portsentry. Et je jeux te garantir que ton port SSH custom il va pas être si simple à trouver :)
Fail2ban fait le job et est largement suffisant pour du SSH par exemple. Mais pour un site Web avec un peu de trafic les perfs et les détections ne sont plus du tout au niveau (surtout dans cettes nouvelle ère IA).
Crowdsec est bien meilleurs. Oui je sais c'est une boite (Française) qui est derrière et tu as des truc payant (très très cher).
Très bon point pour unatended-upgrade que je met aussi en auto pour les upgrade sécu (sauf kernel + reboot je veux être là).
Ajouter le paquet needrestart rend aussi bien service, car oui, tu es a jour d'après apt mais les vielles versions tournent toujours jusqu’au reload/restart hein ;)
Modifié le 14 mars à 22h33
Actuellement j'utilise 2 solutions pour être notifié d'une nouvelle image :
Sinon j'utilisais Portainer pour gérer mes containers, etc. Mais depuis peu je test Dockhand, qui intègre tout un tas de fonctions, dont la recherche d'update, les update auto, les notifications, etc.
Le 15 mars à 09h32
Le 15 mars à 09h33
Le 15 mars à 10h57
Modifié le 18 mars à 08h10
y'a un truc que je ne saisis pas: à quoi sert docker ici ?
ça pose deux problèmes de sécurité :
Je ne vois pas l'apport de docker en usage perso ? Pour moi l'intéret de docker et de pouvoir dupliquer rapidement une config (par ex déployer un soft avec sa config pré-paramétrée) on en est très loin là non ?
Le 19 mars à 19h34
Tiens, j'ai vu passer ça sur un Shaarli aujourd'hui : https://vpskit.pro/
Je n'ai pas testé, je partage juste la découverte ^^
Le 20 mars à 18h43
Signaler un commentaire
Voulez-vous vraiment signaler ce commentaire ?