一、防火墙配置基础概念
-
核心目标:
- 允许必要的流量(如 HTTP/HTTPS、SSH、RDP)。
- 阻止未经授权的连接(如恶意端口、黑客攻击)。
- 记录日志以便审计和故障排查。
-
关键要素:
- 规则方向:入站(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 - 允许服务(如
ssh、http、https,服务定义在/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 防火墙)
- 通过图形界面配置:
- 打开 控制面板 > 系统和安全 > Windows 防火墙 > 高级设置。
- 入站规则/ 出站规则 > 新建规则,按向导配置端口、协议、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
- 允许端口(如 3389 RDP):
3. 云防火墙(如阿里云、AWS)
- 配置逻辑:
- 登录云平台控制台,进入 安全组 或 防火墙 设置。
- 添加规则:指定协议(如 TCP)、端口(如 80/443)、源 IP(如 0.0.0.0/0 表示允许所有,或指定特定 IP 段)。
- 最佳实践:
- 避免开放 0.0.0.0/0 到敏感端口(如 22、3389),仅允许可信 IP 段。
- 区分公网和内网规则(内网规则可放宽,公网严格限制)。
三、防火墙配置最佳实践
-
最小化开放原则:
- 仅开放业务必需的端口,关闭所有不必要的服务(如默认关闭 3389、23 Telnet)。
- 示例:Web 服务器仅开放 80、443;SSH 服务器仅允许管理 IP 访问。
-
状态检测(Stateful Inspection):
- 允许 “已建立连接” 的响应流量(如客户端访问 Web 服务器后,服务器返回数据应自动允许),避免手动开放所有端口。
-
日志与监控:
- 启用日志记录(如
iptables中添加-j LOG动作),定期分析异常连接(如频繁扫描端口的 IP)。 - Windows 防火墙可在高级设置中开启日志,路径:
%systemroot%\system32\logfiles\firewall\pfirewall.log。
- 启用日志记录(如
-
规则优先级:
- 防火墙按规则顺序匹配(从上到下),精确规则(如特定 IP + 端口)应放在通用规则(如拒绝所有)之前。
-
远程管理保护:
- 配置 SSH/RDP 时,先允许本地连接(如通过 VNC 或本地终端),再逐步开放远程访问,避免配置错误导致锁死。
-
定期更新与备份:
- 定期审查规则,删除过时配置(如不再使用的测试端口)。
- 备份防火墙配置(如 Linux 的
iptables-save、Windows 的导出策略),以便故障恢复。
四、常见问题排查
- 无法访问服务:检查防火墙是否允许对应端口,规则方向是否正确(入站 / 出站)。
- 规则不生效:确认是否使用
--permanent(firewalld)或保存配置(iptables),重启后规则是否还原。 - 性能影响:复杂规则可能影响网络吞吐量,建议使用硬件防火墙或云防火墙分担负载。
通过合理配置防火墙,可有效减少攻击面,保护系统和数据安全。根据具体场景(个人电脑、服务器、云环境)选择合适的工具和规则,遵循 “最小权限” 原则是关键。