firewalld通过“区域”实现linux网络隔离。1. 区域是预设安全策略的规则集合,代表不同信任级别;2. 可将接口或源ip分配至特定区域,绑定其流量与规则;3. 每个区域可定义允许的服务和端口,限制未授权访问;4. 实战步骤包括查看当前配置、分配接口/源ip到区域、添加/移除服务/端口、创建自定义区域;5. 高级功能如富规则、直接规则、伪装、端口转发等增强网络安全。
Linux网络隔离,尤其是基于
firewalld
实现Linux网络隔离的核心在于合理利用
firewalld
firewalld
iptables
说实话,刚接触
firewalld
iptables
firewalld
为什么它能实现网络隔离?关键在于它的“绑定”能力。你可以把一个网络接口(比如你的
eth0
eth1
举个例子,
firewalld
public
internal
trusted
drop
public
internal
drop
通过这种方式,你不需要针对每个端口或每个IP单独写规则,而是把一类流量归属到一个区域,然后一次性定义这个区域的规则。这种抽象和分组,让网络策略的管理变得异常清晰,也大大降低了配置错误的风险。比如,你有一个web服务器,同时对外提供服务,又需要访问内部数据库。你可以把对外服务的接口放到
public
internal
实际操作起来,
firewalld
--permanent
--reload
--permanent
--permanent
--reload
以下是一些实战步骤:
查看当前区域及接口分配: 这是第一步,先搞清楚你的系统现在是个什么状态。
firewall-cmd --get-active-zones
这条命令会告诉你哪些区域是活跃的,以及每个区域下有哪些网络接口。比如你可能会看到
public
eth0
查看所有可用区域及其默认配置: 了解
firewalld
firewall-cmd --get-zones firewall-cmd --zone=public --list-all # 查看public区域的详细配置
将接口分配到特定区域: 这是实现隔离的关键一步。假设你的
eth1
internal
firewall-cmd --zone=internal --add-interface=eth1 --permanent firewall-cmd --reload
注意,
--permanent
--reload
firewalld
--permanent
将源IP地址分配到特定区域: 有时候你可能不想把整个接口都放到某个区域,而是希望某个特定的IP地址或IP段的流量走某个区域的规则。
firewall-cmd --zone=trusted --add-source=192.168.1.0/24 --permanent firewall-cmd --reload
这样,来自
192.168.1.0/24
trusted
在区域中添加或移除服务/端口: 一旦接口或源被分配到区域,你就可以针对该区域开放或关闭服务。
firewall-cmd --zone=public --add-service=http --permanent # 允许public区域的HTTP服务 firewall-cmd --zone=public --add-port=8080/tcp --permanent # 允许public区域的8080/tcp端口 firewall-cmd --reload firewall-cmd --zone=internal --remove-service=ssh --permanent # 从internal区域移除SSH服务 firewall-cmd --reload
创建自定义区域(可选但推荐): 如果默认区域不满足你的需求,你可以创建自己的区域。这在复杂的网络环境中非常有用。
firewall-cmd --new-zone=my-custom-zone --permanent firewall-cmd --reload firewall-cmd --zone=my-custom-zone --add-service=mysql --permanent firewall-cmd --zone=my-custom-zone --add-port=3307/tcp --permanent firewall-cmd --zone=my-custom-zone --add-interface=eth2 --permanent firewall-cmd --reload
创建自定义区域后,别忘了给它添加规则,并将其分配给接口或源。
配置过程中,多用
--list-all
--list-all-zones
firewalld
firewalld
富规则(Rich Rules): 这是我个人认为
firewalld
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="1.2.3.4" port port="22" protocol="tcp" accept' --permanent
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="5.6.7.8" service name="ssh" reject' --permanent
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" forward-port port="80" protocol="tcp" to-port="8080" to-addr="192.168.1.100"' --permanent
iptables
直接规则(Direct Rules): 虽然
firewalld
iptables
iptables
firewalld
iptables
ip6tables
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 25 -j DROP --permanent firewall-cmd --reload
这就像是
firewalld
firewalld
服务和端口集:
firewalld
http
ssh
mysql
firewall-cmd --permanent --new-service=my-web-app firewall-cmd --permanent --service=my-web-app --add-port=8080/tcp firewall-cmd --permanent --service=my-web-app --add-port=8443/tcp firewall-cmd --reload firewall-cmd --zone=public --add-service=my-web-app --permanent firewall-cmd --reload
这样,管理多个端口的服务就更方便了。
伪装(Masquerading)和端口转发:
firewalld
firewall-cmd --zone=public --add-masquerade --permanent # 开启伪装 firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.10 --permanent # 端口转发 firewall-cmd --reload
紧急模式(Panic Mode): 这是一个非常极端的安全措施。当系统遭受严重攻击,或者你怀疑网络被入侵时,可以立即启用紧急模式。
firewall-cmd --panic-on
这会立即阻止所有网络流量,除了那些已经建立的连接。它就像一个紧急断路器,在最危急的时刻保护系统。当然,使用后别忘了
firewall-cmd --panic-off
这些高级特性,结合区域管理,让
firewalld
以上就是如何实现Linux网络隔离 firewalld区域配置详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号