背景:
为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制。具体来说,就是要确保只有指定的内部ip地址能够访问这些服务。
解决方案:使用firewalld防火墙规则
有两种方式可以设置这些规则:
1. 通过修改xml配置文件
首先,通过vim
编辑器打开/etc/firewalld/zones/public.xml文件,然后添加以下示例规则:
<!-- 允许来自特定内部ip(如192.168.20.86/32)访问本服务器的mysql服务(默认端口3306) --> <rule family="ipv4"> <source address="192.168.20.86/32"/> <port protocol="tcp" port="3306"/> <accept/> </rule>
解释:
<rule>
:定义了一条规则。- 设置规则的
family
属性为ipv4
。 <source>
:定义了允许的ip地址。在这个例子中,192.168.20.86/32
表示仅允许此ip访问。<port>
:确定了目标端口和协议类型。这里指定了tcp协议下的mysql默认端口3306
。<accept/>
意味着当规则匹配时,流量将被允许通过。
2. 或者使用命令行直接添加规则
# 添加规则 firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.20.86/32" accept' # 移除规则 firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.20.86/32" accept'
注意:每次修改规则后都需要运行firewall-cmd --reload
来重新加载防火墙配置。
验证方法
在其他服务器上,我们可以通过telnet
命令进行验证:
telnet 192.168.20.86 3306
深度了解防火墙逻辑
防火墙工作时会依次检查每条规则。首先匹配源ip,然后是目标端口。若两者都匹配,则执行接受动作,允许流量通过。反之,则继续检查下一条规则,直至找到匹配条目或由默认策略处理。
应用场景与扩展
此方法非常适合用于加强数据库的安全控制,例如限制仅有特定ip能够连接mysql服务器3306端口。此外,在进行网络分隔时也非常有用,确保只有受信任的设备或服务才能相互通信。
最后,在需要拒绝特定ip访问时,可以使用 <reject/>
或 <drop/>
动作:
<rule family="ipv4"> <source address="192.168.20.86/32"/> <port protocol="tcp" port="3306"/> <reject/> </rule>
<reject/>
会向源头发送拒绝通知,而 <drop/>
则悄无声息地丢弃流量,适用于希望不泄露系统信息的场景。
到此这篇关于linux限制ip访问的解决方案的文章就介绍到这了,更多相关linux限制ip访问内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论