らくがきちょう

なんとなく

LDAP Admin から pwdAccountLockedTime を設定してユーザを無効化する

OpenLDAP で ppolicy overray を有効化し、パスワードポリシーを制御出来る状態にしてあれば、ユーザに pwdAccountLockedTime 属性を 000001010000Z という値で設定することにより、該当アカウントを無効化出来るそうです。 但し、LDAP Admin 標準では pwdAccountLockedTime 属性を操作することが出来ません。 そこで LDAP Admin に SSH の公開鍵を追加するテンプレートを追加するの場合と同様、テンプレートを追加することで LDAP Admin 上から pwdAccountLockedTime を設定出来るようにします。

pwdAccountLockedTime に設定する値

man slapo-ppolicy を確認すると pwdAccountLockedTime について以下のように書かれていました。 この属性に 000001010000Z という値を設定すると永久にユーザはロックされるそうです。

pwdAccountLockedTime

This attribute contains the time that the user's  account  was  locked.
If  the  account has been locked, the password may no longer be used to
authenticate the user to the directory.  If pwdAccountLockedTime is set
to  000001010000Z,  the  user's account has been permanently locked and
may only be unlocked by an administrator.  Note  that  account  locking
only  takes effect when the pwdLockout password policy attribute is set
to "TRUE".

    (  1.3.6.1.4.1.42.2.27.8.1.17
       NAME 'pwdAccountLockedTime'
       DESC 'The time an user account was locked'
       SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
       EQUALITY generalizedTimeMatch
       ORDERING generalizedTimeOrderingMatch
       SINGLE-VALUE
       NO-USER-MODIFICATION
       USAGE directoryOperation)

テンプレートを用意する

以下の内容でテンプレートを用意します。 今回は account-lock.ltf というファイル名にし、LDAP Admin の実行ファイルと同じディレクトリに保存しました。 テンプレートの作成が完了したら LDAP Admin を再起動してテンプレートを読み込ませておきます。

<template>
   <name>AccountLock</name>
   <description>Account Lock Attribute (pwdAccountLockedTime)</description>
   <author>sig9</author>
   <version>1.0</version>
   <email>sig9@sig9.org</email>
   <rdn>cn</rdn>
   <extends>user</extends>

   <attribute>
      <name>objectclass</name>
      <value>top</value>
      <value>pwdPolicy</value>
   </attribute>

   <attribute>
      <name>pwdAttribute</name>
      <value>userPassword</value>
   </attribute>

   <attribute type="text">
      <name>pwdAccountLockedTime</name>
      <description>This attribute holds the time that the user's account was locked.</description>
      <control type="combolist">
         <items>
            <item>
               <value>000001010000Z</value>
               <caption>Lock</caption>
            </item>
         </items>
      </control>
   </attribute>
</template>

LDAP Admin からユーザのプロパティを開くと Account protertiesAccountLock というチェックボックスが増えています。 これにチェックを入れると AccountLock というタブが増えるので、このタブをを選択します。

f:id:sig9:20171127132714p:plain

表示されたコンボリストから Lock を選択すると選択しているユーザの pwdAccountLockedTime 属性に 000001010000Z という値が設定されます。

f:id:sig9:20171127132723p:plain

但し、一度 GUI から設定してしまうと、この値は削除出来ないようです。

CLI から pwdAccountLockedTime 属性を削除する

pwdAccountLockedTime 属性を削除するには OpenLDAP サーバ上で以下のような .ldif ファイルを新規作成します。 今回は delete-pwdAccountLockedTime.ldif というファイル名にしました。

dn: cn=unnecessary-user,ou=Users,dc=example,dc=com
changetype: modify
delete: pwdAccountLockedTime

ldapmodify を使ってこの .ldif を反映することで pwdAccountLockedTime 属性を削除出来ます。

ldapmodify -D cn=Manager,dc=example,dc=com -W -f ./delete-pwdAccountLockedTime.ldif