Je ne vais pas faire un énième tuto sur comment sécuriser votre serveur, je vais plutôt vous donner la méthodologie et quelques outils, permettant de faire des recherches par vous-même
Il peut être compliqué de trouver quelque chose quand on ne sait pas où chercher.
Les deux choses importantes dans la sécurité
Votre expérience
Petit il vous est arrivé de tomber à plusieurs reprises, la première fois sans vous protéger, la seconde aussi, la troisième le cerveau a compris, les mains se sont mises entre vous et le sol.
Sans la sécurité aujourd’hui encore vous finiriez le nez par terre plutôt que sur vos mains.
L’expérience liée au monde qui vous entoure
Vous avez déjà aperçu un événement qui a permis de ne pas reproduire une erreur faite par d’autres.
Ce sont des exemples concrets de sécurité ? La sécurité c’est aussi :
Pourquoi vous sécurisez ? Tout simplement pour vous faire gagner du temps ou... ne pas en perdre.
Évitez L’Hôpital, les constats, de faire opposition, etc.
Pour votre serveur, c’est pareil. Gagner du temps et ne pas refaire ce qui a déjà été fait. Vous êtes sûrement quelqu’un qui aime les choses bien faites, ou feignant pour ne pas avoir à les refaire. Sinon pourquoi lire cet article ?
Tout le monde est touché par la sécurité, si vous pensez ne pas l’être alors posez-vous les questions suivantes :
Ce serveur est-il important pour moi ?
Amène-t-il des bénéfices ?
Représente-t-il ma société ?
Ma base client est-elle dessus ?
Si l’une des quatre réponses est positive alors je vous conseille de changer d’avis
Ne vous inquiétez pas, vous pouvez sécuriser à minima votre système et vos services seul, il suffit de vouloir faire des recherches et de se poser des questions
Ca serait un plus après avoir fait le maximum, de faire intervenir un expert pour qu’il vous guide sur ce que vous pouvez encore améliorer.
Je pense que j’ai déjà perdu 80 % de mes lecteurs :)
Vous venez de suivre un tuto que vous avez appliqué sur votre serveur dédié, tout fonctionne. Avant d’écrire votre premier article, ne serait-il pas judicieux de sécuriser votre serveur au minimum :
Prenez une feuille et notez le nom de la distribution installée.
Lister tous les services mis en place sur cette distribution.
Exemple qui servira pour la suite de l'article
système
debian 10 (buster)
Services et outils
sudo (permet de passer un utilisateur root provisoirement)
openssh-server (pour se connecter au serveur)
Apache2
php 7 avec différents modules utiles au bon fonctionnement de mon site
Chaque fois que vous lisez un article qui vous propose un outil faites les vérifications suivantes
Si apt ou tout autre gestionnaire de paquet ne trouve pas le paquet que vous souhaitez installer, regardez pourquoi. Cela vous indiquera sûrement qu’il n’est plus maintenu (ne vous servez pas que de cela pour vérifier si l’outil est maintenu)
Vous pouvez aussi trouver des articles d’experts en sécu qui parleront du produit et de ses faiblesses.
Faite la recherche suivante :
cve security database
La sauvegarde c’est la base de tout en informatique. Certains hébergeurs vous proposent la possibilité de faire des snapshot ou backup de votre serveur. Avant de le sécuriser faites en une, en cas de gros pépin vous pourrez restaurer.
Si vous n’en avez pas. Avant chaque modification de fichier, faites une sauvegarde de celui-ci.
Exemple
cp update.conf update.conf.sav.`date +'%d%m%Y'`
#Je vous laisse chercher la signification de cette partie `date +'%d%m%Y'
recherches à effectuer sur internet ou dans le terminal
man date
Noté aussi tous les paquets que vous installez, pour pouvoir les supprimer si le produit ne convient pas
Attention : lors de la suppression d’un paquet qui ne convient pas. Parfois les gestionnaires de paquets suppriment des paquets qui ne devraient pas l’être. Pensez donc à faire un screen lors des installations pour conserver la liste de tous les paquets à supprimer lors de la désinstallation.
Exemple
apt purge nomdupaquet
Apt purge supprime tout ce qui concerne le paquet et ses dépendances, ainsi que les fichiers de configuration du paquet supprimé
recherche à effectuer sur internet
backup liste paquet apt
Ils vous expliqueront comment exporter la liste des paquets dans un fichier texte.
Attention, la liste contiendra tous les paquets de la distribution, cela peut servir si vous réinstallez sur le même OS. Sinon lors de l'installation de paquets, notez les noms dans un fichier texte.
Il y a 2 commandes qui tiennent sur une ligne chacune
Créer le fichier /etc/cron.weekly/backup
(vous pouvez choisir un autre nom)
cron.weekly est une tâche qui s’exécute toutes les semaines, le dimanche à 6h47, c’est visible dans /etc/crontab
Dans ce fichier, vous allez avoir besoin de créer une archive avec tous les fichiers modifiés sur le système. Ainsi que le fichier qui liste les applications installées (vues au-dessus)
Voici à quoi le contenu du fichier va ressembler
#!/bin/bash
dpkg --get-selections > /home/USER/package-selections
/bin/tar jcvf /home/USER/votrearchive.fr.tar.bz2 /etc/default/fail2ban /etc/fail2ban/jail.d/defaults-debian.conf /etc/fail2ban/jail.conf /etc/ssh/sshd_config /home/USER/package-selections /etc/cron.weekly/backup /etc/apache2/sites-available/VOTRESITE /etc/apache2/conf-available/security.conf /etc/bash.bashrc
rm -f /home/USER/package-selections
chown USER: /home/USER/assistancenum.fr.tar.bz2
Le but de chown dans notre script est de modifier l'utilisateur propriétaire.
Sans cette commande l'archive créée sera utilisable que par root (car les crontab s'exécutent par défaut avec root)
Il est donc important de modifier le propriétaire de l'archive. Pour vous permettre de rapatrier l'archive avec votre utilisateur et la commande SCP
USER, indique le nom de votre utilisateur.
VOTRESITE, le nom de votre fichier virtualhost
#!/bin/bash
indique que c’est un script bash.
#!
s’appelle shebang, faites une recherche sur ce mot
Adapter la liste des dossiers et fichiers à archiver en fonction de vos besoins (c'est un exemple que j'ai mis au-dessus)
Si cela ne convient pas vous pouvez aussi vous orienter vers rsync qui permet de synchroniser des fichiers.
Concernant la création de l’archive
Je laisse chercher les détails de la commande /bin/tar'
avec les 4 lettres jcvf
chaque lettre est indépendante
Concernant les recherches sur des exécutables Linux, vous pouvez les faire directement depuis le terminal avec la commande man
recherche à effectuer
Terminal : man tar
ou tar --help
Internet : man tar
ça vous affichera l’aide, perso je préfère aller sur internet c’est plus présentable
Man est la commande qui indique manuel, une vraie bibliothèque ce Linux.
Attention ne faites pas une sauvegarde systématique des dossiers comprenant des fichiers modifiés. Sauvegardez plutôt chaque fichier, pensez au jour où vous en aurez besoin pour les relire ou copier les parties qui vous intéressent (car avec le temps on oublie ce qu'on a fait, ça les rendra plus accessibles)
recherche à effectuer sur internet ou dans le terminal
man rm
Pareil pour chown
L’archive créée, il vous restera plus qu’à la rapatrier sur votre PC via la commande SCP
recherche à effectuer sur internet ou dans le terminal
Terminal : man scp
Internet : exemple commande SCP
ou man scp
Je ne pense pas que vous allez passer votre temps à vous connecter au serveur pour faire les mises à jour de sécurité ?
Attention, je parle bien de mise à jour de sécurité et pas de mettre à jour les services et outils du système. Dans ce cas seuls les patchs concernant la sécurité seront appliqués.
Commençons par vérifier s’il existe un outil permettant la mise à jour automatique de votre distribution
recherche à effectuer sur internet
Debian 10 mise à jour automatique sécurité
Il peut arriver que les mises à jour demandent de redémarrer le serveur, il faudra donc vous connecter pour le faire, si cela est nécessaire, certains outils proposent une option qui permet de redémarrer automatiquement. je la déconseille, car vous n’êtes pas à l’abri d’un problème lors du redémarrage.
A savoir :
Les articles qui sont très vieux ne vous empêchent pas de le lire bien au contraire. Mais peut-être que depuis, votre OS implémente déjà un outil permettant de faire les mises à jour de sécurité automatiquement. Pensez donc à bien vérifier cela.
Chaque blogueur qui écrit un tuto ou article à sa vision des choses, votre but à vous et de maximiser vos chances d’améliorer la sécurité de votre serveur. Ne vous limitez pas au premier article que vous trouverez ou seulement les articles qui correspondent à votre distribution.
Lisez en plusieurs. Cela vous permettra d’étendre vos possibilités et de mieux comprendre le fonctionnement.
La solution optimale est d'aller sur le site de l'éditeur de l’outil ou du service, sa documentation sera bien plus détaillée et à jour que celle des tutos (mais cela peut demander plus de temps et souvent de comprendre l'anglais)
La première chose à effectuer est l’envoi de mail depuis votre serveur, ainsi vous pourrez recevoir toutes les informations remontées par vos outils et services
recherche à effectuer sur internet
Gmail envoi de mail depuis Linux
J’ai mis Gmail, mais vous pouvez choisir une autre solution, les deux premiers liens expliquent comment faire cela avec ssmtp
Après vérification SSMTP n’est plus maintenu depuis longtemps, certains proposés opensmtp, sinon il y a exim4 ou MSMTP
RAPPPEL : faite des vérifications sur les services et outils utilisés
recherche à effectuer sur internet
Analyser sécurité de Linux
Voici quelques outils
Lynis : un outil qui va vérifier tout un tas de paramètres et vous indiquez les erreurs et comment les résoudre pour la plupart (très utiles)
Attention toujours la même réflexion, ne faites pas sans réfléchir ce que vous propose l’outil, il se peut que vous ne puissiez pas appliquer certains paramètres, car il est utile au bon fonctionnement de vos services
AIDE : c’est un outil qui permet de vérifier chaque modification effectuée sur le système, l’envoi de rapports se fait par mail, il n’y a pas mieux pour repérer des modifications suspectes dans le cas où il est bien configuré (outil assez complexe pour des débutants)
AIDE est un outil optionnel, il y a de très bons articles qui expliquent son fonctionnement, mais cela prend du temps à comprendre et d’adapter la solution à ses besoins.
En complément
ClamAV : c’est un antivirus, attention il peut consommer pas mal de mémoire quand il est lié avec d’autres services.
Rkhunter : Recherche d’outil malveillant
Veuillez à bien vérifier les logs de ces deux outils, car on n'est jamais à l’abri de faux positifs
Vu que vous avez mis en place l’envoi de mail, c'est pratique d’être alerté à chaque fois que quelqu’un se logue sur votre système
recherche à effectuer sur internet
Envoi mail connexion Linux
Faites des tests pour vérifier que tout fonctionne
Dès que quelqu’un se connectera à une session, vous serez averti. Couplé à AIDE, cela vous permet de tracer les actions effectuées
Ne pas oublier : Il faut savoir doser, trop d’outils qui surveillent ça vous submergent de mail pas assez vous prenez un risque.
Sudo
Un autre outil intéressant est d’empêcher la connexion de l’utilisateur root et de se connecter avec un utilisateur standard qui aura les droits root uniquement quand ce sera nécessaire
Pour cela il vous faudra bloquer le compte root, mais aussi installer sudo et ajouter votre utilisateur au groupe sudo via la commande :
adduser USER sudo
puis faire des tests d’exécution avec les droits sudo
sudo touch /root/1.txt
sudo rm /root/1.txt
Si ces commandes fonctionnent sans erreur alors vous avez bien les droits admins avec votre utilisateur,
Attention, après avoir ajouté l'utilisateur au groupe sudo il faut relancer votre session. pour cela il suffit de quitter votre session avec la commande exit
La commande sudo vous demandera votre mot de passe utilisateur.
Fail2Ban
Fail2ban est un outil permettant de scruter les logs à la recherche de tentative d’intrusion pour différents services dont (Apache2, mysql (mariadb), php ).
Il bannit les IP qui essaient d’effectuer des tentatives d’intrusion, j’ai fait un article dessus.
Fail2ban
Openssh
Un service très sensible est que l’on utilise en permanence c’est openssh-server. C’est ce qui vous permet d’avoir l’accès à votre serveur en ligne de commande. Par défaut ce service n’est pas configuré de façon optimale.
recherche à effectuer sur internet
améliorer la sécurité openssh
l’ANSSI propose un document pour vous aider
ANSSI Guide OpenSSH
Vous pouvez aussi limiter les IP qui peuvent se connecter au SSH en créant des IPTABLES ou NFTABLES (!Attention! à bien avoir une IP statique)
Apache2
Apache est un serveur Web, il permet de mettre en ligne des contenus accessibles via le HTTP et HTTPS.
Ce service est en première ligne, il rend l’accès à votre serveur possible, c’est pour cela qu’il est important de bien le sécuriser
recherche à effectuer sur internet
sécuriser apache2
RAPPPEL : faite des vérifications sur les services et outils utilisés
Pas mal de sites permettant d’améliorer la sécurité d’Apache, faites bien attention à ne pas bloquer vos services en implémentant certains paramètres trop restrictifs (toujours trouver le juste milieu et surtout faite des test)
Voici quelques sites que j’ai trouvés lors de mes recherches pour cet article et qui mon bien aidé.
Il y a aussi l'extension apache2 geoip, elle permet de bloquer des pays. A utiliser avec prudence suivant vos besoins
Indique les éléments de sécurité à mettre en place ou à améliorer, il vous redirige vers des articles très bien détaillés en anglais, Google trad est bien pratique si vous n’êtes pas familier avec la langue de Shakespeare.
securityheaders
Ce site va scanner votre serveur web à la recherche de problèmes de configuration.
nikto
Attention pensez à bien cocher la case pour ne pas publier vos résultats. pour le site de nikto mettez les IP qu'il vous donne en whitelist si vous utilisez fail2ban, sinon elles seront bannies
Php
Pour PHP, vous aurez aussi à faire des recherches concernant la sécurité. Vous pouvez indiquer le nom du service web avec lequel php fonctionne (Apache, Nginx, Lighttpd)
recherche à effectuer sur internet
sécuriser PHP 7 php.ini
De ce que j’ai pu voir, PHP est déjà bien sécurisé par défaut, mais ne vous fiez pas à ma parole, allez vérifier par vous-même
Fail2ban contient aussi des modules de protection pour PHP, n’hésitez pas à les utiliser.
Si vous utilisez d'autres outils t-elle que mysql/mariadb ou autre, utilisé la même méthodologie pour trouver des informations, ne vous limitez pas
Pour sécuriser son environnement, rien de plus simple que faire des recherches sur les mots-clés souhaitait, plein de sites, autant de versions… Faites le tri et ne gardez que l’essentiel. Ajoutez à cela une sauvegarde de l’OS et des fichiers avant modification et vous pourrez faire tous les tests que vous souhaitez
Ne soyez pas trop restrictif, ni trop laxiste. La sécurité, c’est avant tout une histoire de dosage. Comme tout dans la vie il faut trouver le juste milieu
Attention à bien faire cela avant une mise en production, car je ne suis pas sûr que vos clients ou visiteurs acceptent d’être déconnectés toutes les deux minutes parce que vous faites des essais.
Aussi cette méthodologie est universelle, en cas de problème faites des recherches avec les mots-clés de votre problème. De même pour l'installation d'un outil ou service, vous pouvez en abuser
Service : les services sont des logiciels installés sur un système qui tourne en tache de font, APACHE est un service
Système : le système est ce qui est installé sur le matériel (Windows est un système), sur ce système sont installés les services (Apache est un service), ou de lancer des outils
La différence entre services et outils: un outil n’interagit pas avec le public, il sert uniquement pour vous aider contrairement au service (AIDE un outil)
Outils : des logiciels qui ne tournent pas en tâche de fond, lynis est un outil