我有一个服务器,它不允许从外部源连接到 mysql - 我所有的数据库和连接都发生在本地主机上。iptables 的默认策略是删除我未指定的任何端口的连接(目前我的 iptable 规则中没有指定端口 3306,因此所有与该端口的连接都将被删除)。
很好,但现在我想连接到位于 Amazon RDS 外部的 mysql 数据库。
3306端口可以对外开放如下:
iptables -t filter -A INPUT -p tcp --sport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
这允许我连接到 Amazon RDS 上的数据库,但它也允许远程连接到我服务器上的数据库。
我需要做什么才能让我的服务器连接到 Amazon 上的数据库,但限制到我服务器上的数据库的外部连接?
另请记住,我相信我的 Amazon RDS 实例的 IP 地址可能会定期更改。
Mad*_*ter 19
利用状态引擎:
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
或在更高版本的 iptables 中
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
这正是状态引擎存在的目的:允许满足各种标准(例如,协议、源端口)但也是现有连接的一部分(因为它定义了connection)的流量。结果是TCP SYN,从本地临时端口到目标端口 3306 上特定外部 IP 地址的传出数据包将为该特定 IP 地址和端口号组合创建状态表条目,并且仅返回具有相同组合的流量地址和端口将被允许通过,并且仅在该连接的持续时间内。
| 归档时间: |
|
| 查看次数: |
10833 次 |
| 最近记录: |