web-dev-qa-db-ja.com

LDAPを使用して現在ログインしているユーザーを検索しますか?

ここではOpenldapが設定されており、ユーザーはldapを使用してクライアントマシンにログインできます。しかし、LDAPを使用して現在マシンにログインしているユーザーを確認する方法はありますか? LDAPを使用してどのユーザーがどのマシンにログインしたかを知りたいですか?

2
nitins

AFAIK LDAPはセッション管理を実装しておらず、ディレクトリサービスを提供するだけであり、そのデータは他の場所に大量にキャッシュできます。また、認証以外の情報を提供することもできます。したがって、「LDAPにログイン」するようなものはなく、実際に測定する方法もありません。

おそらく、ユーザーがアプリケーションにアクセスできるようにLDAP実装を維持します。これらのアプリケーションを調べて、現在開いているセッションを持っているユーザーを特定する必要があります(アプリケーションがステートフルであると仮定すると、HTTPはそうではありません)。

14
symcbean

Symcbeanを引用すると、「LDAPにログインするようなものはありません」。しかし、LDAPを介して認証するユーザーのようなものがあります。

具体的には、LDAPなどの認証バックエンドを使用するようにホストを構成すると、ネームサービススイッチ(nsswitch)がユーザー情報をキャッシュして、システムにログインできるようにすることができます(おそらくそうすべきです)。実際、私の観点からは、データがキャッシュされているかどうかは関係ありません。それでも、そのバックエンドから送信される情報です。

NIS、Unix、またはLDAPバックエンドに属しているかどうかに関係なく、ユーザーはUIDを持っています。適切に構成されたシステムでは、あるバックエンドのUIDが別のバックエンドのUIDと一致してはなりません(通常、unixバックエンドとldapバックエンドは共存します)。

最後に私の言いたいことは、/etc/passwdgetent passwdの出力がありますが、これは一致しないはずです(ldapはunixバックエンドを拡張します)。したがって、どのユーザーがldapにのみ存在するかがわかります。最後に、last:Dがあります。これは、syslogファシリティの認証に加えて、誰がいつどこからログインしたかを再確認します。ホストごとにこの情報を使用してログインしたLDAPユーザーを示す簡単なスクリプトを作成できます。

注:同じIDを持つunixとldapで重複したユーザーがいる場合は、自分で作成します:)

1
Torian

Symcbeanの答え( 現在ldapを使用してログインしているユーザーを検索しますか? )にほぼ同意しますが、...

DCのセキュリティログを解析してみることができますが、それでは大量のデータが返されます。長期的にデータをどのように処理したいかによっては、データベースに送信する価値がある場合があります。

===

OpenLDAPについてはよくわかりませんが、ADでは、グループポリシーやログインスクリプトを実行するように設定できます(Windowsバッチの場合)。

echo logon %username% %computername% %date% %time% >> \\shared\path\FILE_LOCATION.txt

FILE_LOCATION.txtからユーザー名またはコンピューター名を解析するか、次のようにコンピューター名で保存します。

echo logon %username% %computername% %date% %time% >> \\shared\path\%computername%.txt

同様に、次のユーザー名で保存します。

echo logon %username% %computername% %date% %time% >> \\shared\path\%username%.txt
1
gWaldo

個人的にはgWaldoの行き先が好きですが、mfinniが言ったように、Linuxマシンについて話しているかもしれません。

これはやり過ぎかもしれませんが...バラクーダWebフィルターはそれを行うことができます、IIRC。

LDAP認証を使用するバラクーダWebフィルターを使用すると、このようなことができると思います。 IIRCバラクーダは、現在認証されているすべての人のリストを保持しています。 AD環境で使用しましたが、すべての種類のLDAPで機能するはずです。

0
JamesBarnett

LDAP + kerberosを使用してこれを実現できますが、LDAPにログオンできるすべてのアプリケーションが認証にkerberosを使用できるわけではありません。

FreeIPAを使用して、使いやすいパッケージで入手できます。

0
Hubert Kario

おそらく、クライアントマシンは [〜#〜] radius [〜#〜] を介して認証する必要があります—認証に加えてアカウンティングも行います。

0
200_success

私たちにとって、コマンド:

users

トリックをしました。

ローカル、LDAP、およびSSHユーザーログインが一覧表示されます。私の知る限り、rootがログインしている場合にのみレポートに失敗します。クライアントとサーバーにはUbuntu12.04があります。

OpenLDAPは、NFSマウントされたホームディレクトリを備えたPAMおよびNSSwitchを介して認証をバックアップしています。 /etc/idmapd.confをドメイン宣言で整理することはおそらく重要です。 (私たちの組織がそうする前は、ls -lはファイルの所有者とグループをnobody:nobodyとしてクライアントに返しますが、そのときは)

そのような古い質問に答えて申し訳ありませんが、私は同じ問題を抱えていて、自分でそれを整理する前に答えを求めてここに行き着きました。これがうまくいかない場合は、私の答えに反対票を投じないでください。

0
John Breedlove

通常はできません。ユーザーがアプリケーションにログインおよびログアウトするたびに一部のLDAP属性が更新されるように、それを実装してみることができますが、これはやり過ぎです。質問から、OpenLDAPが中央ディレクトリとして使用され、資格情報が保存されているユーザーがネットワーク内の多数のLinuxマシンにログインすると想定しています。その場合は、fingerのようなものをインストールしてから、ネットワーク内のすべてのマシンを「finger」する必要があります。ログインしているユーザーを確認します。

0
adamo