Sécurité système · 10 min read · Dec 02, 2025
Renforcer votre système
11. Renforcer votre système
Tout d’abord, assurez-vous que vous avez défini le niveau de sécurité sur Élevé, dans la configuration du serveur - Web (onglet) du panneau ISPConfig3.
Les instructions suivantes ne sont qu’une démonstration. Veuillez les comprendre complètement (en lisant la documentation sur Internet), avant de les appliquer et de les utiliser.
En général, si vous les suivez, vous pouvez limiter le trafic sur des ports spécifiques, réduire les connexions syn et prévenir les intrusions utilisant des paquets connus comme mauvais. Pour les appliquer, créez le dossier /root/scripts (s’il n’existe pas) et les 5 fichiers suivants. (loadfw, unloadfw, IPs, fwrules et reloadfail2ban). Le premier contiendra le script pour charger les règles, le second le script pour décharger les règles, le troisième contiendra les IPs et réseaux “MAUVAIS”, le quatrième les règles personnalisées et le cinquième quelques commandes pour recharger tout (y compris fail2ban).
mkdir /root/scripts
touch /root/scripts/loadfw
touch /root/scripts/unloadfw
touch /root/scripts/IPs
touch /root/scripts/fwrules
touch /root/scripts/reloadfail2ban
cd /root/scripts
nano loadfw
Collez ce qui suit :
#!/bin/bash
# Script de chargement simple iptables IP/sous-réseau
# ----------------------------------------------------------
cd /root/scripts/
IPT=/sbin/iptables
DROPMSG="fwBLOCKED "
BADIPS=$(egrep -v -E "^#|^$" /root/scripts/IPs)
while read fwrule
do
$IPT -I INPUT $fwrule
done < /root/scripts/fwrules
for ipblock in $BADIPS
do
$IPT -I INPUT -s $ipblock -j DROP
$IPT -I INPUT -s $ipblock -j LOG --log-prefix "$DROPMSG"
done
Éditez unloadfw :
nano unloadfwCollez ce qui suit :
#!/bin/bash
# Script de déchargement simple iptables IP/sous-réseau
# ---------------------------------------------------------
cd /root/scripts/
IPT=/sbin/iptables
DROPMSG="fwBLOCKED "
BADIPS=$(egrep -v -E "^#|^$" /root/scripts/IPs)
while read fwrule
do
$IPT -D INPUT $fwrule
done < /root/scripts/fwrules
for ipblock in $BADIPS
do
$IPT -D INPUT -s $ipblock -j DROP
$IPT -D INPUT -s $ipblock -j LOG --log-prefix "$DROPMSG"doneÉditez IPs :
nano IPsCollez les IPs ennuyeuses (par exemple, les IPs bannies plusieurs fois par fail2ban) ou des réseaux entiers. Vous pouvez ajouter ici des IPs ou des réseaux à tout moment, mais avant de faire toute modification (surtout si vous enlevez quelque chose), vous devez exécuter “/root/scripts/unloadfw”. Ensuite, vous pouvez éditer le fichier, insérant des IPs ou des réseaux et enfin vous devez exécuter “/root/scripts/loadfw” (voir ci-dessous)
#IP
x.y.z.w
x.q.a.r
#réseaux
d.r.t.h/24
#serveurs de messagerie
a.g.h.j(Vous pouvez utiliser http://www.countryipblocks.net pour voir les réseaux associés à chaque pays). Éditez fwrules :
nano fwrulesCollez ce qui suit (et tout ce qui peut être inséré (-I) ou supprimé (-D) dans/de la chaîne INPUT. Les règles sont pour les serveurs avec une seule interface réseau (eth0). Veuillez les modifier pour répondre à vos besoins (par exemple, changez eth0 si votre interface réseau est différente).
-p tcp --dport 50022 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw50022 -j DROP
-p tcp --dport 50022 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw50022 -j LOG --log-prefix "LMfwport50022"
-p tcp --dport 50022 -i eth0 -m state --state NEW -m recent --set --name fw50022
-p tcp --dport 50000 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw50000 -j DROP
-p tcp --dport 50000 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw50000 -j LOG --log-prefix "LMfwport50000"
-p tcp --dport 50000 -i eth0 -m state --state NEW -m recent --set --name fw50000
-p tcp --dport 10000 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw10000 -j DROP
-p tcp --dport 10000 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw10000 -j LOG --log-prefix "LMfwport10000"
-p tcp --dport 10000 -i eth0 -m state --state NEW -m recent --set --name fw10000
-p tcp --dport 25 -i eth0 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name fw25 -j DROP
-p tcp --dport 25 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 20 --name fw25 -j LOG --log-prefix "LMfwport25"
-p tcp --dport 25 -i eth0 -m state --state NEW -m recent --set --name fw25
-p tcp --dport 110 -i eth0 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name fw110 -j DROP
-p tcp --dport 110 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 20 --name fw110 -j LOG --log-prefix "LMfwport110"
-p tcp --dport 110 -i eth0 -m state --state NEW -m recent --set --name fw110
-p tcp --dport 50443 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw50443 -j DROP
-p tcp --dport 50443 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw50443 -j LOG --log-prefix "LMfwport50443"
-p tcp --dport 50443 -i eth0 -m state --state NEW -m recent --set --name fw7443
-p tcp --dport 22 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw22 -j DROP
-p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw22 -j LOG --log-prefix "LMfwport22"
-p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set --name fw22
-p tcp --dport 20 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw20 -j DROP
-p tcp --dport 20 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw20 -j LOG --log-prefix "LMfwport20"
-p tcp --dport 20 -i eth0 -m state --state NEW -m recent --set --name fw20
-p tcp --dport 21 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw21 -j DROP
-p tcp --dport 21 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw21 -j LOG --log-prefix "LMfwport21"
-p tcp --dport 21 -i eth0 -m state --state NEW -m recent --set --name fw21
-p tcp --dport 143 -i eth0 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name fw143 -j DROP
-p tcp --dport 143 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 20 --name fw143 -j LOG --log-prefix "LMfwport143"
-p tcp --dport 143 -i eth0 -m state --state NEW -m recent --set --name fw143
-p tcp --dport 53 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw53 -j DROP
-p tcp --dport 53 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw53 -j LOG --log-prefix "LMfwport53"
-p tcp --dport 53 -i eth0 -m state --state NEW -m recent --set --name fw53
-p tcp --dport 443 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw443 -j DROP
-p tcp --dport 443 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw443 -j LOG --log-prefix "LMfwport443"
-p tcp --dport 443 -i eth0 -m state --state NEW -m recent --set --name fw443
-p tcp --dport 8081 -i eth0 -m state --state NEW -m recent --rcheck --seconds 30 --hitcount 20 --name fw8081 -j DROP
-p tcp --dport 8081 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 --name fw8081 -j LOG --log-prefix "LMfwport8081"
-p tcp --dport 8081 -i eth0 -m state --state NEW -m recent --set --name fw8081
-p icmp -j DROP
-p icmp -m limit --limit 2/s -j ACCEPT
-p tcp --syn --dport 80 -m connlimit --connlimit-above 25 -j DROP
-p tcp --syn --dport 80 -m connlimit --connlimit-above 25 -j LOG --log-prefix "BLfwsyn80"
-p tcp --syn --dport 443 -m connlimit --connlimit-above 25 -j DROP
-p tcp --syn --dport 443 -m connlimit --connlimit-above 25 -j LOG --log-prefix "BLfwsyn443"
-p tcp --syn --dport 50443 -m connlimit --connlimit-above 25 -j DROP
-p tcp --syn --dport 50443 -m connlimit --connlimit-above 25 -j LOG --log-prefix "BLfwsyn50443"
-p tcp --syn --dport 50022 -m connlimit --connlimit-above 10 -j DROP
-p tcp --syn --dport 50022 -m connlimit --connlimit-above 10 -j LOG --log-prefix "BLfwsyn50022"
-p tcp --syn --dport 22 -m connlimit --connlimit-above 10 -j DROP
-p tcp --syn --dport 22 -m connlimit --connlimit-above 10 -j LOG --log-prefix "BLfwsyn22"
-p tcp --syn --dport 50000 -m connlimit --connlimit-above 15 -j DROP
-p tcp --syn --dport 50000 -m connlimit --connlimit-above 15 -j LOG --log-prefix "BLfwsyn50000"
-p tcp --syn --dport 10000 -m connlimit --connlimit-above 15 -j DROP
-p tcp --syn --dport 10000 -m connlimit --connlimit-above 15 -j LOG --log-prefix "BLfwsyn10000"
-p tcp --syn --dport 25 -m connlimit --connlimit-above 10 -j DROP
-p tcp --syn --dport 25 -m connlimit --connlimit-above 10 -j LOG --log-prefix "BLfwsyn25"
-p tcp --syn --dport 20 -m connlimit --connlimit-above 10 -j DROP
-p tcp --syn --dport 20 -m connlimit --connlimit-above 10 -j LOG --log-prefix "BLfwsyn20"
-p tcp --syn --dport 21 -m connlimit --connlimit-above 10 -j DROP
-p tcp --syn --dport 21 -m connlimit --connlimit-above 10 -j LOG --log-prefix "BLfwsyn21"
-p tcp --syn --dport 110 -m connlimit --connlimit-above 10 -j DROP
-p tcp --syn --dport 110 -m connlimit --connlimit-above 10 -j LOG --log-prefix "BLfwsyn110"
-p tcp --syn --dport 143 -m connlimit --connlimit-above 10 -j DROP
-p tcp --syn --dport 143 -m connlimit --connlimit-above 10 -j LOG --log-prefix "BLfwsyn143"
-p tcp --syn --dport 53 -m connlimit --connlimit-above 10 -j DROP
-p tcp --syn --dport 53 -m connlimit --connlimit-above 10 -j LOG --log-prefix "BLfwsyn53"
-i eth0 -p tcp --tcp-flags ALL ALL -j DROP
-i eth0 -p tcp --tcp-flags ALL ALL -j LOG --log-level 4 --log-prefix "FLAAfw"
-i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
-i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-level 4 --log-prefix "FINGfw"
-i eth0 -f -j DROP
-i eth0 -f -m limit --limit 6/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "FRAGfw"
-i eth0 -p tcp --tcp-flags ALL NONE -j DROP
-i eth0 -p tcp --tcp-flags ALL NONE -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "NULLfw"
-i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
-i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "XMASfw"
-i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
-i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-level 4 --log-prefix "SYNRTSfw"
-i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
-i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-level 4 --log-prefix "SYNRTSACKfw"
-i eth0 -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
-i eth0 -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j LOG --log-level 4 --log-prefix "SYNRTSYNSfw"
-i eth0 -p tcp ! --syn -m state --state NEW -j DROP
-i eth0 -p tcp ! --syn -m state --state NEW -m limit --limit 5/m --limit-burst 7 -j LOG --log-level 4 --log-prefix "DROSYNCfw"Éditez reloadfail2ban :
nano reloadfail2banCollez ce qui suit :
#!/bin/bash
/etc/init.d/fail2ban restart
sleep 2
/root/scripts/unloadfw
sleep 2
/root/scripts/loadfwGardez à l’esprit que le script reloadfail2ban décharge simplement les règles personnalisées dans fwrules, redémarre fail2ban et recharge les règles dans fwrules à nouveau. Il ne fait pas un redémarrage complet du pare-feu. Donc, avant de modifier les règles dans ce fichier (ou le fichier IPs), déchargez-les avec unloadfw. Le rôle de reloadfail2ban est de tester la fonctionnalité de fail2ban.
Enfin, exécutez :
chmod 700 reloadfail2ban
chmod 700 unloadfw
chmod 700 loadfw
/root/scripts/reloadfail2ban
Si vous souhaitez que les règles personnalisées se chargent après chaque redémarrage, collez la ligne : /root/scripts/loadfw à la fin de /etc/init.d/rc.local :
nano /etc/init.d/rc.local
et ajoutez :
[...]
/root/scripts/loadfw(D)DoS Deflate est un script shell bash léger conçu pour aider dans le processus de blocage d’une attaque par déni de service. Il crée une liste d’adresses IP connectées au serveur, avec leur nombre total de connexions. C’est l’une des solutions les plus simples et les plus faciles à installer au niveau logiciel.
Les adresses IP avec plus d’un nombre préconfiguré de connexions sont automatiquement bloquées dans le pare-feu du serveur, qui peut être iptables direct ou Advanced Policy Firewall (APF). Pour installer (D)DoS Deflate :
cd /tmp
wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh
Éditez /usr/local/ddos/ddos.conf et appliquez les modifications suivantes qui désactiveront le pare-feu APF et utiliseront iptables simples, en envoyant des événements par e-mail à root et en bloquant les IP avec plus de 100 connexions par minute.
[...]
APF_BAN=0
EMAIL_TO="root"
NO_OF_CONNECTIONS=100
[...] Les éléments ci-dessus ne sont qu’un ensemble de suggestions. Vous pouvez les étendre comme vous le souhaitez.
L’implémentation n’est qu’une approche parmi tant d’autres. Vous pouvez utiliser une solution de pare-feu comme APF, Shorewall, etc. Je serais heureux d’inclure d’autres approches différentes en complément de celle-ci.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.