
Eu tenho um problema com meu servidor Apache onde há um IP do que conectar ao meu servidor, usando muita conexão e não morrendo, o que eventualmente faz com que meu servidor web expire. A conexão permanecerá no estado SYN_SENT se eu verificar usando
netstat -netapu
Eu até libero meu iptables e uso as regras básicas e ainda não funciona. O IP será conectado quando eu iniciar meu Apache
Regras básicas que uso:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
iptables -A INPUT -s 89.149.244.117 -j REJECT
iptables -A OUTPUT -s 89.149.244.117 -j REJECT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
A parte em negrito é a regra em questão.
Não tenho certeza se isso está relacionado, mas o valor tcp_syncookies é 1.
Alguém pode apontar meu erro? Existe uma maneira de bloqueá-lo para sempre.
Responder1
Você pode nos mostrar o resultado de
iptables-save
? Talvez a ordem das regras não seja o que você pensa. Então
iptables -A OUTPUT -s 89.149.244.117 -j REJECT
provavelmente deveria ler:
iptables -A OUTPUT -**d** 89.149.244.117 -j REJECT
A propósito, por que REJECT e não DROP? Então, se você estiver usando o módulo state, você deve escrever:
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
E observe que se o seu servidor estiver atrás de um balanceador de carga no modo DSR, o módulo de estado não funcionará corretamente.
Responder2
Conexões presas no estado SYN_SENT são conhecidas comoconexões embrionárias. Isso acontece quando você tenta fazer uma conexão com um endereço IP e, por algum motivo, esse IP não consegue entrar em contato com você. Isso significa quevocêestão tentando se conectar com ele, e não o contrário.
Não sei como era antes de você adicionar essas duas regras, mas do jeito que estão agora, você pode enviar a primeira parte do handshake de três vias (o SYN), mas não pode receber a segunda parte (o SYN /ACK) e isso deixará uma conexão no estado SEN_SENT para cada tentativa.
Suspeito que você copiou/colou a primeira regra para criar a segunda e alterou INPUT para OUTPUT, mas esqueceu de alterar -s
para -d
. Eu sei porque já fiz isso sozinho mais de uma vez.
Responder3
você precisa tentar o utilitário Linux "FAIL2BAN", que bloqueia a maioria desses ataques de força bruta. Fail2Ban oferece suporte à proteção contra ataques de força bruta para ssh, apache e muitos outros serviços. Se, por exemplo, um endereço IP estiver tentando fazer um grande número de conexões simultâneas, o fail2ban irá bloqueá-lo adicionando automaticamente (e depois de algum tempo, removendo também) esse endereço IP pelo iptables.