OpenBSD でパスワード変更を強制する

OpenBSD でパスワード変更を強制する

OpenBSD 5.6 では、デフォルトのパスワードを持つユーザー アカウントをいくつかプロビジョニングする必要があります。ユーザーが初めて SSH ログインするときに、デフォルトのパスワードを強制的に変更するようにしたいと思います。

CentOS と Debian では、 を使用してこれを実行できますchage -d 0 $username

login.conf のマニュアルによると、次のようにすれば OpenBSD でも同じことが実現できるようです。

  • usermod -f 1 $usernameまたは
  • usermod -f "Jan 1 2015" $username

このように設定すると、 で適切な変更が求められますuserinfo $usernameが、SSH 経由で $username としてログインしても、実際にはパスワードの変更は強制されません。パスワードが上記で非アクティブとしてマークされていることに気づかず、シェルが問題なく開きます。

2000年の投稿のいくつかはラッパーログインシェルの作成パスワードの変更を強制します。とは言うものの、usermodとの明らかなスキャフォールディングを考えるとchpass、これは組み込まれているようですが、Linux の同等のものほど広く文書化されていません。

BSD のプロは、これに対する従来のアプローチについて説明できますか?

答え1

によるとlogin.conf (5)、期限切れの(つまり「デッド」な)パスワードのデフォルトの猶予期間は 0 です。 でその値が設定されていない限り/etc/login.conf、現在のシステム日付が のユーザーのパスワード エントリの 6 番目のフィールドより大きい場合、ユーザーはログインしてパスワードを変更できません。/etc/master.passwdを参照してください。passwd (5)

この問題を解決するには、選択した猶予期間 (例: 2 週間) 内のエポックからの秒数でフォーマットされた日付を指定する必要があります。これも で設定します/etc/login.conf。昨日のパスワード有効期限を手動で選択するには、次を使用します。

# date -d yesterday +%s
1463597700

そして、/etc/master.passwdを使用してその値を のフィールド #6 に入力しますvipw。関連する行は次のようになります。

user:$2b$08$01234567890abcdef:1000:1000::1463597700:0:user:/home/user:/bin/ksh

指示されたように usermod を実行すると ( usermod -f "May 17 2016" user) 基本的に同じことが行われますが、どちらの場合も、ユーザーのクラスに応じて、または関連セクション/etc/login.confに次の内容を追加して変更する必要がありますdefault:\

    :password-dead=2w:\
    :password-warn=2w:

最初の行では、ユーザーがパスワードを変更するための 2 週間の猶予期間が与えられます。2 行目では、ユーザーのパスワードの有効期限が近づいていることを警告します。有効期限が切れると、ユーザーには次のようなメッセージが表示されます。

WARNING: Your password has expired.
You must change your password now and login again!
Changing local password for user.
Old password:
New password:
Retype new password:
Connection to openbsd-server closed.

:passwordtime=7776000:90 日ごとに追加のパスワード変更を強制するように設定することもできます/etc/login.conf。パスワードの再利用を禁止するなど、ユーザーのパスワードの複雑さに関する追加のチェックが必要な場合は、passwordqcパッケージまたは別のパスワード チェッカー プログラムをインストールして設定する必要があることに注意してください。

関連情報