iptables (iptables.fw)
Proteção contra DDoS com iptables - funcional
Categoria: Segurança
Software: iptables
[ Hits: 5.536 ]
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
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Problema com nome composto e organização na tela do yad (0)
Formatando cartão de memoria que nao formata[AJUDA] (18)
Primeira vez utilizando Linux Ubuntu 22.04 e já tenho problemas… (5)
warsaw parou de funcionar após atualização do sistema (solução) (1)