Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Communism Style
Por m0n4rk
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Protegendo-se contra ataque Synflood
Linux user
Publicado por Glaucimar em 04/06/2007

Login: bilizoi, 8897 pontos
[ Hits: 3904 ]

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
   Dica Linux recomendada A arquitetura OSI de segurança
   Dica Linux recomendada Compilaçao do kernel 2.6.32.1 no Debian Squeeze
   Dica Linux recomendada Tutorial Resumido de Instalação Lotus Notes 8.5.2 no Debian Squeeze
   Dica Linux recomendada Configurando Cisco + NAT para LP Telefônica
   Dica Linux recomendada Firebird + Fedora Core 6

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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.