ubuntu防火墙访问控制
小樊
35
2025-11-23 01:02:47
Ubuntu 防火墙访问控制速查
一 基础准备与默认策略
- 检查与安装:查看是否可用命令为ufw --version;未安装可执行sudo apt update && sudo apt install ufw。
- 启用前务必先放行管理通道(如SSH 22/TCP),避免远程被断开:
- 允许 SSH:sudo ufw allow ssh 或 sudo ufw allow 22/tcp
- 设置默认策略(推荐):sudo ufw default deny incoming(拒绝入站)、sudo ufw default allow outgoing(允许出站)。
- 启用防火墙:sudo ufw enable(如提示可能中断现有 SSH 连接,请确认已放行 SSH 规则后再继续)。
- 常用查看:sudo ufw status(简要)、sudo ufw status verbose(详细)、sudo ufw status numbered(带编号便于删除)。
二 常见访问控制场景与命令
- 按端口/协议放行:
- 放行单端口:sudo ufw allow 80/tcp;放行 UDP 可写 sudo ufw allow 53/udp;仅写端口(如sudo ufw allow 53)通常同时放行 TCP/UDP。
- 放行端口范围:sudo ufw allow 8000:9000/tcp(可分别指定 TCP/UDP)。
- 按来源 IP/网段控制:
- 允许某 IP 访问所有端口:sudo ufw allow from 203.0.113.10
- 允许某网段访问某端口:sudo ufw allow from 192.168.1.0/24 to any port 3306
- 拒绝某网段访问某端口:sudo ufw deny proto tcp from 10.0.0.0/8 to any port 22
- 按接口/方向控制:
- 仅对指定网卡入站放行:sudo ufw allow in on eth1 to any port 443
- 出站限制示例:sudo ufw deny out to 203.0.113.0/24(谨慎,避免把自己封死)
- 拒绝与限速:
- 拒绝但不回包:sudo ufw deny 23/tcp;主动拒绝并回 ICMP/拒绝包:sudo ufw reject 23/tcp
- 防暴力破解(对 SSH):sudo ufw limit ssh 或 sudo ufw limit 22/tcp(短时间内多次失败将临时拒绝)。
三 规则管理与维护
- 删除规则:
- 按规则内容删除:sudo ufw delete allow 22/tcp
- 按编号删除:先sudo ufw status numbered,再sudo ufw delete <编号>
- 插入规则到指定位置:sudo ufw insert 1 allow 2222/tcp(将规则插入到第 1 条,优先匹配)
- 启用/关闭与重载:sudo ufw enable|disable,sudo ufw reload
- 日志与试运行:
- 开启日志:sudo ufw logging on(或设为 low/medium/high)
- 试运行(不真正写入):在任意命令前加**–dry-run**
- 重置:sudo ufw reset(恢复到初始状态,会提示确认)
四 进阶与安全建议
- 启用 IPv6:编辑**/etc/default/ufw**,将IPV6=yes,然后sudo ufw reload。
- 禁止被 Ping(ICMP):编辑**/etc/ufw/before.rules**,将
“-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT”
改为“DROP”,保存后sudo ufw reload。
- 云服务器注意:除本机 UFW 外,还需在云平台的安全组放行相同端口与来源网段,二者需协同一致。
- 规则顺序与冲突:UFW 按顺序匹配,使用status numbered检查并调整顺序;删除/插入规则时注意影响范围。
- 备份与恢复:备份**/etc/ufw/user.rules与/etc/ufw/user6.rules**,在需要时恢复并reload。
五 快速范例 最小化 Web 与 SSH 访问
- 重置并设定默认策略:
- sudo ufw reset
- sudo ufw default deny incoming
- sudo ufw default allow outgoing
- 放行管理通道与业务端口:
- sudo ufw allow ssh(或 sudo ufw allow 22/tcp)
- sudo ufw limit ssh(防暴力)
- sudo ufw allow http,sudo ufw allow https
- 可选:仅内网管理
- 先sudo ufw delete allow ssh,再sudo ufw allow from 192.168.1.0/24 to any port 22
- 检查与启用:
- sudo ufw status numbered
- sudo ufw enable