使用UFW工具配置防火墙


在 Ubuntu 系统上面 ufw 是默认的防火墙控制工具

简单防火墙(UFW),是一个 Ubuntu 中管理防火墙规则的前端。本质上还是使用的是 iptable 工具来设置防火墙规则的,只不过对其进行的操作上的简化,它创造出来的目的就是为了使防火墙配置变得简单易用。

使用UFW工具配置防火墙


1. 安装工具

UFW 默认包含在 Ubuntu 中,但在 Arch 和 Debian 中需要安装。

# Debian/Ubuntu
$ sudo apt-get install ufw
# Arch Linux
$ sudo pacman -S ufw

# 启动并启用UFW的systemd单元
$ sudo systemctl start ufw
$ sudo systemctl enable ufw
Command Description
ufw status Check the status of the UFW firewall
ufw enable Enable the UFW Firewall
ufw allow Allow port/service through the UFW firewall
ufw deny Drop the connection from a specific port/service on the UFW firewall
ufw status verbose Get the detailed (verbose) status of the UFW firewall, which also includes logging levels
ufw status numbered Shows UFW rules with numbers, which is helpful when you want to remove rules
ufw reject Reject connection from specific port or service
ufw logging Change the logging level of the UFW firewall
ufw delete <rule/number> Delete the UFW firewall rule
ufw reload Reload the UFW firewall
ufw disable Disable the UFW firewall
$ sudo ufw -h
ERROR: Invalid syntax

Usage: ufw COMMAND

Commands:
 enable                          enables the firewall
 disable                         disables the firewall
 default ARG                     set default policy
 logging LEVEL                   set logging to LEVEL
 allow ARGS                      add allow rule
 deny ARGS                       add deny rule
 reject ARGS                     add reject rule
 limit ARGS                      add limit rule
 delete RULE|NUM                 delete RULE
 insert NUM RULE                 insert RULE at NUM
 route RULE                      add route RULE
 route delete RULE|NUM           delete route RULE
 route insert NUM RULE           insert route RULE at NUM
 reload                          reload firewall
 reset                           reset firewall
 status                          show firewall status
 status numbered                 show firewall status as numbered list of RULES
 status verbose                  show verbose firewall status
 show ARG                        show firewall report
 version                         display version information

Application profile commands:
 app list                        list application profiles
 app info PROFILE                show information on PROFILE
 app update PROFILE              update PROFILE
 app default ARG                 set default application policy

2. 使用方式

使用 UFW 工具来管理防火墙规则

  • [1] 显示规则列表
# 查看UFW的状态
$ sudo ufw status
$ sudo ufw status verbose
$ sudo ufw status numbered
  • [2] 启用和禁用防火墙
# 查看UFW的状态
$ sudo ufw enable
$ sudo ufw disable

# 重置防火墙
$ sudo ufw reset
  • [3] 设置默认规则

大多数系统只需要打开少量的端口接受传入连接,并且关闭所有剩余的端口。 从一个简单的规则基础开始,ufw default 命令可以用于设置对传入和传出连接的默认响应动作。

# 拒绝所有传入并允许所有传出连接
$ sudo ufw default allow outgoing
$ sudo ufw default deny incoming
  • [4] 添加规则

可以有两种方式添加规则,用端口号或者服务名表示。

# 允许SSH的22端口的传入和传出连接
$ sudo ufw allow ssh
$ sudo ufw allow 22

# 特定端口上deny流量
$ sudo ufw deny 111

# 也可以允许基于TCP或者UDP的包
$ sudo ufw allow 80/tcp
$ sudo ufw allow http/tcp
$ sudo ufw allow 1725/udp

除了基于端口的允许或阻止,UFW 还允许您按照 IP 地址、子网和 IP 地址/子网/端口的组合来允许/阻止,所有例子的 allow 都可以根据需要变成 deny

# 允许从一个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
$ sudo ufw allow from 123.45.67.89 to any port 22 proto udp

插入规则的时候,也有些相对来说比较高级的操作,越是需要我们学习的。

# 规则同样可以使用一个numbered
$ sudo ufw insert 1 allow 80

# 添加--dry-run选项将输出结果规则但并不添加
$ sudo ufw --dry-run allow http
  • [5] 添加注释

宿主机如需长期开放指定端口可使用下列命令开启对应端口

# rule
$ sudo ufw allow log-all from any to any port xxxx comment "some comment msg"

# route
$ sudo ufw route allow log-all 4000 comment "some comment msg"

# route
$ sudo ufw route allow log-all from any to 172.18.0.5 port 80 comment "some comment msg"
  • [6] 删除规则

要删除一条规则,在规则的前面加上 delete 就可以了。

# 不再允许HTTP流量
$ sudo ufw delete allow 80
  • [7] 应用集成

可以打开端口的应用程序可以被包含在 ufw 的预设文件中,这里根据功能适当的包含了应用程序所需的端口。这个预设文件包含在 /etc/ufw/applications.d,在默认端口发生改变的时候可以进行编辑。

# 要查看已安装程序的配置文件,请在终端里键入
$ sudo ufw app list

# 可以通过输入下面的内容来使用一个应用程序预设文件
$ sudo ufw allow Samba

# 一种扩展语法也是可用的
# 使用您所使用的主机名和网络IP范围代替应用程序预设文件中的Samba和192.168.0.0/24
$ ufw allow from 192.168.0.0/24 to any app Samba

# 要查看有关为应用程序定义的端口/协议等的详细信息
$ sudo ufw app info Samba

3. 配置文件

编辑 UFW 的配置文件进行高级配置

  • 虽然可以通过命令行添加简单的规则,但仍有可能需要添加或删除更高级或特定的规则。 在运行通过终端输入的规则之前,UFW 将运行一个文件 before.rules,它允许回环接口、pingDHCP 等服务。要添加或改变这些规则,编辑 /etc/ufw/before.rules 这个文件。 同一目录中的 before6.rules 文件用于 IPv6

  • 还存在一个 after.ruleafter6.rule 文件,用于添加在 UFW 运行你通过命令行输入的规则之后需要添加的任何规则。还有一个配置文件位于 /etc/default/ufw,从此处可以禁用或启用 IPv6,可以设置默认规则,并可以设置 UFW 以管理内置防火墙链。

  • 常规日志类似于下面这样,位于 /var/logs/ufw 下面,可以通过运行 sudo ufw logging low|medium|high 设计日志级别。

# 可以用下面的命令启动日志记录
$ sudo ufw logging on

文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
  目录