Khayspace

L'espace de Starkhay

fév

15

Installation d’un serveur dédié : 3ème partie – la sécurité

Après l’installation de l’O.S. de notre machine, d’Apache et de MySQL, il convient de s’intéresser avant tout à la sécurisation du serveur. Laisser un serveur sans s’être préoccupé de sa sécurité, c’est comme jeter un agneau dans la fosse aux lions. Nous allons dans un premier temps installer un Firewall grâce à IPTABLES et ensuite nous nous occuperons de calmer ceux qui tentent des attaques en Bruteforce avec Fail2ban.

Le Firewall du serveur IPTABLES

IPTABLES est généralement un logiciel déjà installé avec les distributions ayant un noyau Linux récent, c’est à dire à partir du noyau 2.4. Il va nous permettre d’établir des règles de filtrage. Nous avons besoin de procéder à la création de 2 fichiers, manipulation facilement réalisable avec Winscp à travers l’explorateur de fichiers.

Le premier fichier à créer est /etc/network/if-pre-up.d/iptables-start qui contiendra la mise en place des règles. Le 2ème fichier est /etc/network/if-post-down.d/iptables-stop qui permettra d’arrêter le filtrage.

Iptables-start

#!/bin/bash
# Arret de fail2ban
#/etc/init.d/fail2ban stop
#echo Arret de Fail2ban : [OK]
echo Mise en place des regles de filtrage…
# Configuration de base
# Reinitialisation des tables actuelles
iptables -t filter -F
iptables -t filter -X
echo - Vidage : [OK]
# Autoriser les connexions SSH
iptables -t filter -A INPUT -p tcp –dport 22 -j ACCEPT
echo - Autoriser SSH : [OK]
# Interdire toute connexion entrante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
echo - Interdire toute connexion entrante : [OK]
# Interdire toute connexion sortante
iptables -t filter -P OUTPUT DROP
echo - Interdire toute connexion sortante : [OK]
# Configuration specifique
# Autoriser les requetes DNS, FTP, HTTP, NTP (pour les mises a jour)
iptables -t filter -A OUTPUT -p tcp –dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p udp –dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp –dport 123 -j ACCEPT
echo - Autoriser les requetes DNS, FTP, HTTP, NTP : [OK]
# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo - Autoriser loopback : [OK]
# Autoriser ping
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo - Autoriser ping : [OK]
# HTTP
iptables -t filter -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 8443 -j ACCEPT
echo - Autoriser serveur Apache : [OK]
# FTP
modprobe ip_conntrack_ftp
iptables -t filter -A INPUT -p tcp –dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 21 -j ACCEPT
iptables -t filter -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
echo - Autoriser serveur FTP : [OK]
# Mail
iptables -t filter -A INPUT -p tcp –dport 25 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 110 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 143 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 143 -j ACCEPT
echo - Autoriser serveur Mail : [OK]
# Steamcast
iptables -t filter -A INPUT -p tcp –dport 8000 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 8001 -j ACCEPT
echo - Autoriser serveur ShoutCast : [OK]
# Protection de quelques types d’attaque
# Syn-Flood
iptables -A FORWARD -p tcp –syn -m limit –limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit –limit 1/second -j ACCEPT
echo - Limiter le Syn-Flood : [OK]
# Spoofing
iptables -N SPOOFED
iptables -A SPOOFED -s 127.0.0.0/8 -j DROP
iptables -A SPOOFED -s 169.254.0.0/12 -j DROP
iptables -A SPOOFED -s 172.16.0.0/12 -j DROP
iptables -A SPOOFED -s 192.168.0.0/16 -j DROP
iptables -A SPOOFED -s 10.0.0.0/8 -j DROP
echo - Bloquer le Spoofing : [OK]
# Lancement de fail2ban
#/etc/init.d/fail2ban start
#echo Lancement de fail2ban : [OK]
#echo Firewall mis en place !

Vous avez ici quelques exemples de règles de filtrage. Je vous conseille de supprimer ce qui ne vous sert pas et de rajouter vos besoins particuliers. Par exemple le port d’écoute pour le SSH peut être modifié. De manière générale, la syntaxe est :

iptables -t filter -A sensdeconnexion -p protocole –dport numerodeport -j action
avec pour :sensdeconnexion : INPUT ou OUTPUT
protocole : tcp, udp icmp ….
numerodeport : celui que vous désirez mettre ou que votre logiciel utilise
action : DROP ou ACCEPT

Vous remarquerez également la présence de quelques lignes, commentées pour l’instant, concernant le logiciel fail2ban. Elles sont déjà incluses, histoire de gagner du temps car c’est ce que nous verrons juste après.

Iptables-stop

#!/bin/sh
# Reinitialisation des regles de filtrage
iptables -F
iptables -t nat -F
# Remise de toutes les politiques par defaut a ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo Reinitialisation du filtrage : [OK]

Comme vous pouvez le constater, celui-ci est beaucoup plus simple.

Mise en route du filtrage

Nous allons rendre nos deux fichiers exécutables avec les commandes suivantes :
chmod 755 /etc/network/if-pre-up.d/iptables-start
chmod 755 /etc/network/if-post-down.d/iptables-stop

Puis démarrons le Firewall avec
/etc/init.d/networking restart

En temps normal, le 1er fichier s’exécute au moment du montage des interfaces réseau, le 2ème à son inverse, lors du démontage.

Pour visualiser les tables de filtrage effective, une commande en mode console (sous Putty) suffit :
iptables -v –L

Pour en savoir un peu plus sur IPTABLES, vous pouvez consulter cette adresse.

Le Daemon Fail2ban

Face aux attaques en bruteforce il est nécessaire de se protéger. Outre une protection pour interdire l’entrée, il est très utile de faire comprendre à ces petits importuns de passer leur chemin. C’est ce que fait ce petit logiciel, au bon d’un certain nombre de tentatives de connexions infructueuses, il bannit l’adresse Ip pour un temps prédéfini. Les assaillants passent alors leur chemin au bout de quelques tentatives infructueuses sans réponse.

L’installation est des plus simple :
apt-get install fail2ban

Pour vérifier son bon fonctionnement :
/etc/init.d/fail2ban status

Le daemon est déjà en action et son paramètrage est déjà suffisant. Si, cependant, vous souhaitez visualiser et/ou modifier son paramètrage, cela se passe dans /etc/fail2ban.conf.

Basiquement, trois options retiendront votre attention :

  • maxfailures qui indique au bout de combien d’échecs, l’adresse IP est bannie
  • bantime , la durée du bannissement
  • ignoreip pour spécifier des IPs à ne jamais bannir

Bien d’autres paramètres sont disponibles, je vous invite à vous rendre sur le site officiel de Fail2ban pour en découvrir plus sur ces options et ce logiciel.

Vous voici dorénavant avec une protection assez efficace contre la plupart des attaques. Que cela ne vous dispense pas de faire les mises à jour de votre OS et/ou de vos scripts dès la découverte de failles. Maintenant, nous allons pouvoir nous occuper de nos sites en commençant par la gestion des noms de domaine…lors d’un prochain billet.

Si vous avez des questions ou des soucis avec ce qui est présenté ici, je vous répondrai bien volontiers.

Sommaire de Installation d'un serveur dédié

  1. Installation d’un serveur dédié : 1ère partie - Dédibox
  2. Installation d’un serveur dédié : 2ème partie – Apache, MySQL, Winscp et Putty
  3. Installation d’un serveur dédié : 3ème partie – la sécurité

Votez pour cet article s'il vous a plu :



Billets pouvant vous intéresser également :

6 commentaires pour Installation d’un serveur dédié : 3ème partie – la sécurité

Très intéressant comme post, merci!

Par contre ce n’est pas très clair en ce qui concernje iptables je trouve, il faudrait plus de détails à mon avis

Si tu as des questions, n’hésite pas. Je n’ai pas voulu faire plus détaillé pour éviter de perdre le lecteur dans des notions qu ine le concerne pas forcément mais je peux compléter sur des points précis à la demande des lecteurs.

Découvrir un peu de starkhay

Khaybox 1 : la boîte à liens de Starkhay

Cela faisait un moment que je voulais partager des liens de sites que je trouve très utiles. Alors voilà c’est fait, et ce sera dorénavant une rubrique régulière. Dans ce 1er opus, voici des si[...]

Excellent tuto surtout pour la section filtrage iptables que je suis en train de mettre en place… J’aurais bien aimé un petit peu plus de détails pour pouvoir filtrer certains services d’un serveur à l’autre, exemple, MySQL sur un serveur où l’on ne veut laisser passer que le port 3306 d’un dédié à l’autre plus le SSH (ou alors tout fermer et ne allow que le dédié ayant le serveur web. De même pour munin/munin-node…
Enfin voilou, mais merci quand même.

La partie pour fail2ban aurait mérité un peu plus de détails surtout si l’on utilise proftpd qui log les connections dans auth.log ce qui peut mettre en erreur quelqu’un découvrant ce soft bien utile…

Il est vrai que j’ai fait quelquechose d’assez simple. Désirant plus donner envie de découvrir davantage ces outils qu’effrayer les lecteurs, cela reste simple est suffisant pour la mise en place de site léger.

N’ayant qu’un dédié pour l’instant, je ne me suis jamais penché sur les liaisons entre eux mais effectivement cela devient intéressant pour se protéger de segmenter applicatif et données.

Ah la lecture des logs !! Y aurait certainement de quoi écrire plusieurs articles la dessus !! ;)

Fail2ban est simple mais il y a d’autres solutions de protections plus complètes mais aussi plus complexes. Ces dernières sont en général plus adaptées pour un monde professionnel.

Découvrir un peu de starkhay

Khaybox 1 : la boîte à liens de Starkhay

Cela faisait un moment que je voulais partager des liens de sites que je trouve très utiles. Alors voilà c’est fait, et ce sera dorénavant une rubrique régulière. Dans ce 1er opus, voici des si[...]

bon ben voila, j’ai tout dévoré…. et tout imprimé, prêt à me lancer à la conquête de ma dedibox :D
J’attends avec une impatience non dissimulée les tutos suivants !
En attendant, hop dans mes favoris et mes flux RSS !
génial ;-)

Faut pas lire tout d’un coup, cela va provoquer une indigestion ;)

Cela étant, vous pouvez toujours me suggérer des thèmes, des fois, je suis à court d’idées :p

Bien pour les favoris, bien pour l’abonnement aux RSS, manque plus que le vote au concours de la nouvelle star des blogs pour vous décerner le titre du lecteur parfait ! LOLL

Découvrir un peu de starkhay

Khaybox 1 : la boîte à liens de Starkhay

Cela faisait un moment que je voulais partager des liens de sites que je trouve très utiles. Alors voilà c’est fait, et ce sera dorénavant une rubrique régulière. Dans ce 1er opus, voici des si[...]

Laisser un commentaire


BLOGOMETRIE 2.0 Paperblog Clicky Web Analytics