vsftpd+mysql+pam实现基于数据库的安全的ftp服务

1.方案分析

mysql:存储用户信息的,可以放vsftpd用户的信息

pam:可插入用户认证模块

VSFTPD:安全的ftp服务


2涉及到的知识点:

vsftp

软件安装.启动服务,监听端口,配置文件修改,权限设置



mysql

数据库基本操作.建库,简表,添加用户,添加授权


pam

PAM的设置


3配置实例

配置要点:

1.vsftp的配置文件相关选项的修改

/etc/vsftp/vsftpd.conf

2.pam配置文件的配置

/etc/pam/vsftpd

3.mysql用户的建立支持vsftpd来调用

建立数据库,授权给vsftpd用户


一、安装所需要程序

1、安装mysql和pam_mysql

# yum -y install vsftpd mysql-server mysql-devel pam_mysql


二、创建虚拟用户账号

1.准备数据库及相关表

首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。

mysql> create database vsftpd;

mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123';
mysql> grant select on vsftpd.* to [email protected] identified by '123';
mysql> flush privileges;

mysql> use vsftpd;
mysql> create table users (
    -> id int AUTO_INCREMENT NOT NULL,
    -> name char(20) binary NOT NULL,
    -> password char(48) binary NOT NULL,
    -> primary key(id)
    -> );

2、添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。

mysql> insert into users(name,password) values('tom',password('abc'));
mysql> insert into users(name,password) values('jerry',password('abc'));


三、配置vsftpd

1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

2.修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录
# useradd -s /sbin/nologin -d /var/ftproot vuser
# chmod go+rx /var/ftproot

请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下选项
guest_enable=YES
guest_username=vuser

并确保pam_service_name选项的值如下所示
pam_service_name=vsftpd


四、启动vsftpd服务

# service vsftpd start
# chkconfig vsftpd on

查看端口开启情况

# netstat -tnlp |grep :21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286/vsftpd 

使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端工具登录验正
# ftp 1.1.1.6



你可能感兴趣的:(vsftp)