Vsftpd 服务的部署及优化
实验环境
-
server主机:
- westos_node1
- 172.25.254.250
- selinux关闭
- 火墙开启
- dnf安装设定完成
-
client主机:
- westos_linux
- 172.25.254.100
- selinux关闭
- dnf安装设定完成
- 安装lftp (ftp协议文本浏览器)
1.ftp介绍
ftp:file transfer proto
互联中最老牌的文件传输协议
2.vsftpd安装及启用
- vsftpd安装及启用
dnf install vsftpd -y # server dnf install lftp -y # client setenforce 0 # 关闭selinux systemctl disable --now firewalld # 关闭防火墙
vim /etc/vsftpd/vsftpd.conf 12 anonymous_enable=YES ## 启动匿名用户的访问功能 systemctl restart vsftpd
- 测试安装发布
firefox ftp://ip
lftp ip ##此访问方式必须能列出资源才算访问成功
##在使用完成后请输入exit推出lftp
3.vsftpd基本信息
- 服务名称:
vsftpd.service
- 配置目录:
/etc/vsftpd
- 主配置文件:
/etc/vsftpd/vsftpd.conf
- 默认发布目录:
/var/ftp
- 报错信息:
550
:程序本身拒绝553
:文件系统权限限制500
:权限过大a530
:认证失败
- 默认端口及协议:
tcp
20/21
- 连接端口:21(等待客户端建立管理连接)
- 数据端口:20(主动) 1025~65535(随机,被动)
- 三类用户:
- 本地用户:服务器上存在的用户
- 匿名用户:匿名用户实际上有一个与之对应的系统用户 — “ftp”这个用户默认是匿名用户所对应的用户,匿名用户映射为ftp
- 虚拟用户
4.匿名用户访问控制
lftp 192.168.0.10 ##当访问ftp服务时没有加入用户认证为匿名访问
lftp 192.168.0.10 -u westos ##本地用户访问
-
登陆控制
anonymous_enable=YES|NO
-
家目录控制
anon_root=/westosdir
-
上传控制
anon_upload_enable=YES|NO chmod 775 /var/ftp/pub chgrp ftp /var/ftp/pub lftp 192.168.0.100 cd pub put /etc/passwd
-
目录建立控制
anon_mkdir_write_enable=YES|NO
-
下载控制
anon_world_readable_only=NO ##匿名用户可以下载不能读的文件
-
删除,命名控制
anon_other_write_enable=YES|NO
-
匿名用户上传文件权限设定
anon_umask=xxx anon_umask=022 ##当设定chown_username之后上传文权限将不是用此参数设定
-
匿名用户上传文件的用户身份设定
chown_upload=YES chown_username=lee chown_upload_mode=0644
-
登陆数量控制:
max_clients=2
-
上传速率控制
anon_max_rate=102400
5.本地用户的访问
-
登陆控制
useradd westos useradd lee echo lee | passwd --stdin westos echo lee | passwd --stdin lee lftp 192.168.0.10 -u westos local_enable=NO|YES
-
家目录控制
local_root=/software
-
写权限控制
write_enable=NO|YES
-
上传文件权限控制
local_umask=077
-
用户登陆控制
/etc/vsftpd/ftpusers ##永久黑 /etc/vsftpd/user_list ##默认黑
-
用户登陆白名单
userlist_deny=NO #设定/etc/vsftpd/user_list为白名单 #不在名单中的用户不能登陆ftp
-
锁定用户到自己的家目录中
chmod u-w /home/* chroot_local_user=YES
-
锁定用户到自己的家目录中的白名单
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
-
锁定用户到自己的家目录中的黑名单
chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
6.虚拟用户访问
1.建立虚拟用户过程
-
1.建立认证文件模板
vim /etc/vsftpd/ftp_auth_file #建立认证文件模板 westos1 123 westos2 123 westos3 123
-
2.加密认证文件
db_load -T -t hash -f ftp_auth_file ftp_auth_file.db ##加密认证文件 -T 转换 -t type -f 指定转换文件
-
3.配置认证和授权规则
vim /etc/pam.d/westos account required pam_userdb.so db=/etc/vsftpd/ftp_auth_file auth required pam_userdb.so db=/etc/vsftpd/ftp_auth_file
-
4.vsftpd 服务的配置文件配置
vim /etc/vsftpd/vsftpd.conf pam_service_name=westos ##指定认证策略文件 guest_enable=YES ##指定虚拟用户功能开启 guest_username=ftp ##指定虚拟用户在ftp服务器上的用户身份
2.虚拟用户家目录的独立设定
- 新建目录
mkdir -p /ftpuserdir/westos{1..3} touch /ftpuserdir/westos1/westos1file touch /ftpuserdir/westos2/westos2file touch /ftpuserdir/westos3/westos3file
- 主配置文件
vim /etc/vsftpd/vsftpd.conf local_root=/ftpuserdir/$USER user_sub_token=$USER
- 重启服务
systemctl restart vsftpd
3.用户配置独立
user_config_dir=/etc/vsftpd/user_config #在此目录中与用户名称相同的文件为用户配置文件
mkdir /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/westos2
anon_upload_enable=YES
设定完成后westos2用户可以上传文件
westos1和westos3不行