如何使用 iptables 接受两种不同类型的网络连接

如何使用 iptables 接受两种不同类型的网络连接

我需要为 mongodb 数据库服务器设置 iptables,以便它只允许两种类型的 INPUT 连接:

  1. 从我们的主要 web 应用程序连接到端口 27017(monogdb 的默认端口)
  2. 来自我主网络的一个 ssh 连接,该连接具有与我们的 web 应用程序不同的 IP 地址

问题是这些规则需要被链接起来。

以下是我尝试过的:

iptables -A INPUT -p tcp --dport ssh -j ACCEPT # allows all connections via ssh (port 22)

iptables -A INPUT -s web-app-IP -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -d web-app-IP -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

iptables -P INPUT DROP
iptables -P OUTPUT DROP

第一行允许端口 22 上的所有传入连接,而第二行和第三行仅允许从 web-app-IP 到 mongodb 服务器的所有连接。

似乎第一行被第二行和第三行阻止了。iptables 是否有逻辑或运算符?如果没有,我该如何设置规则以允许这两种类型的连接?

答案1

您不允许从 ssh 建立 ESTABLISHED 连接。我会选择稍微简单一点的方法:

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -s web-app-IP -p tcp --destination-port 27017 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

相关内容