Si quelqu'un a tenté de forcer une attaque par rafale sur mon site Web, comment puis-je les bloquer?
Idéalement, je veux bloquer une IP si j'ai beaucoup de requêtes http/Apache en une seconde.
fail2ban peut être configuré pour ce faire. Vous pouvez le configurer pour qu'il se déclenche sur une correspondance d'expressions régulières dans un fichier journal et si cela se produit trop de fois par minute (vous ne savez pas s'il passe à la deuxième résolution, mais multipliez simplement ce que vous pensiez par seconde par 60) et il peut supprimer l'adresse IP du client dans le filtre de paquets iptables ou toute autre action que vous souhaitez entreprendre. Ou vous pouvez utiliser le module récent iptables et adapter ce que j'ai fait ici pour SIP attaques par force brute à utiliser avec votre serveur Web:
# Deal with SIP brute forcing iptables -N SIP_WHITELIST # home iptables -A SIP_WHITELIST -s 1.2.3.0/24 -m recent --remove --name SIP -j ACCEPT # voip provider iptables -A SIP_WHITELIST -s 4.5.6.0/24 -m recent --remove --name SIP -j ACCEPT # remote location iptables -A SIP_WHITELIST -s 7.8.9.0/24 -m recent --remove --name SIP -j ACCEPT iptables -N SIP_BRUTEFORCE iptables -A SIP_BRUTEFORCE -m recent --set --name SIP iptables -A SIP_BRUTEFORCE -p udp --dport 5060 -m state --state NEW -j SIP_WHITELIST iptables -A SIP_BRUTEFORCE -m recent --update --seconds 30 --hitcount 3 --name SIP -j LOG iptables -A SIP_BRUTEFORCE -m recent --update --seconds 30 --hitcount 3 --name SIP -j DROP iptables -A INPUT -p udp --dport 5060 -m state --state NEW -j SIP_BRUTEFORCE
fail2ban est une solution facile à implémenter dans ces cas.
Ajouter un block-all-dem-noobs.conf
fichier dans votre filter.d
répertoire, quelque chose comme ça
[Definition]
failregex = ^<Host> -.*"GET.*
Traduction: un RegExp pour trouver les requêtes GET
Créez ensuite une nouvelle entrée dans votre jail.conf
, quelque chose comme ça
[block-all-dem-noobs]
enabled = true
port = http,https
filter = block-all-dem-noobs
logpath = /var/log/httpd/access.log
maxretry = 100
findtime = 5
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]
Traduction: regardez dans mon access.log
fichier, puis bloquer pendant 600 secondes (10 minutes) les adresses IP qui ont fait 100 requêtes en 5 secondes
Un inconvénient majeur, cependant, est que cela pourrait produire des faux positifs pour les utilisateurs de NAT ed, car ils apparaîtront tous comme une seule adresse IP.
Vous pouvez configurer le module Apache mod_evasive. Ce module fournit une fonction très basique en conservant une table de hachage des IP et des pages demandées et lorsqu'un niveau de seuil est dépassé sur une page ou un site cible, il "bloquera" l'IP avec une erreur 403 "Interdit". Pour les détails de configuration, vous lisez " Comment arrêter une attaque Apache DDoS avec mod_evasive ".