Bloqueando a conexão de um IP

Bloqueando a conexão de um IP

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 -spara -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.

informação relacionada