一、什么是Vsftpd服务
Vsftpd(very secure FTP daemon)是一个UNIIX类操作系统上运行的服务器的名称,它可以运行在诸如Linux、BSD、Solaries、HP-UX以及IRIX上面;是基于FTP开发的一套完全免费、开放源码的程序,也是一款在Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快、安全易用。
二、什么是FTP
FTP(File Transfer Protocol)是TCP/IP协议组中的协议之一,也是互联网中最老牌的文件传输协议;其包括两个部分:FTP服务器和FTP客户端;FTP服务器用来存储文件,FTP客户端通过FTP协议访问FTP服务器上的资源。FTP传输效率高但有着极高的延迟,从开始请求到第一次接收需求数据之间的时间较长,并不时地执行一些冗长的登陆过程。
三、FTP服务实验环境搭建
1、配置虚拟机westosb为FTP服务端;虚拟机westosc为FTP客户端
2、关闭两台虚拟机的内核加强级火墙selinux
3、关闭两台虚拟机的火墙服务或者在两个虚拟机的火墙服务中永久允许FTP服务
4、安装FTP服务器端服务软件vsftpd并启用服务和FTP客户端软件lftp(浏览工具)
四、Vsftpd服务的基本信息
服务名称:vsftpd.service
配置目录:/etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp
访问FTP服务过程中的报错信息及含义:
550 ##服务程序本身拒绝
530 ##文件系统权限限制
500 ##文件系统权限过大
553 ##认证失败
五、Vsftpd服务的访问控制
1、匿名用户的访问控制
登陆控制
Vsftpd服务默认是不允许匿名用户访问的
通过浏览器访问会弹出认证
而只有安装有FTP服务的主机westosb的本地用户才能访问
如需允许匿名用户访问FTP服务器,需要在主配置文件 /etc/vsftpd/vsftpd.conf 修改内容 anonymous_enable=NO--->YES 后重启Vsftpd服务即可生效
以上步骤设置完成后,匿名用户可以访问
家目录控制
匿名用户访问FTP时默认的共享目录为 /var/ftp
如需更改其登陆时访问的目录,需要在主配置文件中说明 anon_root='目录名称' 后重启Vsftpd服务
以上步骤设置完成后,匿名用户访问到的内容为 /westos 下的内容
上传控制
匿名用户访问FTP时默认是不允许上传文件的
如需使其允许上传文件,需要在主配置文件中说明 anon_upload_enable=YES 后重启Vsftpd服务
以上步骤设置完成后,匿名用户访问时可以上传文件
目录建立控制
匿名用户访问FTP时默认是无法建立目录的
如需使其在访问时建立目录,需要在主配置文件中说明 anon_mkdir_write_enable=YES 后重启Vsftpd服务
以上步骤设置完成后,匿名用户访问时可以建立目录
下载控制
匿名用户访问FTP时默认是不能下载文件的
如需使其在访问时可以下载文件,需要在主配置文件中说明 anon_world_readable_only=NO 后重启Vsftpd服务
以上步骤设置完成后,匿名用户访问时可以下载文件
删除&重命名控制
匿名用户访问FTP时默认是不能删除或重命名文件和目录的
如需使其在访问时可以删除或重命名文件和目录,需要在主配置文件中说明 anon_other_write_enable=YES 后重启Vsftpd服务
以上步骤设置完成后,匿名用户访问时可以删除或重命名文件和目录
上传权限设定
匿名用户访问FTP时上传文件的默认权限是600
如需更改其在访问时上传文件的权限,需要在主配置文件中指定匿名用户的umask值:anon_umask=022 后重启Vsftpd服务
以上步骤设置完成后,匿名用户访问时上传的文件的权限根据umask值匹配
登陆数量控制
用户登陆的数量默认是没有限制的;如需限制所有用户的登陆数量,需要在主配置文件中说明 max_clients=1 后重启Vsftpd服务
以上步骤设置完成后,用户访问时最多只能同时存在一个用户
上传速率控制
匿名用户访问FTP时默认上传文件的速率是没有限制的
如需限制其在访问时上传文件的速率,需要在主配置文件中说明 anon_max_rate=102400(单位是字节B) 后重启Vsftpd服务
以上步骤设置完成后,匿名用户访问时最大文件上传速率不足100Kb/s
上传文件的用户身份设定
匿名用户访问FTP上传文件时使用的默认的用户身份为系统级用户ftp
如需更改其在访问时上传文件的用户身份,需要在主配置文件中说明 <chown_upload=YES>+<chown_username='用户名'>+<chown_upload_mode=0600> 后重启Vsftpd服务
以上步骤设置完成后,匿名用户访问时上传文件的用户身份变为指定的用户
!!!当 <chown_upload_mode=0600>存在时,上传文件的权限不再根据anon_umask值匹配
2、本地用户访问的控制
登陆控制
本地用户访问FTP时默认是可以访问状态
如需限制本地用户访问FTP服务器,需要在主配置文件 /etc/vsftpd/vsftpd.conf 修改内容 local_enable=YES--->NO 后重启Vsftpd服务即可生效
家目录控制
本地用户访问FTP时默认的共享目录为 /home/‘username’
如需更改其登陆时访问的目录,需要在主配置文件中说明 local_root='目录名称' 后重启Vsftpd服务
以上步骤设置完成后,本地用户访问到的内容为 /westos 下的内容
写权限控制
本地用户访问FTP时默认是有写的权限的
如需限制其写的权限,需要在主配置文件中说明 write_enable=NO 后重启Vsftpd服务
以上步骤设置完成后,本地用户访问时无法写入
上传文件的权限控制
本地用户访问FTP时上传文件的默认权限是644
如需更改其在访问时上传文件的权限,需要在主配置文件中指定本地用户的umask值:local_umask=077 后重启Vsftpd服务
以上步骤设置完成后,本地用户访问时上传的文件的权限根据umask值匹配
用户登陆控制
本地用户访问FTP时默认是所有都可以访问的状态;如需指定用户不能登陆,可以在 /etc/vsftpd/ftpusers (永久黑名单)或 /etc/vsftpd/user_list (用户列表---默认黑名单)中添加用户名使指定用户不能访问
但如果在主配置文件中添加说明 userlist_deny=NO 后;/etc/vsftpd/user_list 此文件则变成了用户白名单即只有在此名单内的用户可以访问
在此条件下再往永久黑名单 /etc/vsftpd/ftpusers 中添加 linux用户,linux用户依然无法访问;由此可见优先级 /etc/vsftpd/ftpusers >> /etc/vsftpd/user_list
锁定用户至其家目录
本地用户访问FTP时默认是可以随意切换目录的,甚至可以切换至FTP服务器系统的根目录中
这样显然是不安全的;可以通过在主配置文件说明 chroot_local_user=YES 后重启服务即可限制用户登陆时只能访问自己家目录中的内容
以上步骤设置完成后,本地用户访问时无法切换至除自己家目录以外的位置
锁定用户至其家目录的白名单
通过建立锁定用户至其家目录的白名单批量管理本地用户登陆访问时的浏览范围;只有此白名单里的用户可以浏览自己家目录以外的位置
以上步骤设置完成后,只有linux用户访问时可以浏览自己家目录以外的位置
锁定用户至其家目录的黑名单
将以上实验的主配置文件中的内容
chroot_local_user=YES--->NO 后即得到了
锁定用户至其家目录的黑名单;此时只有此名单里的用户不能浏览自己家目录以外的位置
以上步骤设置完成后,只有linux用户访问时不能浏览自己家目录以外的位置
3、虚拟用户的访问控制
【1】虚拟用户建立
在Vsftpd服务配置目录下建立认证文件 ftp_auth ;在此文件中添加虚拟用户名和密码并将此文件进行加密
-T ##转换文件
-t ##指定转换类型
-f ##指定被加密的文件
在 /etc/pam.d 下生成认证策略文件
db=/etc/vsftpd/ftp_auth后不用加 .db;系统会自动添加
在Vsftpd服务的主配置文件中指定认证策略文件;指定虚拟用户功能开启;指定虚拟用户在FTP服务器上的用户身份
重启服务,此时可以通过认证文件中设置的虚拟用户成功访问
【2】虚拟用户家目录的独立设定
虚拟用户登陆时默认的访问目录为 /var/ftp
可以通过至主配置文件中添加说明来指定虚拟用户登陆时访问的是其各自的家目录
user_root_token=$USER
##对$USER这个变量进行声明:告诉此配置文件此变量的用法同shell环境中的用法
$USER ##用户变量(自动匹配当前登陆的用户名)
重启服务,此时虚拟用户登陆时访问的是其家目录里的资源
【3】虚拟用户配置独立操作
虚拟用户访问FTP,权限允许且 anon_upload_enable=YES 的情况下都可以在其家目录中上传文件
在主配置文件中 anon_upload_enable=NO 条件下;管理员可以通过在Vsftp服务的主配置文件中添加配置来指定特定的用户的上传文件权限
user_config_dir=/etc/vsftpd/user_config
##在此目录中与用户名称相同的文件作为用户的配置文件
完成上述设定后只有虚拟用户user1可以上传文件