iptables regras para combater os ataques DoS mais comuns? [fechadas]

6

Recentemente, recebi muitos ataques DoS em pequena escala. Eu estou querendo saber quais regras iptables devo usar para combater os ataques mais comuns de DoS, e geralmente proteger meu servidor web.

O servidor da web exibe verniz - > nginx / php5 - > memcached - > mysql

Eu tentei alguns recibos genéricos, mas eles também bloquearam o acesso ao meu servidor de banco de dados que fica em um servidor remoto, então corri as regras sugeridas e agora me sinto um pouco desarmado e volátil quando vejo apenas o fail2ban no iptables.

Portanto, aprecie suas regras para bloquear os vetores de ataque mais comuns.

    
por alfish 24.07.2012 / 13:43

3 respostas

19

Aqui estão algumas regras que eu uso:

# Reject spoofed packets
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 169.254.0.0/16 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP

iptables -A INPUT -s 224.0.0.0/4 -j DROP
iptables -A INPUT -d 224.0.0.0/4 -j DROP
iptables -A INPUT -s 240.0.0.0/5 -j DROP
iptables -A INPUT -d 240.0.0.0/5 -j DROP
iptables -A INPUT -s 0.0.0.0/8 -j DROP
iptables -A INPUT -d 0.0.0.0/8 -j DROP
iptables -A INPUT -d 239.255.255.0/24 -j DROP
iptables -A INPUT -d 255.255.255.255 -j DROP

# Stop smurf attacks
iptables -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP
iptables -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP
iptables -A INPUT -p icmp -m icmp -j DROP

# Drop all invalid packets
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP

# Drop excessive RST packets to avoid smurf attacks
iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT

# Attempt to block portscans
# Anyone who tried to portscan us is locked out for an entire day.
iptables -A INPUT   -m recent --name portscan --rcheck --seconds 86400 -j DROP
iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP

# Once the day has passed, remove them from the portscan list
iptables -A INPUT   -m recent --name portscan --remove
iptables -A FORWARD -m recent --name portscan --remove

# These rules add scanners to the portscan list, and log the attempt.
iptables -A INPUT   -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A INPUT   -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP

iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
    
por 24.07.2012 / 14:39
3

So appreciate your bullet-proof rules.

Você deve entrar em contato com seu ISP e deixar o tráfego cair no backbone antes que ele atinja você. Se você está no ponto em que seu firewall precisa eliminar o tráfego, ele já está consumindo sua largura de banda disponível e usando os recursos do sistema.

Essa é a única maneira "à prova de balas".

    
por 24.07.2012 / 13:47
1

Eu uso IPtables para limitar o acesso ao FTP e SSH, eu apenas permito que os IPs do meu computador se conectem ao servidor. Não posso dizer que tive problemas com ataques do DOS.

/sbin/iptables -A INPUT -p tcp --dport 22 -s 86.106.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -s 89.122.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 21 -s 86.106.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 21 -s 89.122.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 21 -j DROP 

Estas regras permitem o acesso às portas 22 e 21 em dois IPs diferentes. Provavelmente você pode adicionar a porta MySQL do seu servidor db e assim impedir que outros clientes se conectem diretamente ao seu servidor.

Editar: quando o servidor está sobrecarregado, acho útil ver as estatísticas do "mod-status" do Apache, a saída é assim: link você pode ver todos os visitantes do site, spiders, solicitações de URL, etc. A implementação leva menos de um minuto: link

    
por 24.07.2012 / 14:15

Tags