A correctly functioning firewall is the most crucial part of the complete Linux system security. By default, Debian and Ubuntu distribution comes with a firewall configuration tool called UFW (Uncomplicated Firewall), is a most popular and easy-to-use command line tool for configuring and managing a firewall on Ubuntu and Debian distributions.
在本文中,我们将解释如何在Ubuntu和Debian发行版上安装和设置UFW防火墙。
先决条件
在开始本文之前,请确保您已使用sudo用户或root帐户登录到您的Ubuntu或Debian服务器。如果您没有sudo用户,您可以使用以下说明作为root用户创建一个。
# adduser username # usermod -aG sudo username # su - username $ sudo whoami
在Ubuntu和Debian上安装UFW防火墙
在Ubuntu和Debian中,默认情况下应安装UFW(简单防火墙),如果没有,请使用以下命令使用APT软件包管理器进行安装。
$ sudo apt install ufw
检查UFW防火墙
安装完成后,您可以键入以下内容检查UFW的状态。
$ sudo ufw status verbose
在首次安装时,默认情况下UFW防火墙处于禁用状态,输出将类似于以下内容。
Status: inactive
启用UFW防火墙
您可以使用以下命令激活或启用UFW防火墙,该命令应加载防火墙并使其在启动时启用。
$ sudo ufw enable
要禁用UFW防火墙,请使用以下命令,该命令卸载防火墙并禁用其在启动时启动。
$ sudo ufw disable
UFW默认策略
默认情况下,UFW防火墙拒绝所有传入连接,只允许所有传出连接到服务器。这意味着,除非您明确打开端口,否则没有人可以访问您的服务器,而服务器上运行的所有服务或应用程序都可以访问外部网络。
默认的UFW防火墙策略位于/etc/default/ufw
文件中,可以使用以下命令进行更改。
$ sudo ufw default deny incoming $ sudo ufw default allow outgoing
UFW应用程序配置文件
使用APT软件包管理器安装软件包时,将在/etc/ufw/applications.d
目录中包含一个定义服务和保存UFW设置的应用程序配置文件。
您可以使用以下命令列出服务器上所有可用的应用程序配置文件。
$ sudo ufw app list
根据系统上安装的软件包,输出将类似于以下内容:
Available applications: APACHE APACHE Full APACHE SECURE CUPS OpenSSH Postfix Postfix SMTPS Postfix Submission
如果您想获取有关特定配置文件和定义规则的更多信息,可以使用以下命令。
$ sudo ufw app info 'Apache'
Profile: Apache Title: Web Server Description: Apache V2 is the next generation f the omnipresent Apache web server. Ports: 80/tcp
在UFW中启用IPv6
如果您的服务器配置了IPv6,请确保您的UFW配置了IPv6和IPv4支持。要验证它,请使用您喜欢的编辑器打开UFW配置文件。
$ sudo vi /etc/default/ufw
然后确保配置文件中的“IPV6”设置为"yes"
,如所示。
IPV6=yes
保存并退出。然后使用以下命令重新启动防火墙:
$ sudo ufw disable $ sudo ufw enable
在UFW上允许SSH连接
如果您已经启用了 UFW 防火墙,它将阻止所有传入连接,如果您是从远程位置通过 SSH 连接到您的服务器,那么您将无法再次连接。
让我们启用 SSH 连接到我们的服务器,以防止这种情况发生,使用以下命令:
$ sudo ufw allow ssh
如果您正在使用自定义 SSH 端口(例如端口 2222),那么您需要使用以下命令在 UFW 防火墙上打开该端口。
$ sudo ufw allow 2222/tcp
要阻止所有 SSH 连接,请输入以下命令。
$ sudo ufw deny ssh/tcp $ sudo ufw deny 2222/tcp [If using custom SSH port]
在 UFW 上启用特定端口
您还可以在防火墙中打开特定端口,以允许通过它连接到某个特定服务。例如,如果您想要设置一个默认监听端口为 80(HTTP)和 443(HTTPS)的 Web 服务器。
以下是几个示例,说明如何允许针对 Apache 服务的传入连接。
在 UFW 上打开端口 80 HTTP
$ sudo ufw allow http [By service name] $ sudo ufw allow 80/tcp [By port number] $ sudo ufw allow 'Apache' [By application profile]
在 UFW 上打开端口 443 HTTPS
$ sudo ufw allow https $ sudo ufw allow 443/tcp $ sudo ufw allow 'Apache Secure'
在 UFW 上允许端口范围
假设您有一些要在一系列端口(5000-5003)上运行的应用程序,您可以使用以下命令添加所有这些端口。
sudo ufw allow 5000:5003/tcp sudo ufw allow 5000:5003/udp
允许特定 IP 地址
如果您想要允许从特定 IP 地址 192.168.56.1 对所有端口的连接,则需要在 IP 地址之前指定 from。
$ sudo ufw allow from 192.168.56.1
在特定端口上允许特定 IP 地址
要允许从IP地址为192.168.56.1的主机上的特定端口(例如端口22)进行连接,您需要在IP地址之后添加任何端口和端口号。
$ sudo ufw allow from 192.168.56.1 to any port 22
允许网络子网访问特定端口
要允许特定IP地址范围从192.168.1.1到192.168.1.254的连接到端口22(SSH),请运行以下命令。
$ sudo ufw allow from 192.168.1.0/24 to any port 22
允许特定网络接口
要允许连接到特定网络接口eth2的特定端口22(SSH),请运行以下命令。
$ sudo ufw allow in on eth2 to any port 22
在UFW上拒绝连接
默认情况下,除非您在UFW上明确打开了连接,否则所有传入连接都将被阻止。例如,您已经打开了端口80和443,而您的Web服务器正受到来自未知网络11.12.13.0/24的攻击。
要阻止来自特定11.12.13.0/24网络范围的所有连接,您可以使用以下命令。
$ sudo ufw deny from 11.12.13.0/24
如果您只想阻止端口80和443上的连接,您可以使用以下命令。
$ sudo ufw deny from 11.12.13.0/24 to any port 80 $ sudo ufw deny from 11.12.13.0/24 to any port 443
删除UFW规则
有两种方法可以删除UFW规则,即按规则号码和按实际规则。
要使用规则号码删除UFW规则,首先需要使用以下命令按编号列出规则。
$ sudo ufw status numbered
示例输出
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere
要删除编号为1的规则,请使用以下命令。
$ sudo ufw delete 1
第二种方法是使用实际规则来删除规则,例如要删除一个规则,请指定带有协议的端口号。
$ sudo ufw delete allow 22/tcp
dry-run UFW规则
您可以使用--dry-run
标志运行任何ufw命令,而不会实际更改系统防火墙,这仅仅显示了将要发生的变化。
$ sudo ufw --dry-run enable
重置UFW防火墙
出于某种原因,如果您希望删除/重置所有防火墙规则,请输入以下命令,这将恢复所有您的更改并重新开始。
$ sudo ufw reset $ sudo ufw status
UFW高级功能
UFW防火墙可以管理所有iptables能做的事情。这可以通过不同的规则文件集来完成,这些文件不过是简单的iptables-restore文本文件。
无法通过ufw命令调整UFW防火墙或添加额外的iptables命令,只需修改以下文本文件即可:
- /etc/default/ufw:带有预定义规则的主要配置文件。
- /etc/ufw/before[6].rules:在这个文件中,规则在通过ufw命令添加之前被计算。
- /etc/ufw/after[6].rules:在这个文件中,规则在通过ufw命令添加之后被计算。
- /etc/ufw/sysctl.conf:此文件用于调整内核网络。
- /etc/ufw/ufw.conf:此文件在启动时启用ufw。
就是这样!UFW是一个优秀的前端工具,它提供了一个用户友好的界面,可以使用单个ufw命令定义复杂规则。
如果您对这篇ufw文章有任何疑问或想法,请使用下面的评论表单与我们联系。
Source:
https://www.tecmint.com/setup-ufw-firewall-on-ubuntu-and-debian/