我想为 MySql 服务器添加一个“小”安全性。
我想保留开放端口 330,但仅用于内部目的(本地主机),并打开另一个重定向到 3306 的端口(比如 12345)。
因此,我需要添加一个 iptable 路由,该路由仅在 eth1 接口上显示“来自 12345 的所有传入流量都重定向到 3306,但从直接外部传入流量中关闭 3306”。
如何关闭 3306 上的外部传入流量?
如果我完全理解您的所有要求,请执行以下操作:
# assuming your network interface is named `eth1` as per your OP example
iptables -t raw -A PREROUTING -i eth1 -p tcp --dport 3306 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 12345 -j REDIRECT --to-port 3306
Run Code Online (Sandbox Code Playgroud)
第一个命令禁止从eth1
tcp 端口 3306传入的连接。
第二个命令将指向本地端口 12345 的任何传入连接重定向到本地端口 3306
如果您有多个接口都命名为 like eth0
、eth1
、eth2
等,并且您想全部阻止它们,则可以通过eth+
在上面的第一个命令中指定(注意加号)来获得它,否则有选择地只阻止特定的接口'需要在每个接口上使用第一个命令来阻止。
上面的两个命令是实现您请求的行为所必需的,根据您的整体需求可能就足够了。
但是,为了获得更一致的体验,我建议使用额外的可选配置:
iptables -t nat -A OUTPUT -o lo -p tcp --dport 12345 -j REDIRECT --to-port 3306
Run Code Online (Sandbox Code Playgroud)
这会将本地发起的连接重定向到本地端口 12345 到本地端口 3306,以便您也可以从同一台本地机器通过端口 12345 连接到您的 mysql。
最后,作为一个重要的旁注,请记住,命令-A
选项会附加规则那些已经存在的规则,因此它们优先于附加的新规则,从而干扰它们。iptables
因此,如果您尝试使用任何 iptables 命令,您可能需要在某个时候清除涉及的表,您可以使用-F
选项来完成,如下所示:
iptables -t raw -F PREROUTING
iptables -t nat -F PREROUTING
# and possibly also
iptables -t nat -F OUTPUT
# if you also used the additional advised commmand
Run Code Online (Sandbox Code Playgroud)
另一方面,还请记住,这些命令会清除这些表中存在的所有规则,包括由于其他防火墙的存在而可能存在的规则。有更细粒度的命令可以有选择地删除特定规则,但这些取决于您的整体 iptables 设置,如果它非常复杂,超出了这里看到的两个简单规则。
所以你应该总是首先看到你的初始配置是什么,你可以使用-L
选项来做到iptables
这一点,即像这样:
iptables -t raw -nL PREROUTING
iptables -t nat -nL PREROUTING
# and possibly also
iptables -t nat -nL OUTPUT
# if you also used the additional advised commmand
Run Code Online (Sandbox Code Playgroud)
当然,您也可以随时使用这些来在添加规则时查看表的当前状况。然后,您可能希望添加v
选项(如 中所示-nvL
)以查看规则的计数器,因为它们随着时间的推移匹配(或不匹配)网络流量。
归档时间: |
|
查看次数: |
1655 次 |
最近记录: |