目前,我正在尝试从 telnet 客户端运行 ftp 命令。我成功了,,,USER
并且PASS
当尝试vsftp 服务器抛出异常时。我遵循 RFC 959 中指定的语法PASV
LIST
PORT
500 Illegal PORT command
数据端口(端口)
参数是数据连接中使用的数据端口的 HOST-PORT 规范。用户和服务器数据端口都有默认值,一般情况下不需要该命令及其回复。如果使用此命令,则参数是 32 位互联网主机地址和 16 位 TCP 端口地址的串联。该地址信息被分成 8 位字段,每个字段的值以十进制数(以字符串表示形式)传输。字段之间用逗号分隔。端口命令是:
端口 h1,h2,h3,h4,p1,p2
其中 h1 是互联网主机地址的高 8 位。
我尝试使用命令检查是否是与vsftpd
配置文件相关的问题ftp
。关闭被动模式后工作正常。那么为什么当我从 telnet 客户端运行时它会抛出错误?下面我附上了会话的屏幕截图telnet
,以及nc
我试图监听数据连接的会话。
答案1
在过去,当世界还年轻的时候,翼手龙仍然在天空中飞翔,一台能够连接到 IP 网络的计算机要花费 10 万美元(这些都是真正的美元),并且这些计算机的大多数系统管理员在网络上互相认识。根据名字,决定将 65535 个 TCP 端口(或者是 65536)分为两组,并使 Unix 内核将对 1024 以下端口的访问限制为“root”。众所周知的港口都分配在这个地区。
如果您看到来自此类端口的传入连接,您可以信任它,因为您知道迪克、约翰或简不会允许他们的计算机被黑客攻击。同样,只有您计算机上受信任的程序才能打开此类端口。
当然,现在您可以用大约 3 品脱啤酒(例如 Raspberry PI)或更少的价格购买一台计算机,但这不再是事实。
因此,OP 提出的第一个问题是为什么他收到“无效端口”消息,这是因为守护进程反对端口号 100(一个保留端口)。
评论中的后续问题是为什么反对。这里的答案有点模糊。如果您要求系统发送 fifo 的内容,那么您几乎可以在任何时间发送任意字节序列。正如 @AB 所示,这允许您使用 FTPD 作为攻击的一部分。