简介
UFW (uncomplicated firewall) 是 Ubuntu 默认的防火墙配置工具。为了简化 iptables
防火墙的配置,ufw
提供了一种友好的方式来创建基于 IPv4 或 IPv6 主机的防火墙。
在 Ubuntu 中,ufw 默认是禁用状态。
在 Arch 和 Debian 中,需要先安装 ufw:
# Arch
sudo pacman -S ufw
sudo systemctl start ufw
sudo systemctl enable ufw
# Debian
sudo apt-get install ufw
基本语法和规则
启用和禁用 ufw
启用 ufw,默认情况下,防火墙规则为:除一些默认的例外端口,传入流量 deny,传出流量 allow。
sudo ufw enable
查看 ufw 状态(按添加顺序排列,越早添加的规则优先级越高):
sudo ufw status verbose
禁用 ufw:
sudo ufw disable
查看原始配置,也可以查看 /etc/ufw/
目录中以 .rules
结尾的文件。
sudo ufw show raw
设置规则
设置 allow 规则
sudo ufw allow <port>/<optional: protocol>
**示例:**允许 53 端口传入 tcp 和 udp 数据包
sudo ufw allow 53
**示例:**只允许 53 端口传入 tcp 数据包
sudo ufw allow 53/tcp
**示例:**只允许 53 端口传入 udp 数据包
sudo ufw allow 53/udp
设置 deny 规则
sudo ufw deny <port>/<optional: protocol>
**示例:**禁止 53 端口传入 udp 数据包
sudo ufw deny 53/udp
设置默认规则
sudo ufw default allow outgoing
sudo ufw default deny incoming
删除规则
要删除规则,只需在原始规则前加上 delete 命令。例如,原始规则命令是:
sudo ufw deny 80/tcp
那么删除这条规则的命令是:
sudo ufw delete deny 80/tcp
通过服务名称设置规则
也可以使用服务名称来设置和删除规则。ufw 会从 /etc/services
中读取服务列表。
**示例:**设置 allow 规则允许 SSH 服务端口
sudo ufw allow ssh
**注意:**如果更改了服务的默认端口号,要使用实际端口号,而不是服务名称来设置规则。
日志
启用日志记录:
sudo ufw logging on
关闭日志记录:
sudo ufw logging off
设置日志级别,默认为 low
:
sudo ufw logging low|medium|high
日志文件默认路径为 /var/log/ufw.log
。
高级设置
访问规则
允许特定 IP 地址访问:
sudo ufw allow from 127.0.0.1
允许特定子网访问:
sudo ufw allow from 123.45.67.89/24
允许特定 IP 的特定端口访问,destination 可以为 any
表示不限制目的地址。
sudo ufw allow from <target> to <destination> port <port number>
允许特定 IP 的特定端口使用特定协议访问:
sudo ufw allow from <target> to <destination> port <port number> proto <protocol name>
禁止访问规则与上述相似,只要将 allow 替换为 deny 即可。
规则参考编号
查看 ufw 状态时显示规则编号:
sudo ufw status numbered
通过编号删除规则:
sudo ufw delete 1
通过编号插入规则,新规则将会被插入到编号指定位置,方便设置规则的优先级:
sudo ufw insert 1 allow from <ip address>