Vsftpd服务的部署及优化
实验环境:
-
server主机:
172.25.254.101
selinux关闭
dnf安装设定完成 -
client主机:
172.25.254.1
selinux关闭
dnf安装设定完成
安装lftp #ftp协议文本浏览器
文件传输协议(File Transfer Protocol,FTP)
- 是用于在网络上进行文件传输的一套标准协议
- 它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层,
- 使用 TCP 传输而不是 UDP
- 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的
- 而且是面向连接
- 为数据传输提供可靠保证
安装lftp
【1】 首先配置好软件仓库
【2】安装
-
dnf search ftp
-
dnf install vsftpd.x86_64
-
dnf install lftp.x86_64
【3】getenforce 要求为disabled
【4】systemctl --now enable vsftpd #开启vsftpd服务
【5】firewall-cmd --permanent --add-service=ftp #在火墙中允许开启vsftp服务
【6】将主配置文件/etc/vsftpd/vsftpd.conf第十二行改为YES
- vim /etc/vsftpd/vsftpd.conf
第12行更改为:
【7】systemctl restart vsftpd #重启服务,让更改的主配置文件生效,即可使用ftp服务
【8】lftp 172.25.254.101-> ls #使用ftp服务,登录172.25.254.1,ls查看家目录
vsftpd基本信息
- 服务名称:vsftpd.service
- 配置目录:/etc/vsftpd
- 主配置文件:/etc/vsftpd/vsftpd.conf
- 默认发布目录:/var/ftp
- 报错信息:
550 #程序本身拒绝
553 #文件系统权限限制
500 #权限过大
530 #认证失败
匿名用户访问控制
- lftp 172.25.254.1 #当访问ftp服务时没有加入用户认证为匿名访问
- lftp 172.25.254.1 -u westos #本地用户访问
注意:每一次修改完主配置文件 /etc/vsftpd/vsftpd.conf 时,退出保存后,都需要systemctl restart vsftpd将服务重启。
【1】登录控制
anonymous_enable=YES|NO #是否允许匿名用户登录
更改主配置文件
- 不允许:anonymous_enable=NO
- 允许:anonymous_enable=YES
【2】 家目录控制
anon_root=/westosdir#将家目录更改为指定的目录
- 家目录要在默认发布目录里建立:
- 测试:
- 在家目录中创建westosfile四个文件,看是否能在家目录中查看到:
【3】上传控制
anon_upload_enable=YES|NO
- 修改家目录权限:
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
- 测试:
lftp 172.25.254.1
cd pub
put /etc/passwd
【4】目录建立控制
anon_mkdir_write_enable=YES|NO
- 需要切换到/pub目录下进行目录的创建:
【5】下载控制
anon_world_readable_only=NO #匿名用户可以下载不能读的文件
- 测试:
【6】删除重命令控制
anon_other_write_enable=YES|NO #对文件进行删除的控制,开启之后可以删除文件,未开启则不可对文件进行删除
【7】 匿名用户上传文件权限设定
- 备注:
文件的权限为:777-umask值-111
目录的权限为:777-umask值
在配置文件的40行写
anon_umask=xxx
anon_umask=022 #当设定chown_username之后上传文件权限将不适用此参数设定
【8】 匿名用户上传文件的用户身份设定
配置文件中的54行和55行
chown_upload=YES
chown_username=lxy
chown_upload_mode=0644
【9】 登录数量控制:(默认建立链接的个数为50个)
- 如果建立链接的个数过多,安全性会降低,同时会增加电脑的负荷,所以需要对登录数量进行控制,超出最大数量时,就无法登录ftp服务
在配置文件的57行写:
ftp服务器能够接受链接的最大数量的设置
max_clients=2
- 测试:可以看出超出两个的时候,就会无法登录ftp:
【10】上传速率控制:
anon_max_rate=102400
表示匿名用户上传速率被控制在每秒钟100兆
- 测试:
(1)截取一个较大的文件,在上传的时候需要较长的时间:
(2)上传速率控制在每秒钟100兆以内:
本地用户的访问
【1】登录控制
配置文件17行
local_enable=YES
useradd westos
useradd lxy
echo westos | passwd --stdin lxy
-
登录方式:
lftp 172.25.254.1 -u lxy
-
系统默认本地用户可以上传文件
【2】 指定本地用户文件上传文件默认的保留权限
local_umask=077
【3】 用户登录控制
-
永久黑名单:/etc/vsftpd/ftpusers
-
临时黑名单:(默认是黑名单,但是经过设定可以成为白名单)/etc/vsftpd/user_list
-
如果所有用户都在临时黑名单中,那么临时黑名单就成为了白名单,不在名单中的用户就不能呢个登录ftp
136 userlist_enable=YES
137 userlist_deny=NO -
在配置文件中添加这两条命令,则将临时黑名单变成白名单
-
永久黑名单的优先级最高,只要在永久黑名单中,就无法登录
【4】 家目录控制
local_root=/westosdir
【5】写权限控制
write_enable=NO|YES
- 锁定本地用户到自己的家目录中是用户不能浏览根目录
chmod u-w /home/*
chroot_local_user=YES
【6】锁定用户到自己的家目录的白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
- westos用户不能访问家目录:
默认/etc/vsftpd/chroot_list是不存在的,是新建的文件
【7】 锁定用户到自己的家目录中的黑名单
chroot_local-user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
虚拟用户访问
- 建立虚拟用户过程
【1】虚拟用户建立
vim /etc/vsftpd/virt_users
在里面书写(建立两个用户):
user1
123
user2
123
【2】db_load -T -t hash -f /etc/vsftpd/virt_users /etc/vsftpd/virt_users.db#加密认证文件
【3】认证规则的建立
cd /etc/pam.d/
vim virt_users
其中写:
account required pam_userdb.so db=/etc/vsftpd/virt_users
auth required pam_userdb.so db=/etc/vsftpd/virt_users
【4】配置文件中要修改:
pam_service_name=virt_users
userlist_enable=YES
guest_enable=YES
guest_username=ftp
- 重启服务后测试:
id user1 #该用户不存在
lftp 172.25.254.1 -u user1输入密码后可以登录
虚拟用户家目录的独立设定
【1】mkdir -p /ftphomedir/user{1,2}/pub
配置文件:
local_root=/ftphomedir/KaTeX parse error: Expected 'EOF', got '#' at position 6: USER #̲指定用户家目录 user_su…USER #告诉系统USER是变量不是字符串
- 测试:
touch /ftphomedir/user1/user1file
touch /ftphomedir/user2/user2file
用户配置独立
【1】设定所有虚拟用户的配置文件为==/etc/vsftpd/user_config==
**user_config_dir=/etc/vsftpd/user_config **
#在此目录中与用户名称相同的文件用户配置文件
【2】mkdir /etc/vsftpd/user_config
【3】vim /etc/vsftpd/user_config/user1
其中写:anon_upload_enable=YES
【4】chgrp ftp /ftphomedir/user{1,2}/pub
【5】chmod 775 /ftphomedir/user{1,2}/pub
#设定完成后user1可以上传文件,但是user2不能上传文件
- 注意:每次编写完配置文件之后都需要将服务重新启动
systemctl restart vsftpd