首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只允许IPSEC向端口输出流量(使用IPTABLE?)

只允许IPSEC向端口输出流量(使用IPTABLE?)
EN

Server Fault用户
提问于 2014-09-18 04:36:50
回答 3查看 2.5K关注 0票数 1

问题:

在这种情况下,IPSEC服务器和目标服务器(例如http服务器)恰好是同一台机器,我只需要允许通过IPSEC服务器的流量访问我的应用程序正在运行的端口,并阻止该端口上的其他所有人。

更多详情:

  • 安装程序看起来如下:(主机A) <-IPSEC VPN隧道->(主机B (Linux),应用程序在端口XXXX上运行)。
  • 没有额外的IPSEC网关或防火墙涉及。
  • 主机B具有公共ip地址(静态)。
  • 主机A启动连接并建立VPN隧道。
  • 当我记录ipsec解密后到达端口XXXX的通信量时,它看起来像任何正常的数据包,src设置为“主机A的ip地址”,dst设置为“主机B的ip地址”,而且由于数据包是针对主机B的,ipsec处理后,POSTROUTING规则不适用于它。

现在,我在iptables中添加了接受XXXX端口上所有通信量的规则:

-A输入-p tcp --dport XXXX -s 0.0.0.0/0 -j ACCEPT

虽然这会让事情发生变化,但XXXX港口对世界开放,这是危险的。

是否知道如何通过ipsec配置或iptables规则来实现只有来自ipsec端点的流量才能访问XXXX的目标?

我脑子里没有几个想法:

  • 是否可以识别离开IPSEC端点的TCP数据包,并且在iptables中有一条规则只允许这些数据包到达端口XXXX?
  • 在ipsec处理之后,是否可能有一些iptable/ipsec配置来跳过输入规则?通过这种方式,我可以使用iptable规则将所有数据包丢弃到XXXX端口,并且ipsec中的数据包不会受到影响。
  • 是否可以在主机B上创建虚拟接口并路由IPSEC通信,并允许仅从该虚拟接口访问端口XXXX?
  • 最坏的情况是,我将在不同的机器上运行ipsec服务器(主机B)和应用服务器(主机C),并且只允许从主机B向主机C上的端口XXXX传输。

我尝试过@使用iptables,匹配通过IPSEC隧道到达的数据包.的解决方案,但它没有起作用,因为我想上述策略适用于到达IPSEC的数据包,而不是适用于离开IPSEC的数据包?

如果遗漏了您需要的任何细节或其他信息,请告诉我,任何帮助/建议都将不胜感激。

EN

回答 3

Server Fault用户

发布于 2014-09-30 11:44:59

谢谢你的建议。事实证明,这与IPSEC如何在苹果( iOS )设备上工作有关。

在iOS设备上,在打开ipsec VPN时,在路由表中自动添加规则,将IPSEC服务器/对等通信直接发送到网关以避免循环(数据包再次加密),其余的流量首先发送到ipsec隧道进行加密,然后再发送到ipsec服务器。

在我的例子中,IPSEC服务器和目标服务器(其中的流量是目标服务器)碰巧是同一台机器(解析为同一个IP地址),所以当流量被发送到目标服务器(端口XXXX)时,它不是在IPSEC隧道中被加密,而是由于特殊规则而直接发送到服务器,而不是封装在ipsec数据包中。因此,当这些数据包到达服务器时,它没有被识别为ipsec数据包,这就是问题所在。

由于我无法避免iOS客户端将流量发送到端口XXXX (尽管没有ipsec封装),所以我不得不找到一种方法,只让该设备访问端口XXXX,而不是访问整个世界。因此,我最后所做的是在ipsec服务器上拥有自己的ipsec updown脚本,该脚本动态地添加一个输入链规则,以允许从已建立的客户端IP地址到vpn连接上的端口XXXX的通信量,并删除vpn断开的规则。这样,只有VPN连接的客户端才能访问端口XXXX。

票数 1
EN

Server Fault用户

发布于 2014-09-18 09:39:55

IPSec强制保护来自另一端子网的任何通信量。例如,如果您使用openswan,则右子网(有时是左子网)将指示来自另一端的任何通信,因此只能允许来自这些子网的通信。

如果您有从各种ip连接的RW客户端,则有ppp插件,例如IPs和IPs脚本,您可以使用这些插件来允许或不允许某些ip的某些端口。

票数 0
EN

Server Fault用户

发布于 2019-10-29 17:17:22

您需要将IPsec策略附加到套接字(困难)或全局。

IPsec在这里重复了防火墙逻辑的一部分,因为它允许您根据IP地址和端口匹配数据包,并查找所需的IPsec策略。

对于正常的VPN设置,策略通常适用于“从该子网到该子网的所有通信量”,但它们可以更细粒度。

代码语言:javascript
运行
复制
require all traffic to my IP address port 80 from that other IP address to be encrypted
deny all other traffic to my IP address port 80

没有安全关联的策略是可能的,在这种情况下,内核将咨询IKE守护进程来获得它。

如果客户端更改IP地址,则可以从IKE守护进程生成"require“策略,并且只能静态地配置”拒绝“策略,优先级低于生成的规则。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/629392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档