Registra os IPs de origem de todos os pacotes recebidos

1

Como se registra os endereços IP de todas as máquinas que enviam pacotes ou se conectam ao servidor? Além disso, como se pode bloquear IPs que estão envolvidos em um DDoS e estão inundando o servidor com pacotes?

    
por UserxEF 09.01.2016 / 18:26

1 resposta

1

Algumas palavras cautelosas: A defesa contra um ataque DDoS é difícil e geralmente requer a ajuda do seu ISP . Só os iptables não protegem você e podem até ser prejudiciais. Eu não acho que você realmente quer fazer o que você está pedindo.

  • O DDoS deve causar negação de serviço sobrecarregando seu sistema. O registro de pacotes aumentará a carga do seu sistema. Então você estaria fazendo um favor aos atacantes.
  • A origem de um endereço IP é facilmente falsificável. Imagine que você está conectado ao seu servidor via ssh e um invasor aprende o endereço IP do seu laptop. É muito fácil enviar pacotes parecendo que vieram de um determinado IP, neste exemplo o do seu laptop. Seu servidor responderá bloqueando seu endereço IP, bloqueando-o efetivamente. Essa técnica permite que o invasor tenha qualquer endereço IP bloqueado pelo servidor. Novamente, você está fazendo um favor ao atacante e tornando o trabalho deles muito mais simples.

Com isso fora do caminho:

Registre cada endereço IP individual em seu syslog (limite de 1 entrada por IP e hora):

iptables -I INPUT 1 \! -i lo                 \
  -m hashlimit --hashlimit-name "IP_SOURCES" \
               --hashlimit-mode srcip        \
               --hashlimit-burst 1           \
               --hashlimit-upto 1/hour       \
  -j LOG

Substitua iptables por ip6tables para fazer o mesmo com os pacotes IPv6.

O bloqueio de um IP funcionaria de maneira semelhante, basta lançar o módulo conntrack na regra acima, corresponder NEW connections e definir a meta de salto como DROP . Mas, novamente, eu realmente acho que você faria um desserviço se realmente fizesse isso.

iptables -I INPUT 1 \! -i lo                 \
  -m conntrack --ctstate NEW                 \
  -m hashlimit --hashlimit-name "RATE_LIMIT" \
               --hashlimit-mode srcip        \
               --hashlimit-burst 20          \
               --hashlimit-above 1/min       \
  -j DROP

Isso permitirá 20 tentativas de conexão por minuto, descartando todas as outras tentativas de conexão. Pacotes de conexões estabelecidas ainda podem passar ilesos.

Como observado nos comentários, fail2ban pode ser uma boa solução para bloquear tráfego indesejado. Não ajudará se os invasores estiverem gerando um flood SYN ou usando IPv6, mas será útil, por exemplo. se os invasores estiverem tentando forçar sua entrada em seu servidor ssh ou smtp com uma conexão IPv4 "normal".

    
por 11.01.2016 / 14:55

Tags