快速上手 UFW 防火墙
查看【Linux】专题可浏览更多内容
UFW (Uncomplicated Firewall) 是一个用于管理 NetFilter 防火墙的程序,从名字 (Uncomplicated) 就可以看出来它的最大特点就是使用简单。
安装
以 Debian 谱系为例,使用 APT 安装:
sudo apt update
sudo apt install ufw
使用
制定规则
UFW 的规则有多简单呢,比如想要放行 SSH 所使用的默认 22 端口的入站请求:
sudo ufw allow 22
或者说想要指定协议,如用于 DNS 查询 (UDP 协议) 的 53 端口的入站请求:
sudo ufw allow 53/udp
如果不记得具体端口号也可以使用服务名称,如:
sudo ufw allow ssh # 22端口
sudo ufw allow http # 80 端口
sudo ufw allow https # 443 端口
也可能你对于服务的名称及其使用的端口都不太了解,那么可以查看:
less /etc/services
策略
UFW 有 4 种策略:
- allow:允许
- deny:拒绝
- reject:拒绝,与 deny 不同的是 reject 会向请求者返回一条消息,说明请求被阻止
- limit:速率限制,如果 IP 地址试图在 30 秒内启动 6 个或更多连接,UFW 将拒绝连接,如使用在 SSH 服务上
示例
一些使用示例:
# deny 53 端口
sudo ufw deny 53
# 阻止指定 IP
sudo ufw deny from 1.2.4.8
# 允许指定 IP-CIDR
sudo ufw allow from 10.0.0.0/8
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16
# 仅允许指定 IP 访问指定端口
sudo ufw allow from 192.168.1.1 any port 8080
# 再加上协议
sudo ufw allow from 192.168.1.1 any port 8080 proto tcp
# 阻止 SMTP 的出站请求
sudo ufw reject out smtp
# 允许指定范围的端口及协议
sudo ufw allow 9000:9002/udp
出站及入站默认策略
⚠️ 注意:需要注意是否将 SSH 服务添加了允许入站的规则,否则你就连不上 SSH 服务了
# 默认允许所有数据出站
sudo ufw default allow outgoing
# 默认禁止所有数据入站
sudo ufw default deny incoming
管理 UFW 状态
# 查看 UFW 状态
sudo ufw status
# 重载配置并开启 UFW
sudo ufw enable
# 关闭 UFW
sudo ufw disable
# 重载配置
sudo ufw reload
管理规则
带序号格式查看 UFW 状态及规则列表:
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443 ALLOW IN Anywhere
[ 4] 8080/tcp ALLOW IN Anywhere
[ 5] 8443 ALLOW IN Anywhere
[ 6] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 7] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 443 (v6) ALLOW IN Anywhere (v6)
[ 9] 8080/tcp (v6) ALLOW IN Anywhere (v6)
[10] 8443 (v6) ALLOW IN Anywhere (v6)
删除规则
删除规则可以这样:
sudo ufw delete allow 8080
但现在通过列表可以使用序号删除:
sudo ufw delete 4
sudo ufw delete 9
日志
# 开启日志,off 为关闭
sudo ufw logging on
# 设置日志等级,默认为 low
sudo ufw logging [ low | medium | high ]
然后就可以查看 UFW 的日志了,如:
sudo tail -f /var/log/ufw.log
重置 UFW
禁用并清空设置:
sudo ufw reset