Protegendo-se contra ataque Synflood

Publicado por Glaucimar em 04/06/2007

[ Hits: 8.593 ]

 


Protegendo-se contra ataque Synflood



Todos os serviços que rodam em cima do protocolo TCP precisam fazer um processo reconhecimento entre as duas máquinas. Esse processo é chamado de 3-way-handshake, no qual a máquina cliente envia um syn (synchronize), que é um pedido de conexão. A máquina servidor então envia um syn+ack (synchronize+acknowledge). Quer dizer que a máquina servidor aceitou a requisição. A máquina cliente então envia um ack de volta, estabelecendo-se assim a conexão.

Podemos nos aproveitar desse procedimento obrigatório do TCP para fazer um tipo de ataque chamado synflood (enchente de syn). Esse ataque consiste em enviar muitos (muitos mesmo) pedidos de synchronize (syn) utilizando um artifício chamado spoofing (que é a simulação de endereços IP que estão inativos).

Sendo assim, de posse de IPs "falsos", o atacante envia muitas requisições syn para o servidor atacado. Quando o servidor enviar um syn+ack para o requisitante, este não irá responder, deixando a conexão pendente (conexão meio aberta). Como o TCP tem um temporizador para cada conexão, essa conexão que não obteve resposta só irá se desfazer quando o temporizador estourar. Até lá o atacante já enviou milhares (quem sabe milhões) de pacotes, causando assim uma negação do serviço (DoS - deny of service).

Um dos métodos utilizados para se proteger um servidor de um ataque synflood é limitar a quantidade de requisições por um determinado período. Por exemplo: podemos utilizar o módulo limit do iptables para estabelecer esse limite.

Implementando essa regra ficaria assim:

iptables -t filter -A syn-chain
iptables -t filter -A syn-chain -p tcp --syn -m limit --limit 2/s -j ACCEPT
iptables -t filter -A syn-chain -j DROP
iptables -A INPUT -p tcp --syn -j syn-chain

Onde:
  • A linha 1 cria uma chain para o tratamento de requisições syn;
  • A linha 2 limita a quantidade de requisições syn a 2 por segundo;
  • A linha 3 determina que, se esse limite de 2 requisições syn for excedido, o pacote será dropado;
  • A linha 4 direciona todo pacote TCP que entra na máquina para a chain syn-chain.

Vale lembrar que os recursos da máquina ainda estarão sendo consumidos, mas de forma bem menos destruidora que um ataque synflood.

Espero que essa dica possa agregar mais segurança à sua rede.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Análise de desempenho com Iperf

Comandos aceitos no Basic Linux

Transformando Ubuntu em UbuntuStudio 7.04

Sample Xlet

ESTUDO: Uso de sistemas de fonte aberto no ambiente corporativo

  

Comentários
[1] Comentário enviado por pedroarthur.jedi em 05/06/2007 - 10:10h

A opção do kernel TCP_SYN_COOKIES é mais adequada para proteção contra synflood... Basta ativa-la:

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

tente ai...



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts