企业中vsftp虚拟用户高级配置实战



ftp服务器在企业中使用是非常多的,今天在迁移以前同事搭建的一个vsftp虚拟用户的站点的时候,走了些弯路,总结出来写成文档方便以后搭建。

搭建的时候往往为了安全,需要针对不同目录给予不同的权限,那么今天就来实战一下关于企业中vsftp虚拟用户验证的方式是如何实现的。

一、Vsftp的安装

我的安装环境为:Centos 5.5 64 bit

Vsftp的安装非常简单,只需要执行如下的命令就安装完成了。

yum -y install vsftpd db4-tcl db4-utils db4-devel
chkconfig --level 2345 vsftpd on


备注:如果不安装db4-utils,在后面使用db_load命令的时候会提示找不到命令。

二、Vsftp的配置

Vsftp的配置包含几个步骤,分别为:

1.  创建用户数据库

A.创建用户文本文件


vim /etc/vsftpd/vftpuser.txt


添加虚拟帐号的格式如下:



格式:

虚拟帐号1

密码

虚拟帐号2

密码



 

B. 使用db_load命令生成数据库

保存虚拟帐号和密码的文本文件无法被系统帐号直接调用,需要使用db_load命令生成db数据库文件


db_load -T -t hash -f /etc/vsftpd/vftpuser.txt  /etc/vsftpd/vftpuser.db
 
 
 
C.设置用户文本文件和数据库文件的权限为600,防止非法用户获取密码
 
 
chmod 600 /etc/vsftpd/vftpuser.*

 

2. 配置PAM认证文件

为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块.PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。

        使用echo命令清除掉安装vsftp的时候自动添加的内容,或者用#号注释掉也可以。



echo > /etc/pam.d/vsftpd 

#如果不是全新安装,请注意备份次文件



vim /etc/pam.d/vsftpd 添加如下内容:


auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser


 

3.  创建虚拟帐号以及对应的系统帐号

创建系统帐号:



mkdir -p /home/ftp/ftp_upload
mkdir -p /home/ftp/ftp_download
useradd -d /home/ftp/ftp_upload supper -s /sbin/nogloin 
useradd -d /home/ftp/ftp_download ftpuser -s /sbin/nogloin



并通过chmod对相应的目录赋予权限



chown  -R  supper.root  /home/ftp/ftp_upload
chown  -R   ftpuser.root  /home/ftp/ftp_download
chmod  700  /home/ftp/ftp_upload   #允许上传下载
chmod  500  /home/ftp/ftp_download ftpuser  #只允许下载



备注:因为现在新版本的vsftp处于安全的考虑,会自动检查根目录的权限,如果根目录是777的话会报如下错误,所以请大家在设置权限的时候注意,不要设置根目录为777权限.

500 OOPS: vsftpd: refusing to run with writable anonymous root

4. 创建配置文件

在vsftp的配置文件中,可以分别为每个虚拟用户设置不同的子配置文件,从而让子用户获得不同的权限,接下来就来看一下vsftp的配置文件如何设置。

A. 主配置文件的设置

主配置文件主要是设置所有虚拟用户相同的配置,以及通过user_config_dir参数设置子配置文件的路径,配置如下:

anonymous_enable=NO 
#禁用匿名用户登录
 local_enable=YES#启用本地用户登录
listen=YES
#启动监听,设置成standalone启动,不然是用/etc/rc.d/init.d/vsftpd restart会#报Starting vsftpd for vsftpd: 500 OOPS: vsftpd: not configured for standalone, #must be started from inetd错误
chroot_local_user=YES
#将所有本地用户限制在家目录中
pam_service_name=vsftpd
#这个要和前面设置的pam.d目录下的文件保持一致
 user_config_dir= /etc/vsftpd/user_config#设置用户的子配置文件目录 
 max_clients=300#ftp最大的连接客户数
 max_per_ip=10#设置每个IP的最大连接数


 

B.子配置文件的设置

我们可以为每个虚拟用户设置不同配置,比如:是否可以上传、下载速度限制为多少、家目录,对应的什么真实的用户等等。

vim /etc/vsftpd/user_config/carl


guest_enable=yes
#开启虚拟帐号登录
guest_username=www
#虚拟帐号carl对应的系统帐号
local_root=/data/htdocs
#设置虚拟用户的目录
anon_world_readable_only=no
#设置是否允许匿名用户浏览器整个服务器的文件系统
write_enable=yes
#设置虚拟用户是否可以写入
anon_mkdir_write_enable=yes
#设置虚拟用户是否可以创建文件夹
anon_other_write_enable=yes
#设置虚拟用户是否可以执行其他的写入操作,比如删除、重命名、覆盖操作。
anon_upload_enable=yes
#允许虚拟用户的上传功能
anon_max_rate=100000
#设置虚拟用户的传输速度为100KB/s

 

5. 启动vsftp

使用如下命令启动vsftp


/etc/rc.d/init.d/vsftpd start

 

至此,企业中的支持虚拟用户的vsftp的搭建已经介绍完成,请读者自行搭建环境测试。