IPTables 配置允许所有连接,仅在发送数据后关闭/拒绝

IPTables 配置允许所有连接,仅在发送数据后关闭/拒绝

我希望以这样的方式设置我的 IPTables 防火墙:

  • connect()接受任何新内容
  • 一旦收到数据:
    • 如果目标端口在白名单中,则继续允许该连接和任何RELATED连接
    • 否则,关闭/重置连接

我四处寻找,甚至尝试了一些自己的配置,但我对 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

据我了解,应该执行以下操作:

  • 接受所有本地主机流量
  • 接受所有NEW连接
  • 接受到端口的所有流量22
  • 丢弃所有未经端口22规则处理的流量
  • INPUT(为、FORWARDOUTPUT链设置默认规则)

但是,与 的端口 22 的连接仍然会失败connect()。理想情况下,与 的通信22应该畅通无阻,并且与任何其他端口的连接都会成功,但是一旦调用connect(),连接就会关闭。send(...)

答案1

你的设置可能会按照你的意愿进行,一旦你有一个服务在相关端口上监听。Iptables 是一个数据包过滤器,而不是连接端点。

相关内容