FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
用户分类
Real帐户
这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。
Guest用户
在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
Anonymous(匿名)用户
这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。这就给其他用户所在的空间带来一定的安全隐患。
TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制。
需要进行远程文件传输的计算机必须安装和运行ftp客户程序。
启动ftp客户程序工作的另一途径是使用浏览器,格式::ftp://[用户名:口令@]ftp服务器域名:[端口号]
服务器安装的一般步骤:
1.安装检测rpm -qa | grep 包名
2.检测出没有安装则安装
3.yum install 包名
4.检测并启动
rpm -qa | grep 包名
chkconfig 服务名 on 将服务器设置为开机自启
包文件名:vsftpd 服务名:vsftpd
挂载光盘并用yum安装,(本地yum源在之前的博客里已经配过了)
用rpm命令查看下vsftpd包。
cd /etc/vsftpd并ls查看下。
ftpusers是用户控制文件,在这个文件里面的用户,默认是不可以使用vsftpd服务的
user_list默认功能和第一个一样,但是通过配置,我们可以让只有在第二个文件里的用户才能使用vsftpd服务,这样新加入的用户就不会自动拥有vsftp的使用权,这样可以让vsftpd服务器更加安全
vsftpd_conf_migrate.sh是vsftpd操作的一些变量和设置(可忽略)
vsftpd.conf ,配置vsftpd,我们操作最多的也就是这个文件
搭建了ftp服务器,/etc/passwd下就多了个ftp的用户名了,看到shell是/sbin/nologin,说明这个是虚拟用户使用的,不具有登陆系统的权限。他只能使用vsftpd这样的服务器登陆用,而家目录不在/home下,而在/var/ftp下,在匿名登陆的时候,系统默认使用的用户就是ftp用户 ,可以用ll -d /var/ftp查看下权限是755,这个权限一般默认就好。
现在windows上测试了下ftp服务器。
设置匿名允许上传功能
先修改目录权限
anonymous_enable=YES
是否允许匿名ftp(默认为YES),如否则选择NO,基于用户名与密码的访问。 (12)
anon_upload_enable=YES (27)
anon_mkdir_write_enable=YES (31)
是否允许匿名ftp 用户上传(默认被注释即不支持),将两行的注释符取消
在windows测试,就可以匿名上传了。但是是禁止删除的。
匿名始终是不安全的,还有一种是基于用户的访问和上传
先不允许匿名模式使用。
2.创建虚拟用户
先创建一个用户,然后修改用户的登陆shell为nologin,让用户不能登陆系统,只能使用ftp之内的服务,然后使用passwd test 修改密码
sevrice vsftpd restart 重启ftp服务就可以了
用windows验证,需要用户名和密码了。
访问的路径为test的家目录,有上传和下载的权限。
对于FTP的入侵
更多的人认为网络上是存在“万能”的攻击方法的,原因和简单,因为“暴力破解”(或者说穷举)的存在,注定网络攻击永远没有尽头。作为一种广泛被使用的协议,FTP被攻击者暴力破解是经常遇到的问题。
1.鼎鼎大名的X-Scan,是国内著名的综合漏洞检测、安全扫描器之一,完全没费,是不需要安装的绿色软件。其中有FTP弱口令,该插件载入字典对FTP弱口令进行检测。
2.泛滥的Serv-U FTP Server漏洞攻击
作为国内使用率最大的一个FTP服务器,Serv-U无疑是成功的,但是所谓树大招风,针对Serv-U FTP Server的攻击从来就没有终止过而且还有越演越烈的姿势。
通过serv-u,用户能够将任何一台PC设置成一个FTP服务器,这样用户或其他使用者就能够使用FTP协议,通过同一网络上的任何一台PC与FTP服务器连接,进行文件或目录的复制,移动,创建和删除。
Serv-U FTP服务器溢出漏洞
受影响系统:
RhinoSoft Serv-U 5.0
RhinoSoft Serv-U 4.x
RhinoSoft Serv-U 3.x
RhinoSoft Serv-U 2.x
Serv-U在处理"MDTM"命令的参数时缺少正确的缓冲区边界检查,远程攻击者可以利用这个漏洞对FTP服务程序进行缓冲区溢出攻击,可能以FTP进程权限在系统上执行任意指令。
Serv-U提供FTP命令"MDTM"用于用户更改文件时间,当用户成功登录系统,并发送畸形超长的时区数据作为命令参数,可触发缓冲区溢出,精心构建参数数据可能以FTP进程权限在系统上执行任意指令。
利用此漏洞需要用户拥有合法帐户登录到系统,但不需要写及其他权限。
构建高安全性的使用FTP服务器
1、避免跳转攻击
为了避免跳转攻击,服务器最好不要打开数据链接到小于1024的TCP端口号。
受限制的访问
一些FTP服务器希望有基于网络地址的访问控制。在这种情况下,服务器在发送受限制的文件之前应该首先确保远程主机的网络地址在本组织的范围内,不管是控制连接还是数据连接。通过检查这两个连接,服务器就被保护避免了这种情况:控制连接用一台可信任的主机连接而数据连接不是。同样的,客户也应该在接受监听模式下的开放端口连接后检察远程主机的IP地址,以确保连接是由所期望的服务器建立的。
2、保护密码
为了减少通过FTP服务器进行强力密码猜测攻击的风险,建议服务器限制尝试发送正确的密码的次数。在几次尝试(3~5次)后,服务器应该结束和该客户的控制连接。
3、匿名FTP
匿名FTP服务使客户端用最少的证明连接到FTP服务器分享公共文件。如果这样的用户能够读系统上所有的文件或者能建立文件,那么问题就产生了
这里只是简单的说明下,http://down.51cto.com/data/2241389《黑客FTP攻击剖析与实用防御技术精解》这本书将FTP协议和服务解析得很透彻,对这对FTP入侵和防御也概括的很仔细。