我读过一篇文章(非英语),介绍如何通过修改 中的某些指令来保护服务器免受 SYN 洪水攻击sysctl.conf
。那篇文章中有这样一句话:“可以使用一些选项重新编译内核,以提高对 SYN 洪水的防护”。如果我的问题太笼统,我很抱歉,但你能指出它可能指的是哪些内核选项吗?我下载了内核并查看了所有网络选项,make menuconfig
但没有找到或遗漏了这些选项。谷歌搜索也没有帮助。
谢谢。
答案1
是的,可以重新编译内核以防御 Syn Flood 攻击,但我不明白这样做的理由。
对于那些不具备通过命令更改内核参数功能的系统,您需要重新编译内核。但是如果您仍想这样做,则需要更改内核中的 C 代码。
例如,在 Digital Unix 中,您可以更改头文件中的两个参数,然后重建操作系统。在 中/usr/sys/include/sys/socket.h
,更改SOMAXCONN
定义,使 8 变成 1024。
将定义从/usr/sys/include/netinet/tcp_timer.h
更改为。TCPTV_KEEP_INIT
75*PR_SLOWHZ
25*PR_SLOWHZ
然后使用此 Unix 版本独有的 Digital Unix 程序重建内核。
您还可以使用 Berkeley 衍生的 Unix 系统通过更改这两个参数来重建内核。
不过,它们位于不同的位置,分别是/usr/src/sys/netinet/tcp_timer.h
和/usr/src/sys/sys/socket.h
。
阅读本文后,如果您觉得不需要重新编译内核,那么请使用以下选项来减轻 syn flood 攻击。
# 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
为了使更改在重新启动后保持不变,请将这些条目放入/etc/sysctl.conf
文件中
# TCP SYN Flood Protection
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3
您可以在以下 URL 上阅读有关这些内容的更多详细信息:
希望这能回答你的问题。如果你需要更多说明,请随时发表评论。
答案2
不确定你的文章,但 syn flood 保护的常用方法是设置/proc/sys/net/ipv4/tcp_syncookies
。