saslauthd mysql_open***使用MySQL进行认证
紧接上一篇,Open×××使用用户名密码登录之后,觉得可能本地文件的安全性不是很好,毕竟密码还是明文显示的嘛,所以这次鼓捣Open×××使用MySQL进行认证。部署环境什么的,依然参考上一篇中的配置,不同的是,需要在Open×××上安装MySQL数据库。
1、安装MySQLyum -y install mysql-server mysql-devel mysql
/etc/init.d/mysqld start
chkconfig mysqld on
2、创建open***数据库以及相关表mysqladmin -u root password 123456
mysql -uroot -p123456
mysql> create database open***;
Query OK, 1 row affected (0.00 sec)
mysql> use open***;
Database changed
mysql> create table ***user (
-> name char(100) not null,
-> password char(255) default null,
-> active int(10) not null default 1,
-> primary key (name)
-> );
Query OK, 0 rows affected (0.06 sec)
mysql> desc ***user;
+----------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------+------+-----+---------+-------+
| name | char(100) | NO | PRI | NULL | |
| password | char(255) | YES | | NULL | |
| active | int(10) | NO | | 1 | |
+----------+-----------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> create table logtable (
-> msg char(254),
-> user char(100),
-> pid char(100),
-> host char(100),
-> rhost char(100),
-> time char(100)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> desc logtable;
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| msg | char(254) | YES | | NULL | |
| user | char(100) | YES | | NULL | |
| pid | char(100) | YES | | NULL | |
| host | char(100) | YES | | NULL | |
| rhost | char(100) | YES | | NULL | |
| time | char(100) | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
6 rows in set (0.00 sec)
mysql> insert into ***user (name,password) values ('test1',password('123456'));
Query OK, 1 row affected (0.00 sec)
mysql> grant all on open***.* to ***@'localhost' identified by '***';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
3、安装pam_mysql模块
使用MySQL数据库来验证Open×××服务器登陆需要使用pam_mysql模块,因此我们需要安装这个模块,直接使用yum安装即可。yum install pam_mysql -y
4、配置pam_mysql模块
vim /etc/pam.d/open***#该文件默认不存在
auth sufficient pam_mysql.so user=*** passwd=*** host=localhost db=open*** table=***user usercolumn=name passwdcolumn=password [where=***user.active=1] sqllog=0 crypt=2 sqllog=true logtable=logtable logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time
account required pam_mysql.so user=*** passwd=*** host=localhost db=open*** table=***user usercolumn=name passwdcolumn=password [where=***user.active=1] sqllog=0 crypt=2 sqllog=true logtable=logtable logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time
[root@open*** ~]# cat /etc/pam.d/open***
auth sufficient pam_mysql.so user=*** passwd=*** host=localhost db=open*** table=***user usercolumn=name passwdcolumn=password [where=***user.active=1] sqllog=0 crypt=2 sqllog=true logtable=logtable logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time
account required pam_mysql.so user=*** passwd=*** host=localhost db=open*** table=***user usercolumn=name passwdcolumn=password [where=***user.active=1] sqllog=0 crypt=2 sqllog=true logtable=logtable logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time
使用testsaslauthd验证登录情况,如果出现下面的情况,说明我们的配置是正确的。
[root@open*** ~]# testsaslauthd -u test1 -p test1 -s open***
0: OK "Success."
5、安装auth_pam插件
在编译安装Open××× 2.0.9后会生成一个open***-auth-pam.so,文件路径为/usr/lib64/open***/plugin/lib/open***-auth-pam.so,但是该文件有问题,好像网上有人测试过2.1以上的open***自带的open***-auth-pam.so文件都会出现验证错误问题,所以这里需要编译一个低版本的。yum -y install pam-devel
wget https://open***.net/release/open***-2.0.7.tar.gz
tar -zxf open***-2.0.7.tar.gz
cd open***-2.0.7/plugin/auth-pam/
make
[root@open*** auth-pam]# make
gcc -O2 -Wall -DDLOPEN_PAM=1 -fPIC -c -I../.. auth-pam.c
gcc -O2 -Wall -DDLOPEN_PAM=1 -fPIC -c -I../.. pamdl.c
gcc -O2 -Wall -DDLOPEN_PAM=1 -fPIC -shared -Wl,-soname,open***-auth-pam.so -o open***-auth-pam.so auth-pam.o pamdl.o -lc -ldl
cp open***-auth-pam.so /etc/open***/ #将编译好的模块文件拷贝到/etc/server.conf中定义的地方
6、编辑open***配置文件
vi /etc/server.conf
添加如下几行:
# script-security 3 system#这一行在open***2.0.9中无法识别script-security,但是在2.1中可以,但是2.0.9无须添加这一行也可以完成认证。
plugin /etc/open***/open***-auth-pam.so open***
client-cert-not-required
username-as-common-name
例如:
[root@open*** auth-pam]# cat /etc/server.conf
port 1194
proto tcp
dev tun
ca /opt/tools/open***-2.0.9/easy-rsa/2.0/keys/ca.crt
cert /opt/tools/open***-2.0.9/easy-rsa/2.0/keys/server.crt
key /opt/tools/open***-2.0.9/easy-rsa/2.0/keys/server.key
dh /opt/tools/open***-2.0.9/easy-rsa/2.0/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
push "route 192.168.140.0 255.255.255.0"
ifconfig-pool-persist ipp.txt
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status open***-status.log
verb 5
###############################################################################################
####open*** authenticated with openldap
#plugin /usr/lib64/open***/plugin/lib/open***-auth-ldap.so "/etc/open***/auth/ldap.conf cn=%u"
#client-cert-not-required
#username-as-common-name
###############################################################################################
####open*** authenticated with user/pass
#auth-user-pass-verify /etc/open***/checkpsw.sh via-env
#client-cert-not-required
#username-as-common-name
###############################################################################################
####open*** authenticated with mysql
#script-security 3 system
plugin /etc/open***/open***-auth-pam.so open***
client-cert-not-required
username-as-common-name
7、编辑客户端配置文件
其实MySQL和之前的用户名密码的客户端配置文件都一样,直接按照之前的复制一份即可。
例如:
client
dev tun
proto tcp
remote 192.168.49.135 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
;cert eva.crt
;key eva.key
ns-cert-type server
auth-user-pass
comp-lzo
verb 3
8、客户端连接测试
客户端配置,和用户名密码一样,只需将服务器端CA证书放到目录中即可,另外配置文件内容也和用户名密码的客户端配置文件一样。
输入数据库中的用户名密码,进行认证。
认证通过,连接成功。
已经获取IP地址。
9、查看日志
[root@open*** auth-pam]# tail -f /opt/tools/open***-2.0.9/easy-rsa/2.0/open***-status.log
Open××× CLIENT LIST
Updated,Wed Sep 21 04:42:22 2016
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
test1,192.168.49.1:4922,44194,16000,Wed Sep 21 04:04:06 2016
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.22,test1,192.168.49.1:4922,Wed Sep 21 04:04:20 2016
GLOBAL STATS
Max bcast/mcast queue length,0
END
10、查看MySQL中的用户登录表
11、禁用用户示例
如果需要禁用用户,只需要在MySQL中将***user表中的用户的active修改为0即可,例如:
这样的话,test1的active值为0,就无法通过认证了。(禁用需要下次连接生效,如果当前用户已连接,会在用户断开重连时生效)
可以看到,使用test1再次连接失败。
在MySQL中的logtable中也可以查看到失败的登录。
而其他用户可以正常连接。
saslauthd mysql_open***使用MySQL进行认证相关推荐
- 实战部署MySQL用户认证的Postfix邮件系统(3)
实战部署Postfix+MySQL+Dovecot+Postfixadmin+Extmail邮件系统(3) -----构建开源邮件系统系列 如果您对本系列文章感兴趣,可以通过点击以下链接查看全文: 点 ...
- emqtt mysql认证_Emqtt -- 05 -- Mysql插件认证及访问控制
了解了 Clientid 认证后,现在我们再来了解下 Mysql 插件认证以及访问控制,默认关闭了匿名认证 一.创建用户表和控制表 根据官方文档,用户表的名称为:mqtt_user,访问控制表的名称为 ...
- mysql 5.6ocp认证_花5百购买的mysql ocp认证IZO-883 考试题库 准确率达到百分之八九十...
[实例简介] 题库真实有效,花5百购买的mysql ocp认证IZO-883 考试题库 准确率达到百分之八九十 [实例截图] [核心代码] 21616308mysqlocp认证IZO-883 └── ...
- Emqtt -- 05 -- Mysql插件认证及访问控制
原文链接:Emqtt – 05 – Mysql插件认证及访问控制 相关文章: Emqtt – 01 – 服务搭建 Emqtt – 02 – 搭建本地项目 Emqtt – 03 – 用户密码认证 Emq ...
- mysql ocp 认证 题库_MySQL 8 OCP(1Z0-908)认证考试题库原题(第10题)
Mysql 8.0 OCP认证考试原题题库整理(CUUG内部资料)-第10题 Choose the best answer. Examine these commands, which execute ...
- freeradius+mysql+交换机认证
一.关闭防火墙和Selinux [root@master raddb]# service iptables stop [root@master raddb]# vim /etc/selinux/con ...
- ftp pam mysql_ftp+pam基于mysql的认证
1.要事先安装开发环境用到的包 Desktop Platform Development Development tools [root@linux ~]# yum -y install mysq ...
- mysql账号认证_浅谈MySQL用户账号认证方式
为了有效控制数据库用户的访问权限,在MySQL数据库中创建了一个新用户,但使用刚创建的用户和密码却发现连接不了MySQL数据库,通过查看官网手册及<MySQL技术内幕>一书,才逐渐熟悉My ...
- mysql密码认证插件_关于mysql:无法加载身份验证插件’caching_sha2_password’
我正在将MySQL-8.0与MySQL Workbench连接起来并出现以下错误: Authentication plugin 'caching_sha2_password' cannot be lo ...
最新文章
- 以后教育孩子学好数学的方法 多思动漫数学
- SCRUM的四大支柱
- 机器学习十大算法(二)
- 从前序与中序遍历序列构造二叉树—leetcode105
- 【Redis】CentOS7下redis的安装+supervisor管理+允许远程访问+测试部署效果
- Java就业岗位有哪些?可以从事哪些工作?
- vue mxgraph渲染xml页面_Vue的两个版本
- JavaScript 数组你都掰扯不明白,还敢说精通 JavaScript ?| 赠书
- servlet串行拦截器实现例子
- Oracle出现 The Network Adapter could not establish the connection
- python3.3使用tkinter实现猜数字游戏代码
- Seata详解(二)
- 面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?
- oracle ora-27544,数据库启动后,大量报错ORA-27300
- C++ Log4Cpp 使用
- 早教机器人刷固件_你刷机身我刷固件 松下绕身一变为6K视频机
- 开关二极管的工作原理
- html5 竖线的实现,border 实现竖线
- Linux应该怎么快速学习?首推这份全网爆火的“Linux速成笔记”,阿里架构师都在用它!
- 技术写作中的那些神兵利器
热门文章
- Android导入第三方静态库.a编译成动态库.so
- MYSQL在Windows 7下迁移安装路径教程
- ROW_NUMBER (Transact-SQL)
- SilverLight小游戏
- 配置Apache虚拟机
- 遇到的几个开机启动故障
- SQL Server2008 用编写脚本自动生成的Sql语言出现 “列名显示无效 ”错误
- Asp.Net服务器控件开发的Grid实现(三)列编辑器
- 黑客攻防技术宝典Web实战篇第2版—第5章 避开客户端控件
- 算法题存档20190207