FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制

来源:互联网 发布:linux查看磁盘剩余空间 编辑:程序博客网 时间:2024/06/06 02:42

实验说明:

一台FTP服务器:192.168.243.7(centos7.3)
一台MariaDB数据库服务器:192.168.243.6(centos6.9)
所需要的软件包:pam_mysql-0.7RC1.tar.gz
关闭selinux
工作原理
这里写图片描述

一、在FTP服务器上安装vsftpd和pam_mysql

centos6:pam_mysql由epel的源中提供 yum install vsftpd pam_mysqlcentos7:无对应rpm包,需手动编译安装yum -y groupinstall "Development Tools"    yum -y install   mariadb-devel   pam-devel   vsftpd 
编译安装pam模块

下载pam_mysql-0.7RC1.tar.gz

 tar xvf pam_mysql-0.7RC1.tar.gz      cd pam_mysql-0.7RC1/      ./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security     make && make install   

二、在数据库服务器,创建虚拟用户账号

建立存储虚拟用户数据库和连接的数据库用户
MariaDB [(none)]> create database ftpdb;
MariaDB [(none)]> create table ftpvusers (id int unsigned auto_increment primary key,username char(30),password char(48));  

这里写图片描述

MariaDB [(none)]> insert into ftpvusers (username,password) values ('ftpuser1',password('CENTOS')),('ftpuser2',password('CENTOS'));MariaDB [(none)]> grant all on ftpdb.* to ftpuser@'192.168.243.7' identified by 'CENTOS';    

这里写图片描述

MariaDB [(none)]> flush privileges;

三、在FTP服务器上配置vsftpd服务

1.在FTP服务器上建立pam认证所需文件
 [root@centos7 ~]#vim /etc/pam.d/ftp.mysql 

这里写图片描述

配置字段说明
  • auth 表示认证
  • account 验证账号密码正常使用
  • required 表示认证要通过
  • pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路 径而言,也可以写绝对路径;后面为给此模块传递的参数
  • user=vsftpd为登录mysql的用户
  • passwd=magedu 登录mysql的的密码
  • host=mysqlserver mysql服务器的主机名或ip地址
  • db=vsftpd 指定连接msyql的数据库名称
  • table=users 指定连接数据库中的表名
  • usercolumn=name 当做用户名的字段
  • passwdcolumn=password 当做用户名字段的密码
  • crypt=2 密码的加密方式为mysql password()函数加密
    crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示 使用mysql password()函数加密,3表示md5加密,4表示 sha1加密
2.建立相应用户和修改vsftpd配置文件,使其适应mysql认证 建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /app/ftpsite ftpvuser chmod 555 /app/ftpsite/cd /app/ftpsite/mkdir uploadchown ftpvuser upload

配置vsftpd为虚拟用户使用配置文件目录
添加如下选项
user_config_dir=/etc/vsftpd/vusers.d/

root@centos7 ~]#vim /etc/vsftpd/vsftpd.conf128 pam_service_name=ftp.mysql       //建的pam认证文件129 guest_enable=YES130 guest_username=ftpvuser    //设置的映射系统用户131 user_config_dir=/etc/vsftpd/vusers.d/       

四、启动vsftpd服务

service vsftpd start;systemctl start vsftpd  chkconfig vsftpd on;systemctl enable vsftpd   

查看端口开启情况
netstat -tnlp |grep :21

五、创建所需要目录,并为虚拟用户提供配置文件和配置虚拟用户访问权限

[root@centos7 ~]#mkdir /etc/vsftpd/vusers.d/[root@centos7 ~]#vim  /etc/vsftpd/vusers.d/ftpuser1anon_upload_enable=YES    //否开启虚拟用户上传文件的权限 [root@centos7 ~]#vim  /etc/vsftpd/vusers.d/ftpuser2local_root=/app/ftpsite2/anon_upload_enable=YES[root@centos7 ~]#mkdir -pv /app/ftpsite2/upload[root@centos7 ~]#chown ftpvuser /app/ftpsite2/upload

总结:
在配置ftp配置文件中,留心不要敲多空格,配置命令结尾也不能留出空格,否则vsftpd服务重启失败

阅读全文
0 0