ufw 是 Uncomplicated Firewall 的简称。Uncomplicated 这个单词很有意思,译为「不复杂的」。所以仅凭字面意思,ufw 可以解读为「不复杂的防火墙」。今天这篇文章就来简单介绍一下这个上手简单的 Linux 防火墙命令。
关于 Linux 防火墙,我前面已经分享过另外一个命令:
Linux iptables 命令学习 Linux 防火墙命令 iptables 的用法和选项参考。
如果还不熟悉 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 |
添加前置规则。 |