vsftpd企业应用快速部署文档

本文详细介绍如何在CentOS 5.6上安装配置VSFTPD,并通过两种方式实现虚拟用户的登录:本地数据文件和数据库服务器。此外还介绍了虚拟用户权限配置及常见问题解决。

系统环境:centos 5.6

vsftpd:2.3.5


vsftpd是UNIX/Linux中非常安全且快速的FTP服务器,目前已经被许多大型站点所采用。vsftpd支持将用户名和口令保存在数据库文件或数据库服务器中。登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录:

匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous;

本地用户登录:使用系统用户登录,在/etc/passwd中;

虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器;

FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。


一、vsftpd安装

1.安装必要的支持文件

db4

db4-devel

db4-utils


2.开始安装vsftpd

(1)源码包安装

下载最新稳定版本:vsftpd-2.3.5.tar.gz

tar zxvf vsftpd-2.3.5.tar.gz

cd vsftpd-2.3.5

./configure

make

make install

cd ../


(2)yum自动安装

 yum install vsftpd


(3)rpm包安装

rpm -qa |grep vsftpd

rpm -ivh vsftpd-2.0.5-16.el5_5.1.i386.rpm



二、vsftpd配置

1.本地数据文件方式

(1)添加虚拟用户口令文件

vim /etc/vsftpd/vftpuser.txt

#添加虚拟用户名和密码,奇数行为用户名,偶数行为密码

xiaojiang

cusAVnRfwnK3sYaD

test

qPJN5pyy73hSAqnU

 

(2)生成虚拟用户口令认证文件

将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。

首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。

rpm -qa |grep db4-utils


yum install db4 db4-utils db4-devel


使用db_load命令生成虚拟用户口令认证文件

db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db

chmod 0600 /etc/vsftpd/vftpuser.*


查看生成虚拟用户口令认证文件

file /etc/vsftpd/vftpuser.db

 

(3)编辑vsftpd的PAM认证文件

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_bak

vim /etc/pam.d/vsftpd

#其他都注释掉,添加下面这两行:

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

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


****************************

说明:(2014-06-12更新)

在实际工作中,我们使用的系统更多的是64位的,所以,我们在添加上面两行文件时,参考下面的方式来添加:

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

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


在此,先检查文件pam_userdb.so在什么位置,一般是在:/lib64/security/pam_userdb.so


如果我们按照最开始的方式添加,在登录ftp用户时提示错误:530 Login incorrect

检查日志:tail -f /var/log/secure

发现下面错误信息:

Jun 12 13:52:39 VM_166_69_centos vsftpd[4872]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: wrong ELF class: ELFCLASS32

Jun 12 13:52:39 VM_166_69_centos vsftpd[4872]: PAM adding faulty module: /lib/security/pam_userdb.so

*************************

 

(4)建立本地映射用户并设置宿主目录权限

所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。

mkdir /home/vftpsite

useradd -d /home/vftpsite -s /sbin/nologin vftpuser

chmod 0777 /home/vftpsite

 

(5)配置vsftpd.conf(设置虚拟用户配置项)

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_umask=022

#开启虚拟用户

guest_enable=YES

#虚拟用户对应的系统用户

guest_username=vftpuser 

#PAM认证文件

pam_service_name=vsftpd

 

(6)重启vsftpd服务

service vsftpd restart


说明:vsftpd上传下载默认路径为/home/vftpsite

 

(7)测试虚拟用户登录

ftp 192.168.1.22


(8)为指定虚拟用户建立独立的配置文件

vim /etc/vsftpd/vsftpd.conf

#添加用户配置目录支持

user_config_dir=/etc/vsftpd/vusers_dir


为用户建立独立的配置目录及文件,配置文件名与用户名同名

mkdir /etc/vsftpd/vusers_dir/

cd /etc/vsftpd/vusers_dir/

vim xiaojiang

输入以下内容:

local_root=/home/vftpsite

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_umask=022


2.数据库服务器方式

(1)安装mysql

具体安装见另外文档


(2)建立本地映射用户并设置宿主目录权限

mkdir /home/vftpsite

useradd -d /home/vftpsite -s /sbin/nologin vftpuser

chmod 0700 /home/vftpsite

 

(3)配置vsftpd.conf(设置虚拟用户配置项)

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_umask=022

#开启虚拟用户

guest_enable=YES

#虚拟用户对应的系统用户

guest_username=vftpuser 

#PAM认证文件

pam_service_name=vsftpd

 

(4)在MySQL中建立用户口令数据库

mysql -u root -p

#建立虚拟用户数据库,库名vftpuser

create database vftpuser;

use vftpuser;

#建立虚拟用户口令表,表名users

create table users(name char(32) binary,passwd char(48) binary);

#建立两个虚拟用户,bobyuan和markwang

insert into users (name,passwd) values ('xiaojiang','cusAVnRfwnK3sYaD'); 

insert into users (name,passwd) values ('test','qPJN5pyy73hSAqnU');



#授权vftpuser这个账号可以读取vftpuser数据库的user表

grant select on vftpuser.users to vftpuser@localhost identified by 'AW978jdIfrDc';

flush privileges;


#验证vftpuser用户是否设置成功


注:

1.虚拟用户密码经过MySQL加密,加密后的密码pam-mysql不能识别(MySQL和pam-mysql兼容性有些问题),因此使用明文保存密码。

2.批量添加用户

vi vftpuser.txt

#添加用户名和密码,注意字段之间要用Tab键隔开。

xiaojiang cusAVnRfwnK3sYaD

test qPJN5pyy73hSAqnU


use vftpuser;

load data local infile "/vftpuser.txt" into table users;

flush privileges;

 

(5)编译MySQL的PAM认证模块

查看/lib/security目录下有没有MySQL对应的PAM模块。

ll /lib/security/pam_mysql*


tar -zxvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1

./configure --with-mysql=/usr/local/webserver/mysql/ --with-pam-mods-dir=/lib/security/

make

make install

 

(6)编辑vsftpd的PAM认证文件

vim /etc/pam.d/vsftpd

其他都注释掉,添加下面这两行:

auth     required   /lib/security/pam_mysql.so user=vftpuser passwd=123456 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=2 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1

account  required   /lib/security/pam_mysql.so user=vftpuser passwd=123456 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=2 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1


说明:

crypt=0:表示口令使用明文方式保存在数据库中

crypt=1:表示口令使用UNIX的DES加密方式加密后保存在数据库中

crypt=2:表示口令使用MySQL的password()函数加密后保存在数据库中

crypt=3:表示口令使用MD5散列值的方式保存在数据库中

 

(7)重启vsftpd服务

service vsftpd restart


说明:vsftpd上传下载默认路径为/home/vftpsite

 

(8)测试虚拟用户登录

ftp 192.168.1.22


三、virtual_use_local_privs参数说明

当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;

 

当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。

 

当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。

 

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,

anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。

 

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。

 

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。

 

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。

 

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。

 

四、虚拟用户配置文件

1. 所有虚拟用户使用统一配置

vim /etc/vsftpd/vsftpd.conf

添加如下内容:

write_enable=YES

anonymous_enable=NO

local_enable=YES

guest_enable=YES

guest_username=vftpuser

virtual_use_local_privs=NO

pam_service_name=vsftpd

#可以下载

anon_world_readable_only=NO

#不能上传,默认为no

anon_upload_enable=NO

#不能新建文件夹

anon_mkdir_write_enable=NO

#不能删除和重命名文件

anon_other_write_enable=NO

ftpd_banner=Welcome to onbing's FTP server

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

ascii_upload_enable=YES

ascii_download_enable=YES

tcp_wrappers=NO

setproctitle_enable=YES

listen_port=21

connect_from_port_20=YES

idle_session_timeout=600

data_connection_timeout=120

max_clients=0

max_per_ip=3

local_max_rate=512000

 

2. 各个虚拟用户使用自身配置

vim /etc/vsftpd/vsftpd.conf

添加内容如下:

write_enable=YES

anonymous_enable=NO

local_enable=YES

guest_enable=YES

guest_username=vftpuser

virtual_use_local_privs=NO

pam_service_name=vsftpd

#指定虚拟用户配置文件路径

user_config_dir=/etc/vsftpd/vsftpd_user_conf

ftpd_banner=Welcome to onbing's FTP server

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

ascii_upload_enable=YES

ascii_download_enable=YES

tcp_wrappers=NO

setproctitle_enable=YES

listen_port=21

connect_from_port_20=YES

idle_session_timeout=600

data_connection_timeout=120

max_clients=0

max_per_ip=3

local_max_rate=512000



#新建虚拟用户配置文件路径

mkdir /etc/vsftpd/vsftpd_user_conf


#编辑xiaojiang的配置文件

vi /etc/vsftpd/vsftpd_user_conf/xiaojiang

添加如下内容:

#只开放下载权限。注意这个地方千万不能写成YES,否则xiaojiang将不能列出文件和目录

anon_world_readable_only=NO 


#编辑test的配置文件

vi /etc/vsftpd/vsftpd_user_conf/test

添加内容如下:

#开放写权限

write_enable=YES

#开放下载权限

anon_world_readable_only=NO

#开放上传权限

anon_upload_enable=YES

#开放创建目录的权限

anon_mkdir_write_enable=YES

#开放删除和重命名的权限

anon_other_write_enable=YES


《全文完》


说明:

1.具体企业应用(略)

2.本文参考文档:《Vsftpd FTP服务器-虚拟用户(mysql)和本地用户同时验证》

本文转自自由心行博客51CTO博客,原文链接http://blog.51cto.com/xiaojiang2008/798136如需转载请自行联系原作者


xiaojiang

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值