openldap管理系统

openldap管理系统

1、背景

在企业创办初期,少于50台服务器的情况下基本不会遇到帐号管理的问题。

但是随着时间的推移,服务器数量增加及经常变更服务器密码,就会频繁导致有些服务器忘记密码,登录不上去的情况。

使用配置管理工具,可以将系统的Passwd、shadows等文件进行统一管理,达到账号密码的统一。

针对企业中的角色,管理员角色、业务角色、观察角色、个人角色等,对所有的员工根据权限的不同进行分组,并对组进行授权,不同的组拥有不同的权限。

设计的理念:所有的用户名、密码、权限都通过ldap去管理

2、目标

1、LDAP Server集中管理帐号及存放SSHPublic key

2、每开一个用户自动建立家目录

3、用户在LDAP Server中停权后,该用户无法使用SSHkey的方式登录任何一台服务器。

4、LDAP Server设定用户可使用的sudo权限

5、限制某些用户无法登录某些服务器

6、方便使用phpldapadmin来管理

3、基本架构

4、Openldap Server的安装设定

4.1、环境说明

系统:centos 6.6

LDAP Server    192.168.1.50

LDAP Client      192.168.1.81

4.2、安装说明

4.2.1、LDAP Server端安装

a.采用yum方式安装

#yuminstall openldap-* -y

OpenLDAP 使用Berkely-DB来作为数据库存储信息,Yum的话,会默认安装依赖包,我们只要在安装完后检查一下是否安装了db4*相关的rpm包就可以了

#rpm-qa | grep db4

b.拷贝LDAP配置文件到LDAP目录

# cd/etc/openldap/
# cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf

c.创建LDAP管理员密码:加密

# slappasswd
这里我输入的密码是redhat,输入完密码后,返回一串密文,先保存到剪贴板,之后要复制到LDAP配置文件中使用:{SSHA}pfAJm+JJa4ec2y8GjTc8uMEJpoR5YKLy

d.编译配置文件

# vi /etc/openldap/slapd.conf

# enable server status monitoring (cn=monitor)
database monitor
access to *
        bydn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"read
        bydn.exact="cn=root,dc=zzc,dc=com" read
        by * none

database        bdb
suffix          "dc=zzc,dc=com"
checkpoint      1024 15
rootdn          "cn=root,dc=zzc,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw                secret
# rootpw               {crypt}ijFYNcSNctBYg
rootpw {SSHA}pfAJm+JJa4ec2y8GjTc8uMEJpoR5YKMn

.......

保存退出。

e.拷贝DB_CONFIG文件到指定目录

# cp/usr/share/openldap-servers/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG
删除默认/etc/openldap/slapd.d下面的所有内容,否则后面在使用ldapadd的时候会报错:
# rm -rf /etc/openldap/slapd.d/*

f.启动LDAP的slapd服务,并设置自启动:

# service slapd restart
# chkconfig slapd on
赋予配置目录相应权限:
# chown -R ldap:ldap /var/lib/ldap
# chown -R ldap:ldap /etc/openldap/

g.测试并生成配置文件:

slaptest  -f /etc/openldap/slapd.conf -F/etc/openldap/slapd.d
返回config file testing succeeded,则配置成功。
赋予生成的配置文件予权限并重启:
# chown -R ldap:ldap /etc/openldap/slapd.d
# service slapd restart

h.创建一个base.ldif做初始化

#cd /tmp

#vi base.ldif

dn: dc=zzc,dc=com

objectClass: dcObject

objectClass: organization

dc: zzc

o : zzc

i.将base.ldif导入

# ldapadd -x -W -D "cn=root,dc=zzc,dc=com"-f base.ldif

输入密码后出现adding new entry “dc=zzc,dc=com” 就好了。

j.设定LDAPServer写入日志

#vim /etc/rsyslog.conf

增加一行local4.* /var/log/ldap.log

然后重启rsyslog

#service rsyslog restart

这样就可以在 /var/log/ldap.log下看到日志了

K.让LDAPServer支持ssh以及sudo

预设的Centos中并没有LDAP支持ssh以及sudo,需要手动安装

先来搞sudo的部分

#rpm -qal | grep sudo查看有没有/usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP

#cp/usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema

openssh部分

# rpm -qal | grep openssh-ldap查看有没有安装openssh-ldap包

#cp/usr/share/doc/openssh-ldap-5.3p1/openssh-lpk-openldap.schema /etc/openldap/schema

L.将这两个schema加入到slapd.conf

include         /etc/openldap/schema/sudo.schema

include        /etc/openldap/schema/openssh-lpk-openldap.schema

M.重新转换一下

#slaptest  -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

# chown -Rf ldap:ldap /etc/openldap/slapd.d

# service slapd restart

4.2.2、phpLDAPadmin安装

a、Centos没有预设安装phpldapadmin,需要先安装epel再安装

#rpm -ivhhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm安装epel

#yum install phpldapadmin

这种安装会连httpd跟php一起安装

b、然后修改httpd的设定

#vi /etc/httpd/conf.d/phpldapadmin.conf

将127.0.0.1改成192.168.0.0/255.255.0.0

#service httpd  restart

c、在浏览器输入http://192.168.1.50/ldapadmin可以打开既代表安装成功

d、修改文件/etc/phpldapadmin/config.php

找到$servers->setValue(‘login‘,‘attr‘,‘uid‘);修改为$servers->setValue(‘login‘,‘attr‘,‘dn‘);

e、尝试登录

帐号:cn=root,dc=zzc,dc=com

密码:为之前设定的密码

f、phpldapadmin支持sudo

http://phpldapadmin.sourceforge.net/wiki/index.php/TemplatesContributed:Sudo

到这个网址抓取template,但是这个网址被“墙”了,只能翻墙看

将Creation Template 及 Modification Template分别复制到这两个文件

/usr/share/phpldapadmin/templates/creation/sudo.xml

/usr/share/phpldapadmin/templates/modification/sudo.xml

CreationTemplate

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE template SYSTEM "template.dtd">
<template>
<title>Sudo Policy</title>
<regexp>^ou=sudoers,dc=.*</regexp>
<icon>images/door.png</icon>
<description>New Sudo Policy</description>
<askcontainer>1</askcontainer>
<rdn>cn</rdn>
<visible>1</visible>
 
<objectClasses>
<objectClass id="sudoRole"></objectClass>
</objectClasses>
 
<attributes>
<attribute id="cn">
        <display>Policy Name</display>
        <order>1</order>
        <page>1</page>
</attribute>
<attribute id="sudoCommand">
        <display>Sudo Command</display>
        <order>2</order>
        <page>1</page>
        <spacer>1</spacer>
</attribute>
<attribute id="sudoUser">
        <display>Sudo Users</display>
        <option>=php.MultiList(/,(objectClass=posixAccount),uid,%uid%
(%cn%),sudoUser)</option>
        <order>3</order>
        <page>1</page>
        <spacer>1</spacer>
</attribute>
<attribute id="sudoHost">
        <display>Sudo Hosts</display>
        <array>10</array>
        <order>3</order>
        <page>1</page>
        <spacer>1</spacer>
</attribute>
<attribute id="description">
        <type>textarea</type>
        <display>Description</display>
        <order>4</order>
        <page>1</page>
</attribute>
</attributes>
</template>

ModificationTemplate

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE template SYSTEM "template.dtd">
<template>
<title>Sudo Policy</title>
<regexp>^cn=.*,ou=sudoers,dc=.*</regexp>
<icon>images/door.png</icon>
<description>Sudo Policy</description>
<askcontainer>1</askcontainer>
<rdn>cn</rdn>
<visible>1</visible>
 
<objectClasses>
<objectClass id="sudoRole"></objectClass>
</objectClasses>
 
<attributes>
<attribute id="cn">
        <display>Policy Name</display>
        <order>1</order>
        <page>1</page>
</attribute>
<attribute id="sudoCommand">
        <display>Sudo Command</display>
        <order>2</order>
        <page>1</page>
        <spacer>1</spacer>
</attribute>
<attribute id="sudoUser">
        <display>Sudo Users</display>
        <order>3</order>
        <page>1</page>
        <spacer>1</spacer>
</attribute>
<attribute id="sudoHost">
        <display>Sudo Hosts</display>
        <!-- <array>10</array> -->
        <order>3</order>
        <page>1</page>
        <spacer>1</spacer>
</attribute>
<attribute id="description">
        <type>textarea</type>
        <display>Description</display>
        <order>4</order>
        <page>1</page>
        <cols>200</cols>
        <rows>10</rows>
</attribute>
</attributes>
</template>

保存后phpldapadmin会自动载入

4.2.3、ldap客户端安装

a.安装LDAPclient认证需要的pam包:

#yum install nss-pam-ldapd pam_ldap -y

b.setup配置客户端,是机器使用LDAP进行账户验证:

将带ldap的选中

选next

选ok,退出

c. 设定自动建立家目录

# yum install -y oddjob-mkhomedir oddjob

# chkconfig oddjobd on

# service messagebus start

Starting system message bus: [ OK ]

# service oddjobd start

Starting oddjobd: [ OK ]

# authconfig --enablemkhomedir --update

Starting oddjobd: [ OK ]

设定完后只能通过帐号密码登录,但我们还要支持ssh public key认证

d. 支持sshpublic key登录

#yum install openssh-ldap nss-pam-ldapd

#cp/usr/share/doc/openssh-ldap-5.3p1/ldap.conf /etc/ssh

#vi /etc/ssh/sshd_config

AuthorizedKeysCommand/usr/libexec/openssh/ssh-ldap-wrapper

PubkeyAuthenticationyes

AuthorizedKeysCommandRunAsnobody

#vi /etc/ssh/ldap.conf添加

urildap://192.168.1.50/

basedc=zzc,dc=com

sslno

# service sshd restart

e.让用户通过ldap支持sudo

# vi /etc/sudo-ldap.conf 加入两行

uri ldap://192.168.1.50/

sudoers_base dc=zzc,dc=com

#vi /etc/nsswitch.conf 加入一行

sudoers:    files ldap

会先判断本机sudo设定,再判断ldap的设定

f、vim/etc/sssd/sssd.conf

添加enumerate=true

#service sssd restart 并重启服务

在客户端执行

#getent passwd |grep abc 可以看到ldap的用户abc的信息

g.编辑系统认证文件,保证使用ldap来认证

vim /etc/pam.d/system-auth
 vim /etc/pam.d/password-auth

将文件中的pam_sss.so替换成 pam_ldap.so

#service nslcd restart

服务重启之后因该就可以使用LDAP服务了。客户端配置完成

 

 

5、LDAP Server管理篇

5.1、登录

帐号:cn=root,dc=zzc,dc=com

密码:为你在服务端的slapd.conf中rootpw段设定的密码

5.2、创建OU

这个ou要建立users,groups,sudoers,也就是要操作三次

点击“创建新条目”--》Generic: Organisational Unit

分别输入users  groups  sudoers 创建三次

5.3 groups的建立

创建一个子条目--》Generic: Posix Group,写上要创建的组名

5.4 users的建立

登录的用户名为这里的UserID:test_user1,密码为你自己设定的

5.5设定user使用SSH Public key登录

随便找台linux机器执行ssh-keygen -t rsa一直回车,在家目录的.ssh目录下有id_rsa  id_rsa.pub两个文件。

先查看下刚添加的test_user1的资料

将id_rsa.pub中的内容添加到sshPublickey中,私钥自己导入到crt或者xshell中,就可以用ssh public key登录了

5.6、sudo的设定

时间: 2024-11-06 11:35:21

openldap管理系统的相关文章

账号集中管理系统设计与实现----OpenLDAP

搭建一套OpenLDAP系统,实现账号的统一管理 可实现的功能: 1:OpenLDAP服务端的搭建 2:PhpLDAPAdmin的搭建(便于web页面管理) 3: OpenLDAP服务端配置分组管理用户sudo权限分配: (1)默认没有sudo权限: (2)运维具有sudo到任何用户执行任何命令权限: (3)研发具有相应的配置执行命令权限 4:OpenLDAP客户端的配置 5:OpenLDAP与SSH 6:OpenLDAP结合客户端PAM,限制用户登录主机 7:OpenLDAP加入密码策略 (1

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

原文地址:http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%85%8D%E7%BD%AE.html 钿畑的文章索引 1.概念介绍 2. 环境介绍 2. 准备工作 3. yum部署ldap 4. phpldapadmin安装 5.ldap客户端配置 6.用户目录自动挂载 6.1 服务器端配置 6.2 客户端配置 7.配置TLS传输加密 8.配置openldap双

第十七节课:第18,19,23章,mariadb数据库、PXE无人值守安装系统和openldap目录服务。

第23章 (借鉴请改动) openldap数据的特点:1.短小.2.读取次数较多 上述说明: openLDAP服务端配置:     1.yum install -y openldap openldap-clients openldap-servers migrationtools  Loaded plugins: langpacks, product-id, subscription-manager //安装相关软件     2.生成秘钥文件并在/etc/hosts写入解析地址 slappass

OpenLDAP快速入门

前言 LDAP轻量目录访问协议为用户管理提供了统一认证服务,解决了长期存在的多套用户认证系统孤立.繁杂.难以维护的问题.具有简捷.高效.易用的特性,是用户认证管理的不二选择 一.简介 LDAP(Lightweight Directory Access Protocol)是基于X.500标准的轻量目录访问协议.它比X.500具有更快的查询速度和更低的资源消耗,精简灵活,支持TCP/IP协议.LDAP为用户管理提供了统一认证服务,解决了办公环境中多套用户认证和项目管理系统相互独立分散的难题.Open

学生管理系统(jsp+mysql)

1.实验目的 通过使用 Java Web 技术设计一个简单的数据库管理系统,了解前台页面和后 台编辑页面的区别,掌握 Web 服务器与 MySQL 数据库的连接和数据库操作的方 法,掌握使用 JSP 编写后台代码的方法. 2.实验内容和要求 开发一个学生管理系统,完成学生信息的查看.增加.删除和修改等功能. 对于客户端增加和修改信息页面,要使用 javascript 进行必要的数据的非空验证. 自行添加一些 css,使得页面和字体更加美观. 3.实验步骤及实验结果 (1)打开 MySQL,新建一

Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实

探讨之医院门诊管理系统

需求:医院为私人医院,规模在50人左右,目前该医院已经接入全市his系统,但是想私下建立一个门诊管理系统,包括挂号,医生就诊,之后的各科室检查,这其中又包括检查项目的缴费,药品的消费,已知该医院没有自己的数据库.怎么实现一个系统,使药品,挂号,就诊检查. 我自己的设想: 建立自己的药品进销存的数据库管理 建立自己的财务系统,这其中包括会计的财务出账,门诊挂号,检查等费用的录入 是否建立工作流程?方便管理,已知每个医生都有一台电脑 请老师和读者给提供一些有价值的建议,谢谢!!!

Linux下安装禅道管理系统7.2

提示:禅道是用PHP开发的,只要安装一个MySQL,找一个能跑PHP的web应用服务器,把禅道源代码放到里面,然后按步骤安装就可以了.不一定要用XAMPP,XAMPP只是把PHP环境和MySQL都集成了而已. 禅道简介 禅道项目管理软件(ZenTaoPMS)是一款国产的,基于ZPL协议,开源免费的项目管理软件,它集产品管理.项目管理.测试管理于一体,同时还包含了事务管理.组织管理等诸多功能,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程,是中小型企业项目管理的首选. 禅道项目管理软

III (二十三)OpenLDAP

目录服务: 目录是一类为了浏览和搜索数据而设计的特殊的数据库,目录服务是按照树状形式存储信息,目录包含基于属性的描述性信息,并且支持高级的过滤功能,如microsoft的active directory活动目录就是目录数据库的一种: a directory is like a phone book,and is not like a directory(folder) on your computer 一般目录不支持大多数事务型数据库所支持的高吞吐量和复杂的更新操作,目录进行更新操作是要么全部要