企业中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的搭建已经介绍完成,请读者自行搭建环境测试。