linux中vsftpd服务的部署及优化
实验检测的环境
服务端(server)主机
主机名:ftp_server
ip地址:192.1.168.102/24
selinux关闭,开启火墙,并且加入了ftp服务
安装vsftpd 服务
客户端(client)主机
主机名:ftp_client
ip地址:172.25.254.3/24
selinux关闭 ,开启火墙
安装了 lftp ( ftp 协议文本浏览器)
ftp介绍以及优缺点
ftp : file transfer proto #文件传输协议
优点:对文本传输速率高,安全性高
缺点:在传送图片的时候,传输效果不是很理想
lftp安装
dnf install lftp.x86_64 #下载安装lftp功能
网页访问ftp服务器
lftp ip地址 #通过命令的方式访问服务器
vsftpd服务的基本信息(server端)
-
服务名称: vsftpd.service
-
配置目录: /etc/vsftpd
-
主配置文件: /etc/vsftpd/vsftpd.conf
-
默认发布目录: /var/ftp
-
报错信息:
550 程序本身拒绝
553 文件系统权限限制
500 权限过大
530 认证失败
vsftpd服务对用户的访问控制
客户端:lftp 192.168.1.102 是以匿名用户的方式访问服务端
服务端对匿名用户访问控制:
登陆控制;
anonymous_enable=YES|NO #允许用户是否可以登陆,YES代表允许登陆,NO代表不允许登陆
对用户访问的目录控制
系统默认发布:/var/ftp
anon_root=绝对路径 #匿名用户访问的目录是该路径下的内容
没有这个设定的话默认发布发布/var/ftp/
上传控制
anon_upload_enable=YES|NO #匿名用户是否有上传功能,YES代表有,NO代表没有(默认为NO)
目录建立控制
anon_mkdir_write_enable=YES|NO #匿名用户是否有可以建立目录的功能 ,YES代表可以建立目录,NO代表不可以建立(默认为NO)
匿名用户上传文件的权限控制
anon_umask=022 #匿名用户上传目录和文件的权限设置(默认077)
删除和重命名控制
anon_other_write_enable=YES|NO #匿名用户是否可以有删除文件或者重命名名字的 能力,YES代表有,NO代表没有。(默认为NO)
下载控制
anon_world_readable_only=NO|YES #NO代表匿名用户可以下载不能读的文件,YES代表匿名用户可以下载可以读的文件(默认为YES)
注:对于文件的可读性,虽然在客户端使用lftp 登陆服务端的时,用的是ftp的用户身份,但是如果该文件自身对其他人并没有可读的权限,那么在下载控制为YES的情况下,客户端是不能查看和下载该文件的,如果下载控制为NO的情况下,该客户端是可以查看和下载该文件的。
匿名用户上传文件的用户身份设定
chown_uploads=YES |NO #开启匿名用户上传文件身份设定的这个功能(默认为NO)
chown_username=yxy #设定用户上传身份为westos(该身份必须是服务端存在的身份)
chown_upload_mode=0644 #设定上传文件的权限,默认是(0600 )
登陆数量控制:
max_clients=2 #允许同时访问该服务端的只能有2个(默认为2000)
上传速率控制
anon_max_rate=1024 #允许匿名用户上传的最大速率最大是1024KB/s (默认为0,指没有限制有多快就是多快)
服务端对本地用户访问控制:
vsftpd服务对本地用户的访问控制
客户端:lftp 192.168.1.102 -u 本地用户名 #是以本地用户的方式访问服务端
-
登陆控制
local_enable=YES|NO #是否允许客户端以本地用户的方式登陆服务端(默认是NO) -
家目录控制
local_root=绝对路径 #所有用户都将访问该目录(默认是访问/home/用户名下的目录) -
写权限控制
write_enable=YES|NO #对该目录的所有权限是否打开(默认是NO) -
上传文件权限控制
local_umask=022 #保留的权限(默认077) -
用户登陆控制
/etc/vsftpd/ftpusers ##永久黑
/etc/vsftpd/user_list ##默认黑
当userlist_deny=NO时,/etc/vsftpd/user_list 就变成白名单了,除了名单上的用户,其他默认用户就不能登陆访问了 -
锁定用户到自己的家目录中的白名单(该/etc/vsftpd/chroot_list名单上的用户可以访问服务端的 / 目录下的内容)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
-
锁定用户到自己的家目录中的黑名单(该/etc/vsftpd/chroot_list名单上的用户不可以访问服务端的 / 目录下的内容)
chroot_local_user=NO 默认是NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vsftpd服务对虚拟用户的访问控制
建立虚拟用户的过程(服务端)
-
在系统的任何位置都可以建立虚拟用户认证模板,一般vsftd的虚拟用户建立在/etc/vsftbd/下的user_auth
-
db_load -T -t hash -f user_auth user_auth.db #给该文件加密 -t hash 指用hash加密
-
在/etc/pam.d建立虚拟用户认证策略文件
-
编辑 /etc/vsftpd/vsftpd.conf 的用户认证策略
-
重启服务并且在客户端验证
虚拟用户家目录的独立设定
- 系统默认虚拟用户和匿名用户的默认发布目录时/var/ftp/下,给不同虚拟用户的创建独立家目录的方法。
mkdir -p /westos/westossnji1/westossnji1pub
mkdir -p /westos/westossnji2/westossnji2pub
mkdir -p /westos/westossnji3/westossnji3pub
- 在/etc/vsftpd/vsftpd.conf 指定匿名用户的家目录
- 重启服务,客户端测试
用户配置独立
-
修改/etc/vsftp/vsftpd.conf
user_config_dir=/etc/vsftpd/user_config #在此目录中与用户名称相同的文件为用户配置 -
mkdir user_config #不会自动生存该目录,需要自己建立
-
vim /etc/vsftpd/user_config/westossnji1 #为westossnji1这个用户添加配置
-
配置虚拟用户的家名录,虚拟用户对该目录时可读写的
-
重启服务,并且在客户端测试