问题:
我有一种情况,IPSEC服务器和目标服务器(称为http服务器)碰巧是同一台机器,我只需要允许来自IPSEC服务器的stream量访问我的应用程序正在运行的端口,并阻止其他人在那个港口
更多细节:
现在,我已经在iptables中添加了规则来接受端口XXXX上的所有stream量:
-A INPUT -p tcp –dport XXXX -s 0.0.0.0/0 -j ACCEPT
当这件事情发生时,XXXX港口向世界开放,这是危险的。
任何想法如何通过ipsecconfiguration或iptables规则或以任何其他方式来实现目标,只有来自ipsec端点的stream量才能访问XXXX?
在我心中几乎没有想法:
我已经尝试了解决scheme@ 与iptables,匹配数据包通过IPSEC隧道到达,但它不工作,因为我想上述政策适用于数据包到达IPSEC,而不是离开IPSEC的数据包?
让我知道如果我错过了任何细节或任何额外的信息,你需要任何帮助/build议将不胜感激。
IPSec强制保护来自另一端子网的任何stream量。 例如,如果使用openswan,则rightsubnets(有时是leftsubnets)将指示来自另一端的任何通信,以便您只允许来自这些子网的通信。
如果你的RW客户端连接了不同的IP地址,那么可以使用ppp的插件,比如ip-up和ip-down脚本,你可以用它来允许或禁止某些IP地址的某些端口。
感谢您的build议。 事实certificate,这与IPSEC VPN如何在iOS(苹果)设备上工作有关。
在iOS设备上,打开ipsec VPN时,在路由表中自动添加规则,将IPSEC服务器/对等方通信直接发送到网关以避免环路(数据包再次encryption),其余通信首先发送到安全通道得到encryption,然后到ipsec服务器。
在我的情况下,IPSEC服务器和目标服务器(目标服务器)恰好是同一台机器(parsing为相同的IP地址),所以当stream量发送到目标服务器(端口XXXX),而不是获取encryption在IPSEC隧道中,由于特殊的规则而直接发送到服务器,没有被封装在IPsec报文中。 所以当这些数据包到达服务器时,它不会被识别为ipsec数据包,这是问题。
由于我无法避免iOS客户端将stream量发送到端口XXXX(尽pipe没有ipsec封装),我必须find一种方法,让只有该设备才能访问端口XXXX而不是全世界。 所以我最终做的是在ipsec服务器上拥有自己的ipsec updown脚本,dynamic地添加一条INPUT链规则,允许从已build立的客户端的IP地址到vpn上的端口XXXX的连接,并删除vpn disconnect上的规则。 这样只有VPN连接的客户端才能访问端口XXXX。