zoukankan      html  css  js  c++  java
  • LDAP服务配置

    LDAP服务配置

    1. ldap服务相关软件安装

    用命令rpm -qa |grep ldap,可以发现系统中已经默认安装如下和ldap相关软件:

    openldap-2.3.43-12.el5

    python-ldap-2.2.0-2.1

    nss_ldap-253-25.el5

    第一个为openldap包,用来提供LDAP服务的基本文件目录

    python-ldap 提供用于访问 LDAP 目录服务器的 Python 面向对象接口

    nss_ldap用于与LDAP服务器通信,可以让系统识别ldap中的用户和群组。

    我们还需要安装LDAP的服务端和客户端,版本和安装命令如下:

    #rpm –ivh libtool-ltdl-1.5.22-7.el5_4.i386.rpm(服务器端依赖文件)

    #rpm –ivh openldap-servers-2.3.43-12.e15-1.3.i386.rpm

    #rpm –ivh openldap-clients-2.3.43-12.e15-1.3.i386.rpm

    2. LDAP服务器配置

    2.1 创建复制BDB数据库配置文件

    LDAP服务器默认采用BDB(伯克利)数据库作为后台,CentOS中已经默认安装,需要先将/etc/openldap/目录下的DB-CONFIG.example文件复制到/var/lib/ldap/目录下并更名为DB-CONFIG并更改权限为ldap所有。

    #cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

    #chown ldap:ldap /var/lib/ldap/DB_CONFIG

    2.2 服务器文件配置.

    LDAP服务器的主配置文件为/etc/openldap/slapd.conf,找到

    suffix “dc=my-domain,dc=com”

    rootdn “cn=Manager,dc=my-domain,dc=com” 两行。

    根据实际情况修改为:

    suffix “dc=Wistronits,dc=com” 设定域名后缀

    rootdn “cn=Manager,dc= Wistronits,dc=com ” 超级管理员

    密码设为简单的明码,把rootpw secret这行前面的注释去掉,注意此行前面一定不要留空格。

    LDAP服务器需要手动添加日志功能。/etc/openldap/slapd.conf中末行添加

    loglevel 296

    local4.* /var/log/ldap.log (說明:local0-7为syslog的facilities,具体的程序应用的facility不一样,每一个facility都有它的数字代码,由这些代码加上错误信息的程度syslog可以判断出信息的优先权。就上例来说,local7的代码为23,notice的代码为5,那么local7.notice的信息优先权为:23*8+5=189。这是/var/adm/messages.T3是信息的优先仅。具体可以查RFC3164。我自己认为设定local7而不用local5是由应用程序决定的。)

    这是一个比较详细的日志级别。同时在/etc/syslog.conf中添加local4.* /var/log/ldap.log 确定LDAP服务器的日志位置。

    用如下命令使日志功能生效:

    #service syslog restart

    2.3开启LDAP服务

    以下命令来开启ldap服务

    # service ldap restart

    查看端口:

    #netstat –an | grep 389

    如果启动正常应该有“389”端口信息。普通LDAP服务开放389端口。查看日志文件/var/log/ldap.log(系统随系统日志服务重启时自动创建)应该有启动信息。

    设置系统在3,5级别启动时自动开启服务

    #chkconfig –level 3 5 ldap on (說明:- - level ,3和5這兩個級別間不能留空格)

    2.4 添加LDAP数据

    在加入数据之前,要配置客户端文件/etc/openldap/ldap.conf. 该文件是LDAP服务器的客户端搜索工具文件,由openldap_clientsRPM包生成。

    配置如下:

    BASE dc=boy,dc=com  搜索路径,改为:

    BASE dc=Wistronits,dc=com

    因为本机就是服务器,所以不用指定服务器IP,默认为localhost。

    LDAP数据可以用以.ldif文件的形式添加到数据库中

    建立了LDAP 目录数据库的基准辨别名(BDN):

    Base.ldif的内容如下:

    dn: dc=Wistronits,dc=com

    dc: Wistronits

    objectClass: top

    objectClass: domain

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

    ou: People

    objectClass: top

    objectClass: organizationalUnit

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

    ou: Group

    objectClass: top

    objectClass: organizationalUnit

    用以下命令添加信息:

    #ldapadd -x -D “cn=Manager,dc=Wistronits,dc=com” -W -f base.ldif

    添加组信息:

    Group.ldif内容如下,添加一个组test:

    dn: cn=test,ou=Group,dc=Wistronits,dc=com

    objectClass: posixGroup

    cn: test

    gidNumber: 1100

    #ldapadd -x -D “cn=Manager,dc=Wistronits,dc=com” -W -f group.ldif

    添加用户信息:

    User.ldif内容如下:添加两个用户test,test1,都属于test组:

    dn: uid=test,ou=People,dc=Wistronits,dc=com uid: test cn: test sn: test userPassword: {crypt}$1$TZ8BaFZ7$yrmX5ddg2Vih7cEq0UGA51 uidNumber: 1100 gidNumber: 1100 homeDirectory: /home/test loginShell: /bin/bash objectClass: top objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount

    dn: uid=test1,ou=People,dc=Wistronits,dc=com uid: test1 cn: test1 sn: test1 userPassword: {crypt}$1$TZ8BaFZ7$yrmX5ddg2Vih7cEq0UGA51 uidNumber: 1105 gidNumber: 1100 homeDirectory: /home/test1 loginShell: /root/test 1 objectClass: top objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount

    #ldapadd -x -D “cn=Manager,dc=Wistronits,dc=com” -W -f user.ldif

    上面命令提示输入密码时,输入管理员密码明文“secret”。

    添加完成数据后,可用以下命令查询数据:

    #ldapsearch –x

    (說明:如果你的本地系统已经使用migrate_all_online.sh进行过同步,删除一个用户非常简单: ldapdelete -x -D “cn=admin,dc=netsafe,dc=qa,dc=net” -W “uid=seabird,ou=People,dc=netsafe,dc=qa,dc=net”

    参数说明: x:指定使用简单授权 D:指定LDAP的管理区 W:提示输入管理密码最后的内容是指定删除的用户信息

    当然,你也可以使用ldapmodify命令,在changetype时输入:delete)

    3. 客户端配置

    LDAP服务器的客户端命令RPM包为openldap-clients,手动安装后会有/etc/openldap/ldap.conf文件。除此之外要实现LDAP服务客户端必须配置 /etc/nsswitch.conf, /etc/sysconfig/authconfig,/etc/ldap.conf,/etc/pam.d/system-auth四个文件。

    <1>配置/etc/nsswith.conf

    /etc/nsswith.conf文件由glibc-2.5-24生成,CentOS5.2中缺省安装。该文件用于名称转换服务。通常LINUX系统身份验证读取本地文件,要使身份验证查询通过LDAP服务器必须在该文件中找到passwd;shadow;group;三行在files后空格添加“ldap”

    passwd: files ldap

    shadow: files ldap

    group: files ldap

    <2>配置/etc/sysconfig/authconfig

    该文件提供身份验证支持LDAP功能,/etc/sysconfig/authconfig 文件由authconfig-5.3.21-3.e15RPM包生成系统默认安装。配置该文件用来跟踪LDAP身份认证机制是否正确启用。找到以下七行,将值确定为“yes”。

    USESYSNETAUTH=yes

    USESHADOW=yes

    USELOCAUTHORIZE=yes

    USELDAP=yes

    USELDAPAUTH=yes

    USEMKHOMEDIR=yes

    PASSWDALGORITHM=yes

    <3>配置/etc/pam.d/system-auth文件

    身份验证服务是实际向LDAP验证用户身份的服务。可插入身份验证模块(PAM)提供了本地Linux身份验证服务。pam_unix.so模块是通用模块,使PAM机制对本地的/etc/passwd文件检查用户帐号。PAMLDAP模块可以用来将身份验证重定向到LDAP目录上。身份验证本身是由PAM程序执行的,它从身份验证候选机制中获取用户名,将其绑定到openLDAP 服务器上。如果绑定成功,PAM会报告说这个用户已经成功通过了pam_ldap.so提供的身份验证测试。根据PAM的配置不同,在用户看到命令提示符之前可能会执行其它测试。 /etc/pam.d/system-auth文件是CentOS5.2的系统认证PAM文件。在该文件的auth,account,password,session四段中pam_unix.so模块后添加pam_ldap.so模块使身份验证先对本地的/etc/passwd文件检查用户帐号,然后再对LDAP服务器进行检查。同时因为是LDAP认证需要为用户创建根目录,所以还必须在会话(SESSION)阶段增加pam_mkhomedir.so模块,为用户登录自动创建宿主目录。

    完整配置文件如下

    #%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 sufficient pam_unix.so nullok try_first_pass

    auth requisite pam_succeed_if.so uid>=500 quiet

    auth sufficient pam_ldap.so

    auth required pam_deny.so

    account required pam_unix.so

    account sufficient pam_succeed_if.so uid<500 quiet

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

    account required pam_permit.so

    password requisite pam_cracklib.so try_first_pass retry=3

    password sufficient pam_unix.so md5 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 [success=1 default=ignore]pam_succeed_if.so service in crond quiet

    session required pam_unix.so

    session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

    session optional pam_ldap.so

    <4>/etc/ldap.conf 文件

    该文件也是LDAP服务器客户端文件,但是与/etc/openldap/ldap.conf文件有不同功能,两者不可混淆。该文件由nss_ldap-253-12.e15RPM包生成,系统默认安装。/lib/security/pam_ldap.so也是由该RPM包生成。 nss_ldap-253: 包括两个LDAP访问客户机:nss_ldap和pam_ldap。nss_ldap是一组C库扩展,提供系统命名服务(NSS),也叫名称转换服务。需要配置为使用LDAP来解析诸如用户和组帐号资源。

    配置如下:

    找到如下行去“#”并配置

    base dc=boy,dc=com 改为指定域名:

    base dc=Wistronits,dc=com

    <5>开启名称缓存服务nscd

    通过网络方式查询用户占用带宽且有时延,开启名称缓存服务可以节省网络资源提高查询效率。

    service nscd restart

    chkconfig –level 3 5 nscd on

    现在可以在客户端进行登录认证调试。

    #ssh test@10.51.2.85(服务器IP)

    输入密码,即可以用SSH登录了。

  • 相关阅读:
    科学计算——笔记
    Python_scrapyRedis零散
    Python博文_爬虫工程师是干什么的
    [单选题]怎样打开或创建一个文件?
    [问答题] 写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):
    [单选题]<?php$age =18;$age?$age+10:$age+20;echo $age;?>
    [单选题]有关PHP面向对象的说法,不对的是:
    [单选题]要循环操作非顺序索引的数组时,可以用下面哪个函数来读取数组当面元素的索引值?
    [单选题]PHP中定义常量的方法是:
    [单选题]stdClass的一个对象如何设置成员value的值?
  • 原文地址:https://www.cnblogs.com/BloodAndBone/p/1967130.html
Copyright © 2011-2022 走看看