15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
23.10.2024

什么是CSF(ConfigServer Security and Firewall)?完整技术指南

CSF,即 ConfigServer Security & Firewall,是一款用于 Linux 服务器的状态包检测(SPI)防火墙、登录失败检测守护进程和安全加固套件。它作为 iptables(以及较新内核上的 nftables)功能丰富的前端,将复杂的规则管理抽象为结构化配置层,同时通过其伴随守护进程 LFD(登录失败守护进程)添加主动威胁检测功能。

对于任何生产环境 Linux 服务器——无论是运行共享主机、VPS 还是裸机独立服务器——CSF 均提供多层边界防御:入站/出站流量过滤、实时日志分析、暴力破解缓解、端口扫描检测以及国家级访问控制,所有这些均可通过 CLI 或集成于 cPanel、DirectAdmin 或 Webmin 的 Web 界面进行管理。

CSF 底层工作原理

CSF 不会替代 iptablesnftables——它管理它们。当您在 /etc/csf/csf.conf 中定义规则或操作 IP 列表时,CSF 会将这些指令转换为内核级 netfilter 规则并以原子方式应用。

该架构有两个主要组件并行运行:

  • csf — 防火墙规则引擎,读取配置文件并填充 iptables/ip6tables 链。
  • lfd — 持久守护进程,实时跟踪系统日志文件,根据可配置阈值评估身份验证事件,并指示 csf 动态封锁或解封 IP 地址。

启动时,CSF 会清除现有链并根据其配置从头重建。这种”全新状态”方法可防止规则累积,并确保防火墙状态始终具有确定性和可审计性。

CSF 运行模式

CSF 以两种基本流量策略之一运行:

允许模式(大多数部署的默认模式):默认情况下拒绝所有入站和出站流量。只有在 TCP_INTCP_OUTUDP_INUDP_OUT 指令中明确列出的端口才被允许。这是推荐的生产环境策略。

测试模式(TESTING = "1"):CSF 加载规则,但 LFD 不执行封锁。这可防止您在初始配置期间将自己锁定在外。在上线前务必禁用测试模式:

# In /etc/csf/csf.conf, set:
TESTING = "0"
# Then restart CSF:
csf -r

CSF 主要功能详解

防火墙规则引擎

CSF 在 csf.conf 中管理四个主要端口列表:

    TCP_IN / UDP_IN — 开放用于入站连接的端口
    TCP_OUT / UDP_OUT — 允许用于出站连接的端口
    
    最小化 Web 服务器配置示例如下:
    TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2077,2078,2082,2083,2086,2087,2095,2096"
    TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
    UDP_IN = "20,21,53"
    UDP_OUT = "20,21,53,113,123"
    除端口管理外,CSF 还支持基于 CIDR 的规则,允许您允许或拒绝整个网络范围。规则存储在纯文本文件中,便于版本控制:
    
    
    
    
    文件
    用途
    
    
    
    
    /etc/csf/csf.allow
    永久白名单 IP 或 CIDR
    
    
    /etc/csf/csf.deny
    永久封锁 IP 或 CIDR
    
    
    /etc/csf/csf.ignore
    LFD 永不自动封锁的 IP
    
    
    /etc/csf/csf.dyndns
    自动解析并允许的动态 DNS 主机名
    
    
    
    
    登录失败守护进程(LFD)
    LFD 是 CSF 的主动智能层。它监控日志文件——包括 /var/log/secure、/var/log/maillog、/var/log/exim_mainlog 及其他文件——并在可配置的时间窗口内统计每个源 IP 的身份验证失败次数。
    LFD 关键配置指令:
    
    LF_TRIGGER — 触发封锁前的失败次数
    LF_INTERVAL — 统计失败次数的滚动时间窗口(以秒为单位)
    LF_DURATION — 临时封锁持续时间(0 = 永久)
    LF_SSH、LF_FTPD、LF_SMTPAUTH、LF_POP3D、LF_IMAPD — 各服务的失败阈值
    
    实用加固示例:将 LF_SSH = "5" 与 LF_INTERVAL = "300" 配合使用,以封锁在 5 分钟内 SSH 身份验证失败 5 次的任何 IP。这一单一指令可消除绝大多数针对 22 端口的自动化凭据填充攻击。
    关键边缘情况:如果您的监控系统或备份代理从动态 IP 进行身份验证,最终将触发 LFD。在收紧阈值之前,务必将这些源 IP 添加到 /etc/csf/csf.ignore。
    入侵检测与进程跟踪
    除登录监控外,LFD 还执行多项基于主机的入侵检测功能:
    
    PT_LOAD — 监控 CPU 负载,并在进程超过定义阈值时发出警报或进行封锁,有助于检测共享基础设施上的加密货币挖矿或失控进程。
    PT_USERMEM 和 PT_USERTIME — 每用户内存和 CPU 时间限制,对于资源隔离至关重要的共享虚拟主机环境尤为关键。
    LF_DIRWATCH — 监控指定目录的文件变更,提供基本的文件完整性监控。
    LF_SCRIPT_ALERT — 检测发送过量邮件的脚本,这是 PHP 应用程序遭到入侵的常见迹象。
    
    端口扫描检测
    CSF 使用 iptables recent 模块跟踪来识别快速连续探测多个端口的主机。PS_INTERVAL、PS_LIMIT 和 PS_PORTS 指令控制灵敏度。检测到端口扫描时,源 IP 会立即添加到拒绝列表并发送警报。
    值得注意的细节:激进的端口扫描检测可能会对安全团队或正常运行时间监控服务使用的合法网络扫描器产生误报。主动将这些扫描器 IP 添加到 csf.ignore。
    DDoS 与连接速率限制
    CSF 提供多种机制来吸收或偏转容量型攻击:
    
    CT_LIMIT — 每个 IP 的最大同时连接数。对于 Web 服务器,将此值设置为 100–300 可防止单个主机独占连接槽。
    CT_INTERVAL — 连接跟踪器的运行频率。
    SYNFLOOD 和 SYNFLOOD_RATE — 启用 iptables SYN 洪水保护,并设置可配置的数据包速率限制。
    UDPFLOOD — 对每个 IP 的 UDP 数据包进行速率限制,缓解 UDP 放大攻击。
    
    理解 CSF 的 DDoS 缓解范围非常重要:它对来自有限数量源的应用层和低容量网络层攻击有效。面对大规模容量型 DDoS(数十 Gbps),则需要上游空路由或专用 DDoS 清洗服务。CSF 是对上游网络级保护的补充,而非替代。
    国家级访问控制(CC_DENY / CC_ALLOW)
    CSF 与 MaxMind GeoIP 数据库集成,以执行地理访问策略。CC_DENY 指令接受 ISO 3166-1 alpha-2 国家代码:
    CC_DENY = "CN,RU,KP,IR"
    或者,将 CC_ALLOW_FILTER 与 CC_DENY = "ALL" 结合使用,可创建仅允许特定地区访问的白名单地理策略——适用于在法律或运营上仅服务于特定司法管辖区的服务。
    运营陷阱:GeoIP 数据库并非完全准确。使用企业 VPN 或 CDN 边缘节点的合法用户可能显示为来自被封锁的国家。对于已知合作伙伴,将国家封锁与 IP 白名单结合使用。
    临时封锁与解封
    CSF 支持限时封锁,对于模糊情况,这比永久封禁更为可取:
    # Block an IP for 3600 seconds (1 hour)
    csf -td 192.168.1.100 3600 "Suspicious scan activity"
    
    # Remove a temporary block manually
    csf -tr 192.168.1.100
    
    # Check if an IP is currently blocked
    csf -g 192.168.1.100
    邮件警报与报告
    CSF 针对各类事件发送邮件通知。LF_ALERT_TO 指令设置收件人地址。警报类别包括:
    
    登录失败阈值突破
    成功的 root 登录
    端口扫描检测
    进程资源限制违规
    防火墙规则变更
    可疑文件修改(如果启用了 LF_DIRWATCH)
    
    对于高流量服务器,警报疲劳是真实存在的运营风险。使用 LF_EMAIL_ALERT 阈值,并考虑将 CSF 警报路由到专用邮箱或 SIEM 集成,而非普通收件箱。可靠的警报投递依赖于正确配置的邮件堆栈——如果您运行自己的邮件基础设施,具有正确 SPF/DKIM 对齐的邮件托管可确保 CSF 警报不会被静默丢弃为垃圾邮件。
    在 Linux 服务器上安装 CSF
    CSF 不在标准发行版软件仓库中提供。安装过程简单直接:
    # Download the latest release
    cd /usr/src
    wget https://download.configserver.com/csf.tgz
    
    # Extract and install
    tar -xzf csf.tgz
    cd csf
    sh install.sh
    安装后,验证所有必需的 iptables 模块是否可用:
    perl /usr/local/csf/bin/csftest.pl
    任何 FATAL 结果表示缺少内核模块,必须在 CSF 正常运行之前解决。WARN 结果为建议性提示,通常不会阻塞运行。
    初始配置位于 /etc/csf/csf.conf。最关键的第一步是在重启守护进程之前禁用测试模式并定义允许的端口。
    CSF 与控制面板集成
    CSF 为三大主流 Linux 主机控制面板提供原生 UI 插件:
    
    
    
    
    控制面板
    集成方式
    UI 位置
    
    
    
    
    cPanel / WHM
    WHM 的 CSF 插件
    WHM > 插件 > ConfigServer Security & Firewall
    
    
    DirectAdmin
    CSF 插件
    管理面板 > 扩展功能
    
    
    Webmin
    CSF Webmin 模块
    Webmin > 网络 > ConfigServer Security & Firewall
    
    
    
    
    WHM 集成功能最为完整,在 WHM 界面内提供完整的配置文件编辑器、IP 查询、临时封锁管理和日志查看器。对于运行 cPanel VPS 的管理员,CSF 实际上是标准防火墙解决方案——它在几乎所有 cPanel VPS 镜像上均已预装或可轻松安装。
    对于没有控制面板的环境,CLI 功能完全足够。核心命令:
    csf -s    # Start firewall
    csf -f    # Stop (flush) firewall
    csf -r    # Restart firewall
    csf -l    # List current iptables rules
    csf -a 203.0.113.5   # Allow an IP permanently
    csf -d 203.0.113.5   # Deny an IP permanently
    csf -g 203.0.113.5   # Check block status of an IP
    csf -u    # Check for CSF updates
    CSF 与其他 Linux 防火墙解决方案对比
    了解 CSF 在更广泛生态系统中的定位,有助于您做出明智的架构决策。
    
    
    
    
    功能
    CSF + LFD
    UFW
    firewalld
    Fail2ban + iptables
    
    
    
    
    主要抽象层
    iptables / nftables
    iptables / nftables
    nftables / iptables
    iptables / nftables
    
    
    主动暴力破解缓解
    内置(LFD)
    无(需配合使用)
    无(需配合使用)
    核心功能
    
    
    控制面板集成
    原生(cPanel、DA、Webmin)
    无
    无
    有限
    
    
    GeoIP / 国家封锁
    内置
    无
    无
    通过插件
    
    
    端口扫描检测
    内置
    无
    无
    通过过滤器
    
    
    进程/资源监控
    内置(PT_*)
    无
    无
    无
    
    
    配置复杂度
    中高
    低
    中
    中
    
    
    适用于共享主机
    是
    否
    否
    部分
    
    
    IPv6 支持
    是(ip6tables)
    是
    是
    是
    
    
    
    
    何时选择 CSF:您正在运行 cPanel/DirectAdmin/Webmin 服务器、多租户或主机环境中的 VPS 或独立服务器,或者您需要一个单一工具来整合防火墙管理、暴力破解检测和基于主机的监控,而无需组合多个独立工具。
    何时考虑替代方案:您正在运行容器化微服务环境,其中网络策略在编排层(Kubernetes NetworkPolicy、Calico)进行管理,或者您需要在不使用旧版 iptables 兼容性垫片的现代发行版上进行原生 nftables 管理。
    常见用例与部署场景
    保护 Web 主机服务器
    在典型的 cPanel 服务器上,CSF 应配置为:
    
    仅开放活动服务所需的端口(HTTP、HTTPS、SMTP、IMAP、POP3、FTP、SSH、DNS)
    启用 LF_SCRIPT_ALERT 以捕获被入侵的 PHP 邮件发送器
    设置 CT_LIMIT 以防止单个来源导致连接耗尽
    如果安装了 ModSecurity,启用 MODSEC 集成,将 WAF 封锁与防火墙级别的丢弃关联起来
    
    加固 SSH 访问
    将 CSF 与基于 SSH 密钥的身份验证和非标准 SSH 端口结合使用,可创建强健的访问控制策略:
    # Allow only your management IP on the SSH port
    # In /etc/csf/csf.allow:
    tcp|in|d=2222|s=203.0.113.10  # Replace with your actual management IP and SSH port
    将 LF_SSH = "3" 设置为在三次失败尝试后封锁任何 IP,并将您的管理 IP 添加到 csf.ignore 以防止意外自我锁定。
    保护邮件基础设施
    邮件服务器是高价值的暴力破解目标。CSF 的每服务 LFD 阈值(LF_SMTPAUTH、LF_POP3D、LF_IMAPD)在任何处理经身份验证 SMTP 的服务器上应设置得较为严格(3–5 次失败)。将此与所有邮件端口上正确配置的 SSL 证书配合使用,以防止凭据拦截——否则暴力破解保护将毫无意义。
    GPU 与高性能工作负载
    对于运行 ML 推理 API 或渲染服务的 GPU 主机环境,CSF 的 CT_LIMIT 和 SYNFLOOD 保护尤为有价值——这些服务通常暴露高价值 API 端点,容易受到自动化探测。通过 csf.allow 将 API 端口限制为已知客户端 CIDR,并使用 CC_DENY 过滤没有合法用户群的地理区域。
    CSF 配置加固清单
    在认为 CSF 部署已准备好投入生产之前,请验证以下内容:
    
    TESTING = "0" 已设置且 CSF 已重启
    TCP_IN 和 TCP_OUT 仅包含活动服务所需的端口——删除不适用的默认值
    LF_SSH、LF_FTPD、LF_SMTPAUTH 阈值设置为 3–5 次失败
    您的管理 IP 已添加到 /etc/csf/csf.ignore 和 /etc/csf/csf.allow
  • CT_LIMIT 已启用并设置为合理值(Web 服务器为 100–300)
  • SYNFLOOD = "1" 已在面向互联网的服务器上启用
  • LF_SCRIPT_ALERT = "1" 已在运行 PHP 应用程序的服务器上启用
  • LF_ALERT_TO 已设置为受监控的邮箱
  • csf -u 定期运行或通过 cron 自动化,以保持 CSF 为最新版本
  • 任何内核更新后,perl /usr/local/csf/bin/csftest.pl 运行结果中无 FATAL 错误
  • 决策矩阵:CSF 是否适合您的环境?

    环境推荐使用 CSF?备注
    cPanel / WHM VPS 或独立服务器是,强烈推荐原生集成,行业标准
    DirectAdmin 服务器完整插件支持
    无控制面板的裸机 Linux VPSCLI 管理,完整功能集
    共享主机(终端用户)不适用由主机管理,非终端用户
    Docker / Kubernetes 集群使用网络策略和基于 eBPF 的工具
    Windows ServerCSF 仅适用于 Linux
    高流量 CDN 源站部分与上游 DDoS 保护结合使用

    常见问题

    CSF 与 Fail2ban 有什么区别?

    两款工具都通过分析日志文件执行暴力破解 IP 封锁,但 CSF 是一个完整的安全套件,还负责管理底层防火墙规则、端口访问、连接速率限制、进程监控和 GeoIP 过滤。Fail2ban 是一款专注的入侵防御工具,依赖外部防火墙(iptables、nftables 或 firewalld)执行封锁。在带有控制面板的主机服务器上,CSF 是运营上更完整的解决方案。在最小化 Linux 系统或容器上,Fail2ban 与 firewalld 配合使用可能更轻量且更为合适。

    CSF 能封锁 IPv6 流量吗?

    可以。CSF 同时管理 iptables(IPv4)和 ip6tables(IPv6)规则集。当内核支持时,IPv6 支持默认启用。确保在 csf.conf 中设置 IPV6 = "1",并配置您的 TCP6_IN / TCP6_OUT 端口列表,因为它们默认镜像 IPv4 设置,但可以独立自定义。

    配置 CSF 时如何防止意外将自己锁定在外?

    在进行任何限制性更改之前,将您的管理 IP 添加到 /etc/csf/csf.allow/etc/csf/csf.ignore。在初始配置期间保持 TESTING = "1"——在测试模式下,CSF 加载规则但 LFD 不执行封锁,如果未确认,规则将在 5 分钟后自动清除。只有在验证连接性后才将 TESTING = "0" 设置为生效。

    CSF 能在没有控制面板的服务器上运行吗?

    可以,完全支持。CSF 完全通过命令行安装和管理。Web UI 是控制面板环境的可选便利层。所有配置均通过 /etc/csf/ 中的纯文本文件和 csf CLI 二进制文件完成。许多管理员更倾向于仅使用 CLI 管理,以便通过 Ansible 或 Puppet 等配置管理工具进行审计和自动化。

    CSF 应多久更新一次,如何更新?

    每当有新版本发布时,尤其是涉及安全相关变更时,应及时更新 CSF。使用 csf -u 检查更新,该命令会将已安装版本与 ConfigServer 下载服务器上的最新版本进行比较。更新可直接从 WHM 插件 UI 或通过 CLI 应用。建议使用每周 cron 任务自动检查,但在查看变更日志后手动应用更新——CSF 更新偶尔会更改默认配置值,需要在部署前进行审查。

    15%

    全场主机优惠15%

    测试技能,享折扣

    使用代码:

    Skills
    开始使用