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

[经验分享] vsftpd的基于pam_mysql的虚拟用户机制

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-25 09:16:25 | 显示全部楼层 |阅读模式
vsftpd的基于pam_mysql的虚拟用户机制
虚拟用户:是ftp中常用的一种策略,因为ftp服务古老而且不安全,使用匿名用户不能有效的控制权限,而本地用户可以登录操作系统,极为不安全,所以引入了虚拟用户的概念,其只是将多个虚拟用户映射为一个本地用户,此用户可以设置不允许登录,从而加强了系统的安全性,本问主要介绍基于mysql的虚拟用户
配置pam_mysql
1
2
3
4
5
6
下载地址:pam-mysql.sourceforge.net
# yum -y  groupinstall  "Development Tools" "Server Platform Development"
# yum -y install pam-devel openssl-devel mariadb-devel
# ./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
# make && make install
安装后模块路径:/usr/lib64/security/pam_mysql.so



mariadb配置
创建所需数据库和表,插入所需用户,这里的密码使用password加密方式加密
1
2
3
4
5
6
7
8
9
10
11
12
13
MariaDB [(none)]> CREATE DATABASE ftpdb;
MariaDB [ftpdb]> CREATE TABLE users (id int AUTO_INCREMENT PRIMARY KEY,name char(30) NOT NULL,password char(48));
MariaDB [ftpdb]> INSERT INTO users(name,password) VALUES ('tom',password('tom'));               
MariaDB [ftpdb]> INSERT INTO users(name,password) VALUES ('jerry',password('jerry'));
MariaDB [ftpdb]> SELECT * FROM users;
+----+-------+-------------------------------------------+
| id | name  | password                                  |
+----+-------+-------------------------------------------+
|  1 | tom   | *71FF744436C7EA1B954F6276121DB5D2BF68FC07 |
|  2 | jerry | *09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0 |
+----+-------+-------------------------------------------+
MariaDB [(none)]> GRANT ALL ON ftpdb.* TO vsftpuser@'172.18.%.%' IDENTIFIED BY 'vsftpuser';
MariaDB [ftpdb]> FLUSH PRIVILEGES;




修改pam配置文件,添加配置
1
2
3
# vim /etc/pam.d/vsftpd.mysql
auth required /usr/lib/security/pam_mysql.so user=vsftpuser passwd=vsftpuser host=172.18.4.70 db=ftpdb table=users usercolumn=name  passwdcolumn=password crypt=2
account required /usr/lib/security/pam_mysql.so user=vsftpuser passwd=vsftpuser host=172.18.4.70 db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2

添加虚拟用户映射用户
1
2
3
4
# useradd -s /sbin/nologin -d /ftproot vuser
# chmod -w /ftproot
# mkdir /ftproot/{download,upload} # 建议创建目录在子目录中赋予权限
# chown vuser.vuser /ftproot/{download,upload}



注意:CentOS 7后对vsftpd的权限限制更为严格,所以用户家目录不应有写权限,如果需要设置写权限,需在目录下创建子目录即可。

修改其权限保证用户可进入可读取
1
# chmod go+rx /ftproot/




修改配置文件:/etc/vsftpd/vsftpd.conf

必须选项
1
2
3
4
5
6
7
8
9
修改pam认证模块为vsftpd.mysql:
    pam_service_name=vsftpd.mysql
保证下面三项开启:
    anonymous_enable=YES
    local_enable=YES
    write_enable=YES
添加:
    guest_enable=YES
    guest_username=vuser



可选选项
1
2
3
4
5
chroot_local_user=YES  # 基于安全考虑建议开启
anon_upload_enable=YES # 用户可上传文件
anon_mkdir_write_enable=YES #用户科协
anon_other_write_enable=YES #除了上传和写入的其他权限
# 因为虚拟用户基于匿名用户,所以权限控制可以基于匿名用户使用。



设置用户可上传并测试

wKioL1cczS3zCurTAACpFOishO4437.png wKiom1cczGWwpQI4AAFKicanhRc409.gif
单独用户权限控制
编辑配置文件:/etc/vsftpd/vsftpd.conf
添加对应目录:user_config_dir=/etc/vsftpd/vuser.conf.d
创建对应目录:mkdir /etc/vsftpd/vuser.conf.d
创建对应用户名的文件:touch tom jerry
修改文件,添加权限即可
实例:控制tom用户可上传,jerry用户不可上传
1、创建对应目录及修改配置文件
1
2
mkdir /etc/vsftpd/vuser.conf.d
echo "user_config_dir=/etc/vsftpd/vuser.conf.d" >> /etc/vsftpd/vsftpd.conf



2、设置文件系统及用户权限
1
2
3
echo "anon_upload_enable=YES" >>/etc/vsftpd/vuser.conf.d/tom
echo "anon_upload_enable=NO" >>/etc/vsftpd/vuser.conf.d/jerry
chown -R vuser.vuser /ftproot/upload



3、重启服务并测试
1
systemctl restart vsftpd.service



对于vsftpd就写到这里了,感觉写的不错可以给点个赞。
作者:Ace QQ1257465991 Linux运维攻城狮一只
Q/A:如有问题请慷慨提出


运维网声明 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-208447-1-1.html 上篇帖子: vsftp 虚拟用户认证 下篇帖子: vsftpd的基于pam_mysql的虚拟用户配置示例 用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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