質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

LDAP

LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。

Q&A

解決済

2回答

12688閲覧

RADIUS×LDAP【CentOS7】

KAPPA

総合スコア17

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

LDAP

LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。

0グッド

0クリップ

投稿2016/06/23 08:39

編集2016/06/24 09:15

バックエンドにOpenLDAPを利用したRADIUS認証サーバの構築を目指しています。

++開発環境++
OS:CentOS7
RADIUSサーバ(ホスト) * 1
ワークステーション(クライアント) * 2
+++++++++++

RADIUS自体は無線LANなどネットワーク機器向けの認証プロトコルですが、今回はRADIUSの認証機能(AAA)のみを利用しようと考えています。
現段階では、RADIUS認証サーバの構築が完了しており、Windows端末からクライアントにSSH接続を行う際のIDとパスワードは、RADIUSの「/etc/raddb/user」ファイルのものを利用するようになっております。(Linux間同士のSSH接続も対応しています)

この「/etc/raddb/user」からユーザとパスワードを利用するのではなく、LDAPサーバに登録されているユーザとパスワードを利用したいと考えています。
LDAPサーバはRADIUSサーバと同じ環境内で動作させております。

ネット上の情報は、CentOS6以前かつFreeRADIUS V2の情報(http://d.hatena.ne.jp/rougeref/20070907)で、現行のFreeRADIUS V3の情報が少なく、設定できません。
海外のこちらのサイト(http://confluence.diamond.ac.uk/display/PAAUTH/Using+LDAP+as+authentication+source#app-switcher)も試してみたのですが、うまくいきません。

FreeRADIUS V3とOpenLDAPの連携の仕方をご存知の方はいらっしゃいませんか?
どうぞよろしくお願いします。

KAPPA

+0624 質問補足++++

TaichiYanagiya様、over様ご返信ありがとうございます。
修正を行った部分、およびエラー部分も含めて再度ご質問させて頂きます。

ldapファイルは以下のように修正を行いました。

+/etc/raddb/mods-available/ldap+++

13 server = "192.168.10.52"
# LDAPサーバのIPです。

20 identity = "cn=manager,dc=example,dc=com" 21 password = xxxx

# LDAPのrootとpw(管理者パスワード)です。

25 base_dn = "dc=example,dc=com"

++++

defaultファイルは以下のように修正しました。

+/etc/raddb/sites-available/default+++
382c382,384
-ldap

# -ldap
ldap

491a494,497
Auth-Type LDAP {
ldap
}

688a695
ldap
++++

非常に見づらくて申し訳ありませんが、ldapに関するを修正致しました。
また、クライアントからLDAPサーバに登録されている「user002」にssh接続を試みた際のエラーログは以下になります。

+journalctl -u slapd -f+++

6月 24 18:02:38 rase.example.com slapd[1046]: conn=1010 op=1 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(uid=user002)" 6月 24 18:02:38 rase.example.com slapd[1046]: conn=1010 op=1 SRCH attr=userPassword 6月 24 18:02:38 rase.example.com slapd[1046]: <= bdb_equality_candidates: (uid) not indexed 6月 24 18:02:38 rase.example.com slapd[1046]: conn=1010 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text= 6月 24 18:02:38 rase.example.com slapd[1046]: conn=1011 fd=18 ACCEPT from IP=192.168.10.20:47646 (IP=0.0.0.0:389) 6月 24 18:02:38 rase.example.com slapd[1046]: conn=1011 op=0 BIND dn="cn=manager,dc=example,dc=com" method=128 6月 24 18:02:38 rase.example.com slapd[1046]: conn=1011 op=0 BIND dn="cn=manager,dc=example,dc=com" mech=SIMPLE ssf=0 6月 24 18:02:38 rase.example.com slapd[1046]: conn=1011 op=0 RESULT tag=97 err=0 text= 6月 24 18:02:38 rase.example.com slapd[1046]: conn=1009 op=2 UNBIND 6月 24 18:02:38 rase.example.com slapd[1046]: conn=1009 fd=11 closed

++++

+/var/log/radius.log+++

Fri Jun 24 18:02:38 2016 : Info: rlm_ldap (ldap): 0 of 2 connections in use. Need more spares Fri Jun 24 18:02:38 2016 : Info: rlm_ldap (ldap): Opening additional connection (7) Fri Jun 24 18:02:38 2016 : Info: rlm_ldap (ldap): Closing connection (5): Hit idle_timeout, was idle for 2540 seconds Fri Jun 24 18:02:38 2016 : Warning: rlm_ldap (ldap): You probably need to lower "min" Fri Jun 24 18:02:38 2016 : Auth: (4) Login incorrect (No Auth-Type found: rejecting the user via Post-Auth-Type = Reject): [user002] (from client test02 port 2389 cli rase.example.com)

++++

上記のような状態です。
また、#radtest root root 127.0.0.1 0 testing123
こちらのコマンドはAceeptになります。

もし何かお気づきの点がございましたら、どうぞよろしくお願いします。

KAPPA

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

/etc/raddb/README.rst ファイルの "rlm_ldap authentication" 箇所を参照ください。
ver. 2.x.x では、users ファイルに "DEFAULT Auth-Type := ldap" のように設定していましたが、ver. 3.x.x では使えなくなったとのこと。
代りに authorize {} での設定例が記載されています。

/etc/raddb/sites-available/default (変更例) authorize { (略) -ldap if ((ok || updated) && User-Password) { update control { Auth-Type := ldap } } } authenticate { (略) Auth-Type LDAP { ldap } }

後は、/etc/raddb/mods-available/ldap の server, base_dn, filter などを LDAP サーバーに合わせて設定し、/etc/raddb/mods-enabled/ldap にシンボリックリンクを作成ください。
users ファイルは特に変更しなくてもいいみたいです。

デバッグは、コマンドラインから radiusd -X でフォアグラウンドで起動した状態で、radtest などでアクセスするといいと思います。
Auth-Type := ldap が有効ならば、LDAP サーバーにユーザーの DN で bind を試みます。

なお、identity, password に LDAP管理者の DN、パスワードを設定すれば、userPassword (ハッシュ)を引いて pap で認証することもできますが、スマートではないと思います。

投稿2016/06/23 15:37

TaichiYanagiya

総合スコア12173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2016/06/23 15:43

SSH ログインだけであれば、pam_radius -> radiusd -> LDAP よりも、pam_sssd -> sssd(sssd-ldap) -> LDAP の方がいいのでは?
KAPPA

2016/06/24 08:40

TaichiYanagiya 様 ご返信ありがとうございます。 デバッグモードやログを確認しながら進めていきましたが、まだ解決に至っていません。 over様のコメントも踏まえて、質問を再度編集しようかと思います。 また、 >SSH ログインだけであれば、pam_radius -> radiusd -> LDAP よりも、pam_sssd -> sssd(sssd-ldap) -> LDAP の方がいいのでは? こちらですと、Windows端末からTeraTermなどのソフトウェアを利用して、クライアントにアクセスするときに、RADIUS認証が利用できないのではないかと思います。(できたとしてもWindowsクライアントに設定が必要になる気が致します) 多数あるWindows端末の設定が不要な認証サーバを利用しようと思い、本件はRADIUS認証を利用しています。 どうぞよろしくお願いします。 KAPPA
TaichiYanagiya

2016/06/24 09:58

まずは、「radtest user002 パスワード 127.0.0.1 0 testing123」が Access-Accept となることを目指しましょう。 ldap.log を見ると、"SEARCH RESULT tag=101 err=0 nentries=0" でエントリーがないとのことです。user002 が LDAP に登録されているか、identity/password にアクセス権限があるか、確認ください。
TaichiYanagiya

2016/06/25 02:10

/etc/raddb/mods-available/ldap の filter で uid= で検索していますが、cn= とか、別の属性なのではないでしょうか。 uid は index 対象ではないというログも出ていますし。
KAPPA

2016/06/29 08:39

TaichiYanaiya様 返信が遅くなり申し訳ありません。 上記のアドバイスをもとに色々試したところ、動作の確認を行うことができました。 基本的にはアドバイス通り、LDAPのdnが正しいこと。また、ldap設定ファイルの修正で対応できました。 本当にありがとうございました。 KAPPA
guest

0

どこで詰まっているのか不明ですね。
一応、参考サイトです。
https://blog.estel-freesia.moe/2016/05/156/

/etc/freeradius/mod-avairable/ldap にldap資格情報とパスワードとして参照するオブジェクトを適宜設定すればよさそうに見えます。

まず、切り分けをしましょう。
Radiusの認証が正常に行えないのであればRadiusのログを見ればわかるはずです。
Radiusの認証が正常に行える状態であれば、tail -f でldapのログを見てみましょう。
※ldapのログはデフォルトでは出力されない設定になっているので、ldapの設定 + syslogの設定が必要です。調べればすぐわかると思います。

この状態でldapのログが出力されるのであれば、ldapに接続しにきているということになります。
あとは、資格情報が間違っているのか、参照するオブジェクトが間違っているかではないでしょうか。

投稿2016/06/23 10:11

over

総合スコア4313

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KAPPA

2016/06/24 08:42

over様 度々のご回答、ありがとうございます。 RADIUS側とOpenLDAP側のログを確認しながら、進めていきました。 分からないところが分かりましたので、質問を改めて編集させて頂きます。 どうぞよろしくお願いします。 KAPPA
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問