精品软件与实用教程
CyberPanel如何重新启用 CSF 防火墙
CyberPanel 服务器在安装 CSF 后出现 500 错误!
如果您最近更新到 CyberPanel 版本 2.3.6 的后续提交版本,您可能已经注意到 CSF(ConfigServer 安全和防火墙)防火墙已被禁用。此问题与 CyberPanel 从 Django v3 升级到 v4 直接相关,这引入了目前与 CSF 不兼容的重大更改。不幸的是,CSF 尚未更新其代码以与 Django 4 兼容,导致许多用户没有可用的防火墙。
问题
CyberPanel 从 Django v3 升级到 v4 是为了跟上最新的 Web 开发标准,但这与 CSF 产生了重大冲突。核心问题是,许多用户依赖 CSF 进行防火墙管理,但 CSF 尚未更新以支持 Django 4。这种不兼容性导致 CyberPanel 2.3.6 及更高版本禁用了 CSF,从而使您的服务器可能存在漏洞。
临时解决方案:手动回滚
对于那些需要恢复 CSF 功能的用户,一个临时解决方案是手动回滚到仍然与 CSF 兼容的 CyberPanel 版本。为了简化此过程,我创建了一个自动回滚的脚本。
脚本的作用
- 备份 CyberPanel 和 CSF 配置:
- 该脚本首先创建您的目录的备份
/usr/local/CyberCP
,以确保您当前的 CyberPanel 设置安全存储。 - 它还会备份您的 CSF 配置文件
/etc/csf
(如果存在)。由于我们需要删除并重新安装 CSF,此步骤可确保您的所有自定义防火墙设置都得到保留。
- 该脚本首先创建您的目录的备份
- 下载兼容的 CyberPanel 版本:
- 该脚本会下载与 CSF 兼容的 CyberPanel 版本。此版本仍使用与 CSF 完全兼容的 Django v3。
- 备份和恢复存储在 settings.py 中的凭据
- 降级 Django 并重新安装 CSF:
- 该脚本通过 Cyberpanel 卸载并重新安装 CSF,从而修复 UI。
- 最后,该脚本将 Django 从 v4 降级到 v3,使其与下载的 CyberPanel 版本保持一致,并确保 CSF 能够正常运行。
如何使用脚本
要使用此回滚脚本,请按照下列步骤操作:
pip install -r /usr/local/CyberCP/requirments.txt --force-reinstall
sh <(curl https://sajetekengineering.com/wp-content/uploads/cyberpanel/install_csf_cyberpanel.sh || wget -O - https://sajetekengineering.com/wp-content/uploads/cyberpanel/install_csf_cyberpanel.sh)
运行上面的脚本后,重新启动服务器后,CSF安装成功!
CSF安装后启动会遇到警告
*WARNING* Binary location for [SENDMAIL] [/usr/sbin/sendmail] in /etc/csf/csf.conf is either incorrect, is not installed or is not executable
*WARNING* Missing or incorrect binary locations will break csf and lfd functionality
这个警告说明 CSF 检测到配置文件 /etc/csf/csf.conf 中指定的 SENDMAIL 二进制路径 /usr/sbin/sendmail 无法找到、未安装或不可执行。这会影响 CSF 和 LFD 的正常功能。
sudo apt install sendmail
重启 CSF 和 LFD 服务
确保一切正常后,重新启动 CSF 和 LFD 服务:
sudo systemctl restart csf
sudo systemctl restart lfd
此手动回滚只是临时修复,但对于依赖 CSF 进行防火墙管理的用户来说,它是必不可少的。在 CSF 更新其代码以与 Django 4 兼容之前,此解决方法将允许您维护服务器的安全性。请密切关注 CSF 和 CyberPanel 的更新,以便将来找到更持久的解决方案。