温馨提示×

ubuntu防火墙配置技巧

小樊
44
2025-12-14 17:00:40
栏目: 智能运维

Ubuntu 防火墙配置技巧

一 基础与默认策略

  • 使用 UFW(Uncomplicated Firewall) 管理防火墙,它是 iptables 的前端,语法简洁、上手快。Ubuntu 通常已预装 UFW,未安装可执行:sudo apt update && sudo apt install ufw
  • 默认策略建议:拒绝所有传入(incoming)允许所有传出(outgoing),只对必需服务放通,降低攻击面:sudo ufw default deny incomingsudo ufw default allow outgoing
  • 状态与规则查看:sudo ufw status(简洁)或 sudo ufw status verbose(更详细);复杂场景用 sudo ufw status numbered 查看带编号的规则,便于删除。
  • 重要提醒:在启用 UFW 之前务必先放行 SSH(22/TCP),否则可能被锁在服务器外:sudo ufw allow sshsudo ufw allow 22/tcp;确认无误后再执行 sudo ufw enable
  • 启用后 UFW 会随系统启动,可用 sudo ufw disable 临时关闭,sudo ufw reset 重置规则(会禁用并清空规则)。

二 常用规则速查

  • 放行端口与服务
    • 按端口:sudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw allow 8080/udp
    • 按服务名(/etc/services):sudo ufw allow sshsudo ufw allow httpsudo ufw allow httpssudo ufw allow dns
    • 同时放行 TCP/UDP:如 DNS 可直接 sudo ufw allow 53(等价于同时放行 53/tcp 与 53/udp)。
  • 源地址限制
    • 允许某 IP 全部访问:sudo ufw allow from 203.0.113.101
    • 允许某子网:sudo ufw allow from 203.0.113.0/24
    • 仅允许某 IP 访问某端口:sudo ufw allow from 203.0.113.100 to any port 22
    • 端口范围:sudo ufw allow 3000:4000/tcp
  • 拒绝与删除
    • 拒绝规则:sudo ufw deny httpsudo ufw deny from 203.0.113.10sudo ufw deny from 203.0.113.0/24 to any port 21
    • 删除规则:按描述删除 sudo ufw delete allow 8080/tcp;或先 sudo ufw status numbered 再按编号删除 sudo ufw delete <编号>
  • 接口级规则
    • 在特定网卡上限制:sudo ufw deny in on eth0 from 203.0.113.100(仅对 eth0 的入站生效)。

三 进阶用法与加固

  • 防暴力破解:对 SSH 启用连接频率限制,短时间内多次失败将临时拒绝:sudo ufw limit sshsudo ufw limit 22/tcp(典型为 30 秒内 6 次触发限制)。
  • 日志与审计:开启日志便于排查与取证:sudo ufw logging on,日志级别可设为 low/medium/high(默认 low),日志位于 /var/log/ufw
  • 严格出站控制:如业务允许,可将默认出站设为拒绝并逐条放行必要流量:sudo ufw default deny outgoing(谨慎,放行前确保已允许 DNS/HTTPS/NTP 等)。
  • 配置文件与 IPv6:编辑 /etc/default/ufw 可启用或禁用 IPv6(IPV6=yes/no);UFW 的 before.rules/after.rules(及 IPv6 的 before6/after6)可用于插入更细粒度的底层规则。修改后需重启 UFW 生效。
  • 规则顺序与优先级:UFW 按规则顺序匹配,编号小的优先;复杂场景建议用 status numbered 梳理顺序,必要时先删除再按正确顺序添加。

四 实战示例

  • Web 服务器(SSH + HTTP/HTTPS,SSH 防暴力)
    1. 重置并设定默认策略:sudo ufw resetsudo ufw default deny incomingsudo ufw default allow outgoing
    2. 放行关键服务:sudo ufw limit sshsudo ufw allow httpsudo ufw allow https
    3. 启用并检查:sudo ufw enablesudo ufw status numbered
  • 仅内网管理 SSH(示例网段 192.168.1.0/24
    • 放通内网网段 SSH:sudo ufw allow from 192.168.1.0/24 to any port 22;如需限制到某台管理机:sudo ufw allow from 192.168.1.100 to any port 22
  • 放通端口区间与特定来源
    • 开发环境端口段:sudo ufw allow 3000:4000/tcp;仅公司出口 IP 访问管理端口:sudo ufw allow from 203.0.113.50 to any port 22 proto tcp

五 排错与持久化

  • 端口与服务联动检查
    • 先看服务是否在监听:sudo ss -tulnp | grep <端口>(或 netstat -tulnp | grep <端口>)。
    • 若未监听,需修正服务配置并重启(如 Nginx/SSH/应用)。
    • 再确认防火墙:sudo ufw status numbered,必要时 sudo ufw delete <编号> 调整规则。
    • 外部连通性测试:telnet <IP> <端口>curl http://<IP>:<端口>
  • 规则持久化与系统差异
    • UFW 规则默认随系统启动保留;若直接操作 iptables,需做持久化:
      • 安装持久化工具:sudo apt-get install iptables-persistent
      • 保存规则:sudo netfilter-persistent save(IPv6 可用 ip6tables-save > /etc/iptables/rules.v6)。
    • 云服务器 或生产环境变更前,建议先创建 快照/备份,变更后及时验证与回滚预案。

0