vsftpd服务的部署及优化


一、实验环境的配置及ftp的介绍

实验环境的配置:
两台主机之间能通信,并且服务端必须关闭selinux
只要客户端网络没有问题,出现功能错误都是服务端的问题
ftp的介绍:
互联网最老牌的文件传输协议
网站发布比较少用,企业内部比较常用

二、vsftpd服务

2.1vsftd服务的基本信息

vsftd服务的基本信息
服务名称:vsftpd.service
配置目录:/etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp
报错信息:
550程序本身拒绝
553文件系统权限限制
500权限过大
530认证失败

2.2vsftpd服务的安装与启用

服务端安装vsftp这款软件

dnf install vsftpd -y
systemctl enable --now vsftpd
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

客户端安装lftp

dnf install lftp -y
lftp 172.25.254.100(服务器ip) 匿名用户登录
ls 显示的是530报错
lftp 172.25.254.100 -u westos 用的是服务器的用户westos
Password:输入密码后
ls就能看到westos用户家目录里面的所有文件了

这个时候ftp已经启动了,但是它目前只能本地用户登录,客户端登录不了
默认情况下ftp是不允许匿名用户登录

允许匿名用户登录

rpm-qc vsftpd 查询它的主配置文件
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd

原先是匿名用户不能登录改成YES
在这里插入图片描述

lftp 172.25.254.100
ls 可以看到文件了,匿名用户默认登录位置是/var/ftp/这个目录(默认发布目录)
lftp 172.25.254.100(服务器ip) 匿名用户登录

这个时候你如果写的时候,你用的是ftp自带的系统用户身份ftp,这个身份在安装vsftp的时候自动建立
你在/var/ftp/底下建立文件,删掉该文件

lftp 172.25.254.100(服务器ip) 匿名用户登录
ls就能看见刚才建立的文件,看不见该文件了

三、ftp匿名访问控制

man 5 vsftpd.conf 查看所有功能具体参数

3.1匿名用户默认发布目录的指定

服务端

mkdir -p /mnt/yan
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd

在主配置文件下空白处写

anon_root=/mnt
lftp 172.25.254.100(服务器ip) 匿名用户登录
ls
可以看见底下yan文件
quit退出登录

3.2匿名用户上传功能的设定

客户端上传某个文件到ftp服务器

lftp 172.25.254.100(服务器ip) 匿名用户登录
cd pub
put /mnt/yan
报错550,没有权限

服务端开启它的上传功能,该功能默认是关闭的

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd

在这里插入图片描述
客户端,因为pub目录对于其它用户没有写权限

lftp 172.25.254.100(服务器ip) 匿名用户登录
cd pub
put /mnt/yan
报错553

服务端不能修改发布目录/var/ftp权限,如果修改过大777,客户端访问直接后ls,直接报错500
所以修改的发布目录里面的子目录

chmod 775 /var/ftp/pub/
chgrp ftp /var/ftp/pub/

这个时候客户端上传就能上传成功

lftp 172.25.254.100(服务器ip) 匿名用户登录
cd pub
put /mnt/yan

3.3匿名用户建立与删除目录的设定

默认情况下匿名用户不能自建目录,会报错550

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd

开启该功能
在这里插入图片描述

同理服务器ftp修改主配置文件,开启删除功能
在这里插入图片描述

anon_other_write_enable=YES
rm -r 删掉

3.3匿名用户下载目录里文件功能

ftp服务器修改主配置文件,默认情况下,只有匿名有读权利的文件
在这里插入图片描述

anon_world_readable_only=NO
get filename 就能下载出来,下载在你在那个目录下进入的ftp你就下载在那个目录里面了

3.4匿名用户上传文件后文件的权限

默认情况下是600 -rw-------
修改主配置文件

anon-umask=022 保留权限只有02权限

777-022=755
755-111(文件)=644
所以上传文件后文件的权限为-rw-r–r–
所以建立文件是755 drwxr-xr-x

3.4匿名用户上传文件的身份和指定连接ftp服务器最大个数

用户上传文件的身份的更改
上传文件默认是ftp身份,我这块显示文件是1 40 50

id ftp查到的就是14 50

更改上传身份,修改主配置文件,在主配置文件的52和53行
将whoever改成你的用户,查询你的用户grep bash /etc/passwd

chown_uploads=YES
chown_username=whoever

指定连接ftp服务器最大个数
避免ddos攻击,和压力过大(正常防止压力过大用集群)
修改主配置文件,找个空行写max_clients=3只允许最大连接为3个

3.5最大上传速率

dd if=/dev/zero of=/mnt/yan bs=1M count=1000
lftp 172.25.254.100
put /mnt/yan 可以看出每s百M速度

修改主配置文件,找个空行

anon_max_rate=102400 限制速度是100kb/s

四、本地用户的访问

4.1控制本地用户能否登陆和上传文件的权限

控制本地用户能否登陆
修改主配置文件,大概在17行

local_enable=YES 你改成NO,本地用户就登陆不了
lftp 172.25.254.100 -u westos 就登陆530报错了

本地用户上传文件的权限
本地用户上传的权限默认是644 -rw-r–r–
修改主配置文件,25行

local_umask=077 改成

这样文件权限是600,目录权限是700
-rw------ drwx------

4.2本地用户默认发布目录的指定和写权利的控制

默认本地用户登录是在自己的家目录里面
修改主配置文件,找个空行写

local_root=你指定的目录

本地用户写(上传,删除)权利的控制
修改主配置文件,21行,这个关闭后本地用户和匿名用户都写不了

write_enable=YES 改成NO

4.3本地用户登录限制和浏览限制

本地用户登录限制
默认情况下,本地有的用户都能用
cd /etc/vsftpd 底下有ftpusers和user_list 这两个默认情况下是黑名单(名字出现在这两个文件任意一个,都不能访问ftp服务器)
即改即生效,修改该文件ftpusers和user_list其中一个,里面加入westos就相当于westos用户登录不了

但是默认用户不能登录的情况下(在主配置文件找个空行写入)userlist_deny=NO,只有指定名单user_list下的用户可以登录(白名单)
默认情况下userlist_deny=YES
在主配置文件134行
userlist_enable=YES表示userlist名单功能时开启状态

本地用户浏览限制
你本地用户登录以后除了可以浏览自己的家目录还浏览我服务器的/(任何的任何目录),这样不安全
修改主配置文件,在108行修改成YES,默认情况#(相当于NO)所有用户都能浏览/

chroot_local_user=YES 

这个时候ftp安全性加强了,这个时候用户在自己家目录可写的权利会影响登录,所以
在服务端,去掉本地用户的写权限

chmod u-w /home/*

指定部分用户可以浏览/
在主配置文件111行

chroot_list_file=/etc/vsftpd/chroot_list列表里面的人不能访问/

如果想把chroot_list_file改成白名单,需要修改主配置文件108行NO变YES

chroot_local_user=YES

五、虚拟用户的认证部署

5.1认证程序与认证文件

现在的用户都是真实在服务器上面存在的用户,一般系统用户权利大,能登录ftp也可以登录其他服务,所以需要匿名用户,只能用于ftp认证,在系统中不存在
在这里插入图片描述

5.2认证文件的创建与加密

认证名单的制作:在/etc/vsftpd

vim ftpauth
user1 
123
user2 
123
user3 
123

对认证名单加密:

db_load -T -t hash -f ftpauth ftpauth.db

5.3认证程序介绍

rpm -ql vsftpd 在安装的时候系统生成
里面有个文件 /etc/pam.d/vsftpd 认证策略
whatis pam

在这里插入图片描述

vim /etc/pam.d/vsftpd
account 是账号读取账号的时候会读取password-auth文件
auth 是认证,读取认证的时候也会读取password-auth这个文件
/etc/vsftpd/ftpusers 一直都是黑名单是因为它始终都是deny状态

在这里插入图片描述

vim /etc/pam.d/password-auth

auth 用途(密码认证) required功能(必须通过,否则拒绝) pam_faildelay.so delay=2000000使用的程序插件

在这里插入图片描述

find / -name pam_userdb.so
/usr/lib64/security/pam_userdb.so 系统的认证插件,可以直接调用

5.3认证策略(程序)的创立

输入账号,用pam_userdb.so程序看db=/etc/vsftpd/ftpauth文件对比,对比成功通行,不成功就拒绝
输入密码,用pam_userdb.so程序看db=/etc/vsftpd/ftpauth文件对比,对比成功通行,不成功就拒绝

vim /etc/pam.d/ftpauth
account  required   pam_userdb.so db=/etc/vsftpd/ftpauth(看这个文件,后面会自动加.so后缀)
auth     required   pam_userdb.so db=/etc/vsftpd/ftpauth

如果是db=/etc/vsftpd/ftpauth.so 会自动变成db=/etc/vsftpd/ftpauth.so.so

5.4认证程序添加到ftp服务中

修改主配置文件133行
修改原先参数

pam_service_name=vsftpd 原先的
pam_service_name=ftpauth
添加
guest_enable=YES 虚拟用户功能开启
guest_username=ftp 虚拟用户所使用到的真实服务器用户身份是ftp

在服务器上面

id user1 user2 user3都没有

在客户端

lftp 172.25.254.100 -u user1 可以使用
同理user2 user3 密码都是123

这三个用户只有ftp服务承认,其它服务不承认

六、虚拟用户的配置优化

6.1虚拟用户默认发布目录的指定

这三个用户进去都是在pub里面

lftp 172.25.254.100 -u user1 可以使用
同理user2 user3 密码都是123

让三个用户家目录独立

mkdir -p /ftphome/user{1..3}/pub
touch /ftphome/user1/user1file
touch /ftphome/user2/user2file
touch /ftphome/user3/user3file

修改主配置文件,找个空白处写

local_root=/ftphome/$USER
user_sub_token=$USER 变量声明参数

6.2虚拟用户的上传功能

所有用户上传
服务器,由于之前主配置文件设定参数可以上传,所有修改下权限即可,但是无法指定某些用户可以上传某些不可以

chmod 775 /ftphome/user{1..3}/pub
chgrp ftp /ftphome/user{1..3}/pub
man 5 vsftpd.conf
查/conf

添加主配置文件参数

user_config_dir=/etc/vsftpd/confdir 在此目录中与用户名字相同的文件为用户配置文件
mkdir /etc/vsftpd/confdir

此时user1 2 3都不能上传

此时user1可以上传user2 3不能上传

vim /etc/vsftpd/confdir/user1
anon_upload_enable=YES 允许上传
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值