紧接上一篇,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进行认证相关推荐

  1. 实战部署MySQL用户认证的Postfix邮件系统(3)

    实战部署Postfix+MySQL+Dovecot+Postfixadmin+Extmail邮件系统(3) -----构建开源邮件系统系列 如果您对本系列文章感兴趣,可以通过点击以下链接查看全文: 点 ...

  2. emqtt mysql认证_Emqtt -- 05 -- Mysql插件认证及访问控制

    了解了 Clientid 认证后,现在我们再来了解下 Mysql 插件认证以及访问控制,默认关闭了匿名认证 一.创建用户表和控制表 根据官方文档,用户表的名称为:mqtt_user,访问控制表的名称为 ...

  3. mysql 5.6ocp认证_花5百购买的mysql ocp认证IZO-883 考试题库 准确率达到百分之八九十...

    [实例简介] 题库真实有效,花5百购买的mysql ocp认证IZO-883 考试题库 准确率达到百分之八九十 [实例截图] [核心代码] 21616308mysqlocp认证IZO-883 └── ...

  4. Emqtt -- 05 -- Mysql插件认证及访问控制

    原文链接:Emqtt – 05 – Mysql插件认证及访问控制 相关文章: Emqtt – 01 – 服务搭建 Emqtt – 02 – 搭建本地项目 Emqtt – 03 – 用户密码认证 Emq ...

  5. mysql ocp 认证 题库_MySQL 8 OCP(1Z0-908)认证考试题库原题(第10题)

    Mysql 8.0 OCP认证考试原题题库整理(CUUG内部资料)-第10题 Choose the best answer. Examine these commands, which execute ...

  6. freeradius+mysql+交换机认证

    一.关闭防火墙和Selinux [root@master raddb]# service iptables stop [root@master raddb]# vim /etc/selinux/con ...

  7. ftp pam mysql_ftp+pam基于mysql的认证

    1.要事先安装开发环境用到的包 Desktop Platform Development   Development tools [root@linux ~]# yum -y install mysq ...

  8. mysql账号认证_浅谈MySQL用户账号认证方式

    为了有效控制数据库用户的访问权限,在MySQL数据库中创建了一个新用户,但使用刚创建的用户和密码却发现连接不了MySQL数据库,通过查看官网手册及<MySQL技术内幕>一书,才逐渐熟悉My ...

  9. mysql密码认证插件_关于mysql:无法加载身份验证插件’caching_sha2_password’

    我正在将MySQL-8.0与MySQL Workbench连接起来并出现以下错误: Authentication plugin 'caching_sha2_password' cannot be lo ...

最新文章

  1. 以后教育孩子学好数学的方法 多思动漫数学
  2. SCRUM的四大支柱
  3. 机器学习十大算法(二)
  4. 从前序与中序遍历序列构造二叉树—leetcode105
  5. 【Redis】CentOS7下redis的安装+supervisor管理+允许远程访问+测试部署效果
  6. Java就业岗位有哪些?可以从事哪些工作?
  7. vue mxgraph渲染xml页面_Vue的两个版本
  8. JavaScript 数组你都掰扯不明白,还敢说精通 JavaScript ?| 赠书
  9. servlet串行拦截器实现例子
  10. Oracle出现 The Network Adapter could not establish the connection
  11. python3.3使用tkinter实现猜数字游戏代码
  12. Seata详解(二)
  13. 面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?
  14. oracle ora-27544,数据库启动后,大量报错ORA-27300
  15. C++ Log4Cpp 使用
  16. 早教机器人刷固件_你刷机身我刷固件 松下绕身一变为6K视频机
  17. 开关二极管的工作原理
  18. html5 竖线的实现,border 实现竖线
  19. Linux应该怎么快速学习?首推这份全网爆火的“Linux速成笔记”,阿里架构师都在用它!
  20. 技术写作中的那些神兵利器

热门文章

  1. Android导入第三方静态库.a编译成动态库.so
  2. MYSQL在Windows 7下迁移安装路径教程
  3. ROW_NUMBER (Transact-SQL)
  4. SilverLight小游戏
  5. 配置Apache虚拟机
  6. 遇到的几个开机启动故障
  7. SQL Server2008 用编写脚本自动生成的Sql语言出现 “列名显示无效 ”错误
  8. Asp.Net服务器控件开发的Grid实现(三)列编辑器
  9. 黑客攻防技术宝典Web实战篇第2版—第5章 避开客户端控件
  10. 算法题存档20190207