Ubuntu自带防火墙UFW常用命令

推荐配置

默认阻止入站(不会立即切断你的 SSH 连接,因为防火墙尚未启用)
ufw default deny incoming

默认允许出站
ufw default allow outgoing

拒绝所有访问(如果配置了入站/出站,这个可以不配置)
ufw default deny

启用禁用

启用UFW
启用之前先放行SSH端口,否则会造成SSH无法连接
ufw enable

查看状态
ufw status verbose

禁用UFW
ufw disable

防火墙规则存放位置
/etc/ufw中的规则文件(后缀名:.rules)

放行拦截

端口放行
拦截将allow替换为deny

放行22端口的tcp/udp流量
ufw allow 22

放行22端口的tcp/udp流量,并添加备注
ufw allow 22 comment 'open ssh port'

放行22端口的tcp流量
ufw allow 22/tcp

放行22端口的udp流量
ufw allow 22/udp

通过服务名来放行, 会从/etc/services中查找端口
ufw allow ssh

IP放行
拦截将allow替换为deny

放行特定IP
ufw allow from 1.2.3.4

放行特定子网
ufw allow from 1.2.3.4/24

放行特定IP使用任何协议访问22端口
ufw allow from 1.2.3.4 to any port 22
ufw allow from 1.2.3.4/24 to any port 22

允许特定IP使用TCP协议访问22端口
ufw allow from 1.2.3.4 to any port 22 proto tcp
ufw allow from 1.2.3.4/24 to any port 22 proto tcp

删除规则

在ufw命令后面增加delete来删除规则

删除22端口的放行规则
ufw delete allow 22

显示规则的顺序和ID号
ufw status numbered

删除编号规则(删除规则,规则将向上移动以填充列表)
ufw delete 1

日志

启用日志
ufw logging on

禁用日志
ufw logging off

UFW与Docker冲突问题处理

https://github.com/chaifeng/ufw-docker?tab=readme-ov-file#%E5%A4%AA%E9%95%BF%E4%B8%8D%E6%83%B3%E8%AF%BB

修改UFW配置文件/etc/ufw/after.rules,在文件最后添加配置,然后重启UFW

# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:ufw-docker-logging-deny - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j ufw-user-forward

-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16

-A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN

-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12

-A DOCKER-USER -j RETURN

-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] "
-A ufw-docker-logging-deny -j DROP

COMMIT
# END UFW AND DOCKER

来源:https://cloud.tencent.com/developer/article/2428519