iptables (iptables.fw)
Proteção contra DDoS com iptables - funcional
Categoria: Segurança
Software: iptables
[ Hits: 5.468 ]
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Função que recebe 20 números inteiros e retorna o 6° maior elemento do... (3)
Partição e erro fatal do disco (9)
Pfsense com Squidguard transparente bloqueando Skype (0)