ConfigServer Firewall (CSF) 是 Linux 服务器和 BSD 系统的防火墙,用于控制入站和出站流量。 在我们进入有关 CSF 的具体细节之前,让我们了解什么是防火墙以及它是如何工作的。
防火墙充当保护系统免受外部攻击的屏障。 其中一些是状态防火墙、电路级网关、UDP/ICMP 过滤防火墙或应用层过滤器。
防火墙附带了一组规则来过滤传入和传出的流量。 并且根据您使用的防火墙类型,它决定是否允许 IP 访问网络。 规则列表是为特定系统定义的,防火墙根据规则过滤流量。
ConfigServer Firewall (CSF) 是 Linux 服务器中使用最广泛的开源防火墙之一。 CSF 带有可用于配置规则的功能列表。 因此,它非常强大且易于使用。
先决条件
为了在 Debian 11 上安装和配置 CSF,您必须:
- 运行 Debian 11 的服务器和您的系统应该连接到互联网。
- 对服务器的根访问。
更新您的系统
在安装 ConfigServer Firewall 之前,您应该更新您的系统。 运行以下命令来更新您的系统。
sudo apt update
更新完成后,运行以下命令安装所需的依赖项。
sudo apt install libio-socket-inet6-perl libsocket6-perl -y
sudo apt install sendmail dnsutils unzip libio-socket-ssl-perl -y
sudo apt install libcrypt-ssleay-perl git perl iptables libnet-libidn-perl -y
如果您的系统中安装了以前版本的 CSF,请先运行以下命令将其卸载。 由于 Debian 11 使用新版本的 Perl,CSF 安装可能会导致与现有 CSF 安装发生冲突。
cd /etc/csf && sh uninstall.sh
如果您使用其他防火墙配置脚本,如 UFW,则应在继续之前将其关闭。
sudo ufw disable
在 Debian 11 上安装 CSF 防火墙
现在您已经安装了所有必要的先决条件,让我们下载并安装 CSF 防火墙。
Debian 11 存储库不包含 CSF 包。 因此,您需要从他们的官方站点下载最新版本的 ConfigServer 防火墙。
为此,请发出以下命令。
wget http://download.configserver.com/csf.tgz
现在运行下面的命令来提取下载的文件。
sudo tar -xvzf csf.tgz
解压缩文件后,使用以下命令安装 CSF。
cd csf && sh install.sh
安装完成后,现在应该安装防火墙。 要启动 CSF 防火墙,请运行以下命令。
sudo systemctl start csf
运行下面的命令以确保一切正常。
perl /usr/local/csf/bin/csftest.pl
您将获得如下所示的输出。 此输出确认 CSF 已启动并正在运行。
要启用 CSF 防火墙在启动时启动,请运行以下命令。
sudo systemctl enable csf
您可以使用以下命令检查 CSF 的状态。
sudo systemctl status csf
此输出确认 CSF 已启动并正在运行。 现在让我们配置这个防火墙。
示例输出:
在 Debian 11 上配置 CSF 防火墙
一旦你安装了 CSF 防火墙,默认规则就会被激活,它带有一个配置文件 /etc/csf/csf.conf
您应该查看此配置文件以确保它是根据您的需要进行配置的。 在此文件中,您可以看到从系统角度来看所有处于活动状态的默认规则。 让我们仔细看看其中的一些。
sudo nano /etc/csf/csf.conf
开放端口的数量越少,系统就越安全。 但是您应该始终打开一些常用端口。 您可以在 csf.conf 文件中看到默认打开的所有端口,如下所示。
正如你在配置文件中看到的,如果你想允许/阻止任何端口,你应该分别在列表中添加/删除端口号。
例如,如果要阻止端口 80,则应将其从列表中删除,如下所示。
如果您使用的是 IPv6,您还应该在配置文件中更新它,因为现在大多数攻击都是通过 IPv6 协议完成的。 您应该像上面为 IPv4 端口配置的那样配置 TCP6_IN、TCP6_OUT。
示例输出:
现在让我们配置 CONNLIMIT 设置。 CONNLIMIT 是 CSF 中的一项安全功能,可让您限制远程连接在特定端口上的并发数。 这有助于降低 DoS/DDoS 攻击的风险。
例如,如果您想限制不超过 3 个 任何 IP 并发 连接的 ,那么您应该按如下所示更新它。 此设置将仅允许端口 22 上的 3 个并发连接和端口 443 上的 3 个并发连接。
接下来,让我们配置 PORTFLOOD 设置。 此选项允许我们配置特定时间范围内端口上允许的最大连接请求数。
例如,如果您想在 60 秒内使用 TCP 协议在端口 443 上建立超过 3 个连接时阻止任何 IP,则应按如下所示进行更新。 自上次连接以来的 60 秒时间范围结束后,该块将自动删除。
任何防火墙最基本的功能是阻止和允许 IP 地址。 您可以通过在 csf.deny 文件中手动添加要阻止的 IP 地址来添加它们,也可以在 csf.deny 文件中添加整个范围的 IP。
例如,您可以阻止所有 192.168.1.0/24 IP 范围。
或者
您可以通过将 192.168.2.0 的单个 IP 添加到 csf.deny 文件中来阻止它,如下所示。
使用以下命令打开 csf.deny 文件。
sudo nano /etc/csf/csf.deny
将以下行添加到文件底部。 一次一行。
192.168.2.0 192.168.1.0/24
示例输出:
完成后,按 保存并关闭文件 CTRL+X 、 Y 和 Enter 。
与 csf.deny 文件相反,csf.allow 文件用于从所有过滤器中排除一个 IP 或 IP 范围。 请注意,即使您已经将 IP 添加到 csf.deny 文件中,被阻止的 IP 地址仍然可以通过将其添加到 csf.allow 文件中来访问您的服务器。
sudo nano /etc/csf/csf.allow
CSF 提供了多种选项来设置您自己的防火墙,这超出了本教程的范围。 您可以查阅 的 ConfigServer 文档 有关设置及其工作方式 。
完成所有必需设置的更新后,按 保存并关闭 csf.conf 文件 CTRL+X 、 Y 和 Enter 。
CSF 还提供从任何过滤器中忽略 IP 地址的功能。 与在 允许 IP 地址不同,如果某个 IP 地址在 中 csf.allow 文件中 csf.deny 文件 列出 ,则您不能忽略该 IP 地址。
sudo nano /etc/csf/csf.ignore
现在您已经配置了 csf.conf 文件中的所有设置,是时候更新规则集以应用更改了。
为此,请运行以下命令。
sudo csf -r
执行完上述命令后,您将能够看到一条消息,如下面的屏幕截图所示。 如果没有显示错误消息,恭喜! 您的服务器的防火墙配置现已更新并可供使用。
结论
在本教程中,您学习了如何在 Debian 11 服务器上安装 ConfigServer Security & Firewall (CSF)。 您还学习了如何创建防火墙规则,如何使用 CSF 配置文件将 IP 添加到允许和阻止列表。
如果您遇到任何问题,您可以随时参考 ConfigServer 防火墙 文档 以获取更多信息。