centos防火墙如何防护
小樊
40
2025-12-11 12:50:27
CentOS 防火墙防护实践指南
一 基础防护与最小暴露面
- 确认并启用默认防火墙服务:在 CentOS 7+ 使用 firewalld 管理防火墙。建议保持默认区域为 public,仅开放必需服务。
命令示例:
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --set-default-zone=public
sudo firewall-cmd --get-default-zone
- 仅放行必要端口与服务:优先使用“服务名”放行(如 ssh、http、https),减少因端口号变更带来的维护成本。
命令示例:
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
- 移除不必要的预置服务:在 public 区域移除不需要的服务(如 dhcpv6-client),降低攻击面。
命令示例:
sudo firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client
sudo firewall-cmd --reload
- 变更前先备份当前规则,变更后及时重载并检查:
命令示例:
sudo firewall-cmd --runtime-to-permanent # 将运行时规则固化为永久(可选)
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
二 精细化访问控制
- 按源地址限制访问:仅允许指定 IP/网段 访问关键端口(如数据库、管理口)。
命令示例(仅允许 192.168.1.100 访问 3306/TCP):
sudo firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.100” port protocol=“tcp” port=“3306” accept’
sudo firewall-cmd --reload
- 将可信网络划入更宽松区域:把内网接口或网段加入 trusted 区域以实现“全放行”,而公网接口保持在 public 区域仅放行必要服务。
命令示例:
sudo firewall-cmd --permanent --zone=trusted --add-source=192.168.1.0/24
sudo firewall-cmd --permanent --zone=public --remove-interface=eth1
sudo firewall-cmd --permanent --zone=trusted --add-interface=eth1
sudo firewall-cmd --reload
- 端口范围与协议:对需要连续端口的服务一次性放行。
命令示例(放行 10000–10010/TCP):
sudo firewall-cmd --permanent --zone=public --add-port=10000-10010/tcp
sudo firewall-cmd --reload
- 变更后核对生效结果:
命令示例:
sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=public --list-rich-rules
三 端口转发与地址伪装
- 端口转发:将外网访问的 8080/TCP 转发到本机 80/TCP(常用于对外仅开放高端口、服务实际监听低位端口的场景)。
命令示例:
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80
sudo firewall-cmd --reload
- 地址伪装(SNAT/Masquerade):为内网主机提供上网/NAT 出口。
命令示例:
sudo firewall-cmd --permanent --zone=public --add-masquerade
sudo firewall-cmd --reload
四 高安全场景与应急
- 默认丢弃策略:在面向公网的 drop 区域中,未显式允许的流量将被丢弃,适合高安全需求。
命令示例:
sudo firewall-cmd --set-default-zone=drop
仅放行必要来源与服务,例如:
sudo firewall-cmd --permanent --zone=drop --add-rich-rule=‘rule family=“ipv4” source address=“203.0.113.10” port protocol=“tcp” port=“22” accept’
sudo firewall-cmd --reload
- 回退与应急:
- 快速恢复默认区域:sudo firewall-cmd --set-default-zone=public
- 查看运行时规则:sudo firewall-cmd --list-all
- 临时放行后再固化:先放行运行时规则测试无误,再添加 –permanent 并 –reload
- 使用 iptables 的场景(如 CentOS 6 或需直接操作内核规则):
- 放行单端口:
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
- 保存规则(不同发行版/版本路径可能不同):
sudo service iptables save
或
sudo iptables-save > /etc/sysconfig/iptables
- 安全加固配套建议:
- 保持系统与软件包 及时更新;
- 启用并正确配置 SELinux;
- 定期 审计与监控日志,及时关闭不再使用的端口与服务。