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

Elastic Compute Service:PAMを有効にした後にLinuxインスタンスにログインできない場合はどうすればよいですか?

最終更新日:Dec 12, 2024

このトピックでは、Pluggable Authentication Modules (PAM) を有効にした後にLinux Elastic Compute Service (ECS) インスタンスにログインできないという問題を解決する方法について説明します。

PAM

PAMは、システムセキュリティを強化するためにLinuxオペレーティングシステムでユーザーを認証するために使用できる認証メカニズムです。

PAMモジュールが正しく設定されていない場合、認証に失敗する可能性があります。 そのため、正しいパスワードを使用してもLinuxインスタンスにログインできません。 Linuxインスタンスにログインできるようにするには、管理者に連絡して、ビジネス要件に基づいてPAM設定を確認および修正することをお勧めします。 SSHとログインは、2つの一般的なインスタンスのリモートログオン関連サービスであり、次のPAM設定ファイルに対応します。

  • /etc/pam.d/login: VNC (Virtual Network Computing) ログオンを制御します。 この設定ファイルを変更して、パスワードの確認、アカウントのロック、特定のIPアドレスからのログオンの制限を行うことができます。

  • /etc/pam.d/sshd: SSHログオンの認証情報が含まれます。

  • /etc/pam.d/system-auth: パスワードポリシー、ユーザー情報、アクセス制御情報など、システム全体の認証情報が含まれます。

PAM設定の変更

重要
  • PAM設定を変更できるのは、ルートユーザー (管理者) のみです。 root以外のユーザーの場合は、管理者に連絡してPAM設定の確認と変更を行います。

  • PAM設定を変更する前に、変更が必要かどうかを評価し、変更によってシステム機能が損なわれたり、セキュリティの脆弱性が生じたりしないことを確認します。

  1. (オプション) 正しいパスワードを使用してもPAM対応のLinuxインスタンスにrootユーザーとしてログインできない場合は、rootアカウントのロックを解除します。 それ以外の場合は、この手順をスキップします。

    rootアカウントのロック解除

    1. シングルユーザーモードでLinuxインスタンスにログインします。

      詳細については、「Linux ECSインスタンスのシングルユーザーモードへの起動」をご参照ください。

    2. 次のコマンドを順番に実行して、ルートアカウントのロックを解除します。

      pam_tally2 -u root# rootアカウントによって行われた失敗したパスワード試行の回数を照会します。 
      pam_tally2 -u root -r# rootアカウントによって行われた失敗したパスワードの試行回数をリセットします。 
      authconfig -- disabledap -- update# PAMセキュリティ認証レコードを更新します。
    3. 変更を有効にするには、Linuxインスタンスを再起動します。

      詳細は、「インスタンスの再起動」をご参照ください。

  2. Linuxインスタンスにrootとしてログインします。

    詳細については、「VNCを使用したインスタンスへの接続」をご参照ください。

  3. 次のコマンドを実行して、secureという名前のログファイルを開きます。 ファイルでpamを含む行を検索し、PAM関連モジュールの名前を取得します。

    cat /var/log/secure

    この例では、セキュリティで保護されたファイルに次の行があります。この行は、PAM関連のモジュール名がpam_success_ifであることを示しています。

    pam_succeed_if(sshd:auth): 要件 "uid >= 1000" がユーザー "root" によって満たされていません。
  4. 前の手順で取得したモジュール名に基づいて、PAM構成ファイルにモジュールの構成が含まれているかどうかを確認します。 PAM構成ファイルにモジュールの構成が含まれている場合は、ステップ5に進みます。

    1. 次のコマンドを実行して、PAM設定ファイルの設定を取得します。

      cat /etc/pam.d/login
      cat /etc/pam.d/sshd
      cat /etc/pam.d/system-auth 
    2. 次のgrepコマンドを実行して、安全なファイルで見つかったモジュールの行がPAM構成ファイルに含まれているかどうかを確認します。

      grep "<モジュール名>" /etc/pam.d/login
      grep "<モジュール名>" /etc/pam.d/sshd
      grep "<モジュール名>" /etc/pam.d/system-auth 

      たとえば、PAM構成ファイルにpam_success_ifモジュールの行が含まれているかどうかを確認するには、次のコマンドを実行します。

      grep "pam_succeed_if" /etc/pam.d/login
      grep "pam_succeed_if" /etc/pam.d/sshd
      grep "pam_succeed_if" /etc/pam.d/system-auth 

      PAM構成ファイルにモジュールの行が含まれている場合、次の情報を含むコマンド出力が返されます。

      /etc/pam.d/login: 必要なpam_succeed_if.so uid >= 1000 quiet_success
      /etc/pam.d/system-auth:auth required pam_succeed_if.so uid >= 1000 quiet_success 
  5. PAM構成ファイルにセキュアログ内のモジュールの行が含まれている場合は、構成ファイルを開き、ビジネス要件に基づいてモジュールの行を変更します。

    重要

    セキュアファイルにあるモジュールの行を含む各PAM構成ファイルを変更する必要があります。

    1. 次のコマンドを実行して、PAM設定ファイルを開きます。

      vim <設定ファイル名>
    2. Iキーを押してInsertモードに入り、ビジネス要件に基づいて行をコメントアウトまたは変更します。 PAM設定ファイルの構文については、「PAM設定 (リファレンス) 」をご参照ください。

    3. Escキーを押し、:wqと入力して変更を保存します。

    4. (オプション) 手順aからcを繰り返して、他のPAM設定ファイルを変更します。

  6. Linuxインスタンスにログインします。 インスタンスにログインできれば、問題は解決されます。

不正なPAM設定と対応するソリューションが原因でLinuxインスタンスへのログインに失敗したときに生成される一般的なエラーログ

安全なログには、次のエラーメッセージが表示されます。要件 "uid >= 1000" not met by user "root"

  • 原因

    PAM設定ファイルは、UIDが1000未満のユーザーがインスタンスにログオンすることを制限します。

    説明

    この制限は、システムユーザーがシステムセキュリティを強化するために有効になります。 UIDの範囲が0〜999のユーザーは、rootを含むシステムユーザーです。

  • ソリューション

    • 方法1: 別のユーザーとしてインスタンスにログインします。

    • 方法2: PAM設定ファイルをチェックして変更し、制限を解除します。 ステップ34を実行します。

      PAM構成ファイルに次の行が含まれている場合、構成ファイルはシステムユーザーのログオンに対する制限を実装します。 この場合、ビジネス要件に基づいて行をコメントアウトまたは削除できます。

      auth required pam_succeed_if.so uid >= 1000

セキュリティ保護されたログには、次のエラーメッセージが表示されます。サービスsshdの拒否されたユーザー <Username>

  • 原因

    PAM設定ファイルは、特定のユーザーがインスタンスにログオンすることを制限します。

  • ソリューション

    • 方法1: 別のユーザーとしてインスタンスにログインします。

    • 方法2: PAM設定ファイルをチェックして変更し、制限を解除します。 ステップ34を実行します。

      • PAM構成ファイルに次の行が含まれている場合、構成ファイルは特定のユーザーのログオンに対する制限を実装します。

        # 特定のユーザーのみがインスタンスにアクセスできるようにホワイトリストを設定します。
        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 
      • PAM設定ファイルを変更します。

        ユーザーがインスタンスにアクセスできるようにするには、ユーザーをホワイトリストに追加するか、ブラックリストからユーザーを削除するか、行をコメントアウトします。

        ホワイトリストへのユーザーの追加または削除

        1. 次のコマンドを実行して、/etc/ssh/whitelist設定ファイルを開きます。

          vim /etc/ssh /ホワイトリスト
        2. Iキーを押して挿入モードに入ります。

        3. ホワイトリストに、アクセスを許可するユーザーを追加します。

          この例では、次のユーザーがインスタンスへのアクセスを許可されています。

          ルート
          ecs-user
          テスト 
        4. Escキーを押し、:wqと入力して挿入モードを終了し、設定ファイルを保存します。

Linuxインスタンスにログインすると、「失敗した試行の最大数に達しました」というエラーメッセージが表示されます

  • 原因

    Linuxインスタンスに対して失敗したパスワードの試行回数が、PAMモジュールの認証ポリシーで指定されたアカウントロックアウトしきい値に達した場合、アカウントはロックされ、インスタンスへのログインに使用できません。

  • 解決策

    1. ルートアカウントがロックされている場合は、アカウントのロックを解除します。 それ以外の場合は、この手順をスキップします。

      rootアカウントのロック解除

      1. シングルユーザーモードでLinuxインスタンスにログインします。

        詳細については、「Linux ECSインスタンスのシングルユーザーモードへの起動」をご参照ください。

      2. 次のコマンドを順番に実行して、ルートアカウントのロックを解除します。

        pam_tally2 -u root# rootアカウントによって行われた失敗したパスワード試行の回数を照会します。 
        pam_tally2 -u root -r# rootアカウントによって行われた失敗したパスワードの試行回数をリセットします。 
        authconfig -- disabledap -- update# PAMセキュリティ認証レコードを更新します。
      3. インスタンスを再起動して、変更を有効にします。

        詳細は、「インスタンスの再起動」をご参照ください。

    2. Linuxインスタンスにrootとしてログインします。

      詳細については、「VNCを使用したインスタンスへの接続」をご参照ください。

    3. 次のコマンドを実行して、PAM設定ファイルが認証制限を実装しているかどうかを確認します。

      cat /etc/pam.d/system-auth

      次のコマンド出力が返されます。これは、root以外のユーザーまたはrootユーザーによるパスワードの試行失敗回数が3回に達すると、ユーザーアカウントがロックされ、インスタンスへのログインに50秒間使用できないことを示しています。

      image.png

    4. 問題を解決します。

      • 方法1: PAMで指定されたアカウントロックアウト期間 (50秒など) が経過するのを待ちます。 次に、インスタンスにログインします。

      • 方法2: PAM設定ファイルを変更します。 この例では、/etc/pam.d/system-auth設定ファイルが使用されています。 同じ操作を実行して、他のPAM設定ファイルを変更できます。

        1. 次のコマンドを実行して、/etc/pam.d/system-auth設定ファイルを開きます。

          vim /etc/pam.d/system-auth
        2. Iキーを押して挿入モードに入ります。

        3. ビジネス要件に基づいて、アカウントロックアウトしきい値とアカウントロックアウト期間を指定する行をコメントアウト、変更、または削除します。

          この例では、行はコメントアウトされています。

          auth required pam_tally2.so deny=3 unlock_time=50# これはコメントアウトが必要な行です。 この行は、root以外のユーザーまたはrootユーザーによるパスワードの試行失敗回数が3回に達すると、ユーザーアカウントがロックされ、インスタンスへのログインに50秒間使用できないことを示しています。 
          # auth required pam_tally2.so deny=3 unlock_time=50# これはコメントされた行です。
          説明

          この例では、pam_tally2モジュールが使用されています。 構成は、PAMのバージョンによって異なる場合があります。 詳細については、「Linux PAM SAG」をご参照ください。