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

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

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

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

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

Q&A

1回答

2046閲覧

freeradiusからactive directoryのユーザー上手く参照できない。

pero012

総合スコア9

LDAP

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

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

0グッド

0クリップ

投稿2022/02/20 10:57

前提・実現したいこと

freeradius + LDAPで、 active directory上のユーザーを参照し、radius認証を行いたい

発生している問題・エラーメッセージ

ユーザが見つからないといわれてしまう。
LDAPMessage searchResDone(3) noSuchObject (0000208D: NameErr: DSID-0310021F, problem 2001 (NO_OBJECT), data 0, best match of:

試したこと

環境
activedirectoy サーバー
ip add : 10.1.0.212/16
free radius サーバー
ip add : 10.1.0.244/16

free radiusにLDAPの設定を入れて、再起動をかけました。
問題なく再起動ができているので、ldapの設定が正しいと判断。

radtestで active directoryのユーザー情報を入れて認証できるか確認
→ここで通らない。
[root@ip-10-1-0-244 mods-enabled]# radtest taro Zaq1xsw2 localhost 123 testing123
Sent Access-Request Id 129 from 0.0.0.0:40595 to 127.0.0.1:1812 length 74
User-Name = "taro"
User-Password = "Zaq1xsw2"
NAS-IP-Address = 10.1.0.244
NAS-Port = 123
Message-Authenticator = 0x00
Cleartext-Password = "Zaq1xsw2"
Received Access-Reject Id 129 from 127.0.0.1:1812 to 0.0.0.0:0 length 20
(0) -: Expected Access-Accept got Access-Reject

念のため、wiresharkにてAD側にLDAP通信が入っているか確認
→通信走っているが、そんなユーザはいないといわれる。
イメージ説明

AD側の設定
イメージ説明

/etc/raddb/mods-available/ldapの設定
ldap {
# ADサーバと検索用ユーザの情報、ログイン許可するセキュリティグループを記載します
# もとの記載がある箇所はコメントアウトしておきます。
server = 10.1.0.212
identity = 'CN=ldap proxy,OU=employee,DC=AD,DC=test'
password = 'Zaq1xsw2'
base_dn = 'ou=employee,dc=AD,dc=test'
ldapgroup = 'cn=management,ou=employee,dc=AD,dc=test'

# ユーザオブジェクトを確認するセクションでログイン許可するグループでフィルタします。 user { # もともとの filter 条件はコメントアウトしておきます。 #filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})" filter = "(|(&(samaccountname=%{%{Stripped-User-Name}:-%{User-Name}})(memberOf=${..ldapgroup})))" }

}

補足情報(FW/ツールのバージョンなど)

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

TaichiYanagiya

2022/02/21 02:57

OS, freeradius のバージョンを教えてください。 また、ldapsearch コマンドでユーザーを参照できますでしょうか? 「ldapsearch -x -h 10.1.0.212 -D 'CN=ldap proxy,OU=employee,DC=AD,DC=test' -W -b 'ou=employee,dc=AD,dc=test' '(|(&(samaccountname=taro)(memberOf=cn=management,ou=employee,dc=AD,dc=test)))'」 あと、認証方法も気になりますが、別途。
pero012

2022/02/21 08:26

コメントありがとうございます。 radius-clinet側: Amazon Linux release 2 (Karoo) freeradius : FreeRADIUS Version 3.0.13 ldapsearchの結果です。こちらできているという認識でおります。 # extended LDIF # # LDAPv3 # base <ou=employee,dc=AD,dc=test> with scope subtree # filter: (|(&(samaccountname=taro)(memberOf=cn=management,ou=employee,dc=AD,dc=test))) # requesting: ALL # # suzuki taro, employee, AD.test dn: CN=suzuki taro,OU=employee,DC=AD,DC=test objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: suzuki taro ~~省略~~ # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 ーーー freeradius側の設定は LDAP有効化していなく、 認証方法は, radtestだとPAPしか使えないようなので、すべてデフォルトのまま EAP-md5のPAPだと思います。 よろしくお願いいたします。
guest

回答1

0

デーモンで動いている radiusd を一旦停止して、シェル(コマンドライン)から radiusd -X とデバッグモードで起動しておき、別のシェルから radtest コマンドを実行すると、どこで失敗しているのかわかると思います。

# radiusd -X 2>&1 | tee debug.log

freeradius ldap モジュールで認証する場合、以下のステップとなります。

(1) ユーザーを LDAP で検索し、DN を得る
(2) DN とパスワードで LDAP サーバーに auth bind できれば認証 OK

ActiveDirectory はそのユーザーで auth bind できるでしょうか?

$ ldapsearch -x -h 10.1.0.212 -D 'CN=suzuki taro,OU=employee,DC=AD,DC=test' -W \ -b 'ou=employee,dc=AD,dc=test' \ '(フィルター)'

auth bind できない場合、別の方法を考える必要があります。

  • ドメイン参加(winbind または realmd を利用)し、radiusd から ntlm_auth コマンドを呼び出して ActiveDirectory で認証 (RADIUS クライアントからは PAP, MS-CHAP)
  • (ActiveDirectory をディレクトリサーバーとしてのみ利用) LDAP 属性 NT-Password (ハッシュ) を登録しておき、radiusd で認証 (RADIUS クライアントからは MS-CHAP)
  • (ActiveDirectory をディレクトリサーバーとしてのみ利用) LDAP 属性にパスワード(平文、MD5 ハッシュ、など ) を登録しておき、radiusd で認証 (RADIUS クライアントからは PAP)

最終的な RADIUS クライアントの認証方式によって候補が絞られると思います。

投稿2022/02/21 12:56

TaichiYanagiya

総合スコア12103

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答へのコメント

pero012

2022/02/27 14:04

確認の時間確保できる、遅くなりました。 コメントありがとうございます。 radius -X にて 気になる点がありました。DNが見つからないとの事。。最後にlog添付 私のやりたいことは、LDAP認証ではなく、 radius認証の際、ユーザ情報はLDAPを使いAD上のユーザを参照するだけになります。 いまの私の設定ですとLDAP認証になってしまうのでしょうか。。。 参考になるサイトも全くなく、何をするべきなのかいろいろ試しましたが解決ができず、、、 今までこんなことなかったのですが、AD側とLDAPにあまり明るくないので、苦戦しております。。。 Executing group from file /etc/raddb/sites-enabled/default (0) Auth-Type LDAP { rlm_ldap (ldap): Reserved connection (6) (0) ldap: Login attempt by "taro" (0) ldap: Performing unfiltered search in "", scope "sub" (0) ldap: Waiting for search result... (0) ldap: The specified DN wasn't found (0) ldap: Search returned no results rlm_ldap (ldap): Released connection (6) (0) [ldap] = notfound (0) } # Auth-Type LDAP = notfound (0) Failed to authenticate the user (0) Using Post-Auth-Type Reject (0) # Executing group from file /etc/raddb/sites-enabled/default (0) Post-Auth-Type REJECT { (0) attr_filter.access_reject: EXPAND %{User-Name} (0) attr_filter.access_reject: --> taro (0) attr_filter.access_reject: Matched entry DEFAULT at line 11 (0) [attr_filter.access_reject] = updated (0) [eap] = noop (0) policy remove_reply_message_if_eap { (0) if (&reply:EAP-Message && &reply:Reply-Message) { (0) if (&reply:EAP-Message && &reply:Reply-Message) -> FALSE (0) else { (0) [noop] = noop (0) } # else = noop (0) } # policy remove_reply_message_if_eap = noop (0) } # Post-Auth-Type REJECT = updated (0) Delaying response for 1.000000 seconds Waking up in 0.3 seconds. Waking up in 0.6 seconds. (0) Sending delayed response (0) Sent Access-Reject Id 111 from 127.0.0.1:1812 to 127.0.0.1:55905 length 20 Waking up in 3.9 seconds.
pero012

2022/02/27 14:07

ldapsearch -x -h 10.1.0.212 -D 'CN=suzuki taro,OU=employee,DC=AD,DC=test' -W \ -b 'ou=employee,dc=AD,dc=test' こちらの結果も他の方からコメントいただいており、その結果を添付しております。 私の認識ですとできるていると思っております。 他の方のコメントへの返信を参照願います。よろしくお願いします。
TaichiYanagiya

2022/02/27 15:51

ログは group の検索のようですが、その少し上に user の検索箇所がないでしょうか? 「ldap: EXPAND」で filter が展開されて、DN が見つかれば「ldap: User object found at DN "(DN)"」、見つからなければ「ldap: Search returned no results」となっていると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.69%

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

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

質問する

同じタグがついた質問を見る

LDAP

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

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。