如何使用iptables接受两种不同types的networking连接

我需要为mongodb数据库服务器设置iptables,这样它只允许两种types的INPUT连接:

  1. 一个连接到端口27017,monogdb的默认端口,从我们的主要networking应用程序
  2. 从我的主要networking,其中有一个不同的IP地址从我们的networking应用程序的一个SSH连接

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

这是我的尝试:

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服务器之间的所有连接。

看来第一条线被第二条线和第三条线堵塞了。 有一个逻辑OR运算符的iptables? 如果不是,我如何设置规则以允许这两种types的连接?

您不允许通过sshbuild立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