介绍
在我的数据库服务器 (CentOS 7) 上,我想允许port 3306
从特定 Web 前端 (在我的示例中10.10.40.6
为10.10.40.7
) 访问 (MySQL)。最重要的是,我想允许port 22
从所有主机访问 (SSH)。我通过编辑 XML 区域文件来管理我的配置/etc/firewalld/zones/
,这样我就可以轻松地将它们分发到不同的系统。
配置
这是我的区域配置:
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>DB Host</short>
<description>Communication to SSH and MySQL.</description>
<interface name="eth0"/>
<rule family="ipv4">
<port port="22" protocol="tcp"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="10.10.40.6,10.10.40.7"/>
<port port="3306" protocol="tcp"/>
<accept/>
</rule>
</zone>
问题
当我从我的一个 Web 前端对机器进行端口扫描时,我可以看到该端口port 3306
已打开,但port 22
仍然保持关闭状态:
Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-05 16:21 CEST
Nmap scan report for 10.10.40.5
Host is up (0.00026s latency).
PORT STATE SERVICE
22/tcp filtered ssh
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds
问题
这里的正确配置是什么?
请注意,我想限制port 3306
到特定主机,同时port 22
对所有主机保持开放。
答案1
你可以使用这样的方法:
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 3306 -s 192.168.1.22 -j ACCEPT