NO.2 FTP服务FTP即文件传输协议(File Transfer Protocol,FTP) ,通常被攻击者上传后门程序文件到主机,然后通过种种方式转移成为激活的后门。FTP的特性:促进文件(程序或数据)的共享、支持间接或隐式地使 ...
NO.2 FTP服务
FTP即文件传输协议(File Transfer Protocol,FTP) ,通常被攻击者上传后门程序文件到主机,然后通过种种方式转移成为激活的后门。
FTP的特性:促进文件(程序或数据)的共享、支持间接或隐式地使用远程计算机、帮助用户避开主机上不同的、可靠并有效地传输数据
FTP的包过滤方式:FTP使用两个独立的TCP连接(一个在服务器和客户程序之间传递命令和结果(通常称为命令通道),另一个用来传送真实的文件和目录列表(通常称为数据通道));多数FTP服务器和客户程序都支持 “反向方式”或“PASV方式”。
FTP的PORT方式:当FTP客户以PORT模式连接服务器时,他动态的选择一个端口号连接服务器的21端口,注意这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,保留给以后会用到这些端口的资源服务。当经过TCP的三次握手后,连接(控制信道)被建立现在用户要列出服务器上的目录结构(使用ls或dir命令),那么首先就要建立一个数据通道,因为只有数据通道才能传输目录和文件列表,此时用户会发出PORT指令告诉服务器连接自己的什么端口来建立一条数据通道(这个命令由控制信道发送给服务器),当服务器接到这一指令时,服务器会使用20端口连接用户在PORT指令中指定的端口号,用以发送目录的列表。
FTP的PASV方式:FTP客户以PASV模式连接服务器时,情况就有些不同了。在初始化连接这个过程即连接服务器这个过程和PORT模式是一样的,不同的是,当FTP客户发送ls、dir、get等这些要求数据返回的命令时,他不向服务器发送PORT指令而是发送PASV指令,在这个指令中,用户告诉服务器自己要连接服务器的某一个端口,如果这个服务器上的这个端口是空闲的可用的,那么服务器会返回ACK的确认信息,之后数据传输通道被建立并返回用户所要的信息(根据用户发送的指令,如ls、dir、get等);如果服务器的这个端口被另一个资源所使用,那么服务器返回UNACK的信息,那么这时,FTP客户会再次发送PASV命令,这也就是所谓的连接建立的协商过程。
我们区分一下PORT模式和PASV模式:
PORT模式:
当FTP客户以PORT模式连接服务器时,他动态的选择一个端口号(本次试验是6015)连接服务器的21端口,注意这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,保留给以后会用到这些端口的资源服务。当经过TCP的三次握手后,连接(控制信道)被建立。现在用户要列出服务器上的目录结构(使用ls或dir命令),那么首先就要建立一个数据通道,因为只有数据通道才能传输目录和文件列表,此时用户会发出PORT指令告诉服务器连接自己的什么端口来建立一条数据通道(这个命令由控制信道发送给服务器),当服务器接到这一指令时,服务器会使用20端口连接用户在PORT指令中指定的端口号,用以发送目录的列表。当完成这一操作时,FTP客户也许要下载一个文件,那么就会发出get指令,请注意,这时客户会再次发送PORT指令,告诉服务器连接他的哪个“新”端口,你可以先用netstat -na这个命令验证,上一次使用的6044已经处于TIME_WAIT状态。当这个新的数据传输通道建立后(在
微软的系统中,客户端通常会使用连续的端口,也就是说这一次客户端会用6045这个端口),就开始了文件传输的工作。
PASV模式:
然而,当FTP客户以PASV模式连接服务器时,情况就有些不同了。在初始化连接这个过程即连接服务器这个过程和PORT模式是一样的,不同的是,当FTP客户发送ls、dir、get等这些要求数据返回的命令时,他不向服务器发送PORT指令而是发送PASV指令,在这个指令中,用户告诉服务器自己要连接服务器的某一个端口,如果这个服务器上的这个端口是空闲的可用的,那么服务器会返回ACK的确认信息,之后数据传输通道被建立并返回用户所要的信息(根据用户发送的指令,如ls、dir、get等);如果服务器的这个端口被另一个资源所使用,那么服务器返回UNACK的信息,那么这时,FTP客户会再次发送PASV命令,这也就是所谓的连接建立的协商过程。为了验证这个过程我们不得不借助CUTEFTP Pro这个大家经常使用的FTP客户端软件,因为
微软自带的FTP命令客户端,不支持PASV模式。虽然你可以使用QUOTE PASV这个命令强制使用PASV模式,但是当你用ls命令列出服务器目录列表,你会发现它还是使用PORT方式来连接服务器的。现在我们使用CUTEFTP Pro以PASV模式连接服务器,连接LOG里会出现这样几句话:
COMMAND:> PASV 227 Entering Passive Mode (127,0,0,1,26,108) COMMAND:> LIST STATUS:> Connecting ftp data socket 127.0.0.1: 6764... 125 Data connection already open; Transfer starting. 226 Transfer complete.
其中,
227 Entering Passive Mode (127,0,0,1,26,80). 代表客户机使用PASV模式连接服务器的26x256+108=6764端口。(当然服务器要支持这种模式)
125 Data connection already open; Transfer starting.说明服务器的这个端口可用,返回ACK信息。
再让我们看看用CUTEFTP Pro以PORT模式连接服务器的情况。其中在LOG里有这样的记录:
COMMAND:> PORT 127,0,0,1,28,37 200 PORT command successful. COMMAND:> LIST 150 Opening ASCII mode data connection for /bin/ls. STATUS:> Accepting connection: 127.0.0.1:20. 226 Transfer complete. STATUS:> Transfer complete.
其中,
PORT 127,0,0,1,28,37告诉服务器当收到这个PORT指令后,连接FTP客户的28x256+37=7205这个端口。
Accepting connection: 127.0.0.1:20表示服务器接到指令后用20端口连接7205端口,而且被FTP客户接受。
FTP服务形态:匿名服务(Anonymous Service),FTP代理允许第三方文件传输
针对FTP的攻击方式:FTP跳转攻击、无访问控制、密码截获、端口盗用
我们看一下Wu-ftp的配置文件:
/etc/ftpusers
/etc/ftpconversions
/etc/ftpaccess:
由图可看到,
1.定义all的class 包括三种人,IP不限制
2.限制all这个class中任何时间有10个用户登陆,任何时间
3.README通知用户哪些README文件改动
4.message信息文件的设定..Deny 192.168.50.30 /etc/reject.msg
以下是/etc/ftpaccess的功能图: