如何永久禁用 SYN-Cookie?

如何永久禁用 SYN-Cookie?

我们运行一个流量激增的站点,因此,SELinux 通常认为该流量是 SYN 洪水攻击。我们在许多不同的 CentOS 服务器上都遇到同样的问题。

尽管/etc/selinux/config设置为禁用或许可,但当服务器启动时,selinux 再次处于强制模式。

禁用 SELinux 的唯一方法是在echo 0 > /proc/sys/net/ipv4/tcp_syncookies每次服务器启动时执行此操作。

我知道一个解决方案可能是在每次启动时使用上述命令执行 cron 作业,但我想知道是否有人知道修改/etc/selinux/config不够的原因是什么(也许它在其他地方启用;任何想法在哪里寻找或如何找到它?)。

答案1

/etc/sysconfig/selinux你想要SELINUX=disabled并重新启动。

来源:http://www.centos.org/docs/5/html/5.2/Deployment_Guide/sec-sel-enable-disable.html

答案2

虽然我宁愿保留 SELinux并制定政策允许任何破坏您服务器的行为,您可以随时尝试禁用 SELinux。

$: sudo echo 0 > /selinux/enforce

答案3

默认启用的 Syn-Flood 保护机制(参见/proc/sys/net/ipv4/tcp_syncookies)与 SELinux 无关。

IOW,无论是否启用 SELinux,syn-flood 保护都会启用。

另请参阅内核文档tcp_syncookies:

tcp_syncookies - BOOLEAN 仅当使用 CONFIG_SYN_COOKIES 编译内核时有效 当套接字的 syn 积压队列溢出时发送 syncookies。这是为了防止常见的“SYN 洪水攻击” 默认值:1

请注意,syncookies 是后备设施。它不得用于帮助高负载服务器对抗合法连接率。如果您在日志中看到 SYN 洪水警告,但调查显示这些警告是由于合法连接过载而发生的,你应该调整另一个参数直到该警告消失。请参阅:tcp_max_syn_backlog、tcp_synack_retries、tcp_abort_on_overflow。

syncookies 严重违反 TCP 协议,不允许使用 TCP 扩展,可能导致某些服务严重降级(例如 SMTP 中继),您不可见,但您的客户端和中继与您联系。当您在日志中看到 SYN 洪水警告时并没有真正被淹没,你的服务器 配置严重错误

(强调我的)

您可以通过将文件拖放到 中来永久更改此类设置/etc/sysctl.d,例如:

# echo 'net.ipv4.tcp_syncookies=0' > /etc/sysctl.d/23-network

这些文件将在下次重新启动或sysctl --system调用期间应用。

相关内容