前言
CSF(ConfigServer Security & Firewall)是一款专为 Linux 服务器设计的强大防火墙解决方案,能够有效阻止来自互联网的恶意访问。本文将详细介绍如何在 Debian 12 服务器上安装和配置 CSF 防火墙,帮助您构建安全可靠的服务器环境。
注意:CSF 的原始开发团队已于 2025 年 8 月宣布停止维护该项目,并推荐用户迁移至其分支项目 Sentinel Firewall。但截至本文撰写时,CSF 仍可正常安装使用,现有用户也可继续使用。
前置条件
在开始安装之前,请确保满足以下条件:
- 已安装 Debian 12 操作系统的服务器(本地或云端均可)
- 拥有 root 权限或具备 sudo 权限的普通用户账号
- 服务器可正常连接互联网
第一步:准备系统环境
首先,使用 apt 包管理器更新系统软件包列表,确保所有软件包均为最新版本:
apt update && apt upgrade -y
接下来安装 CSF 所需的依赖包,包括 Perl 模块和各类工具:
apt install -y libwww-perl libgd-graph-perl libio-socket-ssl-perl \
libnet-libidn-perl unzip wget curl iptables perl
第二步:下载并安装 CSF
切换到 /usr/src 目录,下载 CSF 安装包并解压安装:
cd /usr/src
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
安装完成后,运行测试脚本检查系统是否满足 CSF 的运行要求:
perl /usr/local/csf/bin/csftest.pl
查看 CSF 当前版本:
csf -v
第三步:配置 CSF 防火墙
CSF 的主配置文件位于 /etc/csf/csf.conf。使用文本编辑器(如 nano 或 vim)打开该文件进行配置:
nano /etc/csf/csf.conf
3.1 配置允许的 TCP/UDP 端口
在配置文件中,找到以下参数,根据实际需要开放入站和出站端口。常见端口说明:22(SSH)、80(HTTP)、443(HTTPS)、25(SMTP)、110(POP3)、143(IMAP)等。
# 允许入站 TCP 端口
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"
# 允许出站 TCP 端口
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
# 允许入站 UDP 端口
UDP_IN = "20,21,53"
# 允许出站 UDP 端口
UDP_OUT = "20,21,53,113,123"
3.2 关闭测试模式
默认情况下,CSF 以测试模式(TESTING = "1")运行,防火墙规则不会生效。配置完成后,需将其改为 TESTING = "0":
TESTING = "0"
第四步:配置 Ping 规则
默认情况下,CSF 会阻止 ICMP(Ping)请求。如果需要允许服务器响应 ping,可修改以下参数:
# 允许 ping 入站(0=允许,1=拒绝)
ICMP_IN = "1"
# ping 速率限制:每秒最多 1 个包
ICMP_IN_LIMIT = "1/s"
第五步:SYN Flood 洪水防护
SYN Flood 是一种常见的 DDoS 攻击方式,CSF 提供了内置防护机制。在配置文件中找到以下参数进行配置:
# 启用 SYN Flood 防护
SYNFLOOD = "1"
# 速率限制(每秒允许的连接数/触发封锁阈值)
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"
第六步:限制并发连接数
通过限制单个 IP 对特定端口的最大并发连接数,可以有效防止扫描攻击和暴力破解:
# 格式:端口;最大连接数,多组用逗号分隔
CONNLIMIT = "22;5,80;50,443;50"
以上配置表示:SSH(22 端口)每个 IP 最多 5 个并发连接,HTTP/HTTPS 最多 50 个。
第七步:验证配置并启动 CSF
保存配置文件后,运行以下命令检查配置语法是否正确:
csf -x # 先停用 CSF
csf -e # 再启用 CSF(同时检查配置)
查看 CSF 服务运行状态:
systemctl status csf
查看 LFD(Login Failure Daemon)守护进程状态:
systemctl status lfd
第八步:通过 IP 封锁列表屏蔽恶意 IP
8.1 启用 IP 黑名单封锁
CSF 支持订阅公共 IP 黑名单,自动封锁已知恶意 IP 地址。编辑 /etc/csf/csf.blocklists 文件,取消相关注释即可启用:
# 启用 Spamhaus DROP 列表
SPAMDROP|86400|0|https://www.spamhaus.org/drop/drop.lasso
# 启用 Emerging Threats 封锁列表
ET|86400|0|https://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt
修改后重载 CSF 使配置生效:
csf -r
8.2 基于 GeoIP 封锁特定国家/地区
CSF 还支持通过 GeoIP 数据库封锁或仅允许特定国家/地区的访问。在 csf.conf 中配置:
# 封锁指定国家(使用 ISO 两位国家代码,逗号分隔)
CC_DENY = "CN,RU,KP"
# 仅允许指定国家访问(留空则不限制)
CC_ALLOW = ""
第九步:启用 CSF Web 管理界面
CSF 提供了一个基于 Web 的管理界面,方便通过浏览器管理防火墙规则。在 csf.conf 中找到并修改以下参数:
UI = "1"
UI_PORT = "6666"
UI_USER = "admin"
UI_PASS = "your_secure_password"
保存后重启 CSF,即可通过 https://服务器IP:6666 访问管理界面:
第十步:IP 白名单管理
将可信 IP 地址加入白名单,可以防止误封自己的管理 IP。编辑 /etc/csf/csf.allow 文件:
# 将管理员 IP 加入白名单(每行一个 IP 或 CIDR 段)
192.168.1.100
10.0.0.0/8
或者通过命令行快速添加:
csf -a 192.168.1.100 "管理员IP - 永久白名单"
总结
本文详细介绍了在 Debian 12 服务器上安装和配置 CSF 防火墙的完整流程,涵盖系统准备、软件安装、端口配置、SYN Flood 防护、并发连接限制、IP 黑名单、GeoIP 封锁以及 Web 管理界面等核心功能。
通过合理配置 CSF,您的服务器可以有效抵御常见的网络攻击。立海世纪(www.leehay.com)建议在生产环境部署前,务必先在测试环境验证各项规则,避免因误配置导致服务中断。如需了解更多服务器安全配置方案,欢迎访问立海世纪官网获取专业支持。