Ubuntu 防火墙 ufw 完整查看与设置教程


Ubuntu 防火墙 ufw 完整查看与设置教程

Ubuntu 默认防火墙工具是 ufw(Uncomplicated Firewall),底层是 iptables。

一、查看防火墙状态

1. 基础状态查看

sudo ufw status
  • Status: inactive = 防火墙关闭

  • Status: active = 防火墙开启,同时列出所有放行 / 拒绝规则

2. 详细规则(带编号,方便删除)

sudo ufw status numbered

3. 查看防火墙默认策略

sudo ufw show added

4. 查看完整原生 iptables 规则(底层)

sudo iptables -L -n

二、开关防火墙

# 开启防火墙
sudo ufw enable

# 关闭防火墙
sudo ufw disable

# 重启重载规则
sudo ufw reload

三、默认出入站策略(最核心)

常用安全配置:默认拒绝所有入站,允许出站

# 外部主动连本机:全部拒绝
sudo ufw default deny incoming

# 本机主动连外部:全部允许
sudo ufw default allow outgoing

可选:

# 全部允许入站(不推荐,服务器慎用)
sudo ufw default allow incoming

四、放行 / 阻断端口、服务

1. 放行单个端口

# 放行22端口ssh
sudo ufw allow 22

# 放行80 http、443 https
sudo ufw allow 80
sudo ufw allow 443

2. 指定协议放行(tcp/udp)

sudo ufw allow 3306/tcp  # mysql tcp
sudo ufw allow 53/udp    # dns udp

3. 放行端口段

sudo ufw allow 3000:4000/tcp

4. 放行指定 IP 访问端口

# 仅 192.168.1.100 能访问22端口
sudo ufw allow from 192.168.1.100 to any port 22

5. 放行整个内网网段

sudo ufw allow from 192.168.1.0/24

6. 直接拒绝端口 / IP

sudo ufw deny 23
sudo ufw deny from 10.0.0.5

7. 通过服务名放行(不用记端口)

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

五、删除规则

方式 1:按编号删除(推荐,先看 status numbered)

# 比如第3条规则删除
sudo ufw delete 3

方式 2:按规则语句删除

sudo ufw delete allow 22

六、高级常用配置

1. 允许端口转发(内网穿透 / 虚拟机共享)

sudo nano /etc/default/ufw

找到:

DEFAULT_FORWARD_POLICY="DROP"

改为

DEFAULT_FORWARD_POLICY="ACCEPT"

保存后重载:

sudo ufw reload

2. 开启日志(排查拦截记录)

sudo ufw logging medium
# 日志路径:/var/log/ufw.log

查看日志:

tail -f /var/log/ufw.log

3. 重置所有规则(清空)

sudo ufw reset

七、VMware Ubuntu 双向复制粘贴常见防火墙问题

如果装好 open-vm-tools 但复制粘贴失效:

  1. ufw 默认不会拦截 vmtools 内部通信;

  2. 若手动限制了本地回环 127.0.0.1,执行放行:

sudo ufw allow from 127.0.0.1
sudo ufw allow to 127.0.0.1

八、一键安全服务器模板(直接复制执行)

sudo ufw disable
sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status