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.