Sommaire
Dans ce tutoriel vidéo, nous allons voir comment sécuriser son serveur dédié (sommaire des tutos ici) en configurant 3 logiciels incontournables :
- Iptables : c’est le Firewall des systèmes Linux, il est difficile à manier la première fois mais on peut faire des réglages très fin. Dans ce tutoriel je vous propose une série de règles classiques pour un serveur web.
- Fail2ban : c’est un système qui ban automatiquement tous les utilisateurs qui essayent de se connecter plusieurs fois de suites sans succès sur notre serveur. Ça permet d’éviter les attaques de type brute force.
- Rkhunter : c’est un logiciel qui nous prévient dés que des fichiers sensibles sont modifiés. Autrement dit, un bon détecteur de Backdoor et Rootkit.
Et en bonus, je vous donnerais une astuces pour être prévenue par email dés que quelqu’un se connecte en SSH sur votre serveur. À la fin du tutoriel vous aurez un serveur Web déjà bien sécurisé, mais pas assez à mon goût, d’où la seconde vidéo qui sécurise un peu plus les scripts php avec 2 modules pour apache.
Mise en place du Firewall : Iptables
Sans doute la partie la plus importe du tutoriel, la mise en place du Firewall. Normalement il est installé par défaut mais si vous avez des problèmes avec les règles, ça vient sans doute du noyau modifié d’OVH, mais je l’ai déjà expliqué dans la première vidéo.
Fonctionnement de Iptables
Je pense qu’un mini tutoriel sur Iptables, avec les arguments les plus utilisés et ces principes de bases ne fera pas de mal. Je vais faire ça sous forme de liste pour que cela soit plus simple, le but n’étant pas d’être exhaustif.
Si vous faites un iptables -L, vous verez les règles qui définissent votre firewall. En regardant le résultat de plus près, on aperçoit 3 types de chaînes :
- INPUT : correspond aux règles sur le traffic entrant du serveur
- OUTPUT : correspond aux règles pour le traffic sortant du serveur
- FORWARD : les règles permettant de faire des redirections
On constate également que l’on a la politique du firewall sur « ACCEPT » pour toutes les chaînes et ce n’est pas très bon au niveau de la sécurité. Notre démarche va être de tout bloquer (DROP) pour ensuite débloquer petit à petit les ports pour les services que l’on utilise.
Voici une liste des arguments que l’on utilisent fréquemment :
- -t : préciser sur quel table on travaille, par défaut c’est filter qui contient le input, output et forward
- -A : ajoute une règles en fin de chaîne
- -p : précise le protocole de la règle (généralement tcp, udp ou icmp pour le ping)
- –dport : précise le port de destination
- -j : précise la politique à appliquer (accept ou drop la plupart du temps)
- -F : efface toutes les règles (F = Flush)
- -X : efface la chaîne
Configuration des règles
Pour mettre en place un Firewall sur Linux, la plupart du temps on crée un fichier bash avec toutes les commandes iptables que l’on souhaite mettre. Dans mon cas, je remets Iptables à 0, puis je bloque tout, puis je débloque petit à petit les services que j’utilise. Par conséquent, l’ordre est important ! Voici le fichier utilisé pendant la vidéo, n’oubliez pas de modifier le numéro de port pour ssh ou sinon vous serez bloqué (un reboot hardware fera l’affaire pour vous débloquer).
La partie supérieure (le gros bloque de commentaire, à l’exception du shebang qui est obligatoire) est optionnelle mais ça permet d’éviter des warnings dans les fichiers de logs. Au niveau de la difficulté, une fois qu’on à compris une ligne le reste vient tout seul. N’oubliez pas de donner les droits d’exécutions à ce fichier (chmod +x firewall) et de la placer dans le répertoire /etc/init.d/ et de l’activer au démarrage du serveur avec update-rc.d firewall defaults (mais assurez vous bien que le fichier fonctionne correctement avant !!)
J’en profite au passage pour vous donner mon script qui permet de bien remettre à 0 iptables en cas de soucis :
C’est tout du côté du Firewall. Si un jour vous installez des services supplémentaires et que ça ne fonctionne pas, n’oubliez pas de regarder du côté du Firewall, on a tendance à l’oublier lorsque la configuration est finie.
Ban automatique des kikoolol avec fail2ban
La plupart du temps, lorsqu’on essaye de pirater votre serveur, les pirates utilisent la méthode du brute force. C’est-à-dire qu’ils testent tous les mots de passe possible, en partant du plus probable (comme les mots du dictionnaire) au plus improbable (les suites de caractères aléatoires). Avec la puissance de calcul des ordinateurs actuels, ça fonctionne pas trop mal si votre mot de passe est simple. Heureusement on peut facilement le contrer en installant un système qui ban automatiquement les gens qui essayent de se connecter à mainte reprise sans y parvenir.
Configuration simple de fail2ban
Pour commencer, vous devez installer fail2ban avec la ligne de commande apt-get install fail2ban. Ensuite il est recommandé de laisser le fichier de configuration intacte et d’en faire une copie pour le modifier, donc cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.local et puis vi etc/fail2ban/jail.conf.local.
Pour activer un filtre, vous devez placer le champ enabled à true et éventuellement changer le maxretry (nombre de tentative avant le ban) , le bantime (temps de ban) et le port (surtout pour ssh).
Je vous recommande d’activer les filtres suivants : [ssh], [ssh-dos], [apache], [apache-multiport], [apache-noscript], [apache-overflows], [proftpd], [postfix], [couriersmtp] et [courierauth]. Ces filtres sont activés par défaut, vous n’avez rien d’autre à faire à par changer le enabled = false à true.
Ajouter des filtres personnalisés
Les filtres par défaut sont très bien, mais voici quelques filtres personnalisés que vous pouvez retrouver sur internet. Vous n’êtes pas obligé de les activer, c’est du bonus.
Le filtre « apache-404″ permet de bannir les utilisateurs qui font trop d’erreurs 404. Généralement ce sont ceux qui recherchent des pages d’administration à l’arrache en modifiant l’url. En revanche, faites très attention ! Si il manque un élement sur votre site, comme par exemple une image, ça va générer une erreur 404 et ça risque de bannir vos visiteurs.
Le filtre « apache-admin » permet de protéger votre espace d’administration si vous en avez un. Dans mon cas non mais je préfère vous le donner quand même.
Et le dernier, « apache-w00tw00t » permet de bannir un scanner de faille « w00tw00t » fréquemment utilisé, on en retrouve la trace dans les logs.
À ajouter dans le fichier /etc/fail2ban/jail.conf.local :
Maintenant vous devez créer 3 fichiers, qui sont des filtres à base d’expression régulière (Regex), dans /etc/fail2ban/filter.d/ :
(Apparement dans la vidéo, j’ai oublié les « .conf » à la fin des fichiers, pensez y donc)
Ensuite, vous pouvez faire un restart de fail2ban avec /etc/init.d/fail2ban restart et c’est terminé.
Détecteur de backdoor
Le dernier logiciel à installer est un détecteur de Backdoor. Pour l’installer, faites un apt-get install rkhunter et vérifier dans son fichier de configuration /etc/default/rkhunter que report_email est sur root et cron_daily_run à yes.
Vous recevrez des emails en cas si des fichiers sensibles sont modifiées. Attention toutefois, car il peut générer des faux positifs.
Recevoir un email lors d’une connexion ssh
Cette fois-ci c’est plus une astuce qu’un logiciel. Si vous souhaitez recevoir un email dés que quelqu’un se connecte sur un compte d’un utilisateurs système, vous pouvez modifier son fichier ~user/.bashrc et ajouter la ligne suivante : echo ‘Acces SheLL Root’ `who` `date` | mail -s `hostname` Shell Root [email protected]
À chaque connexion, ce bout de code sera exécuté et vous serez avertie. Plutôt pratique si vous êtes parano et souhaitez détecter des intrusions facilement.
En conclusion, avec ces quelques principes de bases vous devriez avoir un serveur sécurisé. N’oubliez pas qu’aucun serveur n’est infaillible et gardez toujours un système à jour pour limiter les risques. Dans la prochaine vidéo, nous verrons comment augmenter la sécurité d’apache et dans une autre vidéo comment mettre en place un système de backup.
Si vous voulez en apprendre plus sur Iptables, je vous recommande ce tutoriel sur le site du zéro.
Si vous avez aimé l’article, n’hésitez pas à le diffuser sur Facebook/Twitter via les boutons ci-dessous. Je vous invite également sur la page facebook du blog (merci d’avance).
(Image à la une : No entry sign)