顯示具有 LDAP 標籤的文章。 顯示所有文章
顯示具有 LDAP 標籤的文章。 顯示所有文章

2007年5月17日 星期四

OpenVPN 結合 LDAP 認證機制

上一篇文章中介紹完 OpenVPN 如何與 certificate 搭配來加強傳輸的安全性後,這次要回歸到帳號密碼認證的問題!

原本在 certificate 的模式中,client 只要輸入 client certificate 的密碼即可! (因為帳號內定為 client certificate 中的 common name)

當然 OpenVPN 提供的驗證方法不只這種,除了上述的方式外,還可與 LDAP 或是 RADIUS 此類的遠端服務搭配來進行認證的工作,以下要介紹如何使用 LDAP 來進行認證。

全部的設定皆以上一篇為基礎,保留原有設定,並加入 LDAP 認證用的相關設定,以下是設定內容:

vpn server
# 用來認證使用者帳號密碼的 script
# 【注意】務必用「絕對路徑」指定 script 位置

# 「via-env」的目的是以使用者輸入的訊息作為 script 的參數
auth-user-pass-verify /etc/openvpn/ldap_auth.sh via-env

# 以使用者輸入的帳號為 common name
# 不用 client certificate 中的 common name

username-as-common-name

vpn client
# 以帳號密碼的方式進行認證
auth-user-pass


接著以下是 ldap_auth.sh 的內容:
#!/bin/sh

# LDAP Server 的位址
LDAP_HOST=ldap.example.com

# 檢查輸入是否有錯誤
if [ "$username" = "anonymous" || "$username" = "Anonymous" || -z "$username" || -z "$password" ] ; then
exit 1;
fi

# 查詢 LDAP Server 中的帳號密碼資訊
ldapwhoami -x -h $LDAP_HOST -D uid=$username,ou=users,dc=example,dc=com -w $password

if [ "$?" = "0" ]; then
exit 0;
else
exit 1;
fi
exit 1;
然後要讓此 script 讓 others 可以有執行(x)的權限,如此一來 LDAP 認證應該就可以正常進行了。


假設只要進行 LDAP 的帳號密碼認證就好呢?

或許有人會有這種疑問吧? 或是我多慮了........? @_@...算了,不重要...

如果要取消 client certificate 的密碼認證,只要在 vpn server 中加入以下設定:

# 不需 client certificate 相關資訊
client-cert-not-required
並在 vpn client 中將以下兩行註解:
cert keys/vpn_client_cert.pem
key keys/vpn_client_key.pem
如此一來,只要輸入 LDAP 的帳號密碼就可以完成認證囉!


實作心得感想

為了搞這個整整花了我一天,測試半天,中間一直出錯,但一直找不到錯誤原因........

結果發現加入設定「verb 6」可以變成 debug mode,如此一來顯示出來的訊息就相當詳細了!(當然不值得看的訊息也一堆啦......@_@) debug 也相對方便許多~問題也就解決了.....

2007年4月29日 星期日

[OpenLDAP] 解決檔案 DB_CONFIG 不存在造成 poor performance 的問題

若在設定 OpenLDAP 的過程中,發生了類似以下的訊息:
bdb_db_open: Warning - No DB_CONFIG file found in directory /var/lib/ldap: (2)
Expect poor performance for suffix dc=test,dc=com,dc=tw.
由於檔案 DB_CONFIG 中儲存的是負責優化 ldap 服務的設定;而系統上顯示,若沒有 DB_CONFIG 這個檔案,會造成 poor performance;不過 OpenLDAP server 啟動時,並不會自動的將此檔案建立起來,必須由管理者手動建立。

若不知道檔案內容的格式為何,可以參考此篇文章 ,或是使用以下指令,找出 DB_CONFIG 的範例檔:
shell> find / | grep DB_CONFIG
在 Fedora Core 6 中,找到此檔案的位置是在「/etc/openldap/DB_CONFIG.example」,可以直接把他複製到 /var/lib/ldap 目錄下(以原設定不修改的情況下),並根據使用需求進行適度的修改,就可以解決poor performance 的問題。


參考連結:
  1. DB_CONFIG configuration directives
  2. ChinaUnix.net >> LDAP >> 寫給所有OpenLDAP不能正常啟動的人