一、防火墙的核心作用
防火墙是计算机网络的“安全门卫”,主要功能包括:
-
流量监控与过滤:控制进出网络的流量,阻止不安全连接。
-
安全边界防护:保护系统免受未授权访问和恶意攻击。
-
规则化管理:通过预定义策略实现灵活的网络访问控制。
二、Linux防火墙的发展与核心概念
1. iptables vs firewalld
对比项 | iptables | firewalld |
---|---|---|
配置方式 | 静态规则集 | 动态规则管理 |
管理复杂度 | 高(需手动维护) | 低(支持区域管理) |
适用场景 | 老版本系统 | CentOS 7+ |
2. firewalld的“区域(Zone)”
firewalld通过区域划分不同信任级别的网络环境:
区域名称 | 信任级别 | 典型场景 |
---|---|---|
public | 低信任 | 公共网络(默认区域) |
home | 高信任 | 家庭网络 |
internal | 高信任 | 内部企业网络 |
dmz | 低信任 | 隔离区(如对外服务器) |
drop | 拒绝所有 | 直接丢弃未授权流量 |
三、firewalld核心操作
1. 基础命令
-
查看防火墙状态:
systemctl status firewalld # 服务状态 firewall-cmd --state # 运行状态
-
启停防火墙:
systemctl start firewalld # 启动 systemctl stop firewalld # 停止 systemctl enable firewalld # 开机自启
2. 服务与端口管理
-
开放HTTP服务:
firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload
-
直接开放端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload
规则模式说明:
临时规则:立即生效,重启失效(不加
--permanent
)。永久规则:需
--reload
后生效,写入配置文件。
四、实战案例:配置Web服务器防火墙
案例1:Apache HTTP服务
-
安装并启动Apache:
yum install httpd -y systemctl start httpd && systemctl enable httpd
-
开放80端口:
firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload
-
验证配置:
firewall-cmd --list-services # 查看已开放服务 curl http://localhost # 测试访问
案例2:增强SSH安全性
-
修改SSH默认端口:
vim /etc/ssh/sshd_config # 修改Port为2222 systemctl restart sshd
-
开放新端口:
firewall-cmd --zone=public --add-port=2222/tcp --permanent firewall-cmd --reload
五、常见问题排查
1. 服务无法访问
-
检查服务状态:
systemctl status httpd # 以Apache为例
-
临时关闭防火墙测试:
systemctl stop firewalld # 若可访问,说明防火墙规则问题
-
检查SELinux:
getenforce # 若为Enforcing,尝试临时关闭 setenforce 0
2. 规则不生效
-
确认规则加载:
firewall-cmd --reload # 重新加载永久规则
-
检查区域配置:
firewall-cmd --get-active-zones # 确认规则添加到正确区域
六、安全建议
-
最小权限原则:仅开放必要端口,如非必需,关闭22端口远程访问。
-
定期审计规则:
firewall-cmd --list-all # 查看当前所有规则
-
结合其他安全措施:
-
使用强密码或SSH密钥认证。
-
定期更新系统和软件补丁。
-