Um dos meus servidores LAMP foi derrubado recentemente por algum tipo de bot de script que procura explorações. Pelo que parecia, fazia tantos pedidos por segundo que sobrecarregava a RAM do servidor e derrubava todo o site por uma hora. Esse "ataque" veio de um único endereço IP.
Então, como posso bloquear automática e temporariamente um endereço IP, causando muitos acessos no meu servidor LAMP em um curto período de tempo? Qual é a melhor ferramenta para o trabalho e devo resolver isso no nível do sistema operacional ou via PHP?
Você deve evitar tentar fazer isso com PHP. Quando o PHP se envolve, já é tarde demais - a memória já foi alocada.
Você pode banir endereços IP em qualquer camada, mas o nível mais baixo que utiliza a menor quantidade de recursos é o caminho que você deseja seguir. Este é geralmente o firewall. No mínimo, iptables (firewall linux) é o que você deseja usar. Existem ferramentas mencionadas por outros, como Fail2Ban, que podem automatizar isso para você. Firewall externo seria melhor.
Além de tentar proibir endereços IP ofensivos, tente usar melhor seus recursos. Se uma solicitação consumir menos recursos, levará mais tempo para que um ataque seja eficaz.
O Apache também usa muita memória. Se você estiver usando o mod_php, é ainda pior porque o PHP é carregado dentro de cada processo filho do Apache. Isso significa que mesmo solicitações de conteúdo estático (css / js / images) estão carregando o PHP, mesmo quando o PHP não está sendo usado. Você pode resolver esse problema usando o FastCGI. mod_fcgid é uma boa opção.
Existem também outros servidores Web que são mais eficientes em termos de recursos. Nginx é o meu favorito. Há também o Lighttpd. Muita gente como Litespeed (substitui o Apache).
Se você quiser ficar com o Apache, considere ajustá-lo da melhor maneira possível. Considere desativar o .htaccess. Aqui está uma boa explicação do porquê .
fonte
Para controlar ou bloquear o tráfego http, você pode usar:
No entanto, esteja ciente de que essa ferramenta também pode bloquear / atrasar os webspiders e, portanto, afetar o SEO.
fonte
o ossec pode fazer esse tipo de coisa de forma automática e transparente com base nos syslogs.
fonte
man iptables
e ver o que cada bandeira significa e como elas funcionam juntas.NoooBS,
--- inundar ---
iptables -N logdrop iptables -A logdrop -m recente --set --name lista negra
iptables -U logdrop -m limit --limit 1 / s --limit-burst 1 -j LOG --log-prefixo "Flood:"
iptables -A logdrop -j DROP
iptables -N ddos iptables -A ddos -m recente --rcheck --name blacklist --seconds 300 --hitcount 1 -j logdrop iptables -A ddos -m recent --set --name - novamente iptables -A ddos -m recent --update --name again --seconds 60 --hitcount 2 -j logdrop iptables -A ddos -j RETURN
fonte