在我的数据库服务器(CentOS 7)上,我想允许从特定的Web前端访问port 3306 (MySQL)(在我的例子中是10.10.40.6和10.10.40.7 )。 最重要的是,我想允许从所有主机访问port 22 (SSH)。 我通过编辑/etc/firewalld/zones/的XML区域文件来pipe理我的configuration,因此我可以轻松地将它们分发到不同的系统。
这是我的区域configuration:
<?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仍然是closures的:
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
这里的configuration是什么?
请注意,我想限制port 3306到特定的主机,同时保持port 22为所有主机打开。
你可以使用这样的东西:
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