メイン

LDAP アーカイブ

2007年01月24日

CentOS4でLDAPクライアント

環境によってパスワードを一元管理できるようにLDAPなどのディレクトリサーバがある場合があります。
そんな時はCentOS4マシンのパスワードをLDAPサーバにまかせる設定をしましょう。

以下のコマンドで設定します。

# authconfig

「LDAP認証を使用」にチェックを入れます。
LDAPサーバがposixAccount, posixGroup に対応していたら「LDAP を使用」にもチェックをいれましょう。
次の画面でLDAPサーバの設定をします。

これで完了。PAMを利用しているようなのでPAMを使ったアプリケーションがLDAP対応になります。
以下のファイルが書き変わります。

/etc/ldap.conf
/etc/openldap/ldap.conf
/etc/nsswitch.conf
/etc/pam.d/system-auth
/etc/sysconfig/authconfig

これでLDAPサーバからパスワードを引いてくるようになっているはずです。
ちなみにこの設定では /etc/passwd も見るようで ldap のパスワードと2つ使えます。
ややこしいのでpasswdファイルのパスワードはロックしちゃいましょう。

# passwd -l username

これでLDAPのパスワードしか使えなくなります。

2007年01月25日

CentOS4でopenLDAPを使ったユーザ情報の管理その1

CentOS4でディレクトリサービスをする場合openldapを利用しましょう。
パッケージopenldap-serversが入っていない場合があるので確認を。
今回はユーザ名とパスワード、それに電子メールアドレスを登録していきます。

始めにツリー構造を考えます。

---
dn 識別名
objectClass オブジェクトクラス
dc ドメイン構成要素
o 組織名
ou 組織単位,組織の部局
cn 一般名称,人名
---

構成の例
---
dc=com
dc=mydomain

ou=jinji,ou=eigyo,ou=gijyutsu
---
この場合は人事,営業,技術という3つのツリー構造(入れ物?)にそれぞれのデータを入れていくことになります。設定は以下。

# vi /etc/openldap/slapd.conf
---
suffix "dc=mydomain,dc=com"
rootdn "cn=Manager,dc=mydomain,dc=com"
---

suffixでベースDN(Directory Name)名を指定します。インターネットの世界でもユニークになるようにDNSと同じ設定をしておきましょう。
rootdnはこのLDAP管理者です。
パスワードを設定する必要があるんですが暗号化して記述したいので slappasswd コマンドで
出力された暗号化パスワードを記述しましょう。

# vi /etc/openldap/slapd.conf
---
rootpw {SSHA}KOwKieVxsDtLQVBwC0t10aX3YAoFKUZL
---

次はアクセス制御を施しましょう。

# /etc/openldap/slapd.conf
---
access to attr=userPassword
by self write
by dn="cn=Manager,dc=anan-nct,dc=ac,dc=jp" write
by anonymous auth
by * none

access to *
by self write
by dn="cn=Manager,dc=anan-nct,dc=ac,dc=jp" write
by * read
---
上の設定の意味は,
パスワードについてはopenLDAP管理者と本人は書換も可,
匿名ユーザでも認証すればパスワードの利用を許可。

パスワード以外についてはopenLDAP管理者と本人は書換OK,
その他の人は読込OK。

アクセス制御は /etc/host.allow /etc/hosts.deny でも可能です。
端末制御はこちらで行いましょう。


次は検索の際の高速化設定です。
デフォルトの設定でも問題ありませんがやはりきちんと設定したいところ。
今回はsn,cn(ユーザ名)とuidとメールアドレスの高速化を図りましょう。

# vi /etc/openldap/slapd.conf
---
index sn,cn,uid,mail eq,pres,sub
---


ログの設定もしておきましょう。
openLDAPのログはデフォルトでlocal4に出力し,レベルは256です。
openLDAPのログを指定したファイルに出力する場合は以下の設定をしましょう。

# vi /etc/openldap/slapd.conf
---
loglevel 256
---
この記述は新規追加になります。

# vi /etc/syslog.conf
---
local4.* /var/log/ldap.log
---

# touch /var/log/ldap.log
# chown ldap.ldap /var/log/ldap.log

ログのローテーション設定もしておきましょう。
以下のファイルに /var/log/ldap.log を追加します。
おそらく見ればどこに追加すればよいか分かると思います。

/etc/logrotate.d/syslog


どのようなログを出力させたいかは以下を参考に。

1
(0x1 trace) 関数呼出しのトレース
2
(0x2 packet) パケット処理のデバッグ
4
(0x4 args) (関数の引数も含めた)詳細なデバッグトレース
8
(0x8 conns) 接続管理
16
(0x10 BER) パケット送受信の印字
32
(0x20 filter) 検索フィルタの処理
64
(0x40 config) 設定ファイルの処理
128
(0x80 ACL) アクセス制御リストの処理
256
(0x100 stats) 接続/操作/結果の統計ログ
512
(0x200 stats2) エントリ送信の統計ログ
1024
(0x400 shell) shell バックエンドとの通信の印字
2048
(0x800 parse) エントリの解析
4096
(0x1000 cache) データのキャッシュ処理(未使用)
8192
(0x2000 index) データの索引処理(未使用)
16384
(0x4000 sync) LDAPSync 複製
32768
(0x8000 none) ログレベルの設定にかかわらずログを取るメッセージのみ

any指定で全ログを取ります。0は全く取らない。
接続管理ログも取りたければ8+256で264という風に指定します。


ここまでで設定が終了です。確認のコマンドを打ってみます。

# slaptest
config file testing succeeded

上のように表示されたらうまく設定できていますので起動してみましょう。

# service ldap start

システム起動時にopenldapを起動したい場合は以下のコマンドを打っておきます。

# chkconfig ldap on

2007年02月22日

CentOS4でopenLDAPを使ったユーザ情報の管理その2

openLDAPなどのディレクトリサービスは冗長構成をとるのが一般的です。なので前回でマスターサーバの設定が済んだので今回は複製サーバを構築しましょう。
複製側サーバもCentOS4を前提にしています。同じバージョンのldapを使っていればきれいに動くと思います。


●マスターサーバ側の作業

複製サーバ側のslapd.confの設定はマスター側とほとんど同じなので複製サーバにslap.confをコピーして利用すると便利です。以下はマスター側のslapd.confへの追加です。

修正情報を記録するログファイルを指定
---
replogfile /var/lib/ldap/openldap-master-replog
---

複製サーバ情報を指定

---
replica host=replica.domain.com:389
suffix="dc=domain,dc=com"
binddn="cn=Manager,dc=domain,dc=com"
credentials=Password
bindmethod=simple
tls=yes
---

binddnにManagerを指定しましたが書き込み権限のあるユーザなら誰でもOKでcredentialsでパスワードを指定します。
tlsをyesに設定したのでサーバ間のデータは暗号化通信を行います。

はじめは複製サーバ側へデータを手動で入力する必要があります。
ということで現在の登録データをファイルに書き出します。

# slapcat -l /etc/openldap/export.ldif

できたexport.ldifファイルを複製サーバ側にコピーしておきます。


●複製サーバ側の設定(slapd.conf)

基本的に設定はマスター側と同じです。以下複製サーバ特有の設定だけ記入します。
マスター側からコピーしてきたslapd.confを使います。

マスターから送られてくる複製情報を書き込むユーザの指定。当然書き込み権限のある
ユーザを指定する必要があります。
---
updatedn "cn=Manager,dc=anan-nct,dc=ac,dc=jp"
---

マスターのアドレスを記述する必要があります。
---
updateref ldap://ldap.domain.com
---

次にマスターサーバから持ってきたデータをインポートします。

# slapadd -l /directory/export.ldif

データベースに既にデータが入っている場合はいろいろエラーがでますがログなどを見
て適宜データを削除するなどして対処してください。データの削除にはWindowsで動作するldap browserが便利だと思います。Javaで作成されていてちょっとしたデータの修正などに大いに役立ちます。

↓ldap browser
http://www-unix.mcs.anl.gov/~gawor/ldap/

●起動

設定がすんだら次は起動です。複製サーバ,マスターサーバの順に起動していきます。
うまく起動できたら正常に複製されているかログを確認しましょう。

2007年03月22日

LDAPのパスワードをWEBブラウザから変更する

今回はuserminを使ってWEBブラウザからパスワードを変更出来るようにします。
openldapのパスワードを変更することを前提としています。
もちろんopenldapが設定されており稼働していることも前提です。

userminのダウンロードは以下

http://www.webmin.com/

現在の最新版は usermin-1.260.tar.gz でした。
これを解凍してインストールします。

# tar zxvf usermin-1.260.tar.gz -C /usr/local/src/
# cd /usr/local/src/usermin-1.260
# ./setup.sh

Config file directory [/etc/usermin]:
Log file directory [/var/usermin]:/var/log/usermin
Full path to perl (default /usr/bin/perl):
Web server port (default 20000):

ログファイルは/var/log配下がいいので変更しましたが
それ以外はデフォルトにしました。

次に日本語表示に対応させます。

# vi /etc/usermin/config
---
lang=ja_JP.euc
---

以下のファイルも関係しますので適宜修正しましょう。

/usr/local/src/usermin-1.260/changepass/lang/ja_JP.euc
/usr/local/src/usermin-1.260/changepass/lang/en
/usr/local/src/usermin-1.250/ulang/ja_JP.euc


使う機能をパスワードだけにする場合は以下のファイルを編集します。

# vi /etc/usermin/webmin.acl
---
user: changepass
---

また,rootで認証できないように設定します。

# vi /etc/usermin/miniserv.conf
---
denyusers=root
---

pamを利用してldapのパスワードで認証し,変更出来るようにします。
まずはpamの設定ファイルを以下のように作ります。

# vi /etc/pam.d/usermin
---
#%PAM-1.0
auth required pam_nologin.so
auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
---

プログラムの修正も必要です。
以下のファイルを修正します。

# /usr/local/src/usermin-1.260/changepass/changepass.cgi
---
### if ($msg =~ /old|current/i) {
if ($msg =~ /login/) {
---

上記箇所をコメントアウトして書き直します。
cgiファイルの下から15行目あたりかと思います。

さらにPERLのモジュールが必要です。
モジュールはNet::SSLeay.pmとAuthen::PAMです。
このモジュールをインストールするにはPERLのシェルを動かします。
しかしCentOS4にはncftpgetコマンドが入っていないのであらかじめ
インストールしておきます。

http://www.ncftp.com/download/

そして以下のコマンドを入力します。

# perl -MCPAN -e shell

はじめはいろいろ聞いてくるがデフォルトでよさそうです。
ftpの指定は/usr/bin/ftpにしました。

cpan> install Net::SSLeay
cpan> install Authen::PAM

userminのページからldapパスワードを変更するには
以下のファイルを編集する必要があります。

# vi /etc/usermin/changepass/config
---
passwd_cmd=
###smbpasswd=smbpasswd
---
sambaは使っていないのでコメントアウトしました。


自動起動の設定も行っておきましょう。
スクリプトファイルがあるのでそれをコピーします。

# cp /usr/local/src/usermin-1.260/usermin-init /etc/init.d/usermin

次にシステムに認識させます。

# chkconfig --add usermin
# chkconfig --list usermin
usermin 0:off 1:off 2:off 3:on 4:off 5:on 6:off

ランレベル3と5で自動起動するようになりました。
私は2を削ったので3と5だけです。

2007年06月12日

apacheのベーシック認証をLDAP対応にする。

組織にLDAPサーバある場合はベーシック認証よりもLDAPサーバで認証したほうがよい。
redhat9にてapacheをLDAP対応にし,ベーシック認証をLDAPで行うことにした。
apacheをソースから入れる場合,バージョン2.2系列はうまくいかなかったので2.0系列で行った。
ちなみにRHEL3でもうまくいった。


1.db-4.5.20のインストール

まず初めにBerkeleyDBのインストールを行う。
これは,OpenLDAPのデータベースとして機能するので必要。

以下のサイトからダウンロードしましょう。
http://www.oracle.com/database/berkeley-db/index.html

今回は現時点で最新のBerkeleyDB-4.5.20を使うことにした。

# tar zxvf db-4.5.20.tar.gz -C /usr/local/src
# cd /usr/local/src/db-4.5.20/build_unix
# ../dist/configure --prefix=/usr/local/BerkeleyDB-4.5.20
# make
# make install

わかりやすくシンボリックリンクを作成しましょう。

# ln -s /usr/local/BerkeleyDB-4.5.20 /usr/local/bdb


2.OpenLDAPのインストール

以下のサイトからダウンロードしましょう。
http://www.openldap.org/

今回はopenldap-2.2.30を使いました。
これはLDAPサーバとして2.2系列を使っているので念のためバージョンを合わせておいた。

はじめにBerkeleyDBのインストール先を環境変数を設定して教えてあげます。

# export LDFLAGS="-L/usr/local/bdb/lib"
# export CPPFLAGS="-I/usr/local/bdb/include"
# export LD_LIBRARY_PATH=/usr/local/bdb/lib:$LD_LIBRARY_PATH

インストール作業の開始です。

# ./configure --prefix /usr/local/openldap-2.2.30 \
--enable-crypt --enable-ldbm --enable-wrappers --with-cyrus-sasl=no
# make depend
# make
# make install

わかりやすくシンボリックリンクを作成しましょう。

# ln -s /usr/local/openldap-2.2.30 /usr/local/openldap


3.apacheのインストール

apacheを以下のサイトからダウンロードしましょう。
http://httpd.apache.org/

# tar jxvf httpd-2.0.59.tar.bz2 -C /usr/local/src
# cd /usr/local/src/httpd-2.0.59

aprとapr-utilはapache添付のものを使います。

# cd srclib/apr
# ./configure --prefix=/usr/local/apr-httpd
# make
# make install

# cd ../apr-util
# ./configure --prefix=/usr/local/apr-util-httpd --with-apr=/usr/local/apr-httpd \
--with-ldap-include=/usr/local/openldap/include --with-ldap-lib=/usr/local/openldap/lib --with-ldap
# make
# make install

ようやくapacheのインストールです。

# cd /usr/local/src/httpd-2.0.59
# ./configure --prefix=/usr/local/apache-2.0.59 --enable-so --enable-ldap --enable-auth-ldap \
--with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd
# make
# make install

かわりやすくシンボリックリンクを作成しましょう。

# ln -s /usr/local/apache-2.0.59 /usr/local/apache2


以上でインストールが終了しました。
後は起動スクリプトを用意し,httpd.confなどコンフィグファイルを調整して起動。

httpd.confに以下のような記述をするとLDAPサーバで認証してくれます。

#-------------
# LDAP認証例
#-------------

AuthType Basic
AuthName "Secret Page"
AuthLDAPURL ldap://host.domain.com:389/ou=people,dc=domain,dc=com?uid
require valid-user
Order deny,allow
Deny from all
Allow from 192.168.0.0/255.255.255.0

2012年03月09日

CentOS5をLDAPサーバで認証させる

CentOS5をLDAPサーバで認証させるには以下のコマンド

# authconfig-tui

ldap関連の項目にチェックを入れて必要事項を記入したらOK。
しかしこのままではLDAPにあるユーザがssh等でアクセスした場合,
ホームディレクトリがないため作る必要があります。
/etc/pam.d/system-auth に以下を追加すると自動でホームディレクトリを作ります。

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

Natural Rhythm ナチュラルリズム

カテゴリー

About LDAP

ブログ「偉大なるOSS」のカテゴリ「LDAP」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

次のカテゴリはWindowsです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。