如何在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 失败
  • 进出口 SMTP AUTH

除此之外,您还可以使用正则表达式匹配定义自己的登录文件。 如果您的应用程序记录了失败的登录,但在特定次数的尝试后确实阻止了用户,这会很有帮助。

过程跟踪

CSF 可以配置为跟踪进程以检测可疑进程或打开的网络端口,并在检测到任何情况时向系统管理员发送电子邮件。 这可以帮助您识别和阻止 VPS 上可能存在的漏洞。

目录监视

目录监视监视 /temp 和其他相关文件夹中的恶意脚本,并在检测到时向系统管理员发送电子邮件。

信使服务

启用此功能允许 CSF 在应用块时向客户端发送更多信息性消息。 此功能有利也有弊。 一方面,启用它可以为客户端提供更多信息,因此在登录失败的情况下可能会减少挫败感。 另一方面,这提供了更多信息,这可能使攻击者更容易攻击您的 VPS。

港口防洪

此设置可防止端口泛滥攻击,例如拒绝服务 (DoS) 攻击。 您可以在您喜欢的时间段内指定每个端口上允许的连接数量。 建议启用此功能,因为它可能会阻止攻击者强制关闭您的服务。 您应该注意您设置的限制,因为过于严格的设置会断开来自普通客户端的连接。 再说一遍,过于宽松的设置可能会让攻击者在洪水攻击中成功。

敲门

端口敲门允许客户端在没有打开端口的情况下与服务器建立连接。 只有在成功完成端口敲击序列后,服务器才允许客户端连接到主端口。 如果您提供的服务仅限于有限的受众,您可能会发现这很有用。

连接限制保护

此功能可用于限制从 IP 地址到每个端口的活动连接的并发数。 正确配置后,这可以防止服务器上的滥用行为,例如 DoS 攻击。

端口/IP 地址重定向

CSF 可以配置为将连接到一个 IP/端口重定向到另一个 IP/端口。 注意:重定向后,客户端的源地址将是服务器的IP地址。 这不等同于网络地址转换 (NAT)。

用户界面集成

除了命令行界面,CSF 还为 cPanel 和 Webmin 提供 UI 集成。 如果您不熟悉 Linux 命令行,您可能会发现此功能很有帮助。

IP 阻止列表

This feature allows CSF to download lists of blocked IP addresses automatically from sources defined by you.

安装 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 的 Internet 消息访问协议 (IMAPS)
  • 端口 995:邮局协议 3 over TLS/SSL (POP3S)

您可能没有使用所有这些服务,因此您可以关闭未使用的端口。 我建议关闭所有端口(从列表中删除端口号),然后添加您需要的端口。

如果您正在运行列出的服务,以下是应打开的端口集:

在任何服务器上:

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 端口的方式。

您可以在 Wikipedia 上找到 TCP 和 UDP 端口的完整列表。 您应该打开您使用的所有服务的端口。

第 2 步:附加设置

CSF 在其配置文件中提供了大量不同的选项。 下面解释了一些最常用的设置。

ICMP_IN 将 ICMP_IN 设置为 1 允许 ping 您的服务器,0 拒绝此类请求。 如果您托管任何公共服务,建议允许 ICMP 请求,因为这些请求可用于确定您的服务是否可用。

ICMP_IN_LIMIT 设置在指定时间内允许来自一个 IP 地址的 ICMP (ping) 请求数。 通常不需要更改默认值(1/s)

DENY_IP_LIMIT 设置 CSF 跟踪的被阻止 IP 地址的数量。 建议限制拒绝 IP 地址的数量,因为阻止太多可能会降低服务器性能。

DENY_TEMP_IP_LIMIT 同上,但用于临时 IP 地址块。

PACKET_FILTER 过滤无效、不需要和非法的数据包。

SYNFLOOD、SUNFLOOD_RATE 和 SYNFLOOD_BURST 这提供了针对 SYN 洪水攻击的保护。 这会减慢每个连接的初始化速度,因此只有在您知道您的服务器受到攻击时才应启用此功能。

CONNLIMIT 限制端口上的并发活动连接数。

价值:

22;5;443;20

将允许端口 22 上的 5 个并发连接和端口 443 上的 20 个并发连接。

PORTFLOOD 限制每个时间间隔可以与特定端口建立新连接的连接数。

价值:

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

文章提交人:Lassi