Vsftpd服务的部署及优化
文章目录
一、ftp介绍
ftp:file transfer proto
互联中最老牌的文件传输协议
二、vsftpd安装及启用
ftp不支持匿名访问
dnf install vsftpd -y #server
dnf install lftp -y #client
关闭selinux
systemctl enable --now vsftpd #开启
firewall-cmd --permanent --add-service=ftp #添加进防火墙
firewall-cmd --reload #刷新防火墙
然后
lftp 172.25.254.141 #直接访问,会无法访问,因为不支持匿名用户
lftp 172.25.254.141 -u westos #用westos用户访问,必须输入westos用户密码
然后更改配置
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
systemctl restart vsftpd
然后再次访问试试
lftp 172.25.254.141
访问成功
三、vsftpd基本信息
服务名称:
vsftpd.service
配置目录:
/etc/vsftpd
主配置文件:
/etc/vsftpd/vsftpd.conf
默认发布目录:
/var/ftp报错信息:
550 #程序本身拒绝
553 #文件系统权限限制
500 #权限过大
530 #认证失败
四、匿名用户访问控制
在/var/ftp/pub下上传文件
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
lftp 172.25.254.141
cd pub/
put /etc/passwd
结果发现报错550,所以你得修改配置文件
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES #允许上传功能
anon_other_write_enable=YES #删除重命令控制
然后systemctl restart vsftpd
再次上传一次
如果没有anon_other_write_enable=YES
那么会无法删除
然后在配置文件里面修改增加anon_other_write_enable=YES
就能删除
一些配置文件的作用
anon_upload_enable=YES #允许上传功能
anon_other_write_enable=YES #删除重命令控制
anon_mkdir_write_enable=YES #允许建立目录/下载目录
anon_world_readable_only=NO #匿名用户可以下载不能读的文件
anon_umask=022 #设定权限777-022-111=644
chown_uploads=YES #设定匿名用户上传文件的用户身份设定
chown_username=westos #设定为westos,westos必须存在
chown_upload_mode=0644 #设定这样上传的文件的权限
而且在目录下上传大文件
dd if=/dev/zero of=/tmp/bigfile bs=1M count=2000
然后put /tmp/bigfile
会发现上传速度特别快,这样不合理
所以
anon_max_rate=102400 设定每秒100k上传速度
每次修改完配置记得
systemctl restart vsftpd
五、本地用户的访问
local_enable=YES/NO #是否能使用本机用户登陆
local_root=/westosdir #家目录控制(得自己添加)(将此目录变为家目录)
write_enable=YES/NO #可写可读开关(能否上传或者编写文件)
local_umask=022 #umask限制权限
1.黑白名单
cd /etc/vsftpd
ftpusers 永久黑
在这个名单里面就是不能用vsftpd这个相关,这个的权限最高
如果在这个文件里面,就算在白名单内
都无法使用lftp
user_list 默认黑
在这里面也不能用,但是通过修改配置
将 /etc/vsftpd/vsftpd.conf
最后一行
增加userlist_deny=NO就能把
默认黑改为白名单
正常情况下能直接ls
但是如果加入到黑名单中
vim /etc/vsftpd/user_list
添加westos
则
会发现无法ls
因为被加入黑名单了
此时,如果将配置文件中
/etc/vsftpd/vsftpd.conf
增加userlist_deny=NO
则可以访问
将这个黑名单变为了白名单
2.锁定用户到自己的家目录中
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES 所有的用户将被锁到自己家目录
systemctl restart vsftpd
这样之后会进不去家目录
得使用 chmod u-w /home/*才能进入
会发现不能切换到/下
3.锁定家目录的白名单(黑名单)
配置文件下
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
要自己建立/etc/vsftpd/chroot_list文件
这个文件里面写的是谁,谁就被加入了白名单,白名单以外的人
会被锁家目录
可以通过修改chroot_local_user=YES
将YES改为NO,则可以将此名单变为黑名单
vim /etc/vsftpd/chroot_list
westos
就能直接访问/
六、虚拟用户访问
1.建立虚拟用户过程
第一步建立认证文件模板
cd /etc/vsftpd
vim ftpauth 建立认证文件模板
user1 #用户1
123 #密码为123
user2
123
user3
123
2.加密认证文件模板
db_load -T -t hash -f ftpauth ftpauth.db #-T 转换 -t type -f 指定转换文件
3.编写加密文件内容
vim /etc/pam.d/ftpauth
account required pam_userdb.so db=/etc/vsftpd/ftpauth #不能添加后缀,会自动补齐
auth required pam_userdb.so db=/etc/vsftpd/ftpauth
4.更改配置
cd /etc/vsftpd/
vim vsftpd.conf
pam_service_name=ftpauth #指定认证文件识别(在ftpauth这个目录下)
guest_enable=YES #指定虚拟用户功能开启
guest_username=ftp #指定虚拟用户在ftp服务器上的用户身份
然后就可以通过命令
lftp 172.25.254.141 -u user1
输入设定的密码123就可以登陆ls了
5.虚拟用户家目录的独立设定
先建立他们的家目录
mkdir -p /ftphomedir/user{1…3}/pub
touch /ftphomedir/user1/userfile1 识别作用
touch /ftphomedir/user2/userfile2 识别作用
touch /ftphomedir/user3/userfile3 识别作用
然后
家目录的指定
配置文件里面
/etc/vsftpd/vsftpd.conf
最后一排
local_root=/ftphomedir/$USER #识别配置
user_sub_token=$USER
systemctl restart vsftpd
每个人都有家目录了
6.用户配置独立
mkdir /etc/vsftpd/user_config #建立配置文件,这里的文件,必须为你虚拟用户的用户名
touch /etc/vsftpd/user_config/user1
然后
vim /etc/vsftpd/user_config/user1
anon_upload_enable=YES #使user1可以下载
然后在配置文件中/etc/vsftpd/vsftpd.conf下
user_config_dir=/etc/vsftpd/user_config
然后在把上面几条注销一下,就能直接使用
#anon_upload_enable=YES
#anon_other_write_enable=YES
#anon_mkdir_write_enable=YES
#anon_world_readable_only=NOex
#anon_umask=022
systemctl restart vsftpd
然后让pub获得权限
chmod 775 /ftphomedir/user{1..3}/pub
chgrp ftp /ftphomedir/user{1..3}/pub
然后就user1可以上传下载,user2,user3不行