HTTP/SSH 请求未通过某些 iptables 规则

HTTP/SSH 请求未通过某些 iptables 规则

我有一个作业要完成,使用 iptables 创建一组规则。使用 marionnet,我们模拟以下网络:

网络图

我们在这里想要的是避免“intrus”能够与 LAN 交互,“intrus”所连接的网络位于接口 eth2 上,我们假设任何其他接口都是我们想要阻止“intrus”与之交互的 LAN。我花了几个小时试图弄清楚为什么我的规则集不符合我们的要求,并尝试了不同的命令或方法,但都没有奏效,所以我想我误解了一些东西。m1 和“intrus”正在运行 apache 服务器,m2 正在运行 ssh

我们希望通过规则实现的 4 种行为如下:

  1. intrus无法访问私有网络
  2. 连接到的其中一个专用网络中的任何计算机routeur都可以访问intrus的 Web 服务器
  3. 所有请求intrus都将被伪装成来自routeur
  4. intrus可以成为 m1 的 apache 服务器和 m2 的 ssh 的客户端,但同时认为这routeur是这些服务的主机,意味着这routeur是他唯一的服务提供商。

以下是我按照添加顺序列出的规则:

  1. iptables -A FORWARD -i eth2 -m state --state NEW,RELATED -j DROP
  2. iptables -A FORWARD -o eth2 -p tcp --dport 80 -m state --state NEW,RELATED -j ACCEPT
  3. iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to 145.12.0.53
  4. 本组:

    iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1
    iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 22 -j DNAT --to-destination 192.168.1.2
    

如果我记得没错的话,顺序就像一堆,先到后到,这就是为什么规则 (1) 排在第一位。设置后,局域网可以访问intrus的 apache 服务器,但intrus通过 调用时无法访问局域网中的服务routeur。如果我将第一条规则更改为简单规则,iptables -A FORWARD -i eth2 -j DROP 则 m1 无法访问intrus的 Web 服务器,我甚至不明白这两个版本为何如此不同。我的猜测是,那些返回信号未被任何规则收集,并被第一条规则破坏,但我不明白为什么。

因此,经过几个小时的独自搜索,我请求你的帮助,如果有人能至少向我解释一些我似乎没有理解正确的地方,我提前表示感谢

相关内容