如何使用UFW配置防火墙

2017-08-26

UFW或简单防火墙是Arch Linux,Debian或Ubuntu中管理防火墙规则的前端。UFW通过命令行使用(尽管它具有可用的GUI),并且旨在使防火墙配置容易(或简单)。

ufw

在你开始之前

  1. 熟悉我们的入门指南,并完成设置主机名和时区的步骤。
  2. 本指南将sudo尽可能使用。完成我们“ 保护您的服务器”指南的部分,创建一个标准用户帐户,加强SSH访问并删除不必要的网络服务。别不遵循创建防火墙部分-本指南介绍了如何使用UFW,这是一种控制防火墙比iptables的命令的一个单独的方法。
  3. 更新系统。

Arch Linux

$ sudo pacman -Syu

Debian / Ubuntu

$ sudo apt-get update && sudo apt-get upgrade

安装UFW

UFW默认包含在Ubuntu中,但必须安装在Arch和Debian中。Debian将自动启动UFW的systemd单元,并使其能够重新启动,但Arch不会启动。这与告诉UFW启用防火墙规则不一样,因为启用UFW与systemd或upstart只能告知init系统打开UFW守护程序。

默认情况下,UFW的规则集是空白的,因此它不会执行任何防火墙规则 - 即使守护程序正在运行。执行您的防火墙规则集将在页面进一步介绍。

Arch Linux

  • 安装UFW:
$ sudo pacman -S ufw
  • 启动并启用UFW的系统单元:
$ sudo systemctl start ufw 
$ sudo systemctl enable ufw

Debian / Ubuntu

  • 安装UFW
$ sudo apt-get install ufw

使用UFW管理防火墙规则

设置默认规则

大多数系统将只需要少量用于传入连接的端口,并且所有剩余的端口都关闭。要开始一个简单的规则基础,该ufw default命令可用于设置对传入和传出连接的默认响应。要拒绝所有传入并允许所有传出连接,请运行:

$ sudo ufw default allow outgoing
$ sudo ufw default deny incoming

ufw default 命令还允许使用reject参数。

注:

配置默认拒绝或拒绝规则可以将您锁定在Linode之外,除非有明确的允许规则。在应用默认拒绝或拒绝规则之前,请确保您已按照以下部分配置了SSH和其他关键服务的允许规则。

添加规则

可以通过两种方式添加规则:通过表示端口号或使用服务名称

例如,要允许端口22上的传入和传出连接用于SSH,可以运行:

$ sudo ufw allow ssh

您也可以运行:

$ sudo ufw allow 22

同样,要拒绝某个端口的流量(在本例中为111),您只需要运行:

$ sudo ufw deny 111

要更进一步地调整您的规则,还可以允许基于TCP或UDP的数据包。以下将允许端口80上的TCP数据包:

$ sudo ufw allow 80/tcp
$ sudo ufw allow http/tcp

而这将允许1725年的UDP数据包:

$ sudo ufw allow 1725/udp

高级规则

除了基于端口的允许或拒绝之外,UFW还允许您通过IP地址,子网和IP地址/子网/端口组合来允许/阻止。

允许从IP地址连接:

$ sudo ufw allow from 123.45.67.89

允许来自特定子网的连接:

$ sudo ufw allow from 123.45.67.89/24

允许特定的IP地址/端口组合:

$ sudo ufw allow from 123.45.67.89 to any port 22 proto tcp

proto tcp可以proto udp根据您的需要进行删除或切换,并且allow可以deny根据需要更改所有实例。

删除规则

要删除规则,请在规则实现之前添加delete。如果您不再希望允许HTTP流量,则可以运行:

$ sudo ufw delete allow 80

删除也允许使用服务名称。


编辑UFW的配置文件

尽管可以通过命令行添加简单的规则,但是可能需要添加或删除更高级或特定的规则。在运行通过终端输入的规则之前,UFW将运行一个before.rules允许环回,ping和DHCP的文件。要添加以修改这些规则,请编辑该/etc/ufw/before.rules文件。一个before6.rules文件也位于IPv6的同一目录中。

An after.rule和一个after6.rule文件也存在添加在UFW运行命令行添加规则之后需要添加的任何规则。

一个额外的配置文件位于/etc/default/ufw。从这里可以禁用或启用IPv6,可以设置默认规则,并且可以设置UFW来管理内置防火墙链。


UFW状态

您可以随时使用以下命令检查UFW的状态:sudo ufw status。这将显示所有规则的列表,以及UFW是否处于活动状态:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

启用防火墙

根据您选择的规则,您的初始运行ufw status可能会输出Status: inactive。启用UFW并强制执行防火墙规则:

$ sudo ufw enable

同样,要禁用UFW的规则:

$ sudo ufw disable

注:

这仍然使UFW服务运行并重新启动。


日志

您可以使用以下命令启用日志记录:

$ sudo ufw logging on

日志级别可以通过运行设置sudo ufw logging low|medium|high,要么选择low,medium或high从列表中。默认设置为low。

正常的日志条目将类似于以下内容,并将位于**/var/logs/ufw**:

Sep 16 15:08:14 <hostname> kernel: [UFW BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=123.45.67.89 DST=987.65.43.21 LEN=40 TOS=0x00 PREC=0x00 TTL=249 ID=8475 PROTO=TCP SPT=48247 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0

初始值列出了Linode的日期,时间和主机名。其他重要值包括:

  • [UFW BLOCK]:该位置是记录的事件的描述将位于哪里。在这种情况下,它阻止了一个连接。
  • IN:如果它包含一个值,那么事件是进入的
  • OUT:如果它包含一个值,那么该事件是传出的
  • MAC:目的MAC地址和源MAC地址的组合
  • SRC:分组源的IP
  • DST:分组目的地的IP
  • LEN:包长度
  • TTL:数据包TTL或生存时间。如果没有找到目的地,它将在路由器之间反弹多久,直到它过期。
  • PROTO:数据包的协议
  • SPT:包的源端口
  • DPT:包的目标端口
  • WINDOW:发送方可以接收的数据包的大小
  • SYN URGP:指示是否需要三次握手。0意味着它不是。
https://www.linode.com/docs/security/firewalls/configure-firewall-with-ufw