vsftpd服务的部署及优化
实验环境
server主机 :localhost192.168.3.15 | client主机 :foudation 66:192.168.3.14 |
---|---|
selinux 关闭 火墙开启 dnf 安装设定完成 ,安装vsftpd服务,添加火墙策略firewall-cmd --permanent --add-service=ftp,firewall-cmd --reload | 火墙开启 selinux 关闭 dnf 安装设定完成,安装 lftp #ftp 协议文本浏览器 |
1.ftp 介绍
ftp:file transfer proto
互联阿中最老牌的文件传输协议
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
2.vsftpd 安 装 及 启 用
dnf install vsftpd -y ##安装vsftpd服务:在服务端
关闭 selinux diable 状态 ##服务端和客户端均设定为disabled状态
systemctl enable --now firewalld ###服务端和客户端的火墙均打开
systemctl enable --now vsftpd ##设置vsftpd服务开机自启动 :服务端
firewall-cmd --permanent --add-device=ftp
firewall-cmd --reload
firewalld -cmd --permanent --add-source=192.168.3.15 --zone=trusted
systemctl restart firewalld
vim /etc/vsftpd/vsftpd.conf ##服务端编辑vsftpd服务的主配置文件,进行设定,编辑完需要重启服务
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##权限过大 530##认证失败 |
[root@westos_rh124_111 ftp]# ss -antlupe | grep vsftpd
tcp LISTEN 0 32 *:21 *:* users:(("vsftpd",pid=8688,fd=3)) ino:170973 sk:11 v6only:0 <->
[root@westos_rh124_111 ftp]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf ##主配置文件
4.匿名用户访问控制
编辑主配置文件的信息,重启服务==
lftp 192.168.3.15 ##当访问 ftp 服务时没有加入用户认证为匿名访问
lftp 192.168.3.15 -u westos ##本地用户访问
登陆控制
server
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES|NO
systemctl restart vdftpd
家目录控制
anon_root=/westos
server
client
凡是涉及目录的操作,如上传,看上传目录是否有写权限,更改目录权限,及组身份,
上传控制
server:
anon_upload_enable=YES|NO
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
client
目录建立控制
server:
anon_mkdir_write_enable=YES|NO
client
下载控制
anon_world_readable_only=NO ##匿名用户可以下载不能读的文件
删除重命令控制
anon_other_write_enable=YES|NO
匿名用户上传文件权限设定
anon_umask=xxx
anon_umask=022 ##当设定 chown_username 之后上传文权限将不是用此参数设定
匿名用户上传文件的用户身份设定
chown_upload=YES chown_username=westos chown_upload_mode=0644
登陆数量控制: max_clients=2
client
上传速率控制
anon_max_rate=102400 ###上传速率在100k每秒左右
server
client
5.本地用户的访问
登陆控制
useradd westos useradd lee
echo lee | passwd --stdin westos echo lee | passwd --stdin lee
lftp 192.168.3.15 -u westos
server
vim /etc/vsftpd/vsftpd.conf
local_enable=NO|YES 本地用户可以登录
systemctl restart vsftpd
client
家目录控制
server
vim /etc/vsftpd/vsftpd.conf
local_root=/westos
systemctl restart vsftpd
client
写权限控制
server
修改配置文件
write_enable=NO|YES
client
上传文件权限控制
local_umask=077
用户登陆控制
/etc/vsftpd/ftpusers ##永久黑
/etc/vsftpd/user_list ##默认黑 —>/etc/vstpd/vsftpd.conf中
userlist_deny=YES时|默认就是yes
用户登陆白名单
server
userlist_deny=NO #设定/etc/vsftpd/user_list 位白名单
#不在名单中的用户不能登陆 ftp
重启服务
锁定用户到自己的家目录中
chmod u-w /home/* chroot_local_user=YES
锁定用户到自己的家目录中的白名单:只有白名单的用户不被锁定
server
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
重启服务
client
锁定用户到自己的家目录中的黑名单:黑名单中的用户被锁定
server
chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
重启服务
westos用户被设置为锁定用户到自己的家目录中的黑名单,
client
6.虚拟用户访问
6.1虚拟用户的建立
1.vim /etc/vsftpd/ftp_auth_ftpuserlist立认证文件模板
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/westosftpauth
account required pam_userdb.so db=/etc/vsftpd/ftpuserlist
auth required pam_userdb.so db=/etc/vsftpd/ftpuserlist
4在ftp服务的配置文件中使用的认证策略为上图设定的认证策略
.vim /etc/vsftpd/vsftpd.conf
pam_service_name=westosftpauth ##指定认证策略文件
guest_enable=YES ##指定虚拟用户功能开启
guest_username=westos ##指定虚拟用户在 ftp 服务器上的用户身份
6.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
虚拟用户默认访问目录
6.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 不行
server
1.修改默认目录的权限。
[root@westos_rh124_111 vsftpd]# chmod 775 /westosdir/westos*/pub
[root@westos_rh124_111 vsftpd]# chgrp westos /westosdir/westos*/pub
[root@westos_rh124_111 vsftpd]# ls -ld /westosdir/westos*/pub
drwxrwxr-x 2 root westos 6 Aug 14 04:49 /westosdir/westos1/pub
drwxrwxr-x 2 root westos 20 Aug 14 21:46 /westosdir/westos2/pub
drwxrwxr-x 2 root westos 6 Aug 14 04:49 /westosdir/westos3/pub
2.关闭主配置文件的上传功能
anon_upload_enable=NO
3.设置上传用户白名单
[root@westos_rh124_111 vsftpd]# mkdir confdir
[root@westos_rh124_111 vsftpd]# cd confdir/
[root@westos_rh124_111 confdir]# vim westos2
[root@westos_rh124_111 confdir]# cat /etc/vsftpd/confdir/westos2 ##同名文件的用户可以上传
anon_upload_enable=YES
[root@westos_rh124_111 vsftpd]# tail -n 7 /etc/vsftpd/vsftpd.conf
pam_service_name=westosftpauth
guest_enable=YES
guest_username=westos
userlist_enable=YES
local_root=/westosdir/$USER
user_sub_token=$USER
user_config_dir=/etc/vsftpd/confdir ####与文件同名的用户可以上传
[root@westos_rh124_111 vsftpd]# systemctl restart vsftpd
client
only westos2 upload
[root@localhost Desktop]# lftp 172.25.254.111 -u westos3
Password:
lftp westos3@172.25.254.111:~> ls
drwxr-xr-x 2 0 1000 6 Aug 14 08:49 pub
drwxr-xr-x 2 0 0 6 Aug 14 08:50 westos3file
lftp westos3@172.25.254.111:/> cd pub/
lftp westos3@172.25.254.111:/pub> ls
lftp westos3@172.25.254.111:/pub> put /etc/passwd ##westos3用户不能上传文件
put: /etc/passwd: Access failed: 553 Could not create file.
lftp westos3@172.25.254.111:/pub> quit
[root@localhost Desktop]# lftp 172.25.254.111 -u westos2 ##westos2用户可以上传文件
Password:
lftp westos2@172.25.254.111:~> ls
drwxrwxr-x 2 0 1000 6 Aug 14 08:49 pub
drwxr-xr-x 2 0 0 6 Aug 14 08:50 westos2file
lftp westos2@172.25.254.111:/> cd pub/
lftp westos2@172.25.254.111:/pub> put /etc/passwd
2576 bytes transferred