<3>vsftpd服务的部署及优化


1,实验环境

新建一个虚拟机node1,配置步骤:
1,	开始配置网络;
2,	selinux 关闭:用vim /etc/selinux/config 编辑SELINUX=disabled,可用getenforce命令查看;
3,	然后cd  /etc/yum.repo.d/  vim westos.repo编写仓库文件:编写内容:
[AppStream]
Name= AppStream
Baseurl=http://10.4.17.141/westos/AppStream
gpgcheck=0

[BaseOS]
Name= BaseOS
Baseurl=http://10.4.17.141/westos/BaseOS
gpgcheck=0
4, [root@node1~]# dnf clean all
[root@node1~]# dnf list lftp
[root@node1~]# dnf install lftp

2,vsftpd 安装及启用

[root@node1~]# dnf search lftp
[root@node1~]# dnf search httpd
[root@node1~]# dnf install vsftpd httpd  -y 
[root@node1~]# systemctl enable –now vsftpd
[root@node1~]# systemctl status firewalld  #火墙可以开着
[root@node1~]# ss –antlupe | grep ftp
[root@node1~]# lftp 172.25.254.100 #访问不通
[root@node1~]# rpm –qc vsftpd
[root@node1~]# vim  /etc/vsgtpd/vsfypd.conf
编写:12行的改为anonymous_enable=YES
[root@node1~]# systemctl restart httpd 
[root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100 #访问通了
[root@node1~]# ls –ld /var/ftp
[root@node1~]# ls /var/ftp
[root@node1~]# ls
[root@node1~]# touch /var/ftp/westosfile
[root@node1~]# lftp 172.25.254.100  #显示不了
[root@node1~]# firewall-cmd --permanent --add-service=ftp
[root@node1~]# firewalld-cmd reload #重新启动后就能访问了lftp 172.25.254.100
[root@node1~]# firewall-cmd –list-all #有了ftp

3,vsftpd 基本信息

信息 含义
服务名称: vsftpd.service
配置目录 /etc/vsftpd
主配置文件 /etc/vsftpd/vsftpd.conf
默认发布目录 /var/ftp
550报错 程序本身拒绝(服务相应功能未开启)
553报错 文件系统权限限制
500报错 权限过大
530报错 认证失败(一般是输入密码错误)

4,匿名用户访问控制

%上传控制 
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:anon_upload_enable=YES 
[root@node1~]# systemctl restart vsftpd
[root@node1~]# chmod 775 /var/ftp/pub
[root@node1~]# chgrp ftp /var/ftp/pub
[root@node1~]# lftp 10.4.17.241
lftp 10.4.17.241:~> ls
lftp 10.4.17.241:~> cd pub
lftp 10.4.17.241:/pub> put /etc/passwd  #上传文件
lftp 10.4.17.241:/pub> ls
lftp 10.4.17.241:/pub> quit
[root@node1~]# id ftp
[root@node1~]# ls –ld /var/ftp/pub

%删除重命令控制
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:anon_other_write_enable=YES 
[root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
lftp 172.25.254.100:~> cd pub
lftp 172.25.254.100:/pub> rm group  #删除group
lftp 172.25.254.100:/pub> ls  #已被删除
lftp 172.25.254.100:/pub> mv passwd hello #把passwd改为hello
lftp 172.25.254.100:/pub> ls
lftp 172.25.254.100:/pub> quit

%目录建立控制
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:anon_mkdir_write_enable=YES
[root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
lftp 172.25.254.100:~> cd pub
lftp 172.25.254.100:/pub> mkdir test  #建立test目录
lftp 172.25.254.100:/pub> ls  #test已被建立
lftp 172.25.254.100:/pub> quit

%下载控制
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:anon_world_readable_only=NO ##匿名用户可以下载不能读的文件
[root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
lftp 172.25.254.100:~> cd pub
lftp 172.25.254.100:/pub>get hello  #下载hello
lftp 172.25.254.100:/pub> quit
[root@node1~]# ls  #有下载的hello

%匿名用户上传文件的用户身份设定
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:chown_upload=YES
chown_username=westos   #一定是存在的用户
chown_upload_mode=0644 #赋予权限
 [root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
lftp 172.25.254.100:~> cd pub
lftp 172.25.254.100:/pub> put /etc/passwd 上传
lftp 172.25.254.100:/pub> ls  #/etc/passwd已被上传,且在westos用户的id
lftp 172.25.254.100:/pub> quit
[root@node1~]# id westos


%匿名用户上传文件权限设定
anon_umask=xxx
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:anon_umask=022 #此时权限=666-022=644#且此时的chown_upload=YES chown_username =westos是屏蔽的,当不屏蔽时上传文权限将不等于此参数设定,因为指定用户身份后就不是匿名的了
[root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
lftp 172.25.254.100:~> cd pub
lftp 172.25.254.100:/pub> put /etc/inittab 上传
lftp 172.25.254.100:/pub> ls  #/etc/ inittab已被上传,查看权限是644
lftp 172.25.254.100:/pub> quit

%匿名用户上传文件的用户身份设定
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:chown_upload=YES
chown_username=westos   #一定是存在的用户
chown_upload_mode=0644 #赋予权限
 [root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
lftp 172.25.254.100:~> cd pub
lftp 172.25.254.100:/pub> put /etc/shadow 上传
lftp 172.25.254.100:/pub> ls  #/etc/ shadow已被上传,且在westos用户的id
lftp 172.25.254.100:/pub> ls  #查看权限是644
lftp 172.25.254.100:/pub> quit
[root@node1~]# id westos


%家目录控制
[root@node1~]#cd
[root@node1~]#mkdir /westos_ftp
[root@node1~]# touch /westos_ftp/westosfile
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:anon_root=/westosdir_ftp  #家目录给新创建的文件夹,改回默认的就把这个注释掉
[root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls  #默认家目录为/westos_ftp
lftp 172.25.254.100:/pub> quit

%登陆控制
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:anonymous_enable=YES 
[root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls   #能ls代表可以登录

%登陆数量控制:
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:max_clients=2  #最大的连接数量不能超过2,但设置前已经进入的就还能用,而且退出还能连,但只能连续不退出连两个以上
[root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls  
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
[root@node1~]# lftp 172.25.254.100  #不退出,只能连续登两个,在登就不行了。但是设置编写之前登录的多个shell界面还是可以使用的,但每个shell界面也是只能不退出的连续等两次
lftp 172.25.254.100:/pub> quit
lftp 172.25.254.100:/pub> quit
[root@node1~]# Journal –xe 查看日志来排查错误


%上传速率控制
[root@node1~]# find / -size +100M
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:anon_max_rate=102400   #限制之后上传速率就在100左右
 [root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
lftp 172.25.254.100:~> cd pub
lftp 172.25.254.100:/pub> put /usr/lib64/firefox/libxul.so 上传大于100M的文件,发现上传速率很慢
lftp 172.25.254.100:~> ls
lftp 172.25.254.100:~> rm –fr libxul.so
lftp 172.25.254.100:/pub> quit
%操作完成

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.本地用户的访问

%操作,本地用户的相关
首先重新建立三个用户lee,westos,linux ,密码都改为westos,家目录都是干净的,用ls /home/westos/ 查看,su-登录到lee中touch leefile 登录westos中touch westosfile  登录linux中touch linuxfile.
[root@node1~]# ls /home/westos/
[root@node1~]# ls /home/lee/
[root@node1~]# ls /home/linux/
[root@node1~]# lftp 172.25.254.100 –u westos #指定用户登录
Passwd:
lftp [email protected]:~> ls
lftp [email protected]:~> quit

%登陆控制
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:anonymous_enable=NMOP   #把yes改为nmop
 [root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100 –u westos #指定用户登录
Passwd:
lftp [email protected]:~> ls  #不能ls,即不能登录访问
lftp [email protected]:~> quit


%家目录控制
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:local_root=/westosdir_ftp  #家目录给新创建的文件夹,改回默认的就把这个注释掉,那各自用户是各自的家目录。
[root@node1~]# systemctl restart vsftpd
[root@node1~]# lftp 172.25.254.100 –u westos #指定用户登录
Passwd:
lftp [email protected]:~> ls  #默认家目录为/westos_ftp,对所有的用户奇效
lftp [email protected]:~> quit


%写权限控制
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:write_enable=NO  #YES改为NO,所有用户就不能写了
[root@node1~]# systemctl restart  vsftpd
[root@node1~]# lftp 172.25.254.100 –u westos #指定用户登录
Passwd:
lftp [email protected]:~> ls  #能浏览根
lftp [email protected]:~> put /etc/passwd  #报错550
lftp [email protected]:~> quit


%上传文件权限控制
 [root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:local_umask=022  #权限=666-022=644
[root@node1~]# systemctl restart  vsftpd
[root@node1~]# lftp 172.25.254.100 –u westos #指定用户登录
Passwd:
lftp [email protected]:~> ls  #查看权限
lftp [email protected]:~> quit


%用户登陆控制
/etc/vsftpd/ftpusers ##永久黑
/etc/vsftpd/user_list ##默认黑
用户登陆白名单
userlist_deny=NO #设定/etc/vsftpd/user_list 位白名单#不在名单中的用户不能登陆 ftp

%锁定用户到自己的家目录中
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:chroot_local_user=YES  #去掉注释,锁定用户到自己的家目录中
[root@node1~]# systemctl restart  vsftpd
[root@node1~]# lftp 172.25.254.100 –u westos #指定用户登录
Passwd:
lftp [email protected]:~> ls  #浏览根不能,拒绝写
lftp [email protected]:~> chmod u-w /home/*
lftp [email protected]:~> ls  #就可以了
lftp [email protected]:~> cd /   #所有的用户都被锁到家目录里了,不能切换到根
lftp [email protected]:~> quit

%锁定用户到自己的家目录中的白名单
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:chroot_local_user=YES  #若chroot_local_user=NO,所有的用户都不会被锁到家目录里,都能切到根
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list  #去掉注释
[root@node1~]# lftp 172.25.254.100 –u westos #指定用户登录
Passwd:
lftp [email protected]:~> echo westos > /etc/vsftpd/chroot_list  #写入westos用户,就会被允许切到根,属于白名单
lftp [email protected]:~> cd /   #可以切到根下
lftp [email protected]:~> quit


%锁定用户到自己的家目录中的黑名单
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:chroot_local_user=NO  #YES时/etc/vsftpd/chroot_list就是白名单,NO时就是黑名单,黑名单里写进的用户是被锁定到家目录里,不能切到其他目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
[root@node1~]# lftp 172.25.254.100 –u westos #指定用户登录
Passwd:
lftp [email protected]:~> echo westos > /etc/vsftpd/chroot_list  #写入westos用户,就会被允许切到根,属于白名单
lftp [email protected]:~> cd /   #黑名单不能切到根下
lftp [email protected]:~> quit

%用户登陆控制
Cd /etc/vsftpd/  #ls 查看个文件
/etc/vsftpd/ftpusers ##永久黑  root在里面,永久黑时,无论做什么操作都是黑名单
/etc/vsftpd/user_list ##默认黑

%用户登陆白名单
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容:添加userlist_deny=NO #设定/etc/vsftpd/user_list 位白名单#不在名单中的用户不能登陆 ftp。userlist_deny=YES时/etc/vsftpd/user_list为黑名单不能登录。
[root@node1~]#vim /etc/vsftpd/user_list #添加westos,restart vsftpd; westos就能登录ls
%操作完成

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.虚拟用户访问

%操作:
1.建立虚拟用户过程
[root@node1~]# vim /etc/vsftpd/authfile #建立认证文件模板。里面写虚拟用户及密码,id user1 是不存在的,只适用于ftp
编辑内容:
user1  #用户
123  #用户密码
user 2
123
user 3
123
2, [root@node1~]#cd /etc/vsftpd/
[root@node1~]# db_load -T -t hash -f authfile authfile.db ##加密认证文件 -T 转换 -t type -f 指定转换文件
[root@node1/etc/vsftpd/]#ls  #文件authfile.db存在
3. [root@node1/etc/vsftpd/]# vim /etc/pam.d/ ftp-auth
编辑内容:
account required pam_userdb.so db=/etc/vsftpd/authfile  #pam_userdb.so是看门大爷,读取db=/etc/vsftpd/authfile文件里的内容
auth required pam_userdb.so db=/etc/vsftpd/authfile
4. [root@node1~]# vim /etc/vsftpd/vsftpd.conf
编辑内容
pam_service_name=ftp-auth ##指定认证策略文件,上面所编写的文件
guest_enable=YES ##指定虚拟用户功能开启
guest_username=ftp ##指定虚拟用户在 ftp 服务器上的用户身份
[root@node1~]# systemctl restart  vsftpd
[root@node1~]# lftp 172.25.254.100 –u user1 #指定用户登录
Passwd:123
lftp [email protected]:~>ls  #能登陆
[root@node1~]# lftp 172.25.254.100 –u user2 #指定用户登录
Passwd:123
lftp [email protected]:~>ls#能登陆
%操作完成

建立虚拟用户:

在这里插入图片描述在这里插入图片描述

7.虚拟用户家目录的独立设定

%操作:每个用户的家目录是在一起的,现在要把每个用户的家目录建立
[root@node1~]# mkdir -p /ftphome/user{1..3}
[root@node1~]#touch /ftphome/user1/user1file
[root@node1~]# touch /ftphome/user2/user2file 
[root@node1~]# touch /ftphome/user2/user2file
[root@node1~]# mkdir –p /var/ftphome/user{1..3}/westos
[root@node1~]# ls –Rl /var/ftphome/  #可以看到各自用户里有建立的相应文件
[root@node1~]#vim /etc/vsftpd/vsftpd.conf
编辑内容:
local_root=/ftphome/$USER
user_sub_token=$USER
systemctl restart vsftpd

[root@node1~]# lftp 172.25.254.100 –u user1 #指定用户登录
Passwd:123
lftp [email protected]:~>ls  #看家目录属于自己建立的user1file
lftp [email protected]:~> quit
[root@node1~]# lftp 172.25.254.100 –u user2 #指定用户登录
Passwd:123
lftp [email protected]:~>ls#看家目录属于自己建立的user2file
lftp [email protected]:~> quit
%操作完成

在这里插入图片描述

8,用户配置独立

%操作
[root@node1~]# chmod 775 /var/ftphome/user{1..3}/westos
[root@node1~]# chgrp ftp /var/ftphome/user{1..3}/westos
[root@node1~]# lftp 172.25.254.100 –u user1 #指定用户登录
Passwd:123
lftp [email protected]:~>ls  #能登陆
lftp [email protected]:~> put /etc/passwd # 能上传
lftp [email protected]:~> quit
[root@node1~]# lftp 172.25.254.100 –u user2 #指定用户登录
Passwd:123
lftp [email protected]:~>ls##能登陆
lftp [email protected]:~> put /etc/passwd # 能上传
lftp [email protected]:~> quit
%让user1可以上传user2,3不能上传
[root@node1~]#vim /etc/vsftpd/vsftpd.conf
注释掉
#anon_upload=YES
#anon_other_write_enable=YES  
#anon_umask=022
#anon_world_readable_only=NO
此时user1,2,3所有的用户就都不能上传,550服务不允许
[root@node1~]# vim /etc/vsftpd/vsftpd.conf
编写内容:添加user_config_dir=/etc/vsftpd/confdir  #该文件必须存在 ,写法用man 5 vsftpd.conf
[root@node1~]# mkdir /etc/ vsftpd/confdir
[root@node1~]# cd / etc/ vsftpd/confdir
[root@node1~]# vim user1
编写:anon_upload_enable=YES
此时user1可以上传user2,3不能上传
[root@node1~]# lftp 172.25.254.100 –u user1 #指定用户登录
Passwd:123
lftp [email protected]:~>ls  #能登陆
lftp [email protected]:~> put /etc/passwd # 能上传
lftp [email protected]:~> quit
[root@node1~]# lftp 172.25.254.100 –u user2 #指定用户登录
Passwd:123
lftp [email protected]:~>ls##能登陆
lftp [email protected]:~> put /etc/passwd # 不能上传
lftp [email protected]:~> quit
%操作完毕

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qiao_qing/article/details/110143639