设为首页 收藏本站
查看: 1855|回复: 0

[经验分享] 基于MYSQL验证的vsftpd虚拟用户

[复制链接]

尚未签到

发表于 2017-10-27 09:10:43 | 显示全部楼层 |阅读模式
一、安装需要的包和包组:


(1)在数据库服务器上安装包:

Centos7:在数据库服务器上安装
    yum -y install mariadb-server   安装包
    systemctl start mariadb       启动服务
    systemctl enable mariadb     设置开机启动
     mysql_secure_installation     运行安全脚本,设置root管理员及密码
Centos6:在数据库服务器上安装
    yum -y install mysql-server    安装包            
     service mysqld start       启动服务
     chkconfig mysqld on         设置开机启动
     mysql_secure_installation     运行安全脚本,设置root管理员及密码

(2)在FTP服务器上安装vsftpd和pam_mysql包:

Centos6:pam_mysql由epel6的源提供,可直接安装
    yum install vsftpd pam_mysql

Centos7:无对应rpm包,需手动编译安装
    ①yum -y groupinstall "Development Tools"      安装开发包组
     yum -y install mariadb-devel pam-devel vsftpd  安装必要的包
    ②下载pam_mysql-0.7RC1.tar.gz
     解压tar xvf pam_mysql-0.7RC1.tar.gz
    ③编译安装pam_mysql
     cd pam_mysql-0.7RC1/
      ./configure --with-pam=/usr --with-pam-mods-dir=/lib64/security
      make && make install


二、在FTP服务器上创建系统用户
  ①useradd -d  /app/ftpdir -r -m ftpuser   创建系统用户
  ②mkdir /app/ftpdir;chmod 555 /app/ftpdir  除去ftp根目录的写权限才能登陆

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


  1.建立存储虚拟用户数据库(vsftpd)和连接的数据库用户(ftpuser)
    ①mysql -uroot -p123456         登陆数据库
    ②mysql> CREATE DATABASE vsftpd;  创建数据库vsftpd
    ③授权用户对数据库vsftpd有查询权限:
   ftp服务和mysql不在同一主机:
mysql> GRANT SELECT ON vsftpd.* TO ftpuser@'192.166.199.%' IDENTIFIED BY '123456';
   ftp服务和mysql在同一主机:
mysql> GRANT SELECT ON vsftpd.* TO ftpuser@localhost IDENTIFIED BY '123456';

   2.准备相关表(ftpusers)
    mysql> USE vsftpd;
    vsftpd> CREATE TABLE ftpusers (name CHAR(50),pass CHAR(50));
62c00c4dace87d983ab960cd4abf0c24.jpg

   3.添加虚拟用户

  根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后存储
mysql> INSERT INTO ftpusers values(‘ftp1',password('123456')); 添加ftp1用户
mysql> INSERT INTO ftpusers values(‘ftp2',password('123456')); 添加ftp2用户
mysql> SELECT * FROM ftpusers; 查看表ftpusers,可看到两个用户已添加
a7336c742c8e06df11bbcccf1c325341.jpg


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


  1、在FTP服务器上建立pam认证所需文件
    vim /etc/pam.d/vsftpd.mysql
    添加如下两行
auth required pam_mysql.so user=ftpuser passwd=123456 host=192.168.199.134 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2
account required pam_mysql.so user=ftpuser passwd=123456 host=192.168.199.134 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2


字段说明:
auth           表示认证
account          验证账号密码正常使用
required         表示认证要通过
pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为给此模块传递的参数
user=ftpuser       登录mysql的用户
passwd=123456       登录mysql的的密码
host=mysqlserver     mysql服务器的主机名或ip地址
db=vsftpd         指定连接msyql的数据库名称
table=ftpusers       指定连接数据库中的表名
usercolumn=name      当做用户名的字段
passwdcolumn=password  当做用户名字段的密码
crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函数加密,3表示md5加密,4表示sha1加密。注意:参考README文档,选择正确的加密方式

   2、修改vsftpd配置文件,使其适应mysql认证
    vim /etc/vsftpd/vsftpd.conf
    确保已经启用了以下选项:
        anonymous_enable=YES
    添加下面项:
        guest_enable=YES
        guest_username=ftpuser
        user_config_dir=/etc/vsftpd/conf.d/  作为每个用户单独的配置文件的路径,下面会创建
    修改下面一项,原系统用户无法登录:
        pam_service_name=vsftpd.mysql


五、启动vsftpd服务
    Centos6:service vsftpd start
    Centos7:systemctl start vsftpd
    查看端口开启情况
        ss -ntlp|grep 21
ac8b9a2c17202584b1e1b8a2dd3727d7.jpg


六、在FTP服务器上配置虚拟用户具有不同的访问权限
   说明:vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

创建所需要目录,并为虚拟用户提供配置文件


1、创建目录:mkdir /etc/vsftpd/conf.d/ 虚拟用户配置文件所在的目录


2、为ftp1提供配置文件  
   ①vim /etc/vsftpd/conf.d/ftp1      编辑ftp1的配置文件
        anon_upload_enable=YES    允许上传
   ②mkdir /app/ftpdir/upload      创建子目录,使ftp1可以在该目录上传文件
   ③setfacl -m u:ftpuser:rwx /app/ftpdir/upload  给予ftp1对该目录rwx权限
   ftp1用户实现效果:ftp1用户登陆就能进到upload里面上传文件了


3、为ftp2提供配置文件
   ①vim /etc/vsftpd/conf.d/ftp2
    local_root=/app/ftpdir2   登录目录改变至指定的目录(/app/ftpdir2)
   ②mkdir /app/ftpdir2;chmod 555 /app/ftpdir2  登陆根目录不能有w权限
   ③touch /app/ftpdir2/hello  
   ftp2用户实现效果:ftp2用户登陆就能使用ls看到hello文件了


4、重启vsftpd服务
   systemctl restart vsftpd


七、测试效果图如下:
700add717aea445db84d1bd74529b1bc.jpg
f239c4426bdce560a50bf343c5a33653.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-406023-1-1.html 上篇帖子: Vsftpd使用MySQL验证实验 下篇帖子: ftp下实现文件和mysql验证虚拟用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表