1. ftp介绍
ftp(File Transfer Protocol):文本传输协议。它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
ftp许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。
2. vsftpd安装
2.1 实验环境
1、hostnamectl set-hostname westos_node1.westos.com 修改主机名
2、vim /etc/sysconfig/network-scripts/ifcfg-ens160 配置ip地址
3、vim /etc/yum.repos.d/westos.repo 配置软件仓库
dnf repolist
4、vim /etc/selinux config ---》SELINUX=disabled 关闭selinux
5、reboot
6、getenforce
2.2 安装vsftpd
服务主机上:
1、安装vsftpd:
dnf install vsftpd -y
systemctl enable --now vsftpd
2、vs文件配置
vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES ##启动匿名用户访问功能
sytemctl restart vsftpd
3、防火墙设置:
systemctl enable --now firewalld
firewall-cmd --permanent --add-source=172.25.254.10 --zone=trusted
systemctl restart firewalld
1、安装vsftpd:
2、vs文件配置
3、防火墙设置:
2.3 测试安装
测试主机上:
dnf install lftp -y ##安装lftp命令
测试安装发布两种方式:
1、firefox ftp://ip
2、lftp 172.25.254.20 ##此访问方式必须能列出资源才算访问成功
##在使用完成后请使用exit退出
3.vsftpd基本信息
3.1 服务名称
vsftpd.service
3.2 配置目录
/etc/vsftpd
3.3 主配置文件
/etc/vsftpd/vsftpd.conf
通过man方法来查看下载控制的配置文件
man 5 vsftpd.conf ## 查看配置信息
3.4 默认发布目录
/var/ftp
在默认目录建立westos文件后,可以在发布目录查看到
3.5 报错信息
550 ## 程序本身拒绝
553 ## 文件系统权限限制
500 ## 权限过大
530 ## 认证失败
4. 匿名用户访问控制
lftp 172.25.254.20 ## 当访问ftp服务时没有加入用户认证为匿名访问
lftp 172.25.254.20 -u westos ## 本地用户访问
4.1 登陆控制
匿名访问:
vim /etc/vsftpd/vsftpd.conf ## 编辑vsftpd服务的配置文件
anonymous_enable=YES/NO ## 配置文件中设定匿名用户可以/不可以访问
systemctl restart vsftpd ## 重启服务
在主机中设定anonymous_enable=NO,在客户机中无法匿名访问
4.2 家目录控制
anon_root=/westosdir ## 将/software设置为家目录
若不设置,默认目录为/var/ftp
主机中更改配置文件家目录指向新建文件夹/westosdir
客户机中访问,家目录已更改
4.3 匿名用户开启上传功能
anon_upload_enable=YES|NO ## 表示上传功能是否开启
mkdir /var/ftp/upload
chown ftp:root /var/ftp/upload
上传步骤:
lftp 172.25.254.20
cd /upload
put /etc/passwd
默认情况下,客户端匿名用户不可以上传文件,系统默认将该功能注释;
启动功能后,我们再次去上传文件,会发现报553错误,受到文件系统权限限制
chmod 775 /var/ftp/** ## 将子目录权限修改为最高权限
4.4 下载控制
anon_world_readable_only=NO ## 匿名用户可以下载不能读的文件
下载成功!
4.5 目录建立控制
anon_mkdir_write_enable=YES|NO
新建目录成功!
4.6 删除重命名控制
anon_other_write_enable=YES|NO
删除重命名成功!
4.7 登录数量控制
max_clients=2
最多可有2个窗口登录
4.8 上传速率控制
anon_max_rate=102400
dd if=/dev/zero of=file bs=1M count=1000 ##建立文件file用于上传
设置前后的上传速率区别:
4.9 上传文件权限设定
anon_umask=022 当设定chown_username之后上传文件权限将不是用此参数设定
4.10 上传文件用户身份设定
chown_uploads=YES
chown_username=lee
chown_upload_mode=0644
设定匿名用户上传文件,文件的用户身份为lee
5. 本地用户的访问
5.1 登录控制
local_enable=NO|YES
服务主机:
useradd westos
useradd lee
echo lee | passwd --stdin westos
echo lee | passwd --stdin lee
lftp 192.168.0.10 -u lee
客户端测试:
lftp 192.168.0.10 -u lee
5.2 家目录控制
local_root=/westosdir
5.3 写权限控制
write_enable=NO|YES
5.4 上传文件权限控制
local_umask=022
上传文件权限则是644
5.5 用户登陆控制
/etc/vsftpd/ftpusers ##永久黑名单配置文件
/etc/vsftpd/user_list ##临时黑名单配置文件
在文件中添加westos,则westos用户登录失败
5.6 用户登陆白名单
userlist_enable=YES
userlist_deny=NO ##将上述黑名单变为白名单
##不在名单中的用户不能登陆ftp
原来的黑名单变成白名单,westos可以登录,le’e不能登录
5.7 锁定用户到自己的家目录中
chmod u-w /home/*
allow_writeable_chroot=YES
chroot_local_user=YES
5.8 锁定用户到自己的家目录的白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
##/etc/vsftpd/chroot_list文件里面设定用户westos
5.9 锁定用户到自己的家目录的黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
6. 虚拟用户访问
除匿名用户之外,还可设置虚拟用户来访问FTP。所谓虚拟用户,指存放于独立数据库文件中的FTP用户账户,可以将它们映射到某个不能登录的系统用户账号上,以进一步增强FTP服务器的安全性。
6.1 建立虚拟用户的过程
建立虚拟用户数据库文件
1、vim /etc/vsftpd/westos_user ## 编辑认证文件,自定义名字
内容:
westos1
123
westos2
123
westos3
123
2、加密认证文件
db_load -T -t hash -f westos_user westos_user.db ## 加密认证文件
注:db_load命令是一种固定用法
-T #允许非Berkeley DB的应用程序使用从文本格式转换的DB数据库文件
-t hash #指定读取数据文件的基本方法
-f #指定数据的源文件
3、编写认证策略文件westos_ftp
cd /etc/pam.d/
vim westos_ftp
account required pam_userdb.so db=/etc/vsftpd/westos_user
auth required pam_userdb.so db=/etc/vsftpd/westos_user
##注意在这里系统会默认加上.db后缀,因此我们不需要添加后缀名
4、编写认证策略配置文件
pam_service_name=westos_ftp ##指定认证策略文件
guest_enable=YES ##指定虚拟用户功能开启
guest_username=ftp ##指定虚拟用户在ftp服务器上的 用户身份
##指定的虚拟用户即可登录了,注意黑白名单的影响
6.2 虚拟用户家目录的设定
local_root=/virtuserdir/$USER
user_sub_token=$USER
设置用户家目录为virtuserdir/westos1,并建立pub和user1file文件
6.3 用户配置独立
user_config_dir=/etc/vsftpd/user_config ##在此目录中与用户名称相同的文件为用户配置文件
mkdir /etc/vsftpd/user_config
vim/etc/vsftpd/user_config/westos1
anon_upload_enable=YES
设定完成后westos1用户可以上传文件,但westos2和westos3不行