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…
Sécuriser son serveur dédié avec Iptables, fail2ban et Rkhunter

Hello,
merci pour ton super tuto.
que faire si on a une connexion ssh non autorisée (detectee grace a ton systeme d alerte email) ?
Bonjour prestarocket,
Normalement des systèmes comme fail2ban empêche ce genre de chose, sinon le plus simple est de récupérer l’IP et la bannir du serveur avec iptables pendant longtemps ou définitivement.
Pour faire fonctionner le ftp avec iptables j’ai du activer certain modules,
voici ce que j’ai ajouté à mon fichier firewall
# * Modules *
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ipt_limit
modprobe ipt_state
modprobe ipt_multiport
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
echo « Chargement des modules ……………………. [Ok] »
Depuis ça fonctionne aussi
Bonjour,
Sur mon dédié, j’ai teamspeak3, avec le tuto j’ai monté un firewall et depuis impossible de connecter teamspeak? pourriez vous m’aider?
J’ai mis :
# Teamspeak:9987
iptables -t filter -A INPUT -p udp –dport 9987 -j ACCEPT
iptables -t filter -A OUTPUT -p udp –dport 9987 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 10011 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 30033 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 10011 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 30033 -j ACCEPT
Sachant que les ports TS sont :
port 9987 (udp) : port par defaut de connexion au serveur voix.
port 10011 (tcp) : connexion ServerQuery
port 30033 (tcp) : pour le transfert de fichier
Est ce que c’est bon?
Merci.
Bonjour Sora,
Cela me semble incomplet mais comme Teamspeak est un logiciel extrément utilisés, le plus simple est de rechercher des configurations déjà faites et testés. Après quelques recherches j’ai trouvés ça :
# UDP Teamspeak Voice Port
iptables -A INPUT -p udp -m udp –dport 9987 -j ACCEPT
# TCP Teamspeak File Transfer
iptables -A INPUT -p tcp -m tcp –dport 30033 -j ACCEPT
# TCP Query Port
iptables -A INPUT -p tcp -m tcp –dport 10011 -j ACCEPT
Généralement j’ajoute ça avant aussi :
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
très bon tutoriels je les suis 1 par 1
juste un complément après quelques jours
j’ai pas mal d’entrée j’en laisse que 3 sur l’ensemble des lignes
sshd:
Authentication Failures:
unknown (115.85.194.82): 249 Time(s)
unknown (223.4.89.116): 30 Time(s)
root (223.4.3.42): 24 Time(s)
Invalid Users:
Unknown Account: 285 Time(s)
j’ai donc cherché une méthode plus violent de bannissement
j’ai donc mis en place ceci en plus
http://doc.ubuntu-fr.org/denyhosts
depuis :
logwatch jours 1
——————— Denyhosts Begin ————————
new denied hosts:
184.106.213.105
115.85.194.82
82.146.42.175
160.80.34.123
———————- Denyhosts End ————————-
——————— pam_unix Begin ————————
sshd:
Authentication Failures:
unknown (115.85.194.82): 116 Time(s)
unknown (223.4.89.116): 15 Time(s)
logwatch jours 2
sshd:
Plus rien a signaler ))
Gros bug…
Mon apt-get et mon ftp ne fonctionne plus.. C’est définitivement le iptables qui ne fait pas son travail comme il le devrait… une journée de galère…
Si je réinitialise le firewall, 1 seul connection m’est possible en ftp. Le apt-get ne fonctionne toujours pas.
*CRYING*
J’ai trouvé la solution, j’ai tout simplement remplacé les lignes 12 à 18 par le echo « Flushing iptables rules… » D’Alexis
Merci Alexis.
Moi personnellement j’ai du reconstruire 3 fois mon iptables pour cause diverses et finalement, je n’ai mis que le nécessaire avec le moins de comment possible et un petit echo pour m’y retrouver.. xD
Est-ce qu’on peut mettre des if dans un #!/bin/sh ? ou des conditions?
J’ai aussi trouvé une site web de wiki très sympa.
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
Le voici
#!/bin/sh
### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Démarre les règles iptables
# Description: Charge la configuration du pare-feu iptables
### END INIT INFO
### Reeinitilisation
echo « Configuration du firewall. »
echo « Nettoyage des filtres. »
iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo « Nettoyage…Done. »
### DEBUT DES ENTREES
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo « Ping…Done. »
iptables -t filter -A INPUT -p tcp –dport 1827 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 1827 -j ACCEPT
echo « SSH…Done. »
iptables -t filter -A OUTPUT -p tcp –dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 443 -j ACCEPT
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/HTTPS…Done. »
iptables -t filter -A OUTPUT -p tcp –dport 20 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 21 -j ACCEPT
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…Done. »
echo « Loading complete. »
Si jamais sa peut servir à ceux qui ont et le bug du FTP, je l’ai eu, et je l’ai résolue en modifiant un petit peut les règles :
# FTP In
iptables -t filter -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 21 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 20 -j ACCEPT
# FTP Out
iptables -t filter -A OUTPUT -p tcp –dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 20 -j ACCEPT
En gros pour faire simple j’ai inversé les règles entrantes et sortantes et autoriser les connexions déjà établies en premier.
Voila sa à marcher pour moi 😉 Bonne chance à vous 🙂
Et au faite, il déchire ton blog Alexis ! Continue car c’est super, bon courage pour la suite 😉
j’ai un probleme avec iptable
quand je lance la commande update-rc.d firewall defaults
j’ai ce message d’erreur :
update-rc.d: using dependency based boot sequencing
insserv: warning: current start runlevel(s) (empty) of script `firewall’ overwrites defaults (2 3 4 5).
que dois je faire ?
Salut,
Merci pour tes conseils qui sont bien utiles, mais j’ai une question j’ai fais un echo (dans mon .bshrc) comme tu cites à la fin de ton tuto pour recevoir un mail à chaque connexion, mais je reçois le mail dans /var/mail/utilisateur et non sur ma boite mail ? Comment faire pour modifier cela ?
Encore une fois merci des tes tutos et Joyeux Noël 😀
Cordialement.
Bonjour dztoar,
Il faut installer un serveur de mail sur le serveur dédié pour au moins pouvoir envoyer des emails. Après, c’est possible que se soit une erreur dans la ligne que j’ai donnée car les utilisateurs ne devraient rien recevoir du tout … il faut vérifier les « quotes », vous s’il en manque pas une quelques part.
voici le code pour le firewall
j’ai eut du mal mais tout fonctionne comme ca
pensez à modifier le range dans la ligne passiveport du fichier conf de proftpd en mettant 1024 1024 (par exemple )
le fichier firewall :
#!/bin/sh
### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Démarre les règles iptables
# Description: Charge la configuration du pare-feu iptables
### 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 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 22 -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
iptables -t filter -A INPUT -p tcp –dport 1024 -j ACCEPT
iptables -t filter -A INPUT -p tcp –sport 1024 -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 »
# Monit
iptables -t filter -A INPUT -p tcp –dport 4598 -j ACCEPT
# Webmin
iptables -t filter -A INPUT -p tcp –dport 10000 -j ACCEPT
echo « monitoring ok »