iptables (iptables.fw)
Proteção contra DDoS com iptables - funcional
Categoria: Segurança
Software: iptables
[ Hits: 5.477 ]
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
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (11)