iptables (iptables.fw)
Proteção contra DDoS com iptables - funcional
Categoria: Segurança
Software: iptables
[ Hits: 5.817 ]
Por: Alex Silva
Proteção definitiva contra DDoS - DDoS para web sites, regras com iptables, funcional, testes com ab (apache-utils).
Explicação:
- A regra "--update --seconds 60 --hitcount 4", bloqueia tentativas de login SSH no servidor no período de 1 minuto, apos 4 tentativas falhas.
- "--rcheck --seconds 10", regra para ser replicada, as demais que são acrescidas de "--name DEFAULT --rsource -j REJECT --reject-with icmp-port-unreachable", limitando N conexões a cada 10 segundos.
- "--connlimit-above 10", limitando a 10 conexões simultâneas a cada 10 segundos definidos acima, a partir desse valor, será dropado as conexões.
Resumo: Tenho um servidor de Apache, quando limito na opção de maxclientes, mesmo assim, as conexões abrem processo com o serviço, sobrecarregando o servidor, limitando com essa regra de iptables, você coloca o tempo que quiser e quantas conexões quiser, sendo assim, a partir de X conexões, o iptables dropa as demais conexões para a origem, está sendo limitado por rede, para limitar por IP, troca o /24 para /32 (apenas 1 IP).
Habilitei os logs das conexões na linha "DROP Firewall".
Tudo pronto:
# iptables-restore && iptable-save
Para ver os logs:
# tail -f /var/log/messages
Espero que resolva seus problemas.
# nano iptables.fw *filter :INPUT ACCEPT [181:58880] -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name DEFAULT --rsource -j DROP -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp -m recent --rcheck --seconds 10 --name DEFAULT --rsource -j REJECT --reject-with icmp-port-unreachable -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -m connlimit --connlimit-above 10 --connlimit-mask 24 --connlimit-saddr -m recent --set --name DEFAULT --rsource -j REJECT --reject-with icmp-port-unreachable -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 --connlimit-saddr -m recent --set --name DEFAULT --rsource -j REJECT --reject-with icmp-port-unreachable -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 443 -m connlimit --connlimit-above 10 --connlimit-mask 24 --connlimit-saddr -m recent --set --name DEFAULT --rsource -j REJECT --reject-with icmp-port-unreachable -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 3306 -m connlimit --connlimit-above 500 --connlimit-mask 24 --connlimit-saddr -m recent --set --name DEFAULT --rsource -j REJECT --reject-with icmp-port-unreachable -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 10050:10051 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p udp -m state --state NEW -m udp --dport 161 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p udp -m state --state NEW -m udp --dport 162 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 67 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p udp -m state --state NEW -m udp --dport 68 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 123 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p udp -m state --state NEW -m udp --dport 111 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT -A INPUT -s 192.168.66.0/24 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -m state --state INVALID -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT -A INPUT -s 192.168.66.0/24 -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT -A INPUT -s 192.168.66.0/24 -p icmp -m icmp --icmp-type 0 -m limit --limit 1/sec -j RETURN -A INPUT -i lo -j ACCEPT -A INPUT -s 192.168.66.0/24 -j LOG --log-prefix "DROP Firewall" COMMIT
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
[Resolvido] Algo deu errado ao abrir seu perfil
Usando o VNSTAT para medir o seu consumo de internet
Habilitando clipboard manager no ambiente COSMIC
Problema com som no laptop (5)
Quando vocês pararam de testar distros? (11)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









