yearning本地部署与ldap验证登录
20200302持续更新改错:QQ1466429534
本文出现的所有数据均为实验,和真实无关
这里整理yearning关于ldap的使用实验内容
文章目录
0.环境说明
虚机 | 静态IP | 安装服务 |
---|---|---|
win server 2012 | 192.168.255.200 | AD DS、AD LDS |
centos7 | 192.168.255.133 | docker、mysql(docker)、yearning-go |
AD域账户与密码:
CN | 密码 | DN | uid | sAMAccountName |
---|---|---|---|---|
Administrator | Qq#1234 | CN=Administrator,CN=Users,DC=zhenyun,DC=com | 未设置 | Administrator |
小黑 | Qq#1234 | CN=小黑,OU=平台管理部,OU=平台管理中心,OU=技术部,DC=zhenyun,DC=com | 未设置 | 小黑 |
小明 | Qq#1234 | CN=小明,OU=平台管理部,OU=平台管理中心,OU=技术部,DC=zhenyun,DC=com | 25577 | 小明 |
具灿星 | Pwd#25576 | CN=具灿星,OU=平台管理部,OU=平台管理中心,OU=技术部,DC=zhenyun,DC=com | 25576 | 小具 |
小红 | Qq#1234 | CN=具灿星,OU=平台开发部,OU=平台管理中心,OU=技术部,DC=zhenyun,DC=com | 未设置 | 小红 |
yearning中LDAP设置管理员那条即可,LDAP方式登录的用户名是CN/uid/sAMAccountName中的一个,密码是AD域中设置的密码。
当yearning配置好管理员后,域中其他用户的信息都会根据LDAP_SCBASE快速定位LDAP_Search filter及其对应的密码。
1.docker安装mysql并用navicat连接
docker安装的mysql与本机的mysql是不共享的
docker search mysql
docker pull mysql
docker images
docker run -p 3305:3306 --name mysql -e MYSQL_ROOT_PASSWORD=a -d mysql
docker exec -it 10cc8179208a bash
mysql -uroot -p
使用本机的navicat来远程连接mysql,如果连接时报2059错误,原因是mysql8后,安装时选择了强加密规则caching_sha2_password,与之前的mysql5.7的mysql_native_password规则不同,navicate驱动目前不支持新加密规则:
alter user 'root'@'%' identified with mysql_native_password by 'a';
flush privileges;
2.下载安装docker-compose
这里安装docker-compose与本文无关!
去https://github.com/docker/compose/releases 确定一个最新的稳定版本更换掉:
curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
3.yearning-go部署
1.1.下载
https://github.com/cookieY/Yearning/releases
选择最新版本,用xshell的sftp将文件传输到centos7
1.2.修改配置文件
vim conf.toml
Db是数据库名称,自己需要先建库,再初始化,这里是默认的Yearning,生产环境当然会修改的:
[Mysql]
Db = "Yearning"
Host = "127.0.0.1"
Port = "3305"
Password = "a"
User = "root"
[General]
SecretKey = "abchahacygjqqxyz"
关于SecretKey:SecretKey是token/数据库密码加密/解密的salt。
建议所有用户在初次安装Yearning之前将SecretKey更改(不更改将存在安全风险)
格式: 大小写字母均可, 长度必须为16位
特别注意:
此key仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息
1.3.开始启动
建议所有用户在初次安装Yearning之前将SecretKey更改(不更改将存在安全风险)
# 初始化数据库,如要再次初始化,请先把yearning表删除,否则重复执行无效
# 把Yearning文件chmod 777 Yearning
# 在mysql数据库先创建名为Yearning的数据库 初始化操作做一次
./Yearning -m
# 启动服务 若以后出了问题,kill掉再启动
./Yearning -s -b "192.168.255.133" -p "8000"
数据库初始化:
启动服务:
.png)]
访问yearning平台:
http://192.168.255.133:8000
4.yearning ldap配置及实践
4.1.yearning ldap配置
4.1.1.yearning端配置
win server2012中对所有用户有查询权限的AD域管理员:
服务地址url:192.168.255.200:389
LDAP管理员DN:CN=Administrator,CN=Users,DC=zhenyun,DC=com
密码:Qq#1234
LDAP_Search filter:cn
LDAP_SCBASE:DC=zhenyun,DC=com
配置过滤规则,方便快速从LDAP服务器定位到用户信息:
LDAP_Search filter: cn/uid/sAMAccountName
指定后决定着用户登录名是哪个属性
LDAP_SCBASE: DC=XXX,DC=com
从哪个LDAP服务器查询(个人理解)
LDAP设置测试成功后,一定记得保存(页面最下面):
4.1.2.普通用户登录测试
win server2012中普通用户:
CN 密码 DN uid sAMAccountName
小明 Qq#1234 CN=小明,OU=平台管理部,OU=平台管理中心,OU=技术部,DC=zhenyun,DC=com 25577 小明
登录勾选ldap,输入用户名(cn):
登录成功,系统创建用户名为小明的用户:
本地admin用户查看用户表:
4.2.更多实验
4.2.1.LDAP_Search filter三种过滤规则
这里LDAP的查询过滤语法,决定的是LDAP用户登录名。
- 这里实验对象是CN为具灿星的用户,将他的sAMAccountName设置为小具,uid设置为25576;
- yearning的LDAP设置其他参数不变(4.1.1.),只将LDAP_Search filter修改为三种分别试一下:
果然,会出现三个用户,也就是LDAP中的一个用户,用他的cn/uid/sAMAccountName
出现了三次:
因此,我们这里的LDAP_Search filter参数,尽量设置为LDAP中所有用户唯一的东西如CN。
4.2.2.yearning先注册用户,在LDAP方式登录一个同名用户
1.密码相同时
假设我们在yearning中创建一个名字为25577的用户,密码为Qq#1234
然后再登录LDAP中一个uid为25577的用户,看一下会有什么冲突:
用户25577使用ldap方式登录后,实际上共用25577这个用户,勾选LDAP与否都可以进行登录;
相当于之前我们是,登录一个LDAP用户,就生成同user名的用户;这里是倒过来,先注册一个用户,这个用户可以用ldap登录,当然也可以直接登录。
2.密码不同时
先注册一个名为小红
、密码为Qq#2333
的用户,再在AD域中创建一个名(CN)为小红
、密码为Qq#1234
的用户并启用;
ADSI:
登录:
结论: 登陆成功,这样看来,同登录用户名,实际上是两个账户。只是yearning逻辑上是,首次登录一个LDAP账户,就在表里创建一个同用户名的账号,这个账号密码明显不是之前的。
我们再来实验下,对象是具灿星:
具灿星/Pwd#25576 勾选LDAP可以登录,不勾选不可登陆;也就是说第一次登陆某个LDAP用户时候在表里同步创建的用户的密码究竟是不是原密码,我们用管理员修改表中的密码为Pwd#25576,再登录试下:这说明给的默认密码不是LDAP带过来的。
- 那我们如何设计比较好:用LDAP中唯一的cn/uid/sAMAccountName中的CN,然后yearning只需要配置一个管理员账户,其他用户一定是有人不使用平台不登录的,可以在AD域中所有用户批量创建好,然后会使用yearning平台的一登录自然出现了账户,不使用的我们可以用管理员开启用户注册/或者管理员根据信息一条一条补全。
5.错误解决
docker创建容器的时候报错WARNING: IPv4 forwarding is disabled. Networking will not work.
# vim /usr/lib/sysctl.d/00-system.conf
# 添加
net.ipv4.ip_forward=1
# 重启network
# systemctl restart network
6.AD DS和AD LDS的使用
如果 不知道DN
AD DS的AD用户和计算机:
AD LDS的ADSI编辑器:
管理员的DN: