Security.AccountUnlockTime を 9999999 に設定してローカル ESXi ユーザーの自動ロック解除を防止しようとした際、ロックアウトが 6 時間後に予期せず解除されます。 その結果、最大ロック解除時間の制約を設定しているにもかかわらず、ユーザーが再度ログインできるようになります。syslog.log には、6 時間ごとに以下のログが記録されます: USER root pid ###### cmd /bin/pam_tally2 --reset
syslog.log
| YYYY-MM-DDT06:00:00.864Z In(##) crond[######]: USER root pid ###### cmd /bin/pam_tally2 --reset YYYY-MM-DDT12:00:00.864Z In(##) crond[######]: USER root pid ###### cmd /bin/pam_tally2 --reset |
ESXi 8.0 U2 and later
この問題は、ESXi 上の cron ジョブが定期的に /bin/pam_tally2 --reset コマンドを実行し、認証失敗カウンタをリセットするために発生します。このコマンドが実行されると、ログイン試行回数がクリアされ、構成されたロックアウト時間が経過する前にユーザーがログインできるようになります。
この cron ジョブは、誤ったユーザーロックアウトを防止するための一時的な回避策として、ESXi 8.0 U2 で導入されました。セキュリティポリシーでアカウントのロックアウト期間を厳格に管理する必要がある場合、この cron ジョブを無効にしてもシステム操作に影響はありません。
意図しないアカウントのロック解除を防ぐため、リセットコマンドを実行するcronジョブをコメントアウトしてください。
また、cronファイルへの手動での変更は、デフォルトではESXiホストの再起動後に保持されないため、再起動後も設定が維持されるようスクリプトを設定する必要があります。
Step 1: 現在の環境で cron ジョブをコメントアウトする
root 権限で ESXi ホストにログイン/bin/kill $(cat /var/run/crond.pid)
cp /var/spool/cron/crontabs/root /var/spool/cron/crontabs/root.old
chmod +w /var/spool/cron/crontabs/root
sed -i '\/bin\/pam_tally2 --reset/s/^/#/' /var/spool/cron/crontabs/root
chmod 1444 /var/spool/cron/crontabs/root
/usr/lib/vmware/busybox/bin/busybox crond
cat /var/spool/cron/crontabs/root | grep pam_tally2Step 2: ESXi ホストの再起動後も変更が維持されるように構成する
/etc/rc.local.d/local.sh を開きます
vi /etc/rc.local.d/local.sh
exit 0 の直前に以下の行を追加し、ファイルを保存して閉じます
sleep 30
chmod +w /var/spool/cron/crontabs/root
sed -i '\/bin\/pam_tally2 --reset/s/^/#/' /var/spool/cron/crontabs/root
chmod 1444 /var/spool/cron/crontabs/root
/bin/kill $(cat /var/run/crond.pid)
/usr/lib/vmware/busybox/bin/busybox crond
バックアップスクリプトを実行して、local.sh に加えた変更をシステム構成に保存します
auto-backup.sh
(任意)ESXi ホストを再起動し、/var/spool/cron/crontabs/root 内の変更が保持されていることを確認