vsftpd是如今大多数linux发行版默认的FTP服务,它是一款以安全著称的ftp软件。linux
1.FTP的原理安全
FTP会话包括两个端口,一个是控制端口,一个是数据端口。服务器
控制端口:控制端口也就是和FTP服务器进行沟通的通道,链接FTP,发送FTP指令都是由控制端口完成的。网络
数据端口:是和FTP服务器之间进行数据传输时候使用的通道。session
FTP协议中,控制链接都是由客户端发起的,而数据链接有两种方式:PORT(主动方式)和PASV(被动方式)。app
主动方式过程:首先由客户端发起链接,使用TCP链接服务器的21号端口,以后客户端在控制通道发送PORT指令,里面描述了客户端使用什么端口号接收数据(通常大于1024),而后服务器使用TCP在本身的20号端口和客户端创建链接。异步
被动方式过程:首先仍是由客户端发起链接,使用TCP链接服务器的21号端口,而后客户端经过控制端口发送PASV指令,而后服务器协商出一个端口(大于1024)告诉客户端使用该端口传输数据,以后客户端去链接该端口创建链接。async
注意:若企业内使用防火墙,主动方式创建链接时候将有一些问题!!!
tcp
2.vsftpd的安装
ide
若配有yum源使用yum安装
[root@localhost ~]# yum install vsftpd
若使用debian系统
[root@localhost ~]# apt-get install vsftpd
若使用RPM安装
[root@localhost ~]# rpm -ivh vsftpd*.rpm
也可使用源码安装。
安装完以后记得 service vsftpd start,而后
[root@localhost ~]# chkconfig vsftpd on 开机自动启动
3.vsftpd的一些配置说明
/etc/vsftpd/vsftpd.conf | 主配置文件 |
/usr/sbin/vsftpd | vsftpd的主程序 |
/etc/rc.d/init.d/vsftpd | vsftpd的启动脚本 |
/etc/pam.d/vsftpd | PAM认证文件 |
/etc/vsftpd/ftpusers | 禁止使用vsftpd的用户列表 |
/etc/vsftpd/user_list | 禁止或容许使用vsftpd的用户列表文件,这个文件中指定的用户缺省状况有说明 |
/var/ftp | FTP的家目录,也就是匿名用户登陆到FTP的家目录 |
下面对vsftpd.conf里面的文件作简要的说明:
anonymous_enable=YES
#是否容许匿名登陆FTP服务器,默认设置为YES容许,用户可以使用用户名ftp或anonymous进行ftp登陆,如不容许匿名访问则设置为NO。
local_enable=YES
# 是否容许本地用户(即linux系统中的用户账号)登陆FTP服务器,默认设置为YES容许本地用户登陆后会进入用户主目录,而匿名用户登陆后进入匿名用户的下载目录/var/ftp/pub, 若只容许匿名用户访问,前面加上#注释掉便可阻止本地用户访问FTP服务器 。
write_enable=YES
# 是否容许本地用户对FTP服务器文件具备写权限,默认设置为YES容许。
local_umask=022
#掩码,本地用户默认掩码为077,能够设置本地用户的文件掩码为缺省022,也可根据我的喜爱将其设置为其余值
anon_upload_enable=YES
#是否容许匿名用户上传文件,须将全局的write_enable=YES。默认为YES
anon_mkdir_write_enable=YES
#是否容许匿名用户建立新文件夹
dirmessage_enable=YES
# 是否激活目录欢迎信息功能
xferlog_enable=YES
#是否启用日志,在/var/log/xferlog
connect_from_port_20=YES
#是否使用20号端口做为数据端口
chown_uploads=YES
chown_username=whoever
#设置是否改变上传文件的所属着,下面一个是若要改变则改成的所属人,不推荐使用root用户xferlog_file=/var/log/xferlog
xferlog_std_format=YES
xferlog_enable=YES
#是否启用日志,在/var/log/xferlog,日志的一些设置。
idle_session_timeout=600
# 设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为600秒,即当数据传输结束后,用户链接FTP服务器的时间不该超过600秒。能够根据实际状况对该值进行修改
data_connection_timeout=120
# 设置数据链接超时时间,该语句表示数据链接超时时间为120秒,可根据实际状况对其个修改
nopriv_user=ftpsecure
#运行vsftpd须要的非特权系统用户,缺省是nobody
async_abor_enable=YES
#是否识别异步ABOR请求。 若是FTP client会下达“async ABOR”这个指令时,这个设定才须要启用 而通常此设定并不安全,因此一般将其取消
ascii_upload_enable=YES
ascii_download_enable=YES
#是否以ASCII方式传输数据。默认状况下,服务器会忽略ASCII方式的请求。 启用此选项将容许服务器以ASCII方式传输数据。不过,这样可能会致使由"SIZE /big/file"方式引发的DoS***,故默认关闭
ftpd_banner=Welcome to blah FTP service.
登陆FTP服务器时显示的欢迎信息,若有须要,可在更改目录欢迎信息的目录下建立名为.message的文件,并写入欢迎信息保存后。
deny_email_enable=YES
#黑名单设置。若是很讨厌某些email address,就可使用此设定来取消他的登陆权限,能够将某些特殊的email address抵挡住。
banned_email_file=/etc/vsftpd/banned_emails
#当上面的deny_email_enable=YES时,能够利用这个设定项来规定哪些邮件地址不可登陆vsftpd服务器,此文件需用户本身建立,一行一个email address便可
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#你能够指定一个列表把本地用户锁定在他们的家目录,若是chroot_local_user=YES,这个列表(/etc/vsftpd/chroot_list)就是不把本地用户锁定家目录的列表,就是能够切换到/下,不安全
/etc/vsftpd/chroot_list
#是否容许递归查询。默认为关闭,以防止远程用户形成过量的I/O
listen=YES
listen_ipv6=YES
#是否容许监听,设为yes,vsftpd将以独立模式运行,监听ipv4和ipv6端口
pam_service_name=vsftpd
#设置PAM外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd文件
userlist_enable=YES
设置是否阻扯user_list文件中的用户登陆FTP服务器,默认为YES。user_list文件里面(userlist_deny=YES/NO)若此项设为YES,则user_list文件中的用户容许登陆FTP服务器,而若是同时设置了userlist_deny=YES,则user_list文件中的用户将不容许登陆FTP服务器,甚至连输入密码提示信息都没有。
tcp_wrappers=YES
#是否使用tcp_wrappers做为主机访问控制方式。
tcp_wrappers能够实现linux系统中网络服务的基于主机地址的访问控制
在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp_wrappers的访问控制
前者设置容许访问记录,后者设置拒绝访问记录。
如想限制某些主机对FTP服务器192.168.57.2的匿名访问,编缉/etc/hosts.allow文件,如在下面增长两行命令:vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY
代表限制IP为192.168.57.1/192.168.57.9主机访问IP为192.168.57.2的FTP服务器此时FTP服务器虽能够PING通,但没法链接。
登陆时候一些数字提示信息
110 从新启动标记应答。 120 服务在多久时间内ready。 125 数据链路端口开启,准备传送。 150 文件状态正常,开启数据链接端口。 200 命令执行成功。 202 命令执行失败。 211 系统状态或是系统求助响应。 212 目录的状态。 213 文件的状态。 214 求助的讯息。 215 名称系统类型。 220 新的联机服务ready。 221 服务的控制链接端口关闭,能够注销。 225 数据连结开启,但无传输动做。 226 关闭数据链接端口,请求的文件操做成功。 227 进入passive mode。 230 使用者登入。 250 请求的文件操做完成。 257 显示目前的路径名称。 331 用户名称正确,须要密码。 332 登入时须要帐号信息。 350 请求的操做须要进一部的命令。 421 没法提供服务,关闭控制连结。 425 没法开启数据链路。 426 关闭联机,终止传输。 450 请求的操做未执行。 451 命令终止:有本地的错误。 452 未执行命令:磁盘空间不足。 500 格式错误,没法识别命令。 501 参数语法错误。 502 命令执行失败。 503 命令顺序错误。 504 命令所接的参数不正确。 530 未登入。 532 储存文件须要帐户登入。 550 未执行请求的操做。 551 请求的命令终止,类型未知。 552 请求的文件终止,储存位溢出。 553 未执行请求的的命令,名称不正确。