如何在 Ubuntu 上安装和配置配置服务器防火墙 (CSF)
介绍
Config Server Firewall(或 CSF)是适用于大多数 Linux 发行版和基于 Linux 的 VPS 的免费高级防火墙。除了防火墙的基本功能——过滤数据包——CSF 还包括其他安全功能,例如登录/入侵/洪水检测。 CSF 包括 cPanel、DirectAdmin 和 Webmin 的 UI 集成,但本教程仅涵盖命令行用法。 CSF 能够识别许多攻击,例如端口扫描、SYN 泛洪和对许多服务的登录暴力攻击。它被配置为暂时阻止检测到攻击云服务器的客户端。
支持的操作系统和功能的完整列表可以在 ConfigServer 的网站上找到。
本教程是为基于 Debian 的 VPS 编写的,例如 Debian 和 Ubuntu。这些命令应该以 root 权限执行,以 root 身份登录,或者如果安装了 sudo,则使用以下命令启动 root shell:
sudo su
注意: 本教程涵盖 IPv4 安全性。在 Linux 中,IPv6 安全性与 IPv4 分开维护。例如,\iptables\ 只维护 IPv4 地址的防火墙规则,但它有一个名为 \ip6tables\ 的 IPv6 副本,可用于维护 IPv6 网络地址的防火墙规则。
如果您的 VPS 配置为 IPv6,请记住使用适当的工具保护您的 IPv4 和 IPv6 网络接口。有关 IPv6 工具的更多信息,请参阅本指南:如何配置工具以在 Linux VPS 上使用 IPv6
特征
Config Server Firewall 为您的 VPS 提供广泛的保护。
登录认证失败守护进程:
CSF 会定期检查日志中是否有失败的登录尝试,并且能够识别大多数未经授权的尝试来访问您的云服务器。您可以在配置文件中定义 CSF 采取的所需操作以及尝试次数。
此功能支持以下应用程序:
- Courier imap、Dovecot、uw-imap、Kerio
- 打开SSH
- cPanel、WHM、Webmail(仅限 cPanel 服务器)
- 纯 ftpd、vsftpd、Proftpd
- 受密码保护的网页 (htpasswd)
- Mod_security 失败(v1 和 v2)
- Suhosin 失败
- Exim SMTP AUTH
除此之外,您还可以使用正则表达式匹配定义自己的登录文件。如果您有一个记录失败登录但在特定次数的尝试后阻止用户的应用程序,这将很有帮助。
过程跟踪
CSF 可以配置为跟踪进程以检测可疑进程或打开的网络端口,并在检测到任何问题时向系统管理员发送电子邮件。这可能会帮助您识别并阻止对您的 VPS 的可能利用。
看目录
目录监视监视 /temp 和其他相关文件夹中的恶意脚本,并在检测到恶意脚本时向系统管理员发送电子邮件。
信使服务
启用此功能允许 CSF 在应用块时向客户端发送更多信息消息。此功能有利也有弊。一方面,启用它可以为客户端提供更多信息,因此在登录失败的情况下可能会减少挫败感。另一方面,这提供了更多信息,这可能使攻击者更容易攻击您的 VPS。
港口防洪
此设置可防止端口泛洪攻击,例如拒绝服务 (DoS) 攻击。您可以在您喜欢的时间段内指定每个端口上允许的连接数。建议启用此功能,因为它可能会阻止攻击者强制关闭您的服务。您应该注意您设置的限制,因为过于严格的设置会断开来自普通客户端的连接。话又说回来,过于宽松的设置可能会让攻击者成功进行洪水攻击。
端口敲门
端口敲门允许客户端在没有打开端口的情况下与服务器建立连接。服务器仅在成功的端口敲击序列后才允许客户端连接到主要端口。如果您提供的服务仅供有限的受众使用,您可能会发现这很有用。
连接限制保护
此功能可用于限制从 IP 地址到每个端口的活动连接的并发数。如果配置正确,这可以防止服务器上的滥用,例如 DoS 攻击。
端口/IP 地址重定向
CSF 可以配置为将连接重定向到一个 IP/端口到另一个 IP/端口。注意:重定向后,客户端的源地址将是服务器的IP地址。这不等同于网络地址转换 (NAT)。
界面整合
除了命令行界面,CSF 还为 cPanel 和 Webmin 提供 UI 集成。如果您不熟悉 Linux 命令行,您可能会发现此功能很有用。
IP 黑名单
安装 ConfigServer 防火墙
第 1 步:下载
Config Server Firewall 当前在 Debian 或 Ubuntu 存储库中不可用,必须从 ConfigServer 的网站下载。
wget http://download.configserver.com/csf.tgz
这会将 CSF 下载到您当前的工作目录。
第 2 步:解压
下载的文件是tar包的压缩包,需要解压解压后才能使用。
tar -xzf csf.tgz
第 3 步:安装
如果您正在使用其他防火墙配置脚本,例如 UFW,您应该在继续之前禁用它。 Iptables 规则会自动删除。
可以通过运行以下命令来禁用 UFW:
ufw disable
现在是时候执行 CSF 的安装程序脚本了。
cd csf
sh install.sh
防火墙现已安装,但您应该检查所需的 iptables 模块是否可用。
perl /usr/local/csf/bin/csftest.pl
如果没有报告致命错误,防火墙将工作。
注意:如果可能,您的 IP 地址已添加到白名单。此外,SSH 端口已经自动打开,即使它使用自定义端口。防火墙还配置为启用测试模式,这意味着 iptables 规则将在启动 CSF 后五分钟自动删除。一旦您知道您的配置有效,就应该禁用它,并且您不会被锁定。
基本配置
可以通过编辑 /etc/csf 中的配置文件 csf.conf 来配置 CSF:
nano /etc/csf/csf.conf
可以使用命令应用更改:
csf -r
第 1 步:配置端口
对您的 VPS 的访问越少,您的服务器就越安全。但是,并非所有端口都可以关闭,因为客户端必须能够使用您的服务。
默认打开的端口如下:
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"
TCP_OUT = "20,21,22,25,53,80,110,113,443"
UDP_IN = "20,21,53"
UDP_OUT = "20,21,53,113,123"
使用开放端口的服务:
- 端口 20:FTP 数据传输
- 端口 21:FTP 控制
- 端口 22:安全外壳 (SSH)
- 端口 25:简单邮件传输协议 (SMTP)
- 端口 53:域名系统 (DNS)
- 端口 80:超文本传输协议 (HTTP)
- 端口 110:邮局协议 v3 (POP3)
- 113端口:认证服务/身份协议
- 端口 123:网络时间协议 (NTP)
- 端口 143:互联网消息访问协议 (IMAP)
- 端口 443:基于 SSL/TLS (HTTPS) 的超文本传输协议
- 端口 465:SSM (Cisco) 的 URL 会合目录
- 端口 587:电子邮件消息提交 (SMTP)
- 端口 993:基于 SSL 的互联网消息访问协议 (IMAPS)
- 端口 995:基于 TLS/SSL (POP3S) 的邮局协议 3
您可能没有使用所有这些服务,因此您可以关闭未使用的端口。我建议关闭所有端口(从列表中删除端口号),然后添加您需要的端口。
如果您正在运行列出的服务,下面是应该打开的端口集:
在任何服务器上:
TCP_IN: 22,53
TCP_OUT: 22,53,80,113,443
UPD_IN: 53
UPD_OUT: 53,113,123
阿帕奇:
TCP_IN: 80,443
FTP服务器:
TCP_IN: 20,21
TCP_OUT: 20,21
UPD_IN: 20,21
UPD_OUT:20,21
邮件服务器:
TCP_IN: 25,110,143,587,993,995
TCP_OUT: 25,110
MySQL 服务器(如果需要远程访问)
TCP_IN: 3306
TCP_OUT: 3306
注意:如果您的服务使用 IPv6,您还应该配置 TCP6_IN、TCP6_OUT、UPD6_IN 和 UPD6_OUT,类似于之前配置 IPv4 端口的方式。
您可以在维基百科上找到完整的 TCP 和 UDP 端口列表。您应该打开您使用的所有服务的端口。
第 2 步:其他设置
CSF 在其配置文件中提供了大量不同的选项。下面解释了一些最常用的设置。
ICMP_IN
ICMP_IN_LIMIT
DENY_IP_LIMIT
DENY_TEMP_IP_LIMIT
包过滤器
SYNFLOOD、SUNFLOOD_RATE 和 SYNFLOOD_BURST
限制
价值:
22;5;443;20
将允许端口 22 上有 5 个并发连接,端口 443 上有 20 个并发连接。
波特兰
价值:
22;tcp;5;250
如果在 250 秒内使用 TCP 协议在端口 22 上建立了超过 5 个连接,则会限制阻止 IP 地址。在客户端将最后一个数据包发送到此端口后 250 秒后,该块将被删除。您可以通过用逗号分隔它们来添加更多端口,如下所述。
port1;protocol1;connection_count1;time1,port2;protocol2;connection_count2;time2
更多设置
CSF 提供了本教程未涵盖的各种设置。默认值通常很好,几乎可以在任何服务器上使用。默认设置配置为防止大多数泛洪攻击、端口扫描和未经授权的访问尝试。
但是,如果您想更详细地调整配置,请阅读 /etc/csf/csf.conf 中的注释并根据需要进行编辑。
第 3 步:应用更改
每当您更改 csf.conf 中的设置时,您应该保存文件并重新启动 CSF 以使更改生效。
准备好配置后,按 Ctrl + X 关闭文件。当系统询问您是否保存更改时,按 Y 保存更改。
在此之后,您应该通过使用命令重新启动 CSF 来应用更改:
csf -r
如果一切按计划进行,并且您仍然可以访问服务器,请再次打开配置文件:
nano /etc/csf/csf.conf
并将配置文件开头的设置 TESTING 更改为 0,如下所示:
TESTING = "0"
保存文件,并使用命令应用更改:
csf -r
阻止和允许 IP 地址
防火墙最基本的功能之一是能够阻止某些 IP 地址。您可以通过编辑配置文件 csf.deny、csf.allow 和 csf.ignore 来拒绝(黑名单)、允许(白名单)或忽略 IP 地址。
阻止 IP 地址
如果您想阻止 IP 地址或范围,请打开 csf.deny。
nano /etc/csf/csf.deny
被阻止的 IP 地址或范围都在 csf.deny 文件中保留一行。如果您想阻止 IP 地址 1.2.3.4 以及 IP 范围 2.3.*.*,您应该将以下行添加到文件中:
1.2.3.4 2.3.0.0/16
IP 范围使用 CIDR 表示法表示
允许 IP 地址
如果您希望某个 IP 地址或范围从所有块和过滤器中排除,您可以将它们添加到 csf.allow 文件中。请注意,允许的 IP 地址即使在 csf.deny 文件中被明确阻止也是允许的。
允许 IP 地址的工作方式与阻止它们类似。唯一的区别是您应该编辑 /etc/csf/csf.allow 而不是 csf.deny。
nano /etc/csf/csf.allow
忽略 IP 地址
CSF 还提供从防火墙过滤器中排除 IP 地址的能力。 csf.ignore 中的 IP 地址将绕过防火墙过滤器,并且只有在 csf.deny 文件中列出时才会被阻止。
nano /etc/csf/csf.ignore
为了使更改生效,您应该在使用命令编辑上述任何文件后重新启动 CSF:
csf -r