首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FTP活动模式和具有专用寻址(AWS)的NAT

FTP活动模式和具有专用寻址(AWS)的NAT
EN

Server Fault用户
提问于 2017-12-28 22:45:27
回答 2查看 2.7K关注 0票数 1

这与关于GCP的这个问题非常相关,但是在AWS上,并且试图用不同的方法来解决它。

我有一个FTP客户端试图以ftp活动模式连接到Internet上的一些ftp服务器。FTP客户端有私有地址,它位于NAT实例服务器(而不是NAT网关)后面

这个NAT服务器也有私有地址,并且它本身就在VPC Internet GW的后面.

图表:

FTP客户端(10.60.0.0/24) -> NAT服务器(10.254.254.0/24) -> IGW -> Internet ->防火墙/NAT-> FTP服务器

NAT服务器是AWS NAT Linux (内核4.9),它打开了伪装。

对于活动-FTP(端口模式),这是不工作的.

我已经激活了CT助手(nf_nat_ftp)及其触发iptables规则:

代码语言:javascript
复制
iptables -A PREROUTING -t raw -p tcp --sport 1024: --dport 21 -j CT --helper ftp

我可以看到,"PORT“命令正被正确地从FTP客户端的私有IP地址转换为NAT服务器的私有IP。

不幸的是,这还不够,因为FTP服务器正在接收带有私有地址( NAT服务器之一)的FTP "PORT“命令。

因此,从ftp服务器启动的ftp数据连接当然永远不会恢复。

至少现在,我不能“替换”ftp客户端(它是遗留应用程序的一部分)。

有没有办法在端口命令中“注入”公共IP?一些想法出现在我的脑海中,但我找不到证据证明它们是现实的还是我在浪费时间:

  1. 在nat服务器上创建一个带有公共ip地址的“假”接口,并有选择地启用/禁用CT助手来修改PORT命令。不过,我很难找到正确的路线(更别说说服自己了,值得一试)。
  2. 用硬编码的公共IP修改nf_nat_ftp助手模块(所以!)
  3. 修改ftp客户端(它是Windows机器)上的端口命令,不知道是否存在驱动程序/工具
  4. 粗暴地修补ftp客户端(可能是最现实的方式.?)

关于选项3:我尝试了网易,它实际上可以更改端口命令,但它似乎给ftp客户端的nat带来了麻烦!:(

当然,其他解决方案是受欢迎的!

谢谢。

EN

回答 2

Server Fault用户

发布于 2017-12-29 11:59:53

试着回答我自己关于有限用例的问题

限制是:在nat服务器后面只有一个处于活动模式的ftp客户端(它不能用于伪装)。

  • ftp客户端: 10.60.10.11
  • nat服务器: 10.254.254.203
  • 公共知识产权: 1.2.3.4

首先,启动nat服务器本地端口21上的网络,将包含“端口10,60,10,11”的所有数据包转换为“端口1,2,3,4”(从而保持端口号不变):

代码语言:javascript
复制
./netsed tcp 21 0 0 s/PORT%2010,60,10,11,/PORT%201,2,3,4,

其次,将流量从ftp客户端重定向到netsed:

代码语言:javascript
复制
iptables -t nat -A PREROUTING -p tcp --dport 21 -j REDIRECT --to 21

这将使ftp服务器“高兴”,并将有效地尝试打开从端口20到公共IP的新连接。IGW会通过,但是NAT服务器不知道如何处理连接(它不在CT中,而是一个新的连接)。

因此,尽管它可能很难看,但现在将所有传入的流量从端口20转发到内部FTP客户端:

代码语言:javascript
复制
iptables -t nat -A PREROUTING -p tcp -d 10.254.254.203 --sport 20 --dport 1024:65535 -j DNAT --to-destination 10.60.10.11:1024-65535

,这起作用了!!

但是,作为黑客的一部分,它似乎仅限于1 ftp客户端.

感谢@Steffen指出CT状态没有被设定。

票数 1
EN

Server Fault用户

发布于 2017-12-29 05:20:08

有没有办法在端口命令中“注入”公共IP?

即使这是可能的,这也于事无补。虽然服务器可能会接受带有公共IP地址的PORT命令,但它将无法使用此IP地址和端口连接回FTP客户端,因为IGW上没有匹配的NAT状态。

如果您有两个NAT(在您的情况下是NAT服务器和IGW),那么这两个都需要在PORT命令中转换地址,并创建一个状态来将连接从服务器传递到新设置的IP、端口到IP,以及从原始端口命令传递端口。

我真的建议远离FTP,使用不像FTP那样需要动态数据连接的替代方案。只有当NAT网关无法翻译端口/PASV时,这种动态连接才会给您带来问题--可能是因为缺少FTP助手,或者是因为您正在使用FTPS (即FTP与TLS),其中NAT网关甚至无法看到原始IP、端口,并且也无法根据需要修改控制连接。取而代之的是使用SFTP (FTP over SSH)之类的协议,因为它们只使用一个TCP连接,所以NAT没有问题。

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

https://serverfault.com/questions/889934

复制
相关文章

相似问题

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