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

[经验分享] vsftp与mysql结合进行用户验证

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-30 09:58:06 | 显示全部楼层 |阅读模式
VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,编制者的初衷是代码的安全。
特性
1、它是一个安全、高速、稳定的FTP服务器;
2、它可以做基于多个IP的虚拟FTP主机服务器;
3、匿名服务设置十分方便;
4、匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其它的系统文件;
5、不执行任何外部程序,从而减少了安全隐患;
6、支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置;
7、可以设置从inetd中启动,或者独立的FTP服务器两种运行方式;
8、支持多种认证方式
9、支持带宽限制;
本文介绍通过pam.d模块基于mysql现实vsftp虚拟用户认证
安装环境
wKioL1YJ-WiBi0XbAAA8glU5O6I936.jpg
先安装、配置vsftp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[iyunv@vsftp ~]# yum install -y vsftpd
[iyunv@vsftp ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd #vsftp日志轮询
/etc/pam.d/vsftpd #pam.d的vsftpd
/etc/rc.d/init.d/vsftpd #启动服务脚本
/etc/vsftpd
/etc/vsftpd/ftpusers #用户控制文件
/etc/vsftpd/user_list #用户控制文件
/etc/vsftpd/vsftpd.conf  #配置文件
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd
/usr/share/doc/vsftpd-2.2.2
##此处省略帮助文件##
/usr/share/doc/vsftpd-2.2.2/TUNING
/usr/share/doc/vsftpd-2.2.2/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
/var/ftp
/var/ftp/pub #匿名用户共享文件目录



查看默认配置文件启用选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[iyunv@vsftp vsftpd]# cat  vsftpd.conf |grep -v "^#"
anonymous_enable=YES #允许匿名用户
local_enable=YES #允许本地用户
write_enable=YES #允许本地用户可写
local_umask=022  #本地创建文件的umask
dirmessage_enable=YES #创建目录时消息提示
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES #监听端口

pam_service_name=vsftpd #pam模块
userlist_enable=YES #用户控制
tcp_wrappers=YES



其他一些重要选项
anonymous_enable=YES    开始匿名用户
anon_upload_enable=YES  允许匿名用户上传文件
anon_mkdir_write_enable=YES  允许匿名用户创建目录
anon_other_write_enable=YES  允许匿名用户其他权限,如删除,重命名文件
chown_uploads=YES #是否改变属主
chown_username=user #上传文件修改成属主
chroot_local_user={Yes|No}    #限制本地用户禁锢其在家目录中
chroot_list_enable={Yes|No}   #限制chroot_list列表中用户禁锢其在家目录中
chroot_list=/etc/vsftp/chroot_list #用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录
xferlog_file=/var/log/vsftp.log  # 配置日志目录
ftpd_banner=Welcome to blah FTP service. #登录提示信息
banned_file=/etc/vsftpd/banned_file
ls_recurse_enable=YES #用户是否能够使用ls命令
连接限制
max_clients 最大并发链接数
max_per_ip  每IP最大并发数
限制速率
anon_max_rate
local_max_rate
上传文件umask
anon_umask 022
local_umask 022
虚拟用户设置
guest_enable= YES/NO  #启用虚拟用户。默认值为NO。
guest_username=ftp   #这里用来映射虚拟用户。默认值为ftp
user_config_dir=/etc/vsftpd/vusers_config  #为虚拟用户提供配置文件

配置文件里面启用下面选项
ls_recurse_enable=YES
添加测试用户
1
2
3
4
5
6
7
8
9
ls_recurse_enable=YES
[iyunv@vsftp ~]# useradd -s /sbin/nologin test #添加测试用户
[iyunv@vsftp ~]# password test
[iyunv@vsftp ~]# touch /home/test/abc.txt #下创建个测试文件
[iyunv@vsftp ~]#service vsftpd start
[iyunv@vsftp ~]# lftp test@192.168.0.11
lftp test@192.168.0.11:/> ls     
-rw-r--r--    1 0        0               0 Sep 29 01:44 abc.txt
#test账户可用。



在本地上安装msyql-devel包、pam_mysql包
1
[iyunv@vsftp vsftpd]# yum install -y mysql-devel pam_mysql



在192.168.0.55mysql上给vsftp授权
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
MariaDB [(none)]> create database vsftpd;
MariaDB [(none)]> grant all on vsftpd.* to vsftpd@192.168.0.55 identified by 'www.magedu.com';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> use vsftpd;
MariaDB [vsftpd]> create table users (
id int AUTO_INCREMENT NOT NULL,
name char(20) binary NOT NULL,
password char(48) binary NOT NULL,
primary key(id)
);
MariaDB [vsftpd]> insert into users(name,password) values('tom',password('magedu'));
MariaDB [vsftpd]> insert into users(name,password) values('test',password('magedu'));
MariaDB [vsftpd]> show tables;
+------------------+
| Tables_in_vsftpd |
+------------------+
| users            |
+------------------+
1 row in set (0.03 sec)



回到vsftpd主机,查看是否能够链接到mysql
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@vsftp vsftpd]# mysql -uvsftpd -h192.168.0.55 -p
Enter password:

mysql> use vsftpd;

mysql> select * from users;
+----+---------+-------------------------------------------+
| id | name    | password                                  |
+----+---------+-------------------------------------------+
|  1 | tom     | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
|  2 | test    | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
+----+---------+-------------------------------------------+
4 rows in set (0.01 sec)



已OK
vi /etc/pam.d/vsftpd.mysql  #添加如下两行
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=192.168.0.55 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=192.168.0.55 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
再次编译配置文件/etc/vsftpd/vsftpd.conf
确保下面选项是OK
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
pam_service_name=vsftpd.mysql
vi /etc/vsftpd/vusers_config/tom
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
给test家目录授权,有些虚拟用户都会到test家目录执行读写,所以要给test家目录读写权限。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@vsftp vsftpd]# chmod 777 /home/test/
[iyunv@vsftp vsftpd]# cd /etc/
[iyunv@vsftp etc]# lftp tom@192.168.0.11  #tom不是本地用户,是在mysql创建的一个虚拟用户
Password:
lftp tom@192.168.0.11:/> ls
-rw-r--r--    1 0        0               0 Sep 29 01:44 abc.txt
lftp tom@192.168.0.11:~> put issue   
47 bytes transferred                     
lftp tom@192.168.0.11:/> ls
-rw-r--r--    1 0        0               0 Sep 29 01:44 abc.txt
-rw-------    1 500      500            47 Sep 29 02:31 issue
[iyunv@vsftp etc]# cd /home/test/
[iyunv@vsftp test]# ll
total 4
-rw-r--r-- 1 root root  0 Sep 29 09:44 abc.txt
-rw------- 1 test test 47 Sep 29 10:31 issue #tom用户以test身份执行put



运维网声明 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-120799-1-1.html 上篇帖子: vsftp虚拟不同用户配置不同目录访问实现 下篇帖子: vsftp.conf 配置文件详解 mysql 用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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