zzxworld

Linux 防火墙命令 ufw 使用指南

ufw 是 Uncomplicated Firewall 的简称。Uncomplicated 这个单词很有意思,译为「不复杂的」。所以仅凭字面意思,ufw 可以解读为「不复杂的防火墙」。今天这篇文章就来简单介绍一下这个上手简单的 Linux 防火墙命令。

关于 Linux 防火墙,我前面已经分享过另外一个命令:

如果还不熟悉 iptabels,我建议先点上面的文章去大致了解一下。这样回过头来再看看 ufw,一定能更加深切的体会到 ufw 命令的简单和便捷。

安装 ufw

ufw 在 Ubuntu linux 中已默认安装,在其他 Linux 系统中需要通过包管理工具来安装,比如在 Debian 上安装:

sudo apt install ufw

在 Arch linux 上安装:

sudo pacman -S ufw

使用 ufw

在使用 ufw 之前,需要先开启它的服务。如果当前是通过 SSH 服务连接到服务器操作的,建议先添加一条允许规则,防止当前 SSH 服务连接中断:

sudo ufw allow ssh

注意:使用 ufw 命令需要管理员用户权限,普通用户需要使用 sudo 命令来执行。如果使用的管理员账号,比如 root,可以省略 sudo 命令。

当然,也可以直接以端口号的方式来设置:

sudo ufw allow 22

然后就可以放心的启用 ufw 防火墙了:

sudo ufw enable

命令可能会输出以下提示信息:

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

这里提示启用 ufw 服务后可能会导致当前 SSH 连接中断,是否确认执行。上面已经启用了 SSH 连接端口,这里直接输入 y,然后按回车键启动即可。

ufw 服务启动后,可以通过下面的命令来查看当前 ufw 服务状态和定义的规则:

sudo ufw status

上面的命令当前会输出以下格式的内容:

zzxworld@debian:~$ sudo ufw status
Status: active

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

允许指定的 ip 访问服务器:

sudo ufw allow 192.168.0.100

指定允许访问的网段:

sudo ufw allow from 192.168.1.0/24

禁止从指定端口访问:

sudo ufw deny 8080

禁止端口的时候还可以附加协议:

sudo ufw deny 8080/tcp

删除定义的规则:

sudo ufw delete deny 8080

禁用 ufw 服务的命令:

sudo ufw disable

ufw 命令选项

选项名称 说明
--version 显示 ufw 命令版本。
-h, --help 显示 ufw 命令帮助。
--dry-run 只显示变更,不修改任何内容。
enable 启用防火墙服务。
disable 禁用防火墙服务。
reload 重新加载防火墙服务。
default allow|deny|reject DIRECTION 修改到指定目标的连接策略。
logging on|off|LEVEL 设置日志记录状态。
reset 重设防火墙规则。
status 显示防火墙状态。
show REPORT 显示防火墙运行信息。
allow ARGS 添加允许规则。
deny ARGS 添加禁止规则。
reject ARGS 添加拒绝规则。
limit ARGS 添加限制规则。
delete RULE|NUM 删除规则。
insert NUM RULE 插入规则。
prepend RULE 添加前置规则。