我们运行一个流量激增的站点,因此,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
调用期间应用。