centos

CentOS防火墙设置技巧

小樊
40
2025-10-19 23:29:30
栏目: 智能运维

CentOS防火墙设置技巧(基于firewalld)

1. 安装与启动firewalld

CentOS 7及以上版本默认使用firewalld作为防火墙管理工具。若未安装,可通过以下命令安装:

sudo yum install firewalld -y

安装完成后,启动服务并设置开机自启:

sudo systemctl start firewalld
sudo systemctl enable firewalld

验证状态:

sudo firewall-cmd --state  # 显示"running"表示运行中

2. 查看防火墙状态与规则

3. 管理端口规则(开放/关闭)

开放端口(永久生效)

使用--permanent参数确保重启后规则仍有效,格式为:

sudo firewall-cmd --permanent --zone=<区域> --add-port=<端口号>/<协议>

示例(开放HTTP端口80/tcp):

sudo firewall-cmd --permanent --zone=public --add-port=80/tcp

应用更改:

sudo firewall-cmd --reload

关闭端口(永久生效)

sudo firewall-cmd --permanent --zone=<区域> --remove-port=<端口号>/<协议>

示例(关闭HTTP端口80/tcp):

sudo firewall-cmd --permanent --zone=public --remove-port=80/tcp

应用更改:

sudo firewall-cmd --reload

临时开放/关闭端口(当前会话有效)

若无需永久生效,可省略--permanent参数:

# 临时开放
sudo firewall-cmd --zone=public --add-port=80/tcp
# 临时关闭
sudo firewall-cmd --zone=public --remove-port=80/tcp

无需重载,立即生效。

4. 配置区域策略

firewalld通过**区域(Zone)**划分网络信任级别,默认区域为public(公共网络,严格限制)。可根据需求修改:

5. 使用rich规则实现精细控制

rich规则支持基于IP地址、协议、端口、动作的复杂过滤,例如:

应用更改后,需重载配置:

sudo firewall-cmd --reload

6. 管理服务而非单独端口

firewalld内置了常见服务(如HTTP、HTTPS、SSH)的规则,直接开放服务更便捷:

应用更改:

sudo firewall-cmd --reload

这种方式可自动处理服务的端口和协议,避免手动输入端口号。

7. 日志记录与监控

启用防火墙日志,便于排查问题和监控异常:

sudo firewall-cmd --permanent --zone=<区域> --add-log-prefix="Firewall: "

示例(为public区域启用日志):

sudo firewall-cmd --permanent --zone=public --add-log-prefix="Firewall: "

应用更改:

sudo firewall-cmd --reload

日志默认存储在/var/log/messages,可通过以下命令实时查看:

sudo tail -f /var/log/messages | grep Firewalld

8. 结合SELinux强化安全

SELinux(Security-Enhanced Linux)与firewalld配合,提供更细粒度的访问控制:

9. 最佳实践

0
看了该问题的人还看了