centos 7 安装LDAP 并集成kerberos 和CDH

参考:https://blog.csdn.net/u011196623/article/details/82502570

http://blog.chinaunix.net/uid-21926461-id-5676013.html

http://blog.javachen.com/2014/11/12/config-ldap-with-kerberos-in-cdh-hadoop.html

一,简介

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol

  • LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
  • LDAP可以很快地得到查询结果,不过在写方面,就慢得多
  • LDAP提供了静态数据的快速查询方式
  • Client/server模型,Server 用于存储数据,Client提供操作目录信息树的工具
  • 这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
  • LDAP是一种开放Internet标准,LDAP协议是跨平台的Interent协议

常用名词:

openLDAP 常用名词解释

o– organization(组织-公司)

ou – organization unit(组织单元/部门)

c - countryName(国家)

dc - domainComponent(域名组件)

sn – suer name(真实名称)

cn - common name(常用名称)

dn - distinguished name(专有名称)

工作原理:

OpenLDAP服务分为客户端和服务端两个部分,服务端的配置过程这里不再赘述。当服务端配置结束后,在服务端的ldap数据库中,应存放着用户的信息,客户端通过安装nss-pam-ldapd(一个瘦身版本的 PAM 模块和一个瘦身版本的

NSS 模块集合),以及配置/etc/pam.d下的system-auth文件和password-auth两个文件来完成客户端的配置。

nss-pam-ldapd,是pam模块和nss模块的集合,主要作用是使存在于服务端ldap数据库中的用户,进行ssh登陆客户端时,可以通过pam方式进行验证,而这种情况下此用户是不存在于客户端的服务器上的。

openldap-clients,就是OpenLDAP的客户端软件包,此软件包安装后,不需要像服务端一样运行起来,他的作用主要是集成了类似ldapsearch,ldapadd之类的命令,可以用户验证服务端或者对服务端数据库中的用户信息进行查询,

添加等。

openldap,主要包含了OpenLDAP所必须的库文件,当通过pam验证时,这些库文件是必须有的。

1. 环境说明

  • 操作系统:CentOs 7
  • Hadoop版本:CDH5.12.2
  • JDK版本:1.8.0_101
  • OpenLDAP 版本:2.4.44
  • Kerberos 版本:1.15.1-19.el7
  • 运行用户:root

duan139 server端

duan140 client 端

2. 安装

  2.1 server端

  2.1.1 yum安装

yum install -y openldap openldap-clients openldap-servers migrationtools

2.1.2 生成密码

slappasswd -s duan

{SSHA}OvciPz+FWXBLNL0zxjP6RTS6K/UE1Dwb

2.1.3配置文件修改

vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif

修改内容

olcSuffix: dc=hadoop,dc=com

olcRootDN: cn=Manager,dc=hadoop,dc=com

添加内容

olcRootPW: {SSHA}OvciPz+FWXBLNL0zxjP6RTS6K/UE1Dwb   #顶格写,:后有空格

2.1.4 修改验证

vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif

修改内容

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern

al,cn=auth" read by dn.base="cn=Manager,dc=hadoop,dc=com" read by * none

2.1.5  配置DB数据库

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

chown ldap:ldap -R /var/lib/ldap

chmod 700 -R /var/lib/ldap

2.1.6  验证

slaptest -u

看见:config file testing succeeded  #验证成功,否则失败

2.1.7 授权,若不授权启动时或报错,权限不足

chown ldap:ldap -R /var/run/openldap

chown -R ldap:ldap /etc/openldap/

2.1.8 启动

systemctl start slapd

systemctl enable slapd

2.1.9 cd /etc/openldap/schema/

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f cosine.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f nis.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f collective.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f corba.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f core.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f duaconf.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f dyngroup.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f inetorgperson.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f java.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f misc.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f openldap.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f pmi.ldif

# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f ppolicy.ldif

2.1.10 执行ldapsearch -x检查是否有如下输出

ldapsearch -x -b ‘‘ -s base‘(objectclass=*)‘

# extended LDIF

#

# LDAPv3

# base <> with scope baseObject

# filter: (objectclass=*)

# requesting: ALL

#

#

dn:

objectClass: top

objectClass: OpenLDAProotDSE

# search result

search: 2

result: 0 Success

如显示上面信息,表示服务已经启动成功。

2.1.11  创建管理员账号

编辑ldif文件: vi base.ldif

dn: dc=hadoop,dc=com

o: hadoop com

dc: hadoop

objectClass: top

objectClass: dcObject

objectclass: organization

dn: cn=root,dc=hadoop,dc=com

cn: root

objectClass: organizationalRole

description: Directory Manager

dn: ou=People,dc=hadoop,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit

dn: ou=Group,dc=hadoop,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit

导入数据库

ldapadd -x -D "cn=Manager,dc=hadoop,dc=com" -W -f base.ldif   密码是 duan

验证

ldapsearch -x -b ‘dc= hadoop,dc=com‘ ‘(objectClass=*)‘

# extended LDIF

#

# LDAPv3

# base <dc= hadoop,dc=com> with scope subtree

# filter: (objectClass=*)

# requesting: ALL

#

# hadoop.com

dn: dc=hadoop,dc=com

o: hadoop com

dc: hadoop

objectClass: top

objectClass: dcObject

objectClass: organization

# root, hadoop.com

dn: cn=root,dc=hadoop,dc=com

cn: root

objectClass: organizationalRole

description: Directory Manager

# People, hadoop.com

dn: ou=People,dc=hadoop,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit

# Group, hadoop.com

dn: ou=Group,dc=hadoop,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit

# search result

search: 2

result: 0 Success

# numResponses: 5

# numEntries: 4

2.1.12  通过migrationtools 实现OpenLDAP 用户及用户组的添加

参考:https://www.cnblogs.com/lemon-le/p/6206822.html

(1)修改配置文件

vi /usr/share/migrationtools/migrate_common.ph

# Default DNS domain

$DEFAULT_MAIL_DOMAIN = "hadoop.com";

# Default base

$DEFAULT_BASE = "dc=hadoop,dc=com";

(2) 生成基础的数据导入数据库文件

/usr/share/migrationtools/migrate_base.pl > base.ldif

并把base.ldif里将不要的条目删除,然后通过ldapadd导入LDAP

ldapadd -x -D "cn=Manager,dc=hadoop,dc=com" -W -f base.ldif   密码是 duan

验证

ldapsearch -x -b ‘dc= hadoop,dc=com‘ ‘(objectClass=*)‘

(3)将系统用户生成ldif文件

cat /etc/passwd |grep duan > duan.txt

/usr/share/migrationtools/migrate_passwd.pl duan.txt duan.ldif

/usr/share/migrationtools/migrate_group.pl /etc/group group.ldif

ldapadd -x -D "cn=Manager,dc=hadoop,dc=com" -W -f duan.ldif

adding new entry "uid=duan,ou=People,dc=hadoop,dc=com"

ldap_add: Invalid syntax (21)

additional info: objectClass: value #0 invalid per syntax

这通常的原因是导入的ldif 中存在不合法的Class,与Schema 中定义不符。例如:objectclass:organizationalRole 写成 objectclass:organizational 等等。

解决方法是,修改Schema文件,或使用正确的Class定义。操作:2.1.9 步骤,出现ldap_add: Other (e.g., implementation specific) error (80)

additional info: olcAttributeTypes: Duplicate attributeType: "2.5.4.2" 忽略即可。

2.2 client 客户端安装 http://blog.51cto.com/11093860/2161809

2.2.1 yum安装

yum install nss-pam-ldapd openldap-clients openldap -y

2.2.2配置openLDAP-client

vi   /etc/openldap/ldap.conf

TLS_CACERTDIR /etc/openldap/cacerts

SASL_NOCANON    on

URI ldap://192.168.116.139/

BASE dc=hadoop,dc=com

2.2.3 authconfig-tui # 将下图中红框中的选中,然后next,按照提示操作完成即可。

2.2.4 分别查看以下文件的内容,是否已经自动更改成如下所示,若没有,请手动更改,手动更改后,请勿再执行authconfig-tui命令,否则会将手动更改的内容覆盖掉!

(1)vi /etc/nsswitch.conf

passwd: files ldap

shadow: files ldap

group: files ldap

automount: files sss ldap

(2) vi /etc/pam.d/system-auth (关注红色字体就好)

auth        required      pam_env.so

auth        required      pam_faildelay.so delay=2000000

auth        sufficient    pam_unix.so nullok try_first_pass

auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success

auth        sufficient    pam_ldap.so use_first_pass

auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow

account     sufficient    pam_localuser.so

account     sufficient    pam_succeed_if.so uid < 1000 quiet

account     [default=bad success=ok user_unknown=ignore] pam_ldap.so

account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

password    sufficient    pam_ldap.so use_authtok

password    required      pam_deny.so

session     optional      pam_keyinit.so revoke

session     required      pam_limits.so

-session     optional      pam_systemd.so

session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid

session     required      pam_unix.so

session     optional      pam_ldap.so

(3) vi /etc/pam.d/password-auth

#%PAM-1.0

# This file is auto-generated.

# User changes will be destroyed the next time authconfig is run.

auth        required      pam_env.so

auth        required      pam_faildelay.so delay=2000000

auth        sufficient    pam_unix.so nullok try_first_pass

auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success

auth        sufficient    pam_ldap.so use_first_pass

auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow

account     sufficient    pam_localuser.so

account     sufficient    pam_succeed_if.so uid < 1000 quiet

account     [default=bad success=ok user_unknown=ignore] pam_ldap.so

account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

password    sufficient    pam_ldap.so use_authtok

password    required      pam_deny.so

session     optional      pam_keyinit.so revoke

session     required      pam_limits.so

-session     optional      pam_systemd.so

session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid

session     required      pam_unix.so

session     optional      pam_ldap.so

(4) vi /etc/sysconfig/authconfig(其中两个)

USELDAP=yes

USELDAPAUTH=yes

(5)vi /etc/ssh/sshd_config #确保没有其他禁止用户登陆的选项,将使用pam模块选项改成yes

UsePAM yes

2.2.5 启动服务

systemctl restart nslcd

systemctl restart sshd

2.2.6 测试

在服务端创建一个test,客户端没有改用户。在客户端 查询:

id test

uid=1001(test) gid=1001 组=1001

2.2.6 nslcd 服务(没有操作)

cp /etc/nslcd.conf /etc/nslcd.conf.old

cat >> /etc/nslcd.conf <<EOF

uri ldap://hadoop.com

base dc=hadoop,dc=com

EOF

  1. LDAP 和 Kerberos

在Kerberos安全机制里,一个principal就是realm里的一个对象,一个principal总是和一个密钥(secret key)成对出现的。

这个principal的对应物可以是service,可以是host,也可以是user,对于Kerberos来说,都没有区别。

Kdc(Key distribute center)知道所有principal的secret key,但每个principal对应的对象只知道自己的那个secret key。这也是 “共享密钥” 的由来。

为了使 Kerberos 能够绑定到 OpenLDAP 服务器,请创建一个管理员用户和一个 principal,并生成 keytab 文件,设置该文件的权限为 LDAP 服务运行用户可读( LDAP 服务运行用户一般为 ldap):

$ kadmin.local -q "addprinc ldapadmin" 密码是duan

$ kadmin.local -q "addprinc -randkey ldap/duan139"

$ kadmin.local -q "ktadd -k /etc/openldap/ldap.keytab ldap/duan139"

$ chown ldap:ldap /etc/openldap/ldap.keytab && chmod 640 /etc/openldap/ldap.keytab

确保 LDAP 启动时使用上一步中创建的keytab文件,在 /etc/sysconfig/ldap 增加 KRB5_KTNAME 配置:

export KRB5_KTNAME=/etc/openldap/ldap.keytab

然后,重启 slapd 服务。

systemctl restart slapd

原文地址:https://www.cnblogs.com/duaner92/p/9931156.html

时间: 2024-10-05 11:49:13

centos 7 安装LDAP 并集成kerberos 和CDH的相关文章

Centos 下安装Redmine并集成git

首先获得安装文件 wget https://downloads.bitnami.com/files/stacks/redmine/2.6.1-0/bitnami-redmine-2.6.1-0-linux-x64-installer.run 增加可执行权限 chmod +x https://downloads.bitnami.com/files/stacks/redmine/2.6.1-0/bitnami-redmine-2.6.1-0-linux-x64-installer.run 安装 ./

yum安装kerberos LDAP,集成到CDH

一,配置yum源 ls -l /dev |grep cd mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom cd /etc/yum.repos.d 将其他yum源备份并删除 vi media.repo [rh6-media] name=rh6-media autorefresh=0 baseurl=file:///mnt/cdrom/ gpgcheck=0 enabled=1 yum clean all yum makecache 二,安装Kerberos

CentOS 6通过ldap集成AD域账号(nslcd方式)

CentOS 6通过ldap集成AD域账号(nslcd方式): CentOS 6默认有安装nss-pam-ldapd软件(rpm -qa nss-pam-ldapd,rpm -ql nss-pam-ldapd) vi /etc/nsswitch.conf passwd: files ldapgroup: files ldapshadow: files ldap:wq vi /etc/nslcd.conf binddn cn=aa,cn=users,dc=ming,dc=com (aa为普通AD账

CentOS 7安装Splunk

CentOS 7安装Splunk 导读 Splunk是探索和搜索数据的最有力工具,从收集和分析应用程序.Web服务器.数据库和服务器平台的实时可视化海量数据流,分析出IT企业产生的海量数据,安全系统或任何商业应用,给你一个总的见解获得结果的最佳运营绩效和业务. 没有官方的安装必须条件,但为服务器安装防火墙和网络配置之前,我推荐一个合适的域名.该软件只支持64位服务器架构,在这篇文章中,我指导你如何在CentOS 7服务器安装Splunk的企业版.让我们用一个一个步骤的安装. 1.创建一个Splu

Centos下安装Redmine

1 Redmine介绍 Redmine是基于ROR框架开发的一套跨平台项目管理系统,是项目管理系统的后起之秀,据说是源于Basecamp的ror版而来,支持多种数据库,除了和DotProject的功能大致相当外,还有不少自己的独特的功能,例如提供wiki.新闻台.时间跟踪.feed聚合.导出pdf等,还可以集成其它版本管理系统和BUG跟踪系统,例如SVN.CVS.TD等. 2 安装说明 操作系统:centos6.0 64位 所需软件:bitnami-redmine-2.5.2-0-linux-x

Linux CentOS下安装、配置mysql数据库

如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--CentOS下j2ee环境搭建),如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同,就没有记录下来了,有了jdk.tomcat.eclipse我们就已经能进行我们的程序开发了,但是如果要做一个项目,哪怕是小的不能再小的项目都离不开数

CentOS6.4 安装ldap

参考http://kinggoo.com/openldapinstallconf.htm 参考http://linux.it.net.cn/CentOS/server/set/2014/1203/9510.html 参考http://407711169.blog.51cto.com/6616996/1439944 参考http://linuxadmin.blog.51cto.com/2683824/1615515 参考http://ljl2013.blog.51cto.com/186072/13

Centos 下安装 mysql5.5.45

又动手安装了一次mysql,版本是5.5.45,5.5以上版本需要安装cmake! 安装流程: 0.先检查是否有自带的mariadb,有则卸载1.安装所需软件: 2.安装CMAKE; 3.tar.gz形式安装mysql: 4.配置与启动: 0.首先centos7 已经不支持mysql,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安装mysql的步骤.(妈蛋,之前不知道,我安装了一整天才知道有这个坑,fu

CentOS/RHEL安装oracle 11G

系统:RHEL6.5 + oracle11G x86_64 (CentOS上安装与此大同小异) 使用本地yum源(提前下载pdksh包),具体过程参考(适用于RHEL/CentOS):http://www.cnblogs.com/chinas/p/4536181.html 首先,官网介绍安装的大体过程参考: Logging In to the System as root 以root身份登录系统 Checking the Hardware Requirements 检查需要的硬件条件 Check