UFW究竟是什么
通过Linux内核的数据报有诸多特征,内核根据这些特征对数据报进行各种处理,比如路由。但直接在内核层面对数据报处理很不方便,后来在它的外层添加了iptables,使对数据报处理的难度大幅降低。不过有些人还是觉得iptables不够方便,于是又在iptables的外层包裹了一个wrapper,将数据报处理的难度进一步降低,让大多数人都能简单的进行防火墙的设置。最外面的这一层wrapper就是UFW, Uncomplicated Firewall.
实例内防火墙 vs 云平台级防火墙
这两个防火墙一般分别称为内防火墙和外防火墙,两道防火墙的串联可以提高安全性和运维的灵活性。UFW位于实例内,属于内防火墙。
Ubuntu官方内置了UFW,只不过默认未启用。
基本操作
以下操作假设你拥有root级权限,Ubuntu可以 $ sudo -i
临时获得,退出权限,直接 # exit
。
初始状态是✅允许一切出流量,❌禁止一切入流量。
启用
$ sudo ufw enable
禁用
$ sudo ufw disable
重新加载规则
$ sudo ufw reload
添加,删除允许规则
$ sudo ufw allow 80/tcp
$ sudo ufw delete allow 80/tcp
短时间内有限错误次数允许
$ sudo ufw limit 22/tcp
开启,关闭日志,设置日志级别
$ sudo ufw logging { on | off | low | high }
查看防火墙状态
$ sudo ufw status
Status: active
To Action From
-- ------ ----
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
$ sudo ufw status verbose
Status: active
Logging: off
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
高级用法
sudo ufw allow from 192.168.0.2 to any port 22 proto tcp
sudo ufw insert 1 allow from 192.168.0.2
sudo ufw delete 1
sudo ufw allow from 192.168.0.0/24 to any port 22
sudo ufw delete allow from 192.168.0.0/24 to any port 22
sudo ufw allow in on eth0 to any port 22 proto udp
UFW相关配置文件
/etc/default/ufw, /etc/sysctl.conf, /etc/ufw/
可以用于高级控制和路由,也可以和iptables搭配使用。