文件服务器--vsftpd的搭建使用

背景

由于内网环境中没有特别适合的大文件共享服务,所以考虑自己搭建一个ftp服务器,用来给团队分享各种安装包以及环境、教程等等。

 

服务安装

首先查看内网服务器是否已经安装了vsftpd服务, vsftpd是very secure ftp的含义,对安全性支持很好。

rpm -qa|grep vsftpd

如果结果中有相关信息,则已经安装,如果没有,则通过yum进行安装。考虑到vsftpd服务基本上是通用的,所以内网的yum源里面也一般会维护对应的安装包。

yum install -y vsftpd

安装完毕之后,我们通过如下命令启动ftp服务

systemctl start vsftpd.service

 

服务配置

在安装完毕之后,默认情况下,我们是可以通过服务器的用户名和密码登录到ftp服务的,同时还有匿名用户登录的可能。这样的ftp服务从安全性角度来说是很低的。因此我们要考虑对于登录FTP的用户做些限制。

1、禁止匿名用户登录

通过修改ftp服务的配置文件:/etc/vsftpd/vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

找到并设置匿名用户属性:

anonymous_enable=NO

2、对于本地用户,即linux本来已经存在的用户设定ftp的活动范围,假定已经创建了用户devs,属于devgroup用户组

groupadd devgroup
useradd -s /bin/bash -g devgroup -d /home/devs devs

那么,通过配置/etc/vsftpd.conf文件,设置如下属性可以将ftp登录后的根目录限制为用户的家目录 /home/devs

chroot_local_user=YES   #表示改变跟目录为用户家目录
chroot_list_enable=YES #表示启用例外用户列表,在该列表中的用户,将不会变更根目录
chroot_list_file=/etc/vsftpd/chroot_list #用户列表,里面的用户将不会被chroot()所限制
allow_writeable_chroot=YES #新版的vsftp默认要求用户不能对家目录进行写操作,否则会登录认证失败,需要这里显示设置一下,才能登录成功。

另外对于/etc/vsftpd/chroot_list文件,我们需要手动 touch一下生成空文件,否则也会登录失败。

所有配置完成之后,通过命令重启ftp服务即可

systemctl restart vsftpd

重启后,我们通过xftp连接到服务器时,通过本地用户登录之后,看到的根目录就变为了该用户的家目录。无法跳出到其他目录中去了。

3、限制ftp用户ssh登录

有两种方法,第一种是建立虚拟用户,然后通过虚拟用户来完成ftp的功能,整个配置很麻烦,网上的资料乱七八糟,看了下放弃了。

另外一种是修改ftp用户的登录权限,然后通过修改PAM认证方式来允许ftp连接

首先修改用户的登录权限

usermod -s /sbin/nologin devs

在做完这一步之后,我们如果直接尝试ftp登录,会提示身份认证失败,所以需要修改pam认证。

vim /etc/pam.d/vsftpd

找到并注释掉一下内容:

auth required pam_shells.so

然后重启vsftpd即可重新ftp连接上服务了,这个时候,通过devs用户登录ftp,就只能看到该用户家目录下的文件,且不支持该用户ssh登录了。

参考:

vsftp新建用户无法登录? - 白高宁的回答 - 知乎 https://www.zhihu.com/question/268255821/answer/622810196

 

posted @ 2020-06-30 15:11  sliec  阅读(567)  评论(0编辑  收藏  举报