温馨提示×

Ubuntu环境下如何设置防火墙

小樊
32
2025-12-06 09:47:34
栏目: 智能运维

Ubuntu 防火墙设置指南

一、快速上手 UFW

  • 大多数 Ubuntu 默认已安装 UFW(Uncomplicated Firewall)。常用命令如下:
    • 安装(如未安装):sudo apt-get update && sudo apt-get install ufw
    • 查看状态:sudo ufw status(状态为 active/inactive;可用 sudo ufw status numbered 查看带编号的规则)
    • 启用/禁用:sudo ufw enable | sudo ufw disable
    • 设置默认策略:sudo ufw default deny(默认拒绝入站,出站默认允许)
    • 开启日志:sudo ufw logging on
  • 示例(放行常见服务):
    • 放行 SSH:sudo ufw allow 22/tcp
    • 放行 HTTP/HTTPS:sudo ufw allow 80/tcp;sudo ufw allow 443/tcp
    • 放行 DNS:sudo ufw allow 53
    • 放行某服务名(读取 /etc/services):sudo ufw allow smtp
    • 放行特定来源 IP:sudo ufw allow from 192.168.1.100
    • 删除规则:sudo ufw delete allow 80/tcp;或按编号删除:sudo ufw delete 10
  • 提示:执行 ufw enable 后会在开机时自动启动。以上命令足以完成日常放行与阻断需求。

二、进阶与 iptables

  • 当需要更细粒度控制时,可直接使用 iptables(UFW 的底层工具):
    • 查看规则:sudo iptables -L -n
    • 放行端口:sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    • 拒绝端口:sudo iptables -A INPUT -p tcp --dport 1234 -j DROP
    • 放行特定来源 IP 的端口:sudo iptables -A INPUT -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT
    • 持久化(Debian/Ubuntu 常用):sudo netfilter-persistent save(安装:sudo apt-get install iptables-persistent)
  • 说明:iptables 规则语法更灵活,但维护成本更高;一般先用 UFW,确有复杂需求再转向 iptables。

三、常用场景与规则模板

  • 仅允许指定 IP 访问 SSH:sudo ufw allow from 203.0.113.10 to any port 22
  • 放行某网段访问本机 80/443:sudo ufw allow from 192.168.1.0/24 to any port 80,443/tcp
  • 放行本机到外部的 DNS 出站:sudo ufw allow out 53
  • 限制来源网段到本机某端口:sudo ufw allow proto tcp from 10.0.1.0/10 to any port 25
  • 删除规则:sudo ufw delete allow smtp;或 sudo ufw delete 5(按编号)
  • 以上模板覆盖常见的端口放行、来源限制与删除操作。

四、安全实践与排错

  • 安全建议
    • 初始策略建议:sudo ufw default deny;仅对业务需要放行业务端口(如 22/80/443)。
    • 变更前先查看状态与规则:sudo ufw status numbered,必要时备份当前规则。
    • 远程维护时,先放行 SSH 22/tcp 再启用防火墙,避免被锁。
    • 开启日志:sudo ufw logging on,便于审计与故障排查。
  • 排错要点
    • 规则不生效:确认网卡/方向/协议/端口是否匹配;必要时用 sudo ufw status numbered 检查顺序与编号。
    • 使用 iptables 的场景:规则未持久化导致重启后丢失,使用 sudo netfilter-persistent save 保存。
    • 服务仍不可达:检查云厂商安全组/本机监听地址(如 127.0.0.1 vs 0.0.0.0)、应用是否绑定正确端口。

0