Aie… ça se complique un peu !
Libre mais seul au monde ! Voila ce qui vous qualifie avec votre serveur dédié !
Comme votre serveur est connecté à internet (tout comme votre machine personnelle à la maison) vous allez devoir travailler sur l’installation d’un firewall sur votre serveur dédié. Sous DEBIAN SQUEEZE le firewall se nomme IPTABLES et le système de bannissement des IP indésirables se nomme FAIL2BAN.
Dans un premier temps nous allons proposer quelques règles de sécurité de base puis nous aborderons le paramétrage de IPTABLES.
ALERTE LOGIN – ROOT
Vous pouvez éditer le fichier /root/.bashrc qui est exécuté au démarrage d’une session root pour envoyer un e-mail de notification. De cette façon, vous serez prévenu lorsqu’un login est effectué.
nano /root/.bashrc
Ajoutez la ligne (en modifiant l’adresse e-mail de destination) :
echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d"(" -f2 | cut -d")" -f1` chamounet@free.fr
ATTAQUE PAR BRUTEFORCE
Une attaque par force brute, ou attaque par exhaustivité, est une méthode utilisée par les pirates pour découvrir le mot de passe .
Ce type d’attaque vise à générer un très grand nombre de mots de passe pour tester toutes les combinaisons possibles ! Le site du Zéro explique bien ce dispositif du « pauvre » en terme de hacking.
La première parade à ce dispositif est de générer un mot de passe spécifique visant à augmenter les combinaisons possibles ! Un des principes pour contrer ce type d’attaque est d’empêcher le hacker (script du hacker) de tenter de façon indéfinie dans le temps, les multiples combinaisons. Pour cela, le paramétrage du Firewall va nous permettre par exemple de bloquer les IP qui ont échoué à l’identification du serveur suite à 3 tentatives. l’IP sera bannie et pourra réessayer une connexion après par exemple 10 minutes d’attente. Tout ceci se paramètre à partir du Firewall IPTABLES et depuis FAIL2BAN.
exemple (Source Site du Zero)
Soit N le nombre de tentatives possibles en 1 an avec la protection N = 10*60*24*365 = 5 256 000 Soit N' le nombre de tentatives possibles en 1 an sans la protection N' = 100*60*60*24*365 = 3 153 600 000 Soit r le rapport de N' sur N r = N' / N = 3 153 600 000 / 5 256 000 = 600
FIREWALL : IPTABLES et FAIL2BAN
IPtables est le firewall pour Linux..
Pour commencer, testez la commande iptables -L
Globalement lorsque vous tapez iptables -L vous allez obtenir ceci :
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Cette commande shell vous permet de lister les règles déjà établies dans IPTABLES… et là pas de chance vous comprenez que tous les Ports sont ouverts ! youpi !!!
DÉFINITION D’UN PORT : Il s’agit en quelque sorte d’une « porte » d’entrée ou de sortie de vos données de votre serveur. Le firewall IPTABLES a pour objectif de « maitriser » l’ouverture / fermeture des PORTS de votre machine distante.
Attention certains logiciels installés sur votre serveur DEDIIE utilisent un PORT spécifique pour communiquer (input/output)… C’est le cas par exemple de votre logiciel FTP qui utilise le PORT 21.
Les ports ouverts par défaut sur les serveurs OVH sont :
22 – ssh (l’accès au shell crypté, à laisser ! normalement vous avez modifié ce PORT pour éviter les attaques BRUTEFORCE).
23 – telnet (l’accès au shell non crypté, à laisser en dépannage).
25 – smtp (le serveur de courrier sortant, à laisser).
53 – dns (le serveur DNS, à laisser ).
80 – http (le serveur web, à laisser).
110 – pop3 (l’accès aux mails, à laisser ).
143 – imap (l’accès aux mails, à laisser si vous n’utilisez pas pop3).
443 – https (l’accès au web crypté, à laisser selon votre utilisation).
1000 – webmin (panneau de configuration du serveur, à laisser si vous vous en servez – Cf choix de la distribution DEBIAN).
- INPUT (en entrée),
- FORWARD (dans le cas d’un routage réseau)
- OUPUT (en sortie).
Par défaut on va interdire toutes les portes :
# Interdire toute connexion entrante et sortante iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP iptables -t filter -P OUTPUT DROP
- i : interface d’entrée (input)
- i : interface de sortie (output)
- t : table (par défaut filter contenant les chaînes INPUT, FORWARD, OUTPUT)
- j : règle à appliquer (Jump)
- A : ajoute la règle à la fin de la chaîne (Append)
- I : insère la règle au début de la chaîne (Insert)
- R : remplace une règle dans la chaîne (Replace)
- D : efface une règle (Delete)
- F : efface toutes les règles (Flush)
- X : efface la chaîne
- P : règle par défaut (Policy)
Nous allons créer un script qui sera lancé à chaque démarrage pour mettre en place des règles de base.
nano firewall
#!/bin/sh ### BEGIN INIT INFO # Provides: Firewall maison # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: # Default-Stop: # X-Interactive: false # Short-Description: Firewall maison ### END INIT INFO # Mise à 0 iptables -t filter -F iptables -t filter -X echo "Mise à 0" # On bloque tout iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP iptables -t filter -P OUTPUT DROP echo "Interdiction" # Ne pas casser les connexions établies iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Autorise le loopback (127.0.0.1) iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT echo "Loopback" # ICMP (le ping) iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT echo "Ping ok" # SSH IN/OUT iptables -t filter -A INPUT -p tcp --dport 1337 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 1337 -j ACCEPT echo "SSH ok" # DNS In/Out iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT echo "dns ok" # NTP Out iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT echo "ntp ok" # HTTP + HTTPS Out iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # HTTP + HTTPS In 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 "http ok" # FTP Out iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT # FTP In # imodprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH 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 "ftp ok" # Mail SMTP:25 iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # Mail POP3:110 iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT # Mail IMAP:143 iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT # Mail POP3S:995 iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT echo "mail ok" # Monitoring - ispconfig iptables -t filter -A INPUT -p tcp --dport 4598 -j ACCEPT # ISPCONFIG iptables -t filter -A INPUT -p tcp --dport 8080 -j ACCEPT echo "monitoring ok"
J’enregistre/quitte le fichier nano firewall (ctrl -X) et je donne les droits d’exécution du fichier firewall.
chmod +x ./firewall
Ensuite je teste le firewall en exécutant le fichier firewall :
./firewall
Afin de l’ajouter aux scripts appelés au démarrage : attention, cette opération est à exécuter QUE si vous êtes sûr des règles que vous avez mises en place ! UN CONSEIL : testez au préalable les règles et prenez votre temps !
update-rc.d firewall defaults
Pour le retirer, vous pouvez utiliser la commande suivante :
update-rc.d -f firewall remove
FAIL2BAN – PARAMETRAGE DE BANNISSEMENT DES IP
Les services à monitorer sont stockés dans jail.conf. Il est recommandé d’en effectuer une copie nommée jail.local qui sera automatiquement utilisée à la place du fichier exemple.
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Lorsque vous listez (ls) le répertoire vous retrouvez 5 fichiers avec notamment votre copie (cp) : jail local
/etc/fail2ban# ls
action.d fail2ban.conf filter.d jail.conf jail.local
On édite le fichier jail.local et on va paramétrer les ACTIONS de BANNISSEMENT
nano /etc/fail2ban/jail.local
On modifie les règles en mettant l’ensemble des ACTIONS sur TRUE (hormis celles que vous n’avez pas installées !)
On redemarre : /etc/init.d/fail2ban restart
Laisser un commentaire