LDAP

出自 新化國中wiki平台
前往: 導覽搜尋

LDAP架設

ref. from http://vic.idv.tw:84/dom/blog/ldap.htm , http://edin.no-ip.com/content/ldap-samba-pdc-pamnss-debian-lenny-howto

ldap server

apt-get update
apt-get install slapd mcrypt ldap-utils libgd-tools 

將舊的slapd.conf轉成新的

slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d

phpldapadmin管理介面

先裝apache2 & php

  1. apache2-suexec 使用與調用web服務器的用戶不同的用戶身份來運行CGI和SSI程序
  2. php5-imap imap ref:http://blog.xuite.net/jwin.ok/blog/13652738
apt-get update
apt-get install apache2-suexec libapache2-mod-php5 php5 php5-cli php5-curl php5-gd php5-imap php5-ldap php5-mcrypt php5-mhash php5-sqlite php5-tidy php5-xmlrpc php-pear apache2-doc

安裝 phpldapadmin

apt-get install phpldapadmin

config.php設定檔要注意的:

$config->custom->session['blowfish'] 

自動偵測有時會有問題,自己打入base DN

$servers->setValue('server','base',array('cn=config','dc=example,dc=org'));

with samba (或許配合openwebmail不太需要)

apt-get update
apt-get install libpam-ldap libnss-ldap resolvconf samba samba-doc swat smbclient smbfs smbldap-tools

ldap_NSS

安裝指令

apt-get install libnss-ldapd

或者

apt-get install libnss-ldap

以下幾個設定檔要注意:

/etc/libnss-ldap.conf

uri ldap://<ldapserver IP ,127.0.0.1 is a good idea> 
base dc=<your>,dc=<domain>
其他的設定 rootbinddn 等,大致上看一下就知道了。
rootbinddn的密碼放在 /etc/ldap.secret

/etc/nsswitch.conf

主要是增加ldap,是需要認證的項目來增加,如下:

  passwd:         files ldap
  group:          files ldap
  shadow:         files ldap

ldap_PAM

安裝指令

apt-get install libpam-ldap

以下幾個設定檔要注意:

/etc/pam_ldap.conf

跟libnss-ldap.conf差不多

uri ldap://<ldapserver IP ,127.0.0.1 is a good idea> 
base dc=<your>,dc=<domain>
其他的設定 rootbinddn 等,大致上看一下就知道了。
rootbinddn的密碼放在 /etc/ldap.secret

/etc/pam.d/common-account

account     required      pam_unix.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

以下ok

account sufficient    pam_unix.so
account required     pam_ldap.so

/etc/pam.d/common-auth

#pam_unix2.so 在OB2D中因為blowfish編碼要選pam_unix2.so而非pam_unix.so
auth    sufficient      pam_unix2.so
auth    requisite       pam_succeed_if.so uid >= 1000 quiet
auth    sufficient      pam_ldap.so use_first_pass
auth    required        pam_deny.so


/etc/pam.d/common-passwd

#for ldap
password sufficient pam_ldap.so

#以下原來的
password   required   pam_unix2.so nullok obscure min=4 max=8 blowfish

/etc/pam.d/common-session

session optional pam_ldap.so
#以下一行原來的
session required pam_unix.so
#底下這行是會在使用者登入時自動建立家目錄,若不需要此功能可將它 mark 掉
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

with OpenWebmail

編輯 /etc/ldap.conf <忘了原因>

請依下列敘述修改

#定義LDAP server ip address
host 127.0.0.1
#定義LDAP server的distinguished name
base dc=myunix,dc=adsldns,dc=org
#定義要使用何種ldap版本
ldap_version 3
#定義查詢時所使用的使用者名稱(預設是匿名)
binddn cn=Manager,dc=myunix,dc=adsldns,dc=org
#定義查詢時所使用的使用者名稱密碼(預設沒有密碼)
bindpw secret
#定義LDAP server port
port 389
#定義LDAP search的範圍(sub、one、base)
scope sub
pam_crypt local

修改openwebmail設定

在/etc/pam.d/新增一個 openwebmail

內容如下

@include common-auth
@include common-account
password   required     pam_cracklib.so retry=3
@include common-passwd
password   required     pam_pwdb.so try_first_pass

修改 cgi-bin/openwebmail 設定

找一下 cgi-bin/openwebmail的位置通常是/usr/lib/
  • 修改一下 /usr/lib/cgi-bin/openwebmail/etc/openwebmail.conf
    auth_module             auth_pam.pl
  • /usr/lib/cgi-bin/openwebmail/auth/auth_pam.pl
    修改此兩行:
    my $servicename = "openwebmail" ;
    my $passwdfile_plaintext = "/etc/passwd" ;
  • /usr/lib//cgi-bin/openwebmail/etc/defaults/auth_ldap.conf
# 
#Config file for auth_ldap.conf
#
 
 ldaphost      127.0.0.1             # If localhost with run FDS
 ou            People                # Organization Unit create in FDS with you need authenticate
 cn            Directory Manager     # Ldap User. You no need this for working if installing default. This is necesary if you need the change                       
                                     # password in openwebmail.
 dc1           example               # Firt DC, example.com
 dc2           com                   # Second DC
 password      dsmanager             # Ldap password. You no need this for working if installing default.This is necesary if you need the change                       
                                     # password in openwebmail.

必要的話要增加dc 並修改cgi-bin/openwebmail/auth/auth_ldap.pl

增加

my $dc3 = "dc=$conf{'dc3'}";
my $dc[n] = "dc=$conf{'dc[n]'}"; # More if you need

配合修改

 $ldap->bind (dn=>"$cn, $dc1, $dc2", password =>$pwd) or  return(-3, "LDAP error $@");

 Change to
 $ldap->bind (dn=>"$cn, $dc1, $dc2, $dc3", password =>$pwd) or  return(-3, "LDAP error $@");

 Or every you need
 $ldap->bind (dn=>"$cn, $dc1, $dc2, $dc3, $dc[n]", password =>$pwd) or  return(-3, "LDAP error $@");

LDAP回復

架設好Ldap,並已先用

slapcat > ~/slipd.ldif

備份原來的(或之前已有備份檔)

  • 設定
dpkg-reconfigure slapd
Omit OpenLDAP server configuration? No
DNS domain name: example.com
Organization name: example.com
Administrator password: 更改成你的密碼
Database backend to use: HDB
Do you want the database to be removed when slapd is purged? No
Allow LDAPv2 protocol? No 
  • 增加 ldap 的 schema ( samba 部份要先 install )
zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
  • 復原 /etc/ldap/slapd.conf
  • 復原 資料庫
/etc/init.d/slapd stop
rm -rf /var/lib/ldap/*
slapadd -l ~/slipd.ldif
slapindex
chown -Rf openldap:openldap /var/lib/ldap
/etc/init.d/slapd start

轉passwd到資料庫中

apt-get install migrationtools

將本地端使用者(passwd檔)轉入資料庫中

cd /usr/share/migrationtools/
vim migrate_common.ph

找以下的更改

$DEFAULT_MAIL_DOMAIN = "debuntu.local";
$DEFAULT_BASE = "dc=debuntu,dc=local";
#可以使用比較多的屬性,例如mail ,xoops2等驗證需要
$EXTENDED_SCHEMA = 1

因為使用 EXTENDED_SCHEMA

會多出

objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: kerberosSecurityObject
objectClass: shadowAccount
krbName: ************ 
 其中objectClass: kerberosSecurityObject(or objectClass: krb5Principal )以及其屬性krbName(or krb5PrincipalName ) LDAP v2.2之後沒有支援,(原因...未知)

所以要改一下 migrate_passwd.pl 中的 有關 kerberosSecurity 或 krb5Principal 的敘述把他註解掉。

執行以下指令轉換

./migrate_group.pl /etc/group ~/group.ldif
./migrate_passwd.pl /etc/passwd ~/passwd.ldif

解析出來的ldif檔ou值為 ou=Group & ou=People

記得改成規劃中的樣子。

ldapadd -x -D "cn=admin,dc=ldap,dc=example,dc=org" -W -f ***.ldif

匯入資料庫前少的Group People node要建立一下(我把Group 轉成 ou=group,ou=login ,People 改成 ou=user,ou=login )

Tips

新增log

vim /etc/syslog.conf (增加openldap log,以方便除錯)
local4.*    /var/log/ldap.log

Splatd

Scalable Periodic LDAP Attribute Transmogrifier

code網址:http://code.google.com/p/splatd/ 特色:

  • Writing SSH public keys
  • Writing .forward files
  • Creating user home directories
  • Archiving and deleting home directories of deleted users
  • OpenNMS user synchronization

修改密碼

ldappasswd -x -D "cn=admin,dc=shjhs,dc=tn,dc=edu,dc=tw" -W "uid=帳號,ou=teacher,ou=login,dc=shjhs,dc=tn,dc=edu,dc=tw" -S 

參考資料

  1. wiki Debian LDAP_NSS
  2. wiki Debian LDAP_PAM
  3. 實作ldap的流程心得分享os:centos 4.2
  4. Openwebmail與OpenLDAP整合
  5. openwebmail with LDAP
  6. 不自量力 の Weithenn: OpenLDAP-PAM NSS 設定FreeBsd
  7. hswong3i's blog LDAP + Samba PDC + PAM/NSS on Debian Lenny HOWTO
  8. 同步刪除增加LOCAL及LDAP USER
  9. 為Ubuntu加上LDAP驗證登入並提供FTP服務
  10. UBUNTU 10.04 openldap安裝和設定
  11. 新版openldap-servers-2.4.19-4.fc12.i686的設定
  12. Ubuntu Linux 安裝 LDAP Server