要在 Linux 服务器上创建 CSF 防火墙安装依赖项,下载 CSF,运行安装程序,编辑 /etc/csf/csf.conf 文件以添加您的配置 SSH 端口并设置 TESTING = “0”,然后启用 CSF 和 LFD。
最后,仅打开所需的 TCP/UDP 端口,并使用 `csf -s` 和 `csftest.pl` 验证内核/模块支持情况。在本指南中,您将学习如何在 Linux 服务器上从零开始创建 CSF 防火墙,安全地配置它,并应用在实际生产系统中使用的最佳实践规则。
我们将介绍安装、必备设置、基本命令、LFD 保护和故障排除——本书面向初学者,但对于经验丰富的管理员来说也足够准确。
什么是 CSF 防火墙?为什么要使用它?
ConfigServer Security & Firewall (CSF) 是一款强大的 Linux 服务器防火墙和安全套件, manageCSF 包含 iptables(或现代发行版上的 iptables-nft),并添加了 LFD(登录失败守护程序)来阻止暴力破解攻击。与 UFW 或原始 iptables 等基本工具相比,CSF 提供更精细的规则、速率限制、警报和面板集成(cPanel、DirectAdmin、Webmin)。

主要关键词: Linux 服务器上的 CSF 防火墙自然使用的辅助关键词: 安装 CSFConfigServer 安全与防火墙、Linux 服务器防火墙、LFD。
先决条件和支持的平台
CSF 可在大多数主流 Linux 发行版和 VPS/独立服务器上运行。您需要 root 权限(或 sudo 权限)。 SSH 需要访问权限、静态 IP 地址(推荐)以及 iptables 内核支持(在新系统上使用 iptables-nft 兼容层即可)。始终保留备用控制台(VNC/ILO/带外连接)以避免锁定。
- 已测试的操作系统系列: AlmaLinux、Rocky Linux、CentOS(已停止维护)、RHEL、Ubuntu、Debian
- 禁用其他防火墙以防止冲突: firewalld 或 UFW(您需要将其替换为 CSF)
- 知道你的 SSH 端口(默认 22 或自定义)
- 请准备好您的应用程序端口(HTTP/HTTPS、邮件、数据库、控制面板等)。
逐步指南:在 Linux 服务器上安装和创建 CSF 防火墙
1)更新系统并安装依赖项
请确保您的服务器已更新至最新版本,并安装了所需的 Perl 模块和工具。
# RHEL/AlmaLinux/Rocky
sudo dnf -y update
sudo dnf -y install perl perl-libwww-perl.noarch perl-LWP-Protocol-https tar wget curl unzip
# Ubuntu/Debian
sudo apt update && sudo apt -y upgrade
sudo apt -y install perl libwww-perl liblwp-protocol-https-perl tar wget curl unzip2) 停止并禁用 firewalld 或 UFW
CSF manage直接使用 siptables。禁用原生防火墙以避免规则冲突。
# RHEL/AlmaLinux/Rocky (firewalld)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld
# Ubuntu/Debian (UFW)
sudo ufw disable
sudo systemctl stop ufw
sudo systemctl disable ufw3) 下载并安装 CSF
获取官方压缩包,解压,然后运行安装程序。
cd /usr/src
sudo wget https://download.configserver.com/csf.tgz
sudo tar -xzf csf.tgz
cd csf
sudo sh install.sh验证您的环境:
sudo perl /usr/local/csf/bin/csftest.pl如果缺少 iptables 模块,请修复内核依赖项或确保 iptables-nft 存在。
4) 准备安全通道:允许 SSH 以及所需端口
在将 CSF 从测试模式中移除之前,请确保您的 SSH /etc/csf/csf.conf 文件中允许端口和必要服务。将 22 替换为您自定义的值。 SSH 端口已更改。
sudo nano /etc/csf/csf.conf
# Adjust these lines (examples):
TCP_IN = "22,80,443"
TCP_OUT = "80,443,53"
UDP_IN = "53"
UDP_OUT = "53,123"
IPV6 = "0" # Set to "1" if you actively use IPv6
# For email servers add: 25,465,587,110,143,993,995
# For MySQL remote access add: 3306 (use carefully, prefer local only)(可选)将您的帐户加入白名单 management IP 以防止意外锁定:
sudo csf -a YOUR.IP.ADDR.ESS "Admin workstation"5) 关闭测试模式并启用脑脊液/脑脊液滤过
CSF 安装时默认启用 TESTING = “1”。仅在安装完成后才将其关闭。 SSH 所需端口已设置。
sudo sed -i 's/^TESTING = .*/TESTING = "0"/' /etc/csf/csf.conf
sudo systemctl enable csf lfd
sudo systemctl start csf lfd
# or explicitly:
sudo csf -e # enable firewall
sudo csf -r # reload rules确认状态和规则加载情况:
sudo csf -s # show status
sudo csf -l # list current rules必要的 CSF 和 LFD 指令
- 编辑后重新加载规则: 脑脊液-r
- 快速禁用/启用防火墙: csf -x / csf -e
- 永久允许IP地址: csf -a IP
- 临时允许列表(含有效期): csf -ta IP 3600
- 拒绝/解除IP封锁: csf -d IP / csf -dr IP
- 检查日志: tail -f /var/log/lfd.log 和 /var/log/messages
- 卸载(从 csf 文件夹): 卸载脚本
配置 LFD:主动暴力破解保护
LFD 监控身份验证日志,并在检测到重复失败时通过 CSF 触发阻止。关键选项位于 /etc/csf/csf.conf 文件中;请根据您的风险承受能力和工作负载进行调整。
sudo nano /etc/csf/csf.conf
# Popular hardening options (examples):
LF_SSHD = "5" # SSH failures before block
LF_SSHD_PERM = "1" # Enable permanent blocks for SSH
CT_LIMIT = "100" # Connection tracking limit
CT_INTERVAL = "30" # Check interval in seconds
SYNFLOOD = "1"
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"
PORTFLOOD = "80;tcp;20;10,443;tcp;20;10" # rate limit HTTP/HTTPS
CC_DENY = "" # Block countries (use sparingly)
CC_ALLOW = "" # Allow-only list (restrictive)调整完成后,重新加载 CSF:
sudo csf -r为常用协议栈开放端口(示例)
- Web服务器: 80(HTTP),443(HTTPS)
- SSH: 22 或您的自定义端口
- DNS: 53(TCP/UDP)
- 邮箱: 25,465,587,110,143,993,995
- 数据库: 3306分(MySQL/MariaDB),5432(PostgreSQL)—— 仅本地部署
- cPanel/WHM: 2082,2083,2086,2087,2095,2096
- Plesk: 8443;直接管理:2222;网页分钟: 10000
根据需要编辑 TCP_IN、TCP_OUT、UDP_IN 和 UDP_OUT,然后运行 sudo csf -r 应用更改。仅打开您真正需要的端口。
最佳实践规则和硬化技巧
- 锁定你的 SSH 请先对管理员 IP 地址进行端口配置并加入白名单,以避免账号被锁定。
- 保持 TESTING = “1” 直到端口确认,然后切换到 “0”。
- 使用 PORTFLOOD 和 CT_LIMIT 来限制滥用流量的速率。
- 启用 SYNFLOOD 以进行基本的 SYN 洪水缓解。
- 不要过度使用 CC_DENY/CC_ALLOW;这可能会造成维护上的麻烦。
- 监控 /var/log/lfd.log 中的模式并逐步调整阈值。
- 在进行重大修改之前,请备份 csf.conf 及相关文件。
- 在 cPanel/DirectAdmin 环境中,使用 CSF 的 GUI 可以更安全地进行更改。
故障排除和安全恢复
- 启用 CSF 后被锁定?请使用您的提供商控制台(VNC/ILO)将 TESTING 恢复为“1”或删除冲突规则。
- 诊断的冲洗规则: 修复后,先执行 csf -x(禁用),然后执行 csf -e。.
- 使用 csftest.pl 检查模块支持情况,并确保在现代发行版上安装了 iptables-nft。
- 防火墙冲突:确保 firewalld/UFW 已完全禁用。
- 特定服务问题:使用 ss -tulpn 验证端口,并确认它们存在于 TCP_IN/UDP_IN 中。
实际案例:最小 Web 服务器策略
这个例子允许 SSHHTTP/HTTPS 和 DNS 分辨率较低,适用于不带邮件功能的基本 Web 服务器。请根据您的实际配置进行调整。
# /etc/csf/csf.conf (excerpt)
TESTING = "0"
TCP_IN = "22,80,443"
TCP_OUT = "80,443,53"
UDP_IN = ""
UDP_OUT = "53,123"
LF_SSHD = "5"
CT_LIMIT = "100"
SYNFLOOD = "1"
PORTFLOOD = "80;tcp;20;10,443;tcp;20;10"申请并核实:
sudo csf -r
sudo csf -s
curl -I https://yourdomain.tld
sudo tail -f /var/log/lfd.logCSF 与 UFW/Firewalld(快速概览)
- UFW/防火墙: iptables/nftables 的接口更简单;适用于基本规则。
- CSF: 增加了安全层(LFD、速率限制、登录跟踪)、更丰富的自动化功能以及主机面板集成;非常适合生产主机服务器。
需要托管式部署?
如果您更喜欢经过强化、可用于生产环境且具备全天候监控功能的 CSF 配置, YouStable“ managed VPS 和专用服务器均配备安全最佳实践、主动修补和针对您的堆栈量身定制的 CSF/LFD 调优,因此您可以专注于应用程序,而不是防火墙的细节。
常见问题
什么是 CSF?它与普通防火墙有何不同?
CSF(ConfigServer 安全与防火墙) manage它支持 siptables 规则,并添加了 LFD 以实现主动入侵防御。与 UFW/firewalld 不同,CSF 提供登录失败检测、速率限制、警报以及与 cPanel/DirectAdmin/Webmin 的集成——非常适合托管工作负载。
CSF 是否支持 nftables?
是的,在现代发行版中,CSF 通过 iptables-nft 兼容层工作。请确保 iptables-nft 可用,并且 csftest.pl 报告所需的模块。如果 nft 后端存在,则无需使用旧版 iptables。
如何在CSF中打开或关闭端口?
编辑 /etc/csf/csf.conf 文件,并调整 TCP_IN、TCP_OUT、UDP_IN 和 UDP_OUT 的值。例如:将 8080 端口添加到 TCP_IN 以允许入站 Web 应用访问。保存后,运行 sudo csf -r 命令重新加载规则。
如何将某个IP地址加入白名单或屏蔽?
使用 `csf -a IP` 将 IP 地址永久加入允许列表,使用 `csf -ta IP 3600` 将 IP 地址临时加入允许列表,使用 `csf -d IP` 阻止 IP 地址,使用 `csf -dr IP` 移除阻止。您也可以直接编辑 `/etc/csf/csf.allow` 和 `/etc/csf/csf.deny` 文件。
如何避免把自己锁在门外?
在禁用测试模式之前,请添加您的 SSH 将端口设置为 TCP_IN,并使用 csf -a 将管理员 IP 地址加入白名单。准备好控制台(VNC/ILO)。如有需要,可将 TESTING 设置为“1”,以便在初始设置期间自动刷新规则。