Linux - firewall

发布于:2025-06-27 ⋅ 阅读:(18) ⋅ 点赞:(0)

使用 firewall-cmd 管理 Linux 防火墙的实用指南

在 Linux 系统中,尤其是基于 Red Hat 的发行版(如 CentOS、Fedora、RHEL),firewalld 是默认的动态防火墙管理工具。它通过 firewall-cmd 命令提供了一个灵活的方式来管理网络规则和端口访问控制。

本文将介绍如何使用 firewall-cmd 来查看和配置防火墙规则,并结合 MongoDB 和 SSH 服务进行示例说明。


🧾 一、查询当前 SSH 的端口

SSH 服务通常监听 TCP 22 端口,但为了安全考虑,有时我们会修改其默认端口。以下是查询当前 SSH 端口的方法:

# 查看 SSH 配置文件中的 Port 设置
grep ^Port /etc/ssh/sshd_config

# 查看实际监听的 SSH 端口
ss -tlnp | grep ssh

🔐 二、放行 SSH 端口(所有 IP 可访问)

如果你希望所有 IP 地址都能通过 SSH 访问服务器,可以添加如下规则:

sudo firewall-cmd --permanent --add-port=22/tcp

✅ 注意:请确保你已确认新的 SSH 端口并测试连接成功后再关闭默认 22 端口。


🎯 三、允许某个 IP 访问特定端口(如 MongoDB 的 27017)

若你想只允许某个特定 IP(例如 10.3.69.6)访问 MongoDB 的 27017 端口,可以使用 rich rule:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.3.69.6" port protocol="tcp" port="27017" accept'

🌐 四、允许某个网段访问特定端口

如果你想让整个子网(如 10.3.69.0/24)都能访问 27017 端口,只需修改源地址为 CIDR 格式:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.3.69.0/24" port protocol="tcp" port="27017" accept'

📦 五、允许某个 IP 访问一段端口范围

如果 MongoDB 实例使用了多个端口(比如 27000-27017),你可以这样设置:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.3.69.6" port protocol="tcp" port="27000-27017" accept'

🗑️ 六、删除某条防火墙规则

当你需要移除某条规则时,可以使用以下命令:

sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="10.3.69.6" port protocol="tcp" port="27017" accept'

⚠️ 注意:必须精确匹配原始规则字符串才能正确删除。


💡 七、重新加载防火墙规则

每次对规则进行修改后,都需要重载防火墙以使更改生效:

sudo firewall-cmd --reload

📋 八、查看当前防火墙规则

要查看当前生效的所有规则,可以使用:

sudo firewall-cmd --list-all

或者只查看 rich rules:

sudo firewall-cmd --list-rich-rules

📝 总结

操作 命令
查询 SSH 端口 grep ^Port /etc/ssh/sshd_configss -tlnp | grep ssh
查询当前默认域 firewall-cmd --get-default-zone
更改当前默认域 firewall-cmd --set-default-zone=public
放行所有 IP 访问某端口 --add-port=<port>/<proto>
放行指定 IP 访问某端口 --add-rich-rule='rule ...'
放行指定 IP 访问端口范围 port="start-end"
删除规则 --remove-rich-rule='...'
重载规则 --reload
查看规则 --list-all--list-rich-rules


网站公告

今日签到

点亮在社区的每一天
去签到