基于MySQL架设FTP服务器

对于FTP服务器,登陆的用户有3类:匿名用户、系统用户和虚拟用户。对于匿名用户和系统用户身份的认证是通过/etc/passwd /etc/shadow来认证的。系统用户是可以直接登陆系统的用户,用户的账号和密码在网络中传输,是明文的,对于系统的安全来说是一个极大的漏洞。而实现虚拟用户的认证在很大程度上加强了安全性。虚拟用户可以有很多个,为了方便管理,MySQL数据库就首当其冲了

基于MySQL架设FTP服务器

我们知道在系统用户认证的过程中对权限的控制通过pam_unix.so和/etc/pam.d/system-auth这两个pam模块。同样对于虚拟用户而言,vsftp和mysql的连接也需要用到pam模块即pam_mysql.so ,将登陆vsftpd的账号放在Mysql的表当中。

本文要点:

1、基于mysql的虚拟用户

2、为每个虚拟用户定制权限

3、系统用户和虚拟用户同时可以访问

4、FTP服务器的访问控制

<服务器IP:172.16.20.1  测试机IP172.16.100.150>

一、基于mysql的虚拟用户

1、安装pam_mysql-0.7RC1
安装好开发环境和Mysql(源码编译),过程就不重复了,mysql的编译过程参考  下载  pam-mysql的模块

#yum -y  install vsftpd //安装vsfptd服务(可以是编译的也可以是rpm包)#setenforce 0 //关闭selinux#tar zxvf  pam_mysql-0.7RC1.tar.gz  #cd  pam_mysql-0.7RC1  #./configure --with-mysql=/usr/local/mysql --with-openssl  #make  #make install  //会在这个目录中/lib/security/ 生成一个模块 pam_mysql.so  

2、准备数据库及相关表

建立名为vsftpd的数据库来存放相关虚拟用户的帐号,创建2个虚拟用户magedu,marion

密码分别为12345   RedHat

# id magedu //保证要创建的虚拟用户不是系统用户
id: magedu: No such user
# id marion
id: marion: No such user
mysql> create database vsftpd;  mysql> use vsftpd;  mysql> create table users (      -> id int not null auto_increment primary key,        -> name char(15) not null unique key,      -> password char(48) not null      -> );  mysql> desc users;  +----------+----------+------+-----+---------+----------------+
| Field    | Type     | Null | Key | Default | Extra          |
+----------+----------+------+-----+---------+----------------+
| id       | int(11)  | NO   | PRI | NULL    | auto_increment |
| name     | char(15) | NO   | UNI | NULL    |                |
| password | char(48) | NO   |     | NULL    |                |
+----------+----------+------+-----+---------+----------------+
//添加测试的虚拟用户,其密码采取加密存放的方式  mysql> insert into users (name,password) values ('magedu',password('123456')),('marion',password('redhat'));  mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456';  mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456';  mysql> flush privileges; mysql> select * from users;
+----+--------+-------------------------------------------+
| id | name   | password                                  |
+----+--------+-------------------------------------------+
|  1 | magedu | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
|  2 | marion | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
+----+--------+-------------------------------------------+

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5c05f774799c9388184e56ba9ea6e88c.html