すべてのプロダクト
Search
ドキュメントセンター

:Linux インスタンスにおける PAM 関連のログイン失敗のトラブルシューティング

最終更新日:Sep 19, 2026

問題の説明

Linux インスタンスの PAM 設定が正しくないか、PAM モジュールファイルが見つからない場合、ログインできなくなることがあります。/var/log/secure で、以下のエラーメッセージを確認してください。

  • requirement "uid >= 1000" not met by user "xxxx"

  • user xxxx (0) has 5 failed attempts, failed attempts threshold is 3

  • Refused user xxxx for service sshd

  • PAM unable to dlopen(/usr/lib64/security/pam_lastlog.so): /usr/lib64/security/pam_lastlog.so: cannot open shared object file: No such file or directory

ソリューション

重要

PAM 設定ファイルを変更するには、管理者アカウント (root や sudo 権限を持つユーザーなど) でインスタンスにログインする必要があります。

問題の特定

  1. 管理者として VNC 経由で ECS インスタンスにログインします。

    1. [ECSコンソール - インスタンス] ページに移動します。 リージョンとリソースグループを選択します。

    2. インスタンスの詳細ページで、接続 をクリックし、VNC を選択します。 ユーザー名とパスワードを入力してログインします。

  2. 認証ログで主要なエラーメッセージを確認します。

    • 試行の失敗による アカウントロック : ログに Maximum amount of failed attempts was reached が含まれている場合、複数回のログオン試行の失敗後にアカウントがロックされます。 アカウントのロックを解除する

      sudo grep -i "Maximum amount of failed attempts" /var/log/secure
    • ユーザーログオンが制限されています: ログに requirement "uid >= 1000" not met by user が含まれている場合、ルールによって UID が 1000 未満のユーザーはログオンできなくなります。 UID 制限を削除する。

      sudo grep -i "not met by user" /var/log/secure
    • ユーザーが拒否リストに登録されている:ログに Refused user が含まれている場合、許可リストまたは拒否リストがユーザーアクセスを制御していることを示します。 ユーザーが拒否リストに登録されているか、許可リストに登録されていないため、許可リストまたは拒否リストを編集する必要があります。

      sudo grep -i "Refused user" /var/log/secure
    • PAM モジュールファイルがありません: ログに PAM unable to dlopen および No such file or directory が含まれている場合、システムが参照する PAM モジュールファイル (pam_lastlog.so など) がありません。見つからない PAM モジュールを復元する必要があります。

      sudo grep -i "unable to dlopen" /var/log/secure

アカウントのロック解除

  1. ログイン失敗回数を確認します。<username> は該当するユーザー名に置き換えてください。

    sudo pam_tally2 -u <username>

    失敗した試行回数が 0 より大きい場合、アカウントはロックされています。

  2. アカウントのロックを解除します。

    sudo pam_tally2 -u <username> -r
  3. (任意) ロックポリシーを恒久的に無効化します。

    /etc/pam.d/system-auth を編集し、pam_tally2.so を含むルールをコメントアウトします。

    sudo vim /etc/pam.d/system-auth

    このルールは、3 回連続でパスワードを間違えると、通常アカウントと root アカウントの両方をロックし、50 秒後に自動的にロックを解除します。

    auth required pam_tally2.so deny=3 unlock_time=50  
    この例では、pam_tally2 モジュールを使用します。実際のモジュールは、PAM のバージョンによって異なる場合があります。「Linux-PAM システム管理者ガイド」をご参照ください。
  4. 再度インスタンスにログインし、ログインできることを確認します。

UID 制限の解除

  1. 設定ファイルを探します。

    pam_succeed_if を含む、/etc/pam.d/sshd、/etc/pam.d/login、または /etc/pam.d/system-auth などのファイルを検索します。

    sudo grep -r "pam_succeed_if" /etc/pam.d/
  2. 設定を変更します。

    sudo vim /etc/pam.d/sshd

    auth required pam_succeed_if.so uid >= 1000 の行頭に # を追加してコメントアウトします。

    # auth required pam_succeed_if.so uid >= 1000
  3. 再度インスタンスにログインし、ログインできることを確認します。

許可リストまたは拒否リストの変更

  1. 設定ファイルを探します。

    /etc/pam.d/sshd、/etc/pam.d/login、または /etc/pam.d/system-auth など、pam_listfile を含むファイルを検索します。

    sudo grep -r "pam_listfile" /etc/pam.d/
  2. 設定を確認します。

    sudo vim /etc/pam.d/sshd

    sense パラメーターは、許可リスト (sense=allow) または拒否リスト (sense=deny) を示します。file= パラメーターには、/etc/ssh/whitelist や /etc/ssh/blacklist などのファイルパスを指定します。

    # 許可リストが設定されています。 リスト内のユーザーのみがログインできます。
    auth required pam_listfile.so item=user sense=allow file=/etc/ssh/whitelist onerr=fail
    
    # 拒否リストが設定されています。 リスト内のユーザーはログインできません。
    auth required pam_listfile.so item=user sense=deny  file=/etc/ssh/blacklist onerr=fail
  3. リストファイルを変更します。

    • 許可リストの場合:新しい行にユーザー名を追加します。 保存して終了します。

      sudo vim /etc/ssh/whitelist
    • 拒否リストの場合:対象のユーザー名を含む行を削除します。 保存して終了します。

      sudo vim /etc/ssh/blacklist
  4. 再度インスタンスにログインし、ログインできることを確認します。

欠落した PAM モジュールの復元

  1. 欠落したモジュールを所有するパッケージを特定します。

    診断レポートまたはシステムログには、不足しているモジュールのパス (例: /usr/lib64/security/pam_lastlog.so) が指定されています。 次のコマンドを実行して、ファイルが属するパッケージを特定します。 rpm -qf コマンドは RPM データベースを照会するため、ファイルがすでに存在しない場合でも機能します。

    rpm -qf /usr/lib64/security/pam_lastlog.so

    次のサンプル出力は、モジュールが pam パッケージに属していることを示しています。

    pam-1.3.1-39.1.al8.x86_64

    また、dnf provides "*/pam_lastlog.so" を実行して、所有パッケージを特定することもできます。

  2. パッケージを再インストールして、欠落したモジュールファイルを復元します。

    pam を、前の手順で特定したパッケージ名に置き換えます。

    sudo dnf reinstall pam -y

    CentOS 7 のように、パッケージマネージャーとして yum を使用するシステムでは、上記のコマンドの dnf を yum に置き換えます。

  3. モジュールが復元されたことを確認します。

    ls -l /usr/lib64/security/pam_lastlog.so

    モジュールファイルが存在する場合、復元は完了です。

  4. 再度インスタンスにログインし、ログインできることを確認します。

説明

復元後も、インスタンスの健全性診断は、復元前に生成された過去のエラーログに基づいてこの問題を報告する場合があります。 しばらく待ってから、再度診断を実行してください。