iptables para parar o DDOS [duplicado]

1

Meu servidor está passando por um ataque de ddos com o tráfego nos meus logs do Apache aparecendo como:

ip address - - [11/Apr/2013:01:01:04 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"

Como posso bloquear isso com as tabelas de IP? Eu estou usando:

-A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j DROP

mas isso não parece estar fazendo nada. Eu acho que preciso de algo ao longo desta linha embora.

obrigado

    
por dev 11.04.2013 / 09:05

3 respostas

2

Não sei como você pode fazer isso no iptables, mas eu recomendo que você dê uma olhada no OSSEC, que bloqueia repetidamente ofensores automaticamente. Você também pode dar uma olhada no CloudFare, eles também têm um pacote gratuito e são especializados na mitigação de DDoS, já que o que você precisa fazer é eliminar o tráfego antes que chega até você. Se o endereço for apenas um endereço IP, eu o descartaria permanentemente.

Eu alterei uma regra de iptable de aqui , dê uma olhada:

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 50 -j DROP
    
por 11.04.2013 / 09:41
1

Sem ver todos os seus iptables e algumas análises mostrando que a taxa excede os limites especificados, é impossível dizer por que isso está acontecendo. Por exemplo, pode ser que você receba muitas solicitações em uma única conexão .

Mesmo se você não estiver usando keepalives, um firewall com monitoração de estado (por si só) não é uma ferramenta muito eficaz para preceder ataques DOS. A modelagem de tráfego ajuda - mas isso fica muito complicado muito rapidamente. Existem alguns módulos apache que suportam uma garantia mínima de largura de banda - o que é muito mais simples de configurar do que o QOS do kernel. Mas eu recomendaria usar o fail2ban para bloquear os endereços IP que causam o problema.

    
por 11.04.2013 / 12:16
0

Vários problemas:

  1. Usar um firewall com monitoração de estado contra dDoS geralmente é uma má ideia: você ajuda o invasor permitindo que ele aloque o estado (portanto, memória) em sua máquina. O módulo de estado deve ser substituído por algo como --tcp-flags SYN SYN
  2. O -j DROP no final é um erro, ou seja, todos os pacotes que estão abaixo do limite são descartados. Deve ser -j ACCEPT e ter uma regra DROP depois. (Se você não viu nenhum efeito, pode ser porque você tem outra regra ACCEPT mais tarde, ou uma política geral ACCEPT).
  3. Eu prefiro o módulo hashlimit, que pode funcionar com prefixos, não apenas endereços IP individuais --tcp-flags SYN SYN -m hashlimit --hashlimit-name Web --hashlimit-above 3/second --hashlimit-mode srcip --hashlimit-burst 7 --hashlimit-srcmask 28 -j DROP
por 14.04.2013 / 17:50