nodea中:
【实验前准备】
先reset虚拟机nodea
nm-connection-editor #配置网络
hostnamectl set-hostname westoslinux117.westos.org #修改主机名
vim /etc/sysconfig/selinux #关闭selinux:状态改为 disabled
SELINUX=disable
reboot #重启
systemctl disable --now firewalld #关闭火墙
软件仓库搭建(之前搭建好就不用再次搭建)
2.vsftpd安装及启用
1)安装ftp服务软件
dnf search ftp #查找ftp
dnf install lftp vsftpd -y #安装lftp和vsftpd服务
systemctl enable --now vsftpd #开启vsftpd服务
firewall-cmd --permanent --add-service=ftp #把ftp服务加入火墙
firewall-cmd --reload #重启火墙
测试安装发布:ftp://172.25.254.117
带用户名的访问方式
lftp 172.25.254.117 -u westos
不带用户名的访问:要修改配置文件
lftp 172.25.254.117 #不修改配置文件访问不了
lftp 172.25.254.117 #修改完主配置文件后再次访问就可以了
3.vsftpd基本信息
服务名称: vsftpd.service
配置目录: /etc/vsftpd
主配置文件: /etc/vsftpd/vsftpd.conf
默认发布目录: /var/ftp
报错信息:
550 ##程序本身拒绝
553 ##文件系统权限限制
500 ##权限过大
530 ##认证失败
4.匿名用户访问控制
1)家目录控制
mkdir /westosdir
vim /etc/vsftpd/vsftpd.conf
#第12行左右:anon_root=/westosdir
systemctl restart vsftpd #重启服务
touch /westosdir/westosfile{1..3}
检测:lftp 172.25.254.117
2)登陆控制
vim /etc/vsftpd/vsftpd.conf
#13行左右 anonymous_enable=YES #允许匿名用户登陆
systemctl restart vsftpd #重启服务
3)匿名用户上传控制
一般情况匿名用户不能上传:把自己主机里的东西传到服务器
vim /etc/vsftpd/vsftpd.conf
#29行左右 anon_upload_enable=YES #允许匿名用户上传
systemctl restart vsftpd #重启服务
chmod 775 /var/ftp/pub #给pub目录权限
chgrp ftp /var/ftp/pub
检测:lftp 172.25.254.117
注意:一定要先进入pub目录才能上传成功
4)目录建立、下载、删除命令控制
anon_mkdir_write_enable=YES #目录建立控制
anon_world_readable_only=NO ##下载控制,匿名用户可以下载不能读的文件
anon_other_write_enable=YES ##匿名用户可以删除命令控制
vim /etc/vsftpd/vsftpd.conf
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES
systemctl restart vsftpd
检测:lftp 172.25.254.117
5)匿名用户上传文件权限设定
anon_umask=022 ##当设定chown_username之后上传文权限将不是用此参数设定
vim /etc/vsftpd/vsftpd.conf
anon_umask=022 #权限为644【777-022-111】
systemctl restart vsftpd
检测:lftp 172.25.254.117
6)匿名用户上传文件的用户身份设定
vim /etc/vsftpd/vsftpd.conf
chown_upload=YES
chown_username=westos #指定上传用户为westos【默认为ftp】
chown_upload_mode=0644 #指定上传权限为644
systemctl restart vsftpd
检测:lftp 172.25.254.117
7)登陆数量控制:
max_clients=2 #限制最大登陆数量为2
vim /etc/vsftpd/vsftpd.conf
max_clients=2
systemctl restart vsftpd
检测:lftp 172.25.254.117-->打开多个shell同时登陆,结果是只能登陆两个
8)上传速率控制
anon_max_rate=102400
dd if=/dev/zero of=/mnt/bigfile bs=1M count=500 #在/mnt目录建立一个500M的大文件bigfile
vim /etc/vsftpd/vsftpd.conf
anon_max_rate=102400
systemctl restart vsftpd
检测:lftp 172.25.254.117
5.本地用户的访问
1)登陆控制【local_enable=NO|YES】
useradd westos #建立westos用户(用的话就不用建立了)
useradd lee #建立lee用户
echo westos | passwd --stdin westos #把westos用户密码改为:westos
echo westos | passwd --stdin lee #把lee用户密码改为:westos
vim /etc/vsftpd/vsftpd.conf
local_enable=YES
systemctl restart vsftpd
检测:lftp 172.25.254.117 -u westos/-u lee
2)家目录控制【local_root=/software】
vim /etc/vsftpd/vsftpd.conf
local_root=/westos
systemctl restart vsftpd
检测:lftp 172.25.254.117 -u westos/-u lee
3)写权限控制【write_enable=NO|YES】
vim /etc/vsftpd/vsftpd.conf
write_enable=YES #YES有写权限(属于全局设置,默认为YES)
systemctl restart vsftpd
检测:lftp 172.25.254.117 -u westos/-u lee
注意:这里要用westos用户建立目录的话一定要看下权限,对什么用户和组可写
当写的权限关掉:write_enable=NO时
vim /etc/vsftpd/vsftpd.conf write_enable=NO systemctl restart vsftpd
4)上传文件权限控制【local_umask=077】
当local_umask=077时
vim /etc/vsftpd/vsftpd.conf local_umask=077 systemctl restart vsftpd
当local_umask=022时
vim /etc/vsftpd/vsftpd.conf local_umask=022 systemctl restart vsftpd
5)本地用户登陆黑名单
/etc/vsftpd/ftpusers ##永久黑
/etc/vsftpd/user_list ##默认黑vim /etc/vsftpd/user_list westos #把westos写入登录黑名单 systemctl restart vsftpd
检测:lftp 172.25.254.117 -u westos 不能登陆。但是lee用户可以登陆
6)本地用户登陆白名单
userlist_deny=NO #设定/etc/vsftpd/user_list位白名单
#不在名单中的用户不能登陆ftpvim /etc/vsftpd/vsftpd.conf userlist_deny=NO systemctl restart vsftpd
此时/etc/vsftpd/user_list由黑名单变为白名单
检测:lftp 172.25.254.117 -u westos 可以登陆。但是lee用户不在白名单内不可以登陆
&&实验做完记得还原用户白名单(删掉添加的westos)
7)锁定用户到自己的家目录中
chmod u-w /home/*
chroot_local_user=YES | NO #默认NO:不锁定。 YES:锁定
chmod u-w /home/*当锁定家目录后
vim /etc/vsftpd/vsftpd.conf chroot_local_user=YES systemctl restart vsftpd
当未锁定家目录时,可以*进入目录
vim /etc/vsftpd/vsftpd.conf chroot_local_user=NO systemctl restart vsftpd
8)锁定用户到自己的家目录中的黑名单:即其他用户不锁定家目录,只有名单中的用户锁定家目录
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list当chroot_local_user=NO时,/etc/vsftpd/chroot_list为黑名单(原本没有此文件)
vim /etc/vsftpd/vsftpd.conf chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list systemctl restart vsftpd vim /etc/vsftpd/chroot_list lee #把lee用户添加到名单中,lee用户可以锁定家目录 systemctl restart vsftpd
9)锁定用户到自己的家目录中的白名单:即其他用户锁定家目录,只有名单中的用户不锁定家目录
chroot_local_user=YES时/etc/vsftpd/chroot_list为白名单
vim /etc/vsftpd/chroot_list #修改白名单中用户 vim /etc/vsftpd/vsftpd.conf #修改配置文件 chroot_local_user= YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list systemctl restart vsftpd
6.虚拟用户访问
1)建立虚拟用户过程vim authlist #建立认证文件模板 user1 123 user2 123 user3 123authlist db_load -T -t hash -f authlist authlist.db ##加密认证文件(-f:指定转换文件为建立的文件模板)(-T:转换)(-t:type) vim authpam account required pam_userdb.so db=/etc/vsftpd/authlist auth required pam_userdb.so db=/etc/vsftpd/authlist
vim /etc/vsftpd/vsftpd.conf pam_service_name=authpam ##指定认证策略文件 userlist_enable=YES guest_enable=YES ##指定认证策略文件 guest_username=ftp ##指定虚拟用户在ftp服务器上的用户身份 systemctl restart vsftpd
注意:路径必须写对:vim authlist 必须对应vim authpam文件里面db后边的路径(vim authlist 文件在/etc/vsftpd/里写,那么vim authpam文件里db=/etc/vsftpd/authlist路径必须和建立的authlist路径一致,路径后边的文件名称也须一致。在主配置文件vim /etc/vsftpd/vsftpd.conf中pam_service_name=authpam,等于后边的文件名必须和 vim authpam认证策略文件名称authpam一致)
检测:
2)虚拟用户家目录的独立设定
mkdir -p /var/ftphome/user{1..3}/westos touch /var/ftphome/user1/user1file1 touch /var/ftphome/user2/user2file2 touch /var/ftphome/user3/user3file3 vim /etc/vsftpd/vsftpd.conf local_root=/var/ftphome/$USER user_sub_token=$USER systemctl restart vsftpd
3)用户配置独立
####在做本实验的时候在/etc/vsftpd/vsftpd.conf要把:anon_upload_enable=YES注释掉
mkdir -p /var/ftphome/user{1..3}/westos chmod 775 /var/ftphome/user{1..3}/westos chgrp ftp /var/ftphome/user{1..3}/westos mkdir /etc/vsftpd/confdir vim /etc/vsftpd/confdir/user1 #编辑user1的子配置文件 anon_upload_enable=YES #可以匿名上传 systemctl restart vsftpd vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/confdir systemctl restart vsftpd
检测:uese1写了子配置文件:vim /etc/vsftpd/westos/user1所以可以上传文件,user2和user3没有写就不能上传