一.实验环境
server主机:westtest
172.25.254.20
selinux关闭
火墙开启
dnf安装设定完成
client主机:westcp
172.25.254.10
selinux关闭
dnf安装设定完成
安装lftp #ftp协议文本浏览器
二.ftp介绍
ftp:file trnasfer proto
互联网中最老牌的文件传输协议
三.vsftpd安装
dnf install vsftpd -y
关闭selinux
systemctl enable --now firewalld
systemctl enable --now vsftpd
firewall-cmd --permanent --add-source=172.25.254.10 --zone=trusted
systemctl restart firewalld #启动匿名用户的访问功能
vim /etc/vsftpd/vsftpd.conf
12行 annoymous_enable=YES|NO
systemctl restart vsftpd
测试安装发布:
firefox ftp://ip #此访问方式必须能列出资源才算访问成功
lftp ip #使用完成后请输入exit退出lftp
四.vsftpd的基本信息
服务名称:
vsftpd.service
配置目录:
/etc/vsftpd
主配置文件:
/etc/vsftpd/vsftpd.conf
发布目录:
/var/ftp
报错信息:
550 #程序本身拒绝
553 #文件系统权限限制
500 #权限过大
530 #认证失败
五.匿名用户访问控制
lftp 172.25.254.20 #当访问ftp服务时没有加入用户认证为匿名访问
lftp 172.25.254.20 -u westos #本地用户访问
登录控制:
annoymous_enable=YES|NO
家目录控制:
anon_root=/westosdir
上传控制:
anon_upload_enable=YES|NO(取消注释)
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub/
lftp 172.25.254.20
cd pub
put /etc/passwd
下载控制:
anon_world_readable_only=NO #匿名用户可以下载不能读的文件
删除命令控制:
anon_other_write_enable=YES|NO
建立目录控制:
anon_mkdir_write_enable=YES
登录数量控制:
max_clients=2
上传访问压力:
anon_max_rate=51200
匿名用户上传文件权限:
anon_umask=022 当设定chown_name之后上传文件权限将不使用此参数设定
匿名用户上传文件的用户身份设定:
chown_upload=YES
chown_username=lee
chown_upload_mode=0600(默认)
六.本地用户的访问控制
useradd westos
useradd lee
echo lee | passwd --stdin westos
echo lee | passwd --stdin lee
lftp 172.25.254.20 -u westos
local_enable=NO|YES
家目录控制:
local_root=/software
写权限控制
write_enable=NO|YES
上传文件权限控制
local_umask=077
用户登录控制
/etc/vsftd/ftpusers #永久黑
/etc/vsftpd/user_list #临时黑
将user_list用户登录黑名单变为白名单:
userlist_deny=NO (名单外的人不可以登录)
锁定用户到自己的家目录中
chmod u-w /home/*
chroot_local_user=YES
黑名单:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
白名单:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
七.虚拟用户访问控制
1.建立虚拟用户过程
(1)vim /etc/vsftpd/westos_users #建立认证文件模板
westos1
123
westos2
123
westos3
123
(2)db_load -T -t hash -f westos_users westos_users.db #加密认证文件 -T 转换 -t type -f 指定转换文件
(3)vim /etc/pam.d/westos
account required pam_userdb.so db=/etc/vsftpd/westos_users
auth required pam_userdb.so db=/etc/vsftpd/westos_users
(4)vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos #指定认证策略文件
guest_enable=YES #指定虚拟用户功能开启
guest_username=ftp #指定虚拟用户指在ftp服务器上的用户身份
2.虚拟用户家目录的独立设定
mkdir -p /ftpuserdir/westos{1..3}/pub
touch /ftpuserdir/westos1/file1
touch /ftpuserdir/westos2/file2
touch /ftpuserdir/westos3/file3
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserdir/$USER
user_sub_token=$USER
systemctl restart vsftpd
3.如何独立虚拟用户的配置
chmod 775 /ftpuserdir/westos{1..3}/pub
chgrp ftp /ftpuserdir/westos{1..3}/pub
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/westos_conf
mkdir /etc/vsftpd/westos_conf
vim /etc/vsftpd/westos_conf/westos2
anon_upload_enable=YES
systemctl restart vsftpd