防火墙配置指南

一、防火墙配置基础概念

  1. 核心目标
    • 允许必要的流量(如 HTTP/HTTPS、SSH、RDP)。
    • 阻止未经授权的连接(如恶意端口、黑客攻击)。
    • 记录日志以便审计和故障排查。
  2. 关键要素
    • 规则方向:入站(Inbound)、出站(Outbound)、转发(Forward)。
    • 协议类型:TCP、UDP、ICMP 等。
    • 端口 / 端口范围:如 80(HTTP)、443(HTTPS)、22(SSH)。
    • 源 / 目标 IP / 子网:限制访问来源或目的地(如仅允许公司 IP 访问服务器)。
    • 动作:允许(Allow)、拒绝(Deny)、记录(Log)。

二、不同系统的防火墙配置示例

1. Linux 系统(以 iptables/firewalld/UFW 为例)

(1) iptables(经典命令行工具,适用于 CentOS 6/7、Debian/Ubuntu 等)
  • 查看当前规则
    iptables -L -n -v  # 查看所有规则(-L),以数字形式显示IP(-n),显示详细信息(-v)
    
  • 基础规则配置
    • 允许本地回环接口(必须保留,否则系统可能异常):
      iptables -A INPUT -i lo -j ACCEPT
      
    • 允许已建立的连接和相关流量(避免阻断正常响应):
      iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      
    • 允许特定端口(如 SSH 22 端口)
      iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      
    • 允许 HTTP/HTTPS(80/443 端口)
      iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      iptables -A INPUT -p tcp --dport 443 -j ACCEPT
      
    • 拒绝所有其他入站流量
      iptables -P INPUT DROP
      
    • 保存规则(重启后生效,不同系统命令可能不同):
      # CentOS 7:
      service iptables save
      # Ubuntu/Debian:
      iptables-save > /etc/iptables/rules.v4
      
(2) firewalld(动态防火墙,适用于 CentOS 8/RHEL 8+)
  • 基础命令
    systemctl start firewalld          # 启动服务
    firewall-cmd --list-all            # 查看当前配置
    
  • 添加规则(永久生效需加 --permanent
    • 允许端口:
      firewall-cmd --add-port=22/tcp
      firewall-cmd --add-port=80/tcp --add-port=443/tcp
      
    • 允许服务(如 sshhttphttps,服务定义在 /usr/lib/firewalld/services/):
      firewall-cmd --add-service=ssh
      firewall-cmd --add-service=http
      
    • 拒绝特定 IP 访问(如拒绝 192.168.1.100):
      firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
      
(3) UFW(简单易用,适用于 Ubuntu)
  • 启用 UFW
    sudo ufw enable
    
  • 允许规则
    ufw allow ssh         # 允许SSH
    ufw allow 80/tcp      # 允许HTTP
    ufw allow 443/tcp     # 允许HTTPS
    ufw allow from 192.168.1.0/24  # 允许某个子网访问
    
  • 拒绝规则
    ufw deny 22/tcp       # 拒绝SSH(谨慎使用,避免锁定自己)
    

2. Windows 系统(高级安全 Windows 防火墙)

  • 通过图形界面配置
    1. 打开 控制面板 > 系统和安全 > Windows 防火墙 > 高级设置
    2. 入站规则出站规则 > 新建规则,按向导配置端口、协议、IP 范围、动作(允许 / 拒绝)。
  • 常用命令行(PowerShell / 命令提示符)
    • 允许端口(如 3389 RDP):
      powershell:
      New-NetFirewallRule -DisplayName "Allow RDP" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
      
    • 阻止程序(如禁止某.exe 联网):
      powershell:
      New-NetFirewallRule -DisplayName "Block App" -Direction Outbound -Path "C:\App\example.exe" -Action Block
      

3. 云防火墙(如阿里云、AWS)

  • 配置逻辑
    1. 登录云平台控制台,进入 安全组 或 防火墙 设置。
    2. 添加规则:指定协议(如 TCP)、端口(如 80/443)、源 IP(如 0.0.0.0/0 表示允许所有,或指定特定 IP 段)。
  • 最佳实践
    • 避免开放 0.0.0.0/0 到敏感端口(如 22、3389),仅允许可信 IP 段。
    • 区分公网和内网规则(内网规则可放宽,公网严格限制)。

三、防火墙配置最佳实践

  1. 最小化开放原则
    • 仅开放业务必需的端口,关闭所有不必要的服务(如默认关闭 3389、23 Telnet)。
    • 示例:Web 服务器仅开放 80、443;SSH 服务器仅允许管理 IP 访问。
  2. 状态检测(Stateful Inspection)
    • 允许 “已建立连接” 的响应流量(如客户端访问 Web 服务器后,服务器返回数据应自动允许),避免手动开放所有端口。
  3. 日志与监控
    • 启用日志记录(如 iptables 中添加 -j LOG 动作),定期分析异常连接(如频繁扫描端口的 IP)。
    • Windows 防火墙可在高级设置中开启日志,路径:%systemroot%\system32\logfiles\firewall\pfirewall.log
  4. 规则优先级
    • 防火墙按规则顺序匹配(从上到下),精确规则(如特定 IP + 端口)应放在通用规则(如拒绝所有)之前。
  5. 远程管理保护
    • 配置 SSH/RDP 时,先允许本地连接(如通过 VNC 或本地终端),再逐步开放远程访问,避免配置错误导致锁死。
  6. 定期更新与备份
    • 定期审查规则,删除过时配置(如不再使用的测试端口)。
    • 备份防火墙配置(如 Linux 的 iptables-save、Windows 的导出策略),以便故障恢复。

四、常见问题排查

  • 无法访问服务:检查防火墙是否允许对应端口,规则方向是否正确(入站 / 出站)。
  • 规则不生效:确认是否使用 --permanent(firewalld)或保存配置(iptables),重启后规则是否还原。
  • 性能影响:复杂规则可能影响网络吞吐量,建议使用硬件防火墙或云防火墙分担负载。
通过合理配置防火墙,可有效减少攻击面,保护系统和数据安全。根据具体场景(个人电脑、服务器、云环境)选择合适的工具和规则,遵循 “最小权限” 原则是关键。
阅读剩余
THE END