Bloqueio de um IP de conexão

2

Eu tenho um problema com o meu servidor web Apache, onde há e IP do que conectar-se ao meu servidor, usando muita conexão e não vai morrer, o que eventualmente faz o tempo limite do meu servidor web. A conexão permanecerá como o estado SYN_SENT se eu verificar usando

netstat -netapu

Eu até libero meus iptables e uso as regras básicas e isso ainda não funciona. O IP será conectado quando eu iniciar meu Apache

Regras básicas que eu 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 de tcp_syncookies é 1.

Alguém pode apontar meu erro? Existe uma maneira de bloqueá-lo para sempre?

    
por Sam W. 27.11.2011 / 07:17

3 respostas

3

Você pode nos mostrar a saída 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 de estado, 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.

    
por 27.11.2011 / 08:55
1

As conexões paradas no estado SYN_SENT são conhecidas como conexões embrionárias . Isso acontece quando você tenta estabelecer uma conexão com um endereço IP e, por algum motivo, o IP não pode contatá-lo de volta. Isso significa que você está tentando se conectar a ele, e não o contrário.

Eu não sei o que parecia antes de você adicionar essas duas regras, mas com a maneira como elas são agora, você pode enviar a primeira parte do handshake de três vias (o SYN), mas você 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ê tenha copiado / colado a primeira regra para criar o segundo e alterado INPUT to OUTPUT, mas esqueceu de alterar -s to -d . Eu sei porque já fiz isso mais de uma vez.

    
por 27.11.2011 / 10:10
0

você precisa experimentar o utilitário "Linux FAIL2BAN", que bloqueia a maioria desses ataques de força bruta. O Fail2Ban suporta proteção contra ataque 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 após algum tempo, removendo também) esse endereço IP pelo iptables.

    
por 27.11.2011 / 08:20