[これは ServerFault の私の投稿の続編です:https://serverfault.com/questions/661136/root-accepts-any-password-how-to-change-to-a-real-password]
古いシステムでは、ルート アカウントは空でない限り、任意のパスワードを受け入れます。任意のパスワードが正しいパスワードとして受け入れられたため、誰でもログインできました。
過去 (10 年以上前) は、システムが独自の認証を備えたダイヤルアップ モデムの背後にあったため、これは問題ではありませんでしたが、数年前から、パブリック IP アドレス経由でシステムにアクセスできるようになりました。
奇跡的に、先週まで誰も SSH ポートを気にしたことがありませんでした。
誰か(中国の IP アドレス)が root としてログインし、システム設定を変更してログアウトしました。
この問題を解決するための時間を確保するために、バックアップからシステムを復元し、SSH ポートを ADSL モデム経由でアクセスできないように変更しました。
問題は次の点にあるようです/etc/pam.d/system-auth
:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok md5
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
私が変わるとき
auth sufficient /lib/security/pam_unix.so likeauth nullok
に
auth sufficient /lib/security/pam_unix.so likeauth
すると、ルートアカウントはランダムなパスワードを受け入れなくなりますが、設定したパスワードも受け入れなくなります。
次のことを試しました:
- まずコマンドでルートパスワードを変更します
passwd
。結果: どのパスワードでもログインできます - その後削除
nullok
: 新しいSSHセッションでは、設定したパスワードでもログインできませんでした - その後、ルート パスワードを再度変更しました。結果: 新しい SSH セッションでは、どのパスワードでもログインできませんでした。
- その後、
nullok
system-authを戻しました。どのパスワードでも再度ログインできるようになりました。
編集とパスワード設定は常に開いたままの SSH セッションで実行し、新しい SSH セッションを開いて結果をテストしました。
再びログインできなくなるかもしれないという恐怖から、メインのSSHセッションを閉じる勇気はありませんでした。また、信号機用の稼働中のシステムなので、システムを再起動しませんでした。
古いパスワードを入力する必要がなく、新しいパスワードを(2回)入力するだけで済むことに驚きました。
パスワードを変更した後、回答は得られましたPassword changed
が、新しいパスワードで SSH 経由でログインできませんでした。
ルート パスワードを別の場所に設定する必要がありますか? または、削除するとnullok
SSH 経由のルート アカウントが完全にブロックされますか?
root
特定のパスワード 1 つでのみログインでき、その他のパスワードではアクセスを拒否できるようにしたいと考えています。