序章
LDAPシステムは、ユーザーアカウント情報を保存するためによく使用されます。 実際、LDAPを認証する最も一般的な方法のいくつかには、LDAPエントリ内に格納されているアカウント情報が含まれます。
LDAPエントリがアカウント情報のために外部サービスによって使用される場合でも、LDAP固有の承認バインドのためだけに使用される場合でも、パスワード管理を理解することが重要になります。 このガイドでは、LDAPエントリのパスワードを変更する方法について説明します。
自分のユーザーパスワードの変更
パスワードを変更する機能は、LDAPサーバーのアクセス制御によって管理されます。 通常、LDAPは、アカウントが自分のパスワードを変更できるように構成されています。 これは、ユーザーとして以前のパスワードを知っている場合にうまく機能します。
使用できます ldappasswd
ユーザーアカウントのパスワードを変更するツール。 パスワードを変更するには、LDAPユーザーエントリにバインドし、現在のパスワードで認証する必要があります。 これは、他のOpenLDAPツールと同じ一般的な構文に従います。
パスワードを変更するには、従来のバインド引数以外にもいくつかの引数を指定する必要があります。 次のいずれかのオプションを使用して、古いパスワードを指定する必要があります。
- -[oldpassword] :
-a
flagを使用すると、コマンドラインでリクエストの一部として古いパスワードを指定できます。 - -A :このフラグは
-a
コマンドが入力されたときに古いパスワードの入力を求めるフラグ。 - -t [oldpasswordfile] :上記の代わりにこのフラグを使用して、ファイルから古いパスワードを読み取ることができます。
また、次のいずれかのオプションを使用して新しいパスワードを指定する必要があります。
- -s [newpassword] :
-s
フラグは、コマンドラインで新しいパスワードを指定するために使用されます。 - -S :このバリアント
-s
フラグは、コマンドが入力されたときに新しいパスワードの入力を求めます。 - -T [newpasswordfile] :上記の代わりにこのフラグを使用して、ファイルから新しいパスワードを読み取ることができます。
各グループの1つのオプションと、サーバーの場所、バインドエントリ、およびパスワードを指定する通常のオプションを使用して、LDAPパスワードを変更できます。 技術的には、OpenLDAPはエントリへのバインドに使用されるため、必ずしも古いパスワードを必要としませんが、他のLDAP実装ではこれが必要になるため、とにかく設定することをお勧めします。
通常、コマンドは次のようになります。
- ldappasswd -H ldap://server_domain_or_IP -x -D "user_dn" -W -A -S
これにより、指定されたLDAPサーバーに接続し、ユーザーDNエントリで認証してから、一連のプロンプトを発行します。 古いパスワードと新しいパスワードを入力して確認するように求められます。その後、実際のバインドを実行するには、古いパスワードを再度入力する必要があります。 その後、パスワードが変更されます。
とにかくパスワードを変更するので、プロンプトを使用するよりもコマンドラインで古いパスワードを入力する方が簡単な場合があります。 あなたはこのようにそれをすることができます:
- ldappasswd -H ldap://server_domain_or_IP -x -D "user's_dn" -w old_passwd -a old_passwd -S
RootDNバインドを使用したユーザーのパスワードの変更
The ldappasswd
このツールを使用すると、LDAP管理者として必要に応じて、別のユーザーのパスワードを変更することもできます。 技術的には、アカウントのパスワードへの書き込みアクセス権を持つ任意のアカウントにバインドできますが、このアクセス権は通常、rootDN(管理)エントリとアカウント自体に制限されています。
別のユーザーのパスワードを変更するには、昇格された特権を持つエントリにバインドしてから、変更するエントリを指定する必要があります。 通常、rootDNにバインドします(このアカウントを見つける方法を見つける必要がある場合は、次のセクションを参照してください)。
基本 ldappasswd
コマンドは非常によく似ていますが、唯一の違いは、コマンドの最後に変更するエントリを指定する必要があることです。 あなたは使用することができます -a
また -A
古いパスワードを使用できる場合はオプションですが、ユーザーのパスワードを変更する場合はそうではないことがよくあります。 古いパスワードをお持ちでない場合は、そのままにしておいてください。
たとえば、LDAPサーバーのrootDNが cn=admin,dc=example,dc=com
、および変更するパスワードは uid=bob,ou=people,dc=example,dc=com
エントリ、あなたはこれを入力することができます:
- ldappasswd -H ldap://server_domain_or_IP -x -D "cn=admin,dc=example,dc=com" -W -S "uid=bob,ou=people,dc=example,dc=com"
ボブの新しいパスワードの入力を求められ、次に、変更を行うために管理者エントリにバインドするために必要なパスワードの入力を求められます。
RootDNパスワードの変更
LDAP管理者パスワードを忘れた場合は、rootまたは sudo
LDAPシステムのサーバーにアクセスしてリセットします。 サーバーにログインして開始します。
現在のRootDN情報の検索
まず、RootDNアカウントと現在のRootDNパスワードハッシュを見つける必要があります。 これはスペシャルで利用可能です cn=config
構成DIT。 次のように入力すると、探している情報を見つけることができます。
- sudo ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW | tee ~/newpasswd.ldif
これにより、DITのrootDNアカウントとパスワードが返されます。 また、これが定義されている構成データベースについても説明します。 また、この情報をホームディレクトリのファイルに書き込んで、新しいパスワードハッシュを取得したら変更できるようにしました。
dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3
新しいパスワードのハッシュ
次に、 slappasswd
新しいパスワードをハッシュするユーティリティ。 にあったのと同じハッシュを使用したい olcRootPW
中括弧付きの接頭辞値で示される、クエリした行。 私たちの場合、これは {SSHA}
.
使用 slappasswd
使用するパスワードの正しいハッシュを生成するユーティリティ。 最後のコマンドで作成したファイルの最後に新しいハッシュを追加します。 root以外のアカウントを使用している場合は、コマンドへのフルパスを指定する必要があります。
- /usr/sbin/slappasswd -h {SSHA} >> ~/newpasswd.ldif
使用する新しいパスワードを入力して確認するように求められます。 ハッシュ値はファイルの最後に追加されます。
ConfigDITでのパスワードの変更
これで、ファイルを編集して、パスワードを変更するための有効なLDIFコマンドを作成できます。 書き込んでいるファイルを開きます。
nano ~/newpasswd.ldif
次のようになります。
dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3
{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw
LDAPサーバーに複数のDITがあるかどうかによっては、複数の値を持つ可能性があります。 その場合は、 olcRootDN
変更する正しいアカウントを見つけるための値。 他を削除します dn
, olcRootDN
, olcRootPW
トリプレットがある場合。
あなたがそれを確認した後 olcRootDN
行は、変更しようとしているアカウントと一致します。コメントアウトしてください。 その下に2行追加します。 最初のものは指定する必要があります changetype: modify
、および2行目は、LDAPに次のことを通知する必要があります replace: olcRootPW
. 次のようになります。
dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3
{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw
ここで、にあるハッシュを削除します olcRootPW
行を作成し、以下で生成したものと置き換えます。 余分な線を削除します。 これで、次のようになります。
dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw
終了したら、ファイルを保存して閉じます。
これで、次のように入力して変更を適用できます。
- sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpasswd.ldif
これにより、内の管理者パスワードが変更されます cn=config
DIT。
通常のDITでのパスワードの変更
これにより、管理DIT内のエントリのパスワードが変更されました。 ただし、通常のDIT内のエントリを変更する必要があります。 現在、古いパスワードと新しいパスワードの両方が有効です。 新しい資格情報を使用して通常のDITエントリを変更することで、これを修正できます。
LDIFファイルを再度開きます。
- nano ~/newpasswd.ldif
の値を置き換えます dn:
以前にコメントアウトしたRootDN値と一致します。 このエントリは、パスワード変更の新しいターゲットです。 また、両方のオカレンスを変更する必要があります olcRootPW
と userPassword
正しい値を変更するようにします。 終了すると、LDIFファイルは次のようになります。
[output ~/newpasswd.ldif]
dn: cn=admin,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw
ファイルを保存して閉じます。
これで、構成DITで設定した新しいパスワードを使用してそのエントリにバインドすることにより、そのエントリのパスワードを変更できます。 操作を実行するには、RootDNエントリにバインドする必要があります。
- ldapmodify -H ldap:// -x -D "cn=admin,dc=example,dc=com" -W -f ~/newpasswd.ldif
構成DITで設定した新しいパスワードの入力を求められます。 認証されると、パスワードが変更され、認証のために新しいパスワードのみが残されます。
結論
LDAPはアカウント情報の保存によく使用されるため、パスワードを適切に管理する方法を知ることが重要です。 ほとんどの場合、プロセスは比較的単純ですが、より集中的な操作の場合でも、少しの作業でパスワードを変更できるはずです。