特定ユーザーのみロックアウト ポリシーを無効にする(ふうの)方法

Windows Server 2008からはドメインに複数のアカウント ポリシーを持たせることが出来るようになったので問題なくなるのだけど、Windows Server 2003ではドメインで有効なアカウントポリシーは一つしか持たせることが出来ない。


これがどんなときに問題になるのかというと、大抵はアカウントのロックアウトポリシー。通常のログオンユーザーにはパスワード間違い3回でロックアウト&オペレータが解除するまでユーザーアカウント無効と設定したいんだけど、AD上に存在している必要が有るMSCSで稼動するようなサービスの実行アカウントはロックアウトさせたくないといった事を言い出す人は結構多い。


仕方なくそういう時は、サービス実行アカウント専用のドメインを別に作って・・といった対応を取ることもあるのだけど、Windows Server 2003から使えるようになった eventtriggers というコマンドを使ってユーザーがロックアウトした直後に特定ユーザーのロックアウトだけは解除するといったタスクを実行することが出来る。


良い方法かは知らんけど、設定手順は以下、


1.
以下のようなスクリプトを作成し適当なフォルダに配置する

Unlock.vbs


function check_and_unlock(user)
if user.IsAccountLocked then
user.IsAccountLocked = false
user.SetInfo
end if
end function

' ロックアウトのポリシーを回避したいユーザー毎に以下の行を追加する
check_and_unlock GetObject("LDAP://cn=TEST-USER-1,dc=sample,dc=local")
check_and_unlock GetObject("LDAP://cn=TEST-USER-2,dc=sample,dc=local")
check_and_unlock GetObject("LDAP://cn=TEST-USER-3,ou=Test OU,dc=sample,dc=local")

2.
以下のコマンドを実行し、セキュリティイベントログに記録されるアカウントロックアウトのイベントと1.のスクリプト実行を関連付ける。


>eventtriggers /create /tr "Unlock" /ru "" /l SECURITY /t SUCCESSAUDIT /eid 644 /tk "cscript C:\Works\Unlock.vbs"

3.(オプション)
メコンが複数ある場合は、1.、2.の手順をすべてのドメインコントローラで設定する。


以上、

あとは、スクリプト中で指定したユーザーアカウントで故意にアカウントロックアウトさせて、上記のスクリプトが起動してロックアウトが解除されるのを確認できればOK。