Ubuntu自带防火墙UFW常用命令
推荐配置
默认阻止入站(不会立即切断你的 SSH 连接,因为防火墙尚未启用)ufw default deny incoming
默认允许出站ufw default allow outgoing
拒绝所有访问(如果配置了入站/出站,这个可以不配置)ufw default deny
启用禁用
启用UFW
启用之前先放行SSH端口,否则会造成SSH无法连接ufw enable
查看状态ufw status verbose
禁用UFWufw 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
放行特定IPufw 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冲突问题处理
修改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