Basic

FreeNAS

Yum

     
           
LDAP 6.2 伺服器架設 2012.12.20

參考資料

安裝相關套件

yum -y install openldap-servers openldap-clients

從預設值來修改

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.con

產生LDAP管理的密碼,並記錄下來

slappasswd

New password:
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

設定密碼各式方法
slappasswd -h {MD5}
slappasswd -h {SSHA}
slappasswd -h {crypt}

在slapd.conf設定LDAP管理密碼(Root),再設定檔最下面

設定讓使用者可以修改密碼

vi /etc/openldap/slapd.conf

access to attrs=userPassword

by self write

by anonymous auth

by dn.base="cn=Manager,dc=server,dc=kh,dc=edu,dc=tw" write

by * none

access to *   by self write

by users read

by dn.base="cn=Manager,dc=server,dc=kh,dc=edu,dc=tw" write

access to * by * read

------------------------------------

database bdb
suffix "dc=server,dc=kh,dc=edu,dc=tw"
checkpoint 1024 15

rootdn "cn=Manager,dc=server,dc=kh,dc=edu,dc=tw"
rootpw {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

建立root-unit.ldif,定義樹狀結構

vi /etc/openldap/data/root-unit.ldif

#root node
dn: dc=server,dc=kh,dc=edu,dc=tw dc: labs objectClass: dcObject objectClass: organizationalUnit ou: labs Dot com

#login top
dn: ou=login,dc=server,dc=kh,dc=edu,dc=tw ou: login objectClass: organizationalUnit

#user, uid, password
dn: ou=user,ou=login,dc=server,dc=kh,dc=edu,dc=tw ou: user objectClass: organizationalUnit

#group
dn: ou=group,ou=login,dc=server,dc=kh,dc=edu,dc=tw ou: group objectClass: organizationalUnit

##for company organization top
dn: ou=company,dc=server,dc=kh,dc=edu,dc=tw ou: company objectClass: organizationalUnit

#for company organization (unit)
dn: ou=unit,ou=company,dc=server,dc=kh,dc=edu,dc=tw ou: unit objectClass: organizationalUnit

#human resource (under unit)dn:
ou=hr,ou=unit,ou=company,dc=server,dc=kh,dc=edu,dc=tw ou: hr objectClass: organizationalUnit

#MIS (under unit)
dn: ou=mis,ou=unit,ou=company,dc=server,dc=kh,dc=edu,dc=tw ou: mis objectClass: organizationalUnit

#Account (under unit)
dn: ou=account,ou=unit,ou=company,dc=server,dc=kh,dc=edu,dc=tw ou: account objectClass: organizationalUnit

# for customers information
dn: ou=customer,ou=company,dc=server,dc=kh,dc=edu,dc=tw ou: customer objectClass: organizationalUnit

導入新的root-unit.ldif,先刪除舊資料,再匯入舊檔。

service slapd stop
rm -rf /etc/openldap/slapd.d/*
rm -rf /var/lib/ldap/*
slapadd -v -l /root/root-unit.ldif

※有舊資料者,導入原有root-unit-bk.ldif 檔案,清空原先資料庫檔案

service slapd stop
rm -rf /etc/openldap/slapd.d/*
rm -rf /var/lib/ldap/*
slapadd -v -l /root/root-unit-bk.ldif

※有舊資料者,接著,導入原有的cn資料(單位資料)

slapadd -f /etc/openldap/slapd.conf -l /root/ldap2013/serverldap.ldif

LDAP新資料庫產生檔案到slapd.d內的目錄,並改變權限,啟用ldap服務

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
ll /etc/openldap/slapd.d
chown -R ldap:ldap /var/lib/ldap
chown -R ldap:ldap /etc/openldap/slapd.d
service slapd start

日後若有設定sladp.conf,

vi /etc/openldap/slapd.conf

快速重新啟用作法

service slapd stop
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
ll /etc/openldap/slapd.d
chown -R ldap:ldap /var/lib/ldap/*
chown -R ldap:ldap /etc/openldap/slapd.d
service slapd start

新增使用者login dn= uid=user1,ou=user,ou=login,dc=server,dc=kh,dc=edu,dc=tw

ldapadd -x -D cn=Manager,dc=server,dc=kh,dc=edu,dc=tw -w 密碼 -f /root/ldap2013/user-login.ldif

設定開機時啟動該服務

service slapd start
chkconfig --list slapd
chkconfig --level 345 slapd on

ldapsearch確認LDAP樹狀結構

ldapsearch -x -b "dc=server,dc=kh,dc=edu,dc=tw"

LDAP 6.2 伺服器架設 方法test

參考http://www.server-world.info/en/note?os=CentOS_6&p=ldap

參考八克里http://blog.jangmt.com/2012/08/centos-6-ldap-server-ldap.html


1.安裝 openldap-servers

yum -y install openldap openldap-devel openldap-servers

2.設定服務啟用

vi /etc/sysconfig/ldap

SLAPD_LDAPI= yes

3.設定基本檔案

建立slapd.conf

vi /etc/openldap/slapd.conf
# 新增下列內容
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

刪除舊檔及轉換新檔

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

vi /etc/openldap/slapd.d/cn=config/olcDatabase\={0}config.ldif
# 修改第四行
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break

vi /etc/openldap/slapd.d/cn=config/olcDatabase\={1}monitor.ldif
# 新增下列內容
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {1}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcMonitoring: FALSE
structuralObjectClass: olcDatabaseConfig
creatorsName: cn=config
modifiersName: cn=config

變更權限
chown -R ldap. /etc/openldap/slapd.d
chmod -R 700 /etc/openldap/slapd.d
/etc/rc.d/init.d/slapd start
chkconfig slapd on

4.建立 LDAP 密碼

slappasswd

New password:
Re-enter new password:

{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

5.若要導入原有的user_bk.ldif 檔案,記得檢查是否關掉ldap,並且清空原先資料庫檔案

service slapd stop

rm -rf /var/lib/ldap/*

6.準備好後,導入之前的備份檔案

slapadd -l 來源

slapadd -l /backup/userldap.ldif

.導入後,記得修改資料庫目錄權限

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

啟動 LDAP 服務

service slapd start

用原user_bk.ldif內的使用者登入測試看看吧!

**************************************************************************

匯入資料另外方法

ldapadd -x -D "cn=Manager,dc=server,dc=kh,dc=edu,dc=tw" -W -f user_bk.ldif
Enter LDAP Password:
adding new entry "uid=root,ou=People,dc=example,dc=com"

驗證是否已經匯入成功

ldapsearch -x -b "dc=server,dc=kh,dc=edu,dc=tw"

LDAP 用戶端設定(Centos 6.2) nslcd

本文件參考Server World - ネットワークサーバー構築

  • http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=2

1.安裝相關套件

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

2.設定 LDAP 服務

setup

伺服器:ldap://IP 或 ldap://主機名稱

ldap://163.32.X.X

基底DN:dc=server,dc=kh,dc=edu,dc=tw

另外一法:可用修改設定檔

vi /etc/openldap/ldap.conf

URI ldap://ldap.do.kh.edu.tw
BASE dc=server,dc=kh,dc=edu,dc=tw

接下來,編輯以下四個檔案。

vi /etc/openldap/ldap.conf

# add at the last line
# LDAP server's URI
URI ldap://163.32.X.X/

# specify Suffix
BASE dc=server,dc=kh,dc=edu,dc=tw
TLS_CACERTDIR /etc/openldap/cacerts
 

 vi /etc/nslcd.conf

# line 131: specify URI, Suffix
uri ldap://163.32.X.X/
base dc=server,dc=kh,dc=edu,dc=tw
ssl no
tls_cacertdir /etc/openldap/cacerts

 vi /etc/pam_ldap.conf

# line 17: make it comment
# host 127.0.0.1

# line 20: specify Suffix
base dc=server,dc=kh,dc=edu,dc=tw

# add at the last line
uri ldap://163.32.X.X/
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

 vi /etc/pam.d/system-auth(自行找到以下四列,再去修改)

auth        sufficient    pam_ldap.so use_first_pass

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

password   sufficient    pam_ldap.so use_authtok

session     optional      pam_ldap.so

# add if you need ( create home directory automatically if it's none )
session     optional      pam_mkhomedir.so skel=/etc/skel umask=077

 vi /etc/nsswitch.conf

passwd: files ldap # line 33: add
shadow: files ldap # add
group: files ldap # add

netgroup: ldap # line 57: change

automount: files ldap # line 61: change

vi /etc/sysconfig/authconfig

USELDAP= yes # line 18: change

設定開機啟用

chkconfig nslcd on
shutdown -r now

3.用戶端無法立即重新啟動,必須重新開機

4.重新開機後,在Client端本機,用其他帳號登入測試看看!會出現沒有家目錄,是正常的,除非有安裝nfs,或自動建立本機的目錄。

 

LDAP 用戶端,啟用SSHD + VSFTPD

之前已經完成LDAP Client端的設定與啟用。

接下來,我們再來將  VSFTPD 及 SSHD 也啟用服務吧!

VSFTPD(啟用FTP功能,好用!)

cp /etc/pam.d/vsftpd  /etc/pam.d/vsftpd.bk

vi /etc/pam.d/vsftpd

auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    required     pam_loginuid.so

SSHD(其實,這個功能可以不用啟用,沒事開給使用者,沒什麼作用...)

cp /etc/pam.d/sshd /etc/pam.d/sshd.bk

vi  /etc/pam.d/sshd

auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    required     pam_loginuid.so

LDAP 用戶端,結合openwebmail

設定整合之前,先確認perl-Authen-PAM有無安裝

yum -y install perl-Authen-PAM

1.修改openwebmail的設定檔,使用pam認證

vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf

auth_module auth_unix.pl 修改為 auth_module auth_pam.pl

另外再新增一行,這樣讓使用者登入時可以自動建立相關的目錄與檔案
create_syshomedir yes

2.在auth_pam.pl內參數,將login修改為 openwebmail

vi /var/www/cgi-bin/openwebmail/auth/auth_pam.pl

my $servicename = $conf{'servicename'} || "openwebmail";

3.複製auth_pam.conf到主要位置

cp /var/www/cgi-bin/openwebmail/etc/defaults/auth_pam.conf /var/www/cgi-bin/openwebmail/etc/auth_pam.conf

4.修改auth_pam.conf內參數,servicename為openwebmail

vi /var/www/cgi-bin/openwebmail/etc/auth_pam.conf

servicename             openwebmail
passwdfile_plaintext    /etc/passwd
check_nologin           no
check_shell             no
check_cobaltuser        no

4.在/etc/pam.d/內新增openwebmail

vi /etc/pam.d/openwebmail

auth include system-auth
account include system-auth
password include system-auth
session include system-auth

5.(可以不用修改,測試用)修改auth_ldap.conf

vi /var/www/cgi-bin/openwebmail/etc/defaults/auth_ldap.conf

ldaphost 192.168.0.1 # LDAP SERVER IP
ou user # LDAP ORGANIZATIONAL UNIT
cn Manager # LDAP USER
dc1 domain
dc2 kh
dc3 edu
dc4 tw
password secret

另外,不要亂改,因為系統啟動時尚未啟用ldap服務,所以先做原先的認證即可。我修改順序後,導致開機異常。

vi /etc/nsswitch.conf

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

5.重新啟動openwebmail

/var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init

 

openwebmail與LDAP問題:無法更改密碼
問題描述
全部正常後,發現無法在openwebmail內修改個人檔案,出現訊息change password error auth_pam.pl, ret -4, pam_authtok() err 6, Permission denied 。

 

在ldap伺服器中加入以下權限參數

vi /etc/openldap/slapd.conf

#使用者密碼只能由自己變更, 對於暱名使用者只限用於密碼驗證, 其餘禁止取用

access to attrs=userPassword

by self write

by users read

by anonymous auth

#以上沒有規範到的部份, 都授予讀取權限

access to * by * read

Don彙整筆記2010啟用