web部署和用户管理思路以及密码自助修改
# 1,配置管理端。
- 安装 apache 和 php 环境
yum install php php-pear php-mbstring ntpdate httpd php-ldap -y #php-ldap是让php程序连接ldap的组件
systemctl start httpd
systemctl enable httpd
2
3
- 调整 apache 和 php 的配置文件,修改 apache 的默认首页类型,将 index.php 加入其中
vim /etc/httpd/conf/httpd.conf +164
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>
2
3
4
- 重启 apache
systemctl restart httpd
- 修改 php.ini 的时区
vi /etc/php.ini
date.timezone = "Asia/Shanghai"
2
- 配置 phpldapadmin
wget https://nchc.dl.sourceforge.net/project/phpldapadmin/phpldapadmin-php5/1.2.3/phpldapadmin-1.2.3.tgz
tar xf phpldapadmin-1.2.3.tgz
mv phpldapadmin-1.2.3 /var/www/html/phpldapadmin
cp /var/www/html/phpldapadmin/config/config.php.example /var/www/html/phpldapadmin/config/config.php.example.bak
mv /var/www/html/phpldapadmin/config/config.php.example /var/www/html/phpldapadmin/config/config.php
2
3
4
5
- 修改配置文件,填写端口,地址和 RootDN
vi /var/www/html/phpldapadmin/config/config.php
$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','port',389);
$servers->setValue('server','base',array('dc=eryajf,dc=net'));
2
3
4
去浏览器验证登录
http://10.3.0.42/phpldapadmin
登录名为 DN:cn=admin,dc=eryajf,dc=net 密码为第二次设置的密码:eryajf@456
# 2,思路简单梳理。
关于用户管理方面,这里简单梳理一下思路,现在看到如上图所示,在总域名之下,分了几个组别,其中 cn 是管理者,再往下建了两个真正存放用户的小组(当然,真实的概念可能从组织的角度去看),这里怎么看不要紧,重要的是,能用自己的思路理解了,然后运用起来就好了。
现在的思路是,所有用户,全部都在 People 这个组内,新来员工创建账号,也都分配在这里,针对一些全员性质的授权,比如全员共用的文档系统等,可以直接对这一组进行授权,也就相当于对全员进行了授权。另外的 Group 则可以真正作为组进行二次细分,某些重要应用,或者部分性比较强的应用,都可以通过在这个下边创建一个小组进行区分,从而授权的时候更加便捷。
以上两种授权方案在后边的实战配置当中都会给出演示,先按着刚刚的思路创建一些测试用户,到后边一配好,一切就都明白了。
创建普通用户:
- 在 People 之下点击创建新条目
- 模板选择默认
- ObjectClasses选择inetOrgPerson,然后点击继续
- 从上而下填写,RDN 选择
User Name(uid)
- 然后开始正式的人员信息填写
- cn:zhangs
- sn:zhangs
- displayName:张三
- 电子邮件:zhangs@qq.com
- ou:People
- 密码:123456
- User Name:zhangs
然后点击创建,提交之后,一个普通用户就创建成功了。一般情况下,应用直接通过这一曾来管理用户即可。
但是有些情况下,再另外拉出来一个分组,从软件的角度来分组,会更好一些。
创建一个应用组:
- 在 Group 之下创建新条目
- 模板选择默认
- ObjectClasses选择groupOfNames,然后点击继续
- 从上而下填写,RDN 选择
cn(cn)
- 然后开始填写组信息
- cn:jenkins
- member:点击后边的搜索框,选择将要包含的用户
然后点击创建,提交之后,就创建了一个 jenkins 组,配置 ldap 的时候,可以基于这个组来进行管理。
# 3,配置自助修改密码
一般情况下,我们给先入职同学创建账户的时候,都会设置一个统一的账号,然后再由该同学自助修改密码,那么,就需要部署一个自助修改密码的服务,这里采用 docker 方式部署,简单便捷。
cat docker-compose.yml
version: '2'
services:
ssp-app:
image: registry.cn-hangzhou.aliyuncs.com/eryajf/self-service-password
container_name: ssp-app
volumes:
- ./data/:/www/ssp
- ./logs/:/www/logs
ports:
- 8888:80
environment:
- VIRTUAL_HOST=http://10.3.0.42
- VIRTUAL_NETWORK=nginx-proxy
- LETSENCRYPT_HOST=10.3.0.42
- LETSENCRYPT_EMAIL=Linuxlql@163.com
- LDAP_SERVER=ldap://10.3.0.42:389
- LDAP_STARTTLS=false
- LDAP_BINDDN=cn=admin,dc=eryajf,dc=net
- LDAP_BINDPASS=eryajf@456
- LDAP_BASE_SEARCH=ou=People,dc=eryajf,dc=net
- LDAP_LOGIN_ATTRIBUTE=uid
- LDAP_FULLNAME_ATTRIBUTE=cn
# Active Directory mode
# true: use unicodePwd as password field
# false: LDAPv3 standard behavior
- ADMODE=false
# Force account unlock when password is changed
- AD_OPT_FORCE_UNLOCK=false
# Force user change password at next login
- AD_OPT_FORCE_PWD_CHANGE=false
# Allow user with expired password to change password
- AD_OPT_CHANGE_EXPIRED_PASSWORD=false
# Samba mode
# true: update sambaNTpassword and sambaPwdLastSet attributes too
# false: just update the password
- SAMBA_MODE=false
# Shadow options - require shadowAccount objectClass
# Update shadowLastChange
- SHADOW_OPT_UPDATE_SHADOWLASTCHANGE=false
# Hash mechanism for password:
# SSHA
# SHA
# SMD5
# MD5
# CRYPT
# clear (the default)
# auto (will check the hash of current password)
# This option is not used with ad_mode = true
- PASSWORD_HASH=SHA
# Local password policy
# This is applied before directory password policy
# Minimal length
- PASSWORD_MIN_LENGTH=6
# Maximal length
- PASSWORD_MAX_LENGTH=30
# Minimal lower characters
- PASSWORD_MIN_LOWERCASE=2
# Minimal upper characters
- PASSWORD_MIN_UPPERCASE=1
# Minimal digit characters
- PASSWORD_MIN_DIGIT=1
# Minimal special characters
- PASSWORD_MIN_SPECIAL=0
# Dont reuse the same password as currently
- PASSWORD_NO_REUSE=true
# Show policy constraints message:
# always
# never
# onerror
- PASSWORD_SHOW_POLICY=never
# Position of password policy constraints message:
# above - the form
# below - the form
- PASSWORD_SHOW_POLICY_POSITION=above
# Who changes the password?
# Also applicable for question/answer save
# user: the user itself
# manager: the above binddn
- WHO_CAN_CHANGE_PASSWORD=user
## Questions/answers
# Use questions/answers?
# true (default)
# false
- QUESTIONS_ENABLED=false
## Mail
# LDAP mail attribute
- LDAP_MAIL_ATTRIBUTE=mail
# Who the email should come from
- MAIL_FROM=Linuxlql@163.com
- MAIL_FROM_NAME=Password Reset
# Notify users anytime their password is changed
- NOTIFY_ON_CHANGE=true
# PHPMailer configuration (see https://github.com/PHPMailer/PHPMailer)
- SMTP_DEBUG=0
- SMTP_HOST=smtp.163.com
- SMTP_AUTH_ON=true
- SMTP_USER=Linuxlql@163.com
- SMTP_PASS=xxxxxx # 这里是邮箱的授权码,经常配置邮箱的你,一定明白我的意思
- SMTP_PORT=25
- SMTP_SECURE_TYPE=tls
- SMTP_AUTOTLS=false
## SMS
# Use sms (NOT WORKING YET)
- USE_SMS=false
# Reset URL (if behind a reverse proxy)
- IS_BEHIND_PROXY=true
# Display help messages
- SHOW_HELP=true
# Language
- LANG=en
# Debug mode
- DEBUG_MODE=false
# Encryption, decryption keyphrase
- SECRETEKEY=secretkey
## CAPTCHA
# Use Google reCAPTCHA (http://www.google.com/recaptcha)
- USE_RECAPTCHA=false
# Go on the site to get public and private key
- RECAPTCHA_PUB_KEY=akjsdnkajnd
- RECAPTCHA_PRIV_KEY=aksdjnakjdnsa
## Default action
# change
# sendtoken
# sendsms
- DEFAULT_ACTION=change
networks:
- proxy-tier
restart: always
networks:
proxy-tier:
external:
name: nginx-proxy
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
然后直接运行服务即可。访问对应端口可以看到更改密码的页面:
如果知道原来密码,直接在自助密码服务处更改即可,如果忘记原来密码,可以通过邮件方式进行更改。