vsftp+pam+mysql


vsftpd是目前在linux系统环境下表现最为优越的安全,稳定,快速的性能,加上vsftpd的可读性强、易配置,受到更为广泛的应用。vsftpd有三种实现的形式,分别为:

1、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问;


2本地用户形式:以/etc/passwd中的用户名为认证方式;


3、虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。


这次运用第三种虚拟用户形式在数据库中保存vsftp的登陆的账号和密码。用pam验证登陆


1.安装pam_mysql-0.7RC1.tar.gz

# tar xfpam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure--with-openssl

# make && makeinstall        #如果报错,安装mysql-devel

# ls /usr/lib/security/

classpath.securitypam_mysql.la pam_mysql.so

# ln -s/usr/lib/security/pam_mysql.so /lib/security/pam_mysql.so

2.创建一个必要的本地用户虽说是虚拟用户,不过,由于虚拟用户的信息存储在MySQL数据库中,所以还是需要一个能够读取MySQL数据库的本地用户.

# useradd -s/sbin/nologin virtual

# mysql -u root -p

Enter password:

mysql> CREATE DATABASEvsftpd;

Query OK, 1 row affected(0.02 sec)

mysql> USE vsftpd;

Database changed

3.创建用于存储虚拟用户信息的表users

mysql> CREATE TABLEusers (username varchar(20) NOT NULL,password varchar(40) NOT NULL,PRIMARY KEY(username)) TYPE=MyISAM;

Query OK, 0 rows affected,1 warning (0.01 sec)

4.让本地用户virtual能读取vsftpd数据库的users表的内容

mysql> grant selecton vsftpd.users to virtual@localhost identified by '123456';

Query OK, 0 rowsaffected (0.00 sec)

mysql> flushprivileges;

Query OK, 0 rowsaffected (0.00 sec)

5.建立虚拟用户

mysql> insert intousers values ('vu1','123');

Query OK, 1 row affected(0.00 sec)

mysql> insert intousers values ('vu2','123');

Query OK, 1 row affected(0.00 sec)

mysql> insert intousers values ('vu3','123');

Query OK, 1 row affected(0.00 sec)

mysql> quit

Bye

6.配置vsftpdPAM验证

# vim/etc/pam.d/vsftpd_mysql

auth requiredpam_mysql.so user=virtual passwd=123456 host=localhost db=vsftpd table=usersusercolumn=username passwdcolumn=password crypt=0

account requiredpam_mysql.so user=virtual passwd=123456 host=localhost db=vsftpd table=usersusercolumn=username passwdcolumn=password crypt=0

7.配置ftp/etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd_mysql#pam_service_name=vsftpd_mysql  要与/etc/pam.d/配置文件的文件名相同

guest_enable=YES               #guest_enable=YES 开启虚拟用户功能

guest_username=virtual            #guest_username=virtual 指定虚拟用户使用的系统用户

virtual_use_local_privs=YES       #virtual_use_local_privs 为虚拟用户设置不同权限设置为 YES 时,虚拟用户使用与本地用相同权限设置为 NO 时,虚拟用户使用与匿名用户相同权限


wKioL1M1Ts3jMbGZAAC8GblGFYU164.jpg

可以到 百度云盘下载 账号 pankuo1@sina.cn密码pk492940446