基于vsftpd+MySQL的FTP服务虚拟用户认证

目录

一、问题背景

二、操作方法

2.1、给mysql 安装认证服务模块

2.2、准备相关的数据库和相关的表

2.3、添加测试的虚拟用户,其密码采取加密存放的方式。

2.4、建立pam认证所需文件

2.5、创建虚拟用户访问的映射用户

2.6、修改vsftpd的配置文件

2.7、重启ftp服务

2.8、测试登录

2.9、虚拟用户单独实现上传或下载的权限


一、问题背景

        使用linux中FTP虚拟用户进行FTP服务使用的前提下,虽说解决了一些用户安全性的问题,但从多方面考虑,该方法多多少少还会隐藏一些安全问题,比如用户在使用时被一些抓包工具截取到,这样就直接把用户的密码进行了截取,确保不了用户使用的安全性。

       可以通过vsftpd+MySQL的这种数据用户认证方式,来实现FTP服务的正常使用,使用数据库存放的好处,是因为数据库中表的数据,一般是不会轻易删除或是清理,还有用户的登录信息都在数据表中且密码是加密的,抓包工具截取时,无法正常获取到用户的密码。

        以下是针对vsftpd+MySQL的FTP服务虚拟用户认证方法,供大学参考和学习。

二、操作方法

2.1、给mysql 安装认证服务模块

        # tar -zxvf pam_mysql-0.5.tar.gz

        # cd pam_mysql

        # make

        # cp pam_mysql.so /lib/security/

        pam_mysql下载地址:Download pam_mysql-0.5.tar.gz (pam-mysql)

2.2、准备相关的数据库和相关的表

        # mysql -uroot -p

        mysql> create database vsftpd;

        mysql> use vsftpd;

        mysql> create table user(  

            -> id int not null auto_increment primary key,    

             -> name char(15) not null unique key,  

            -> password char(48) not null  

            -> ); 

2.3、添加测试的虚拟用户,其密码采取加密存放的方式。

        mysql> insert into users (name,password) values ('user1',password('123456')),('user2',password('123456'));  

        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;

2.4、建立pam认证所需文件

        # vi /etc/pam.d/vsftpd.mysql

        //添加如下两行  

        auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2

        account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2

        crypt说明如下:

        crypt=0:明文密码

        crypt=1:使用crpyt()函数(对应SQL数据里的encrypt(),encrypt()随机产生salt)

        crypt=2:使用MYSQL中的password()函数加密

        crypt=3:表示使用md5的散列方式

2.5、创建虚拟用户访问的映射用户

        # useradd -s /sbin/nologin -d /var/ftp/ftproot vuser

        # chmod go+rx /var/ftp/ftproot

2.6、修改vsftpd的配置文件

        # vi /etc/vsftpd/vsftpd.conf

        填加如下内容:

        pam_service_name=vsftpd.mysql

        chroot_local_user=YES

        userlist_enable=YES

        tcp_wrappers=YES

        guest_enable=YES

        guest_username=vuser

2.7、重启ftp服务

        # service vsftpd restart

2.8、测试登录

        # ftp 192.168.2.1

        Connected to 192.168.2.1.

        220 (vsFTPd 2.0.3)

        530 Please login with USER and PASS.

        530 Please login with USER and PASS.

        KERBEROS_V4 rejected as an authentication

        type

        Name (192.168.2.1:root): user1

        331 Please specify the password.

        Password:

        230 Login successful. ------已经登录成功了!

        Remote system type is UNIX.

        Using binary mode to transfer files.

        ftp> quit

2.9、虚拟用户单独实现上传或下载的权限

        有时候会给一些特定的用户设置一些特定的权限,比如:user1用户可以上传和下载,user2用户只能看,不能下载,可以用以下方法实现。

        # vi /etc/vsftpd/vsftpd.conf

        user_config_dir=/etc/vsftpd/vuser

        # cd /etc/vsftpd/vuser

        # vi user1

        填加

        anon_upload_enable=YES

        anon_mdkir_write_enable=YES

        anon_other_write_enable=YES

        以上是可以上传与下载,如果不想让user2有下载的功能,进行以下操作

        # cd /etc/vsftpd/vuser

        # vi user2

        填加

        anon_upload_enable=YES

        anon_mdkir_write_enable=NO

        anon_other_write_enable=NO

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值