如何使用UFW配置防火墙
UFW或简单防火墙是Arch Linux,Debian或Ubuntu中管理防火墙规则的前端。UFW通过命令行使用(尽管它具有可用的GUI),并且旨在使防火墙配置容易(或简单)。
在你开始之前
- 熟悉我们的入门指南,并完成设置主机名和时区的步骤。
- 本指南将sudo尽可能使用。完成我们“ 保护您的服务器”指南的部分,创建一个标准用户帐户,加强SSH访问并删除不必要的网络服务。别不遵循创建防火墙部分-本指南介绍了如何使用UFW,这是一种控制防火墙比iptables的命令的一个单独的方法。
- 更新系统。
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意味着它不是。