Řešení 1:
Fail2Ban. Zlatý standard/výchozí řešení tohoto problému na platformě Linux.
Řešení 2:
Měli byste se vyhnout pokusům o to s PHP. Než se do toho zapojí PHP, je již příliš pozdě – paměť již byla přidělena.
IP adresy můžete zakázat na jakékoli vrstvě, ale nejnižší úroveň, která využívá nejmenší množství zdrojů, je trasa, kterou se chcete vydat. Obvykle je to firewall. Přinejmenším iptables (linuxový firewall) je to, co chcete používat. Existují nástroje, které zmiňovali jiní, jako je Fail2Ban, které vám to dokážou zautomatizovat. Externí firewall by byl lepší.
Kromě pokusů zakázat nevhodné IP adresy byste se měli pokusit lépe využít své zdroje. Pokud požadavek vyžaduje méně prostředků, bude trvat déle, než bude útok účinný.
Apache také používá hodně paměti. Pokud používáte mod_php, je to ještě horší, protože PHP je načteno uvnitř každého podřízeného procesu Apache. To znamená, že i požadavky na statický obsah (css/js/images) načítají PHP, i když se PHP nepoužívá. Tento problém můžete vyřešit pomocí FastCGI. mod_fcgid je dobrá volba.
Existují také další webové servery, které jsou efektivnější z hlediska zdrojů. Nginx je můj oblíbený. Existuje také Lighttpd. Spousta lidí má ráda Litespeed (vypadá náhrada za Apache).
Pokud chcete zůstat u Apache, zvažte jeho co nejlepší vyladění. Zvažte zakázání .htaccess. Zde je dobré vysvětlení proč.
Řešení 3:
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
ossec může dělat tento typ věcí automaticky a transparentně na základě syslogs.
Řešení 4:
Chcete-li ovládat nebo blokovat provoz http, můžete použít:
- modul apache.
- iptable
- fail2ban, jak zde uvádí HopelessN0ob.
Uvědomte si však, že tyto nástroje mohou také blokovat/zpomalit webpavouky, a tudíž ovlivnit SEO.