UFW是一个user-friendly front-end,用于管理iptables防火墙规则,其主要目标是使iptables的管理更容易,或者名称不复杂。 Ubuntu的防火墙是一种无需学习iptables即可轻松执行基本防火墙任务的简便方法。它并不能提供标准iptables命令的所有功能,但它却不那么复杂。
在本教程中,您将学习:
- 什么是UFW及其概述。
- 如何安装UFW和执行状态检查。
- 如何在UFW中使用IPv6。
- UFW默认策略。
- 应用程序配置文件。
- 如何允许和拒绝连接。
- 防火墙日志。
- 如何删除UFW规则。
- 如何禁用和重置UFW。
使用的软件要求和约定
类别 | 使用的要求,约定或软件版本 |
---|---|
系统 | Ubuntu 18.04 |
软件 | Ubuntu内置防火墙UFW |
其他 | 以root身份或通过Linux特权访问Linux系统sudo 命令。 |
约定 | #-要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo 命令$-要求linux命令以普通非特权用户身份执行 |
UFW概述
Linux内核包括Netfilter子系统,该子系统用于操纵或确定进入或通过您的服务器的网络流量的命运。所有现代Linux防火墙解决方案都使用此系统进行数据包过滤。
对于没有用户空间接口来管理它的管理员来说,内核的数据包过滤系统几乎没有用。 iptables的目的是:当数据包到达您的服务器时,将根据从用户空间通过iptables提供给它的规则,将其传递到Netfilter子系统进行接受,操作或拒绝。因此,如果您熟悉iptables,则只需它即可管理防火墙,但是有许多前端可以简化任务。
UFW或简单的防火墙是iptables的front-end。其主要目标是简化防火墙drop-dead的管理并提供easy-to-use接口。它是well-supported,在Linux社区中很流行-即使在许多发行版中也默认安装了它。因此,这是开始确保服务器安全的好方法。
安装UFW和状态检查
默认情况下,应在Ubuntu 18.04中安装“不复杂的防火墙”,但是如果未在系统上安装,则可以使用以下命令安装软件包:
$ sudo apt-get install ufw
安装完成后,您可以使用以下命令检查UFW的状态:
$ sudo ufw status verbose
ubuntu1804@linux:~$ sudo ufw status verbose
[sudo] password for ubuntu1804:
Status: inactive
ubuntu1804@linux:~$
ubuntu1804@linux:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
ubuntu1804@linux:~$
ubuntu1804@linux:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
ubuntu1804@linux:~$
将UFW与IPv6结合使用
如果为服务器配置了IPv6,请确保将UFW配置为支持IPv6,以便同时配置IPv4和IPv6防火墙规则。为此,请使用以下命令打开UFW配置:
$ sudo vim /etc/default/ufw
然后确定IPV6
设定为yes
,就像这样:
IPV6=yes
保存并退出。然后使用以下命令重新启动防火墙:
$ sudo ufw disable
$ sudo ufw enable
现在,UFW将在适当的时候为IPv4和IPv6配置防火墙。
UFW默认策略
默认情况下,UFW将阻止所有传入连接并允许所有出站连接。这意味着,除非您专门打开端口,否则尝试访问服务器的任何人都将无法连接,而服务器上运行的所有应用程序和服务都将可以访问外部环境。默认策略在/etc/default/ufw
文件,可以使用sudo ufw default命令进行更改。
$ sudo ufw default deny outgoing
防火墙策略是构建更详细的user-defined规则的基础。在大多数情况下,初始UFW默认策略是一个很好的起点。
应用资料
使用apt命令安装软件包时,它将向其中添加应用程序配置文件/etc/ufw/applications.d
目录。该配置文件描述了服务并包含UFW设置。您可以使用以下命令列出服务器上可用的所有应用程序配置文件:
$ sudo ufw app list
根据系统上安装的软件包,输出将类似于以下内容:
ubuntu1804@linux:~$ sudo ufw app list
[sudo] password for ubuntu1804:
Available applications:
CUPS
OpenSSH
ubuntu1804@linux:~$
要查找有关特定概要文件和包含的规则的更多信息,请使用以下命令:
$ sudo ufw app info ‘<app_name>’
ubuntu1804@linux:~$ sudo ufw app info 'OpenSSH'
Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp
从上面的输出中可以看到,OpenSSH配置文件通过TCP打开端口22。
允许和拒绝连接
如果打开防火墙,默认情况下它将拒绝所有传入连接。因此,您需要根据需要允许/启用连接。可以通过定义端口,服务名称或应用程序配置文件来打开连接。
$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow 80/tcp
$ sudo ufw allow 'HTTP'
UFW除了允许访问单个端口外,还允许我们访问端口范围。
$ sudo ufw allow 1000:2000/tcp
$ sudo ufw allow 3000:4000/udp
要允许从具有IP地址的计算机访问所有端口,或允许访问特定端口,可以执行以下命令:
$ sudo ufw allow from 192.168.1.104
$ sudo ufw allow from 192.168.1.104 to any port 22
允许连接到IP地址子网的命令:
$ sudo ufw allow from 192.168.1.0/24 to any port 3306
要允许访问特定端口并且仅访问特定网络接口,您需要使用以下命令:
$ sudo ufw allow in on eth1 to any port 9992
所有传入连接的默认策略均设置为“拒绝”,如果未更改,则UFW会阻止所有传入连接,除非您专门打开该连接。要拒绝来自子网和端口的所有连接:
$ sudo ufw deny from 192.168.1.0/24
$ sudo ufw deny from 192.168.1.0/24 to any port 80
防火墙日志
防火墙日志对于识别攻击,对防火墙规则进行故障排除以及注意到网络中的异常活动至关重要。但是,您必须在防火墙中包括日志记录规则才能生成它们,并且日志记录规则必须位于任何适用的终止规则之前。
$ sudo ufw logging on
日志也会在/var/log/messages
,/var/log/syslog
和/var/log/kern.log
删除UFW规则
Tere是删除UFW规则的两种不同方法,分别是通过规则编号和指定实际规则。通过规则编号删除UFW规则更容易,特别是如果您不熟悉UFW。要首先通过规则编号删除规则,您需要找到要删除的规则的编号,您可以使用以下命令:
$ sudo ufw status numbered
ubuntu1804@linux:~$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] Anywhere ALLOW IN 192.168.1.104
[ 3] 22/tcp (v6) ALLOW IN Anywhere (v6)
要删除规则编号2,该规则允许从IP地址192.168.1.104连接到任何端口,请使用以下命令:
$ sudo ufw delete 2
ubuntu1804@linux:~$ sudo ufw delete 2
Deleting:
allow from 192.168.1.104
Proceed with operation (y|n)? y
Rule deleted
ubuntu1804@linux:~$
第二种方法是通过指定实际规则来删除规则。
$ sudo ufw delete allow 22/tcp
禁用并重置UFW
如果出于任何原因要停止UFW并停用所有规则,则可以使用:
$ sudo ufw disable
ubuntu1804@linux:~$ sudo ufw disable
Firewall stopped and disabled on system startup
ubuntu1804@linux:~$
重置UFW将禁用UFW,然后删除所有活动规则。如果要还原所有更改并重新开始,这将很有帮助。要重置UFW,请使用以下命令:
$ sudo ufw reset
ubuntu1804@linux:~$ sudo ufw reset
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20181213_084801'
Backing up 'before.rules' to '/etc/ufw/before.rules.20181213_084801'
Backing up 'after.rules' to '/etc/ufw/after.rules.20181213_084801'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20181213_084801'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20181213_084801'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20181213_084801'
ubuntu1804@linux:~$
结论
UFW的开发旨在简化iptables防火墙的配置,并提供了user-friendly方法来创建基于IPv4或IPv6主机的防火墙。还有许多其他防火墙实用程序,有些可能会更容易一些,但是UFW是一个很好的学习工具,仅因为它公开了一些底层的netfilter结构,并且它存在于许多系统中。