使用firewalld允许特定主机提供服务

使用firewalld允许特定主机提供服务

介绍

在我的数据库服务器 (CentOS 7) 上,我想允许port 3306从特定 Web 前端 (在我的示例中10.10.40.610.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

相关内容