IPTablesconfiguration允许所有连接,只有closures/拒绝一次数据发送

我正在寻找build立我的IPTables防火墙的方式:

  • 任何新的connect()都被接受
  • 一旦收到数据:
    • 如果目标端口在白名单上,请继续允许连接和任何RELATED连接
    • 否则,closures/重置连接

我环顾四周,甚至尝试了一些我自己的configuration,但是我对IPTables并不是很熟悉,也没有成功。 我的第一次尝试是这样的:

 iptables -F iptables -A INPUT -I lo -j ACCEPT iptables -A INPUT -m state --state NEW -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT //example of allowed port iptables -A INPUT -m state --state ESTABLISHED,RELATED -j DROP iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT 

据我所知应执行以下操作:

  • 接受所有本地stream量
  • 接受所有NEW连接
  • 接受所有的stream量到22港口
  • 删除所有不受端口22规则处理的stream量
  • (为INPUTFORWARDOUTPUT链设置默认规则)

但是,到端口22的connect()connect()上仍然失败。 理想情况下,与22通信应该没有阻碍,并且connect()到任何其他端口成功,但是一旦send(...)被调用,连接就closures。

一旦你有一个服务在有关的端口监听,你的设置可能会做你想做 。 Iptables是一个数据包filter,而不是一个连接端点。