精品软件与实用教程
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,从而使您的服务器可能存在漏洞。
用户在 CyberPanel 2.3.9 版本上安装 CSF 后,遇到 500 内部服务器错误,导致控制面板无法访问。500 错误通常表明服务器端存在配置问题、依赖冲突或代码执行失败。结合社区讨论和相关资料,这可能是 CSF 与 CyberPanel 最新版本的兼容性问题,尤其是 Django 版本升级(从 v3 到 v4)引发的。
Django 版本不兼容
CyberPanel 从 2.3.6 开始将 Django 升级到 v4,而 CSF 的当前版本尚未完全适配 Django v4。这会导致 CSF 的 Python 模块(如 ConfigServer/URLGet.pm 或 DisplayUI.pm)在 CyberPanel 环境中执行失败。
社区反馈表明,CSF 在 CyberPanel 2.3.6 及以上版本中被禁用,或安装后触发 500 错误。
检查当前环境
确认 CyberPanel 版本
cat /usr/local/CyberCP/version.txt
确认 Django 版本
python3 -c "import django; print(django.get_version())"
若显示 4.x.x,则可能与 CSF 不兼容。
卸载现有 CSF
CyberPanel 服务器报错500,首先卸载掉CSF,然后查看 CyberPanel 还会不会报错,如果卸载后面板访问正常,那就是CSF和 CyberPanel 面板冲突造成的500错误。
sh /etc/csf/uninstall.sh
使用回滚脚本重新安装CSF
cd /usr/src wget https://sajetekengineering.com/wp-content/uploads/cyberpanel/cyberpanel_csf_rollback.sh chmod +x cyberpanel_csf_rollback.sh ./cyberpanel_csf_rollback.sh
该脚本会备份现有配置并降级到兼容版本。
重新安装CSF
wget https://download.configserver.com/csf.tgz tar -xzf csf.tgz cd csf sh install.sh
临时解决方案:手动回滚
回滚 CyberPanel 到兼容版本,对于那些需要恢复 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 的更新,以便将来找到更持久的解决方案。