《Linux防火墙设置全指南:从入门到精通,守护系统网络安全》聚焦IP访问权限管控,是覆盖从基础到进阶的实用手册,它详细讲解iptables、firewalld等主流防火墙工具,从入门级的规则基本概念,到进阶的IP白名单/黑名单配置、特定服务访问限制等实战操作,还包含运维中的规则优化、故障排查技巧,无论新手还是资深管理员,都能通过指南掌握精准管控IP访问的方法,构建稳固的系统网络安全防护屏障,有效抵御非法访问与网络威胁。
在Linux系统中,防火墙是抵御网络攻击、控制流量进出的核心防线,无论是个人服务器还是企业级集群,合理配置防火墙规则都是保障系统安全的关键一步,本文将从基础操作到进阶配置,全面讲解Linux主流防火墙工具的使用方法,帮助你搭建稳固的网络安全屏障。
Linux防火墙概述:主流工具与适用场景
Linux生态中有多款成熟的防火墙工具,不同发行版默认工具略有差异,常见的有以下三种:

- firewalld:CentOS 7+、RHEL 7+等发行版默认工具,基于iptables,支持动态规则更新、区域(Zone)管理,适合需要灵活调整规则的场景。
- ufw(Uncomplicated Firewall):Ubuntu、Debian等发行版默认工具,简化了iptables的复杂语法,适合新手快速上手。
- iptables:传统底层防火墙工具,规则直接作用于内核网络栈,适合需要精细化控制的高级用户(部分老系统仍在使用)。
基础操作:主流防火墙工具实战
firewalld:动态规则与区域管理
(1)基础状态管理
# 查看防火墙状态 systemctl status firewalld # 启动防火墙 systemctl start firewalld # 设置开机自启 systemctl enable firewalld # 停止防火墙(不推荐,除非调试) systemctl stop firewalld
(2)核心规则配置
- 开放端口:允许外部访问80(HTTP)、443(HTTPS)端口
# 临时生效(重启后失效) firewall-cmd --add-port=80/tcp firewall-cmd --add-port=443/tcp
永久生效(需重载规则)
firewall-cmd --add-port=80/tcp --permanent firewall-cmd --add-port=443/tcp --permanent
重载规则使永久配置生效
firewall-cmd --reload
- **允许特定IP访问**:仅允许192.168.1.100访问SSH(22端口)
```bash
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept' --permanent
firewall-cmd --reload
-
封禁恶意IP:拒绝192.168.1.200的所有流量
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject' --permanent firewall-cmd --reload
-
查看当前规则
# 查看所有生效规则 firewall-cmd --list-all
查看永久规则
firewall-cmd --list-all --permanent
### 2. ufw:新手友好的简化工具
#### (1)基础状态管理
```bash
# 启用ufw
ufw enable
# 查看状态(带编号规则)
ufw status numbered
# 禁用ufw
ufw disable
(2)核心规则配置
-
允许常用服务:允许SSH、HTTP访问
ufw allow ssh ufw allow http ufw allow https
-
开放/关闭端口:开放8080端口,关闭3306端口
ufw allow 8080/tcp ufw deny 3306/tcp
-
精准控制IP:允许192.168.1.0/24网段访问,拒绝单个IP
ufw allow from 192.168.1.0/24 ufw deny from 192.168.1.200
-
删除规则:根据编号删除规则(先通过
ufw status numbered查看编号)ufw delete 3 # 删除编号为3的规则
iptables:底层规则精细化控制
(1)基础规则配置
# 允许本地回环接口(必备,否则系统可能异常) iptables -A INPUT -i lo -j ACCEPT # 允许已建立的连接(避免中断现有会话) iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许SSH访问 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许HTTP/HTTPS访问 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 默认拒绝所有入站流量 iptables -P INPUT DROP # 默认允许所有出站流量 iptables -P OUTPUT ACCEPT
(2)规则保存与恢复
# CentOS/RHEL保存规则 service iptables save # Debian/Ubuntu保存规则 iptables-save > /etc/iptables/rules.v4 # 恢复规则 iptables-restore < /etc/iptables/rules.v4
进阶配置:提升安全与灵活性
配置默认策略
默认策略是防火墙的基础逻辑,建议遵循“最小权限”原则:
- firewalld:设置默认区域为
public(仅允许必要服务)firewall-cmd --set-default-zone=public
- ufw:默认拒绝所有入站,允许所有出站
ufw default deny incoming ufw default allow outgoing
端口转发(端口映射)
将外部访问的80端口转发到内部的8080端口(需开启IP伪装):
# firewalld开启IP伪装 firewall-cmd --add-masquerade --permanent # 配置端口转发 firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent firewall-cmd --reload
区域(Zone)精细化管理
firewalld的区域功能可根据网络环境切换安全策略,
trusted:信任所有流量(适合内部局域网)internal:允许内部服务访问public:仅允许必要的公共服务
# 查看所有区域 firewall-cmd --get-zones # 将网卡eth0加入internal区域 firewall-cmd --zone=internal --add-interface=eth0 --permanent firewall-cmd --reload
开启防火墙日志
开启日志可帮助排查攻击行为:
# firewalld开启拒绝日志 firewall-cmd --set-log-denied=all --permanent firewall-cmd --reload # iptables开启日志(记录拒绝的流量) iptables -A INPUT -j LOG --log-prefix "IPTABLES_DENY: " --log-level 4
实战案例:Web服务器防火墙配置
假设你搭建了一台Web服务器,需要允许SSH远程管理、HTTP/HTTPS访问,同时拒绝其他无关流量:
方案1:使用firewalld
# 设置默认区域为public firewall-cmd --set-default-zone=public # 允许SSH、HTTP、HTTPS服务 firewall-cmd --add-service=ssh --permanent firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent # 重载规则 firewall-cmd --reload
方案2:使用ufw
# 启用ufw ufw enable # 允许SSH、HTTP、HTTPS ufw allow ssh ufw allow http ufw allow https # 查看规则 ufw status
注意事项与最佳实践
- 先保障远程访问:修改防火墙规则前,务必确保SSH端口已被允许,避免远程连接断开无法恢复。
- 临时规则测试:先使用临时规则(如firewalld不加
--permanent)测试,确认无误后再改为永久规则。 - 定期备份规则:将防火墙规则保存到文件,避免系统重启后丢失。
- 监控日志:定期查看防火墙日志,及时发现异常流量和攻击尝试。
- 避免过度开放:仅允许必要的端口和IP访问,遵循“最小权限”原则,减少攻击面。
通过本文的讲解,你可以根据自己的Linux发行版和需求,选择合适的防火墙工具,从基础配置到进阶优化,为系统搭建一道坚实的网络安全防线,防火墙配置并非一劳永逸,需根据业务变化和安全形势持续调整,才能始终保持系统安全。