comando linux para evitar o ataque usando netstat e iptables

11

Eu quero DROP mais de 200 solicitações por ip para evitar ataques de ddos. este é o comando que eu usei para detectar pedidos de contagem por ip:

netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr

agora eu quero adicionar todos os endereços IP que fizeram mais de 200 pedidos em IPtables para DROP input e out put.

    
por Morteza Soltanabadiyan 20.03.2014 / 21:11

2 respostas

12

Você também pode usar o iptables para limitar a taxa de conexões de entrada. Por exemplo, se você não quiser mais de 200 conexões por minuto de uma fonte:

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 200 -j DROP

    
por 20.03.2014 / 21:29
18

Você pode criar um ipset . Dessa forma, você pode adicionar quantos IPs ao conjunto forem necessários sem modificar o conjunto de regras iptables .

ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2

Ou, no seu caso, use a saída do seu script e leia-o com algo como:

while read a; do ipset -A myset "$a"; done < <(your script here)

E a referência nas suas regras de iptables :

iptables -A INPUT -m set --set myset src -j DROP

Leia a página de manobras para mais detalhes e opções.

Existem também outras formas de atenuar um ataque de DDOS usando iptables diretamente. Leia a seção iptables manpage sobre os módulos connlimit e recent .

    
por 20.03.2014 / 21:19