Ajustar o kernel do Linux contra o ataque de inundação SYN

2

Eu li um artigo (não em inglês) sobre como proteger um servidor contra ataques de inundação SYN modificando algumas diretivas em sysctl.conf . Esse artigo tem uma frase como: "é possível recompilar o kernel com algumas opções para melhorar a proteção contra o flood SYN". Me desculpe se minha pergunta é muito genérica, mas você poderia me indicar quais opções do kernel elas podem estar se referindo? Baixei o kernel e examinei todas as opções de rede com make menuconfig , mas não encontrei ou perdi essas opções. Pesquisando também não ajudou.

Obrigado.

    
por Andrew 20.12.2012 / 10:23

2 respostas

2

Sim, é possível recompilar o kernel com as proteções dos ataques Syn Flood, mas não vejo razão para o mesmo.

Você precisa recompilar o kernel em sistemas que não têm a capacidade de alterar os parâmetros do kernel por comandos. Mas se você ainda quiser fazer isso, então você precisa alterar o código C no kernel.

Por exemplo, no Digital Unix, você altera os dois parâmetros nos arquivos de cabeçalho e recria o sistema operacional. Em /usr/sys/include/sys/socket.h , altere a definição SOMAXCONN para que o 8 se torne 1024.

Em /usr/sys/include/netinet/tcp_timer.h altere a definição TCPTV_KEEP_INIT de 75*PR_SLOWHZ para 25*PR_SLOWHZ .

Em seguida, reconstrua o kernel usando os procedimentos do Digital Unix, que são exclusivos para esta versão do Unix.

Você também pode reconstruir o kernel alterando esses mesmos dois parâmetros com o sistema Unix derivado de Berkeley.

No entanto, eles são encontrados em locais diferentes, ou seja, /usr/src/sys/netinet/tcp_timer.h e /usr/src/sys/sys/socket.h .

Depois de ler isto, se você achar que não precisa recompilar o kernel, use as seguintes opções para atenuar os ataques de inundação sincronizada.

# echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
# echo 3 > /proc/sys/net/ipv4/tcp_synack_retries

Para tornar as alterações persistentes nas reinicializações, coloque essas entradas em /etc/sysctl.conf file

# TCP SYN Flood Protection
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3

Você pode ler mais detalhes sobre esses URLs:

Espero que isso responda à sua pergunta. Sinta-se à vontade para comentar se precisar de mais esclarecimentos.

    
por 20.12.2012 / 19:53
2

Não tenho certeza sobre seu artigo, mas a maneira comum de proteção contra inundação de sincronização é definir /proc/sys/net/ipv4/tcp_syncookies .

    
por 20.12.2012 / 18:09