实验环境 

server主机
           主机名:westos_node3
           ip地址:172.25.254.20
           selinux关闭:(设置完成需重启)
           vim /etc/sysconfig/selinux
           Linux中Vsftpd服务的部署及优化
           火墙开启
           dnf安装设定完成
 
client主机:
          主机名:westos_zxn
          ip地址: 172.25.254.10
          selinux关闭
          dnf安装设定完成
          安装lftp  ftp协议文本浏览器
 

ftp介绍

ftp:file transfer proto(文件传输通道)
互联网中最老牌的文件传输协议
 
 

vsftpd安装及启用

node3中:
dnf install vsftpd -y
Linux中Vsftpd服务的部署及优化
systemctl enable --now firewalld
systemctl enable --now vsftpd
Linux中Vsftpd服务的部署及优化
firewalld -cmd --permanent --add-service=ftp
firewalld -cmd --permanent --add-source=172.25.254.10 --zone=trusted
systemctl restart firewalld 或 firewalld-cmd --reload
Linux中Vsftpd服务的部署及优化
vim /etc/vsftpd/vsftpd.conf
   12 anonymous_enable=YES    启动匿名用户的访问功能
Linux中Vsftpd服务的部署及优化
 
systemctl restart vsftpd
 
测试安装发布:
firefox中     ftp://172.25.254.20
Linux中Vsftpd服务的部署及优化
lftp 172.25.254.20     此访问方式必须能列出资源才算访问成功
Linux中Vsftpd服务的部署及优化
在使用完成后请输入exit退出lftp
Linux中Vsftpd服务的部署及优化

 

vsftpd基本信息

服务名称:
vsftpd.service
配置目录:
/etc/vsftpd
主配置文件:
/etc/vsftpd/vsftpd.conf
默认发布目录:
/var/ftp
 
报错信息:
550  程序本身拒绝(即服务本身不允许,需在配置文件中修改)
 
553  文件系统权限限制
 
500  权限过大
 
530  认证失败(密码错误、匿名用户登录未开启)
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化

 

匿名用户访问控制

 
lftp 192.168.0.10                      当访问ftp服务时没有加入用户认证为匿名访问
 
lftp 192.168.0.10 -u westos     本地用户访问
 
登陆控制
/etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES|NO
Linux中Vsftpd服务的部署及优化
systemctl restart vsftpd
 
 
家目录控制
anon_root=/westosdir
Linux中Vsftpd服务的部署及优化
systemctl restart vsftpd
在主机中连接node3发现家目录已改变
Linux中Vsftpd服务的部署及优化
 
 
上传控制
30 anon_upload_enable=YES|NO
Linux中Vsftpd服务的部署及优化
systemctl restart vsftpd
chmod 775 /var/ftp/pub(此处若用777,会权限过大出现“500报错”)
chgrp ftp /var/ftp/pub/
Linux中Vsftpd服务的部署及优化
lftp 172.25.254.20
cd pub
put /etc/passwd
Linux中Vsftpd服务的部署及优化
 
 
目录建立控制
34 anon_mkdir_write_enable=YES|NO
Linux中Vsftpd服务的部署及优化
此时可建立目录
Linux中Vsftpd服务的部署及优化
 
 
匿名用户可以下载不能读的文件删除重命令控制
anon_other_write_enable=YES|NO
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
 
 
下载控制
anon_world_readable_only=NO         
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
 
 
匿名用户上传文件权限设定
anon_umask=022       当设定chown_username之后上传文权限将不是用此参数设定,需使用chown_upload_mode
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
 
 
匿名用户上传文件的用户身份设定
默认上传身份为ftp
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
chown_upload=YES
chown_username=redhat      所有匿名用户在服务器生成的文件都是以redhat的身份生成
chown_upload_mode=0644   设定chown_username之后上传文权限必须用此参数设定
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
此时新上传的文件权限和拥有者已经更改
Linux中Vsftpd服务的部署及优化
 
 
登陆数量控制:
max_clients=2
Linux中Vsftpd服务的部署及优化
此时登陆的用户超过两个会出现如下情况:
Linux中Vsftpd服务的部署及优化
 
 
上传速率控制
anon_max_rate=102400
Linux中Vsftpd服务的部署及优化
在主机中:
dd if=/dev/zero of=file bs=1M count=100
可见此时下载文件速度已被限制
Linux中Vsftpd服务的部署及优化
 
 
 

本地用户的访问

登陆控制
useradd redhat
useradd xsb
useradd daddy
echo linux | passwd --stdin redhat
echo linux | passwd --stdin daddy
echo linux | passwd --stdin xsb
su - redhat/daddy/xsb
touch xxfile
Linux中Vsftpd服务的部署及优化
 
lftp 172.25.254.20 -u xxx     此时都可登录成功
Linux中Vsftpd服务的部署及优化
 
local_enable=NO        在node3中修改配置文件
Linux中Vsftpd服务的部署及优化
 
此时本地用户无法登陆成功!
Linux中Vsftpd服务的部署及优化
 
 
家目录控制
local_root=/westosdir  将家目录修改为westosdir
Linux中Vsftpd服务的部署及优化
此时家目录已经更改
Linux中Vsftpd服务的部署及优化
 
 
写权限控制
write_enable=NO
Linux中Vsftpd服务的部署及优化
此时尝试写文件会出现报错
Linux中Vsftpd服务的部署及优化
 
 
上传文件权限控制
local_umask=077     将上传权限修改为077
Linux中Vsftpd服务的部署及优化
可见此时新上传的文件权限为600(上传文件权限600=777-077(上传权限)-111)
Linux中Vsftpd服务的部署及优化
 
 
锁定用户到自己的家目录中(不可浏览/目录)
作此操作前可以随意浏览/目录
Linux中Vsftpd服务的部署及优化
 
chroot_local_user=YES  此时所有用户都被限制在自己的家目录中,为NO时所有人都可访问
Linux中Vsftpd服务的部署及优化
chmod u-w /home/*   去掉写权限
Linux中Vsftpd服务的部署及优化
此时无法浏览 / 目录
Linux中Vsftpd服务的部署及优化
 
 
锁定用户到自己的家目录中的白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
Linux中Vsftpd服务的部署及优化
vim /etc/vsftpd/chroot_list
systemctl restart vsftpd
Linux中Vsftpd服务的部署及优化
此时除了被白名单中的redhat都不可访问 / 目录
Linux中Vsftpd服务的部署及优化
 
 
锁定用户到自己的家目录中的黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
Linux中Vsftpd服务的部署及优化
vim /etc/vsftpd/chroot_list
systemctl restart vsftpd
Linux中Vsftpd服务的部署及优化
此时除了被锁定的redhat都可访问 / 目录
Linux中Vsftpd服务的部署及优化
 
 
用户登陆控制
做此实验前需将以下几个配置注销掉以保持纯净实验环境
Linux中Vsftpd服务的部署及优化
 
/etc/vsftpd/ftpusers       永久黑
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
 
/etc/vsftpd/user_list       默认黑
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
 
 
用户登陆白名单
userlist_deny=NO       此服务开启后会设定/etc/vsftpd/user_list为白名单,不在名单中的用户不能登陆ftp
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化

Linux中Vsftpd服务的部署及优化

 

虚拟用户访问

建立虚拟用户过程(做此操作前需注释掉 userlist_deny=NO
 
vim /etc/vsftpd/westos_user      建立认证文件模板
user1
123
user2
123
Linux中Vsftpd服务的部署及优化
 
db_load -T -t hash -f westos_user westos_user.db      加密认证文件 -T 转换 -t type -f 指定转换文件
Linux中Vsftpd服务的部署及优化
 
vim /etc/pam.d/westos_ftp
account            required         pam_userdb.so           db=/etc/vsftpd/westos_user
auth                  required         pam_userdb.so           db=/etc/vsftpd/westos_user
Linux中Vsftpd服务的部署及优化
 
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos_ftp    指定认证策略文件
guest_enable=YES                        指定虚拟用户功能开启
guest_username=ftp                      指定虚拟用户在ftp服务器上的用户身份
Linux中Vsftpd服务的部署及优化
 
systemctl restart vsftpd
 
Linux中Vsftpd服务的部署及优化
 
 
虚拟用户家目录的独立设定
mkdir /virtuserdir
mkdir /virtuserdir/user{1..2}
mkdir /virtuserdir/user{1..2}/pub
touch /virtuserdir/user1/user1file
touch /virtuserdir/user2/user2file
Linux中Vsftpd服务的部署及优化
 
vim /etc/vsftpd/vsftpd.conf
local_root=/virtuserdir/$USER
user_sub_token=$USER
Linux中Vsftpd服务的部署及优化
 
systemctl restart vsftpd
 
此时再次登录虚拟用户家目录已经独立
Linux中Vsftpd服务的部署及优化
 
 
用户配置独立
做此实验前需做如下配置
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
 
实验开始
user_config_dir=/etc/vsftpd/westos_conf      在此目录中与用户名称相同的文件为用户配置文件
Linux中Vsftpd服务的部署及优化
mkdir /etc/vsftpd/westos_conf
vim /etc/vsftpd/westos_conf/user2
anon_upload_enable=YES
Linux中Vsftpd服务的部署及优化
Linux中Vsftpd服务的部署及优化
设定完成后user2用户可以上传文件,user1和user3不行
Linux中Vsftpd服务的部署及优化

相关文章: