我需要为 mongodb 数据库服务器设置 iptables,以便它只允许两种类型的 INPUT 连接:
- 从我们的主要 web 应用程序连接到端口 27017(monogdb 的默认端口)
- 来自我主网络的一个 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