このトピックでは、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設定を変更する前に、変更が必要かどうかを評価し、変更によってシステム機能が損なわれたり、セキュリティの脆弱性が生じたりしないことを確認します。
(オプション) 正しいパスワードを使用してもPAM対応のLinuxインスタンスにrootユーザーとしてログインできない場合は、rootアカウントのロックを解除します。 それ以外の場合は、この手順をスキップします。
Linuxインスタンスにrootとしてログインします。
詳細については、「VNCを使用したインスタンスへの接続」をご参照ください。
次のコマンドを実行して、secureという名前のログファイルを開きます。 ファイルでpamを含む行を検索し、PAM関連モジュールの名前を取得します。
cat /var/log/secure
この例では、セキュリティで保護されたファイルに次の行があります。この行は、PAM関連のモジュール名がpam_success_ifであることを示しています。
pam_succeed_if(sshd:auth): 要件 "uid >= 1000" がユーザー "root" によって満たされていません。
前の手順で取得したモジュール名に基づいて、PAM構成ファイルにモジュールの構成が含まれているかどうかを確認します。 PAM構成ファイルにモジュールの構成が含まれている場合は、ステップ5に進みます。
次のコマンドを実行して、PAM設定ファイルの設定を取得します。
cat /etc/pam.d/login cat /etc/pam.d/sshd cat /etc/pam.d/system-auth
次の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
PAM構成ファイルにセキュアログ内のモジュールの行が含まれている場合は、構成ファイルを開き、ビジネス要件に基づいてモジュールの行を変更します。
重要セキュアファイルにあるモジュールの行を含む各PAM構成ファイルを変更する必要があります。
次のコマンドを実行して、PAM設定ファイルを開きます。
vim <設定ファイル名>
I
キーを押してInsertモードに入り、ビジネス要件に基づいて行をコメントアウトまたは変更します。 PAM設定ファイルの構文については、「PAM設定 (リファレンス) 」をご参照ください。Esc
キーを押し、:wq
と入力して変更を保存します。(オプション) 手順aからcを繰り返して、他のPAM設定ファイルを変更します。
Linuxインスタンスにログインします。 インスタンスにログインできれば、問題は解決されます。
不正なPAM設定と対応するソリューションが原因でLinuxインスタンスへのログインに失敗したときに生成される一般的なエラーログ
安全なログには、次のエラーメッセージが表示されます。要件 "uid >= 1000" not met by user "root"
原因
PAM設定ファイルは、UIDが1000未満のユーザーがインスタンスにログオンすることを制限します。
説明この制限は、システムユーザーがシステムセキュリティを強化するために有効になります。 UIDの範囲が0〜999のユーザーは、rootを含むシステムユーザーです。
ソリューション
セキュリティ保護されたログには、次のエラーメッセージが表示されます。サービスsshdの拒否されたユーザー <Username>
原因
PAM設定ファイルは、特定のユーザーがインスタンスにログオンすることを制限します。
ソリューション
方法1: 別のユーザーとしてインスタンスにログインします。
方法2: PAM設定ファイルをチェックして変更し、制限を解除します。 ステップ3と4を実行します。
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設定ファイルを変更します。
ユーザーがインスタンスにアクセスできるようにするには、ユーザーをホワイトリストに追加するか、ブラックリストからユーザーを削除するか、行をコメントアウトします。
Linuxインスタンスにログインすると、「失敗した試行の最大数に達しました」というエラーメッセージが表示されます
原因
Linuxインスタンスに対して失敗したパスワードの試行回数が、PAMモジュールの認証ポリシーで指定されたアカウントロックアウトしきい値に達した場合、アカウントはロックされ、インスタンスへのログインに使用できません。
解決策
ルートアカウントがロックされている場合は、アカウントのロックを解除します。 それ以外の場合は、この手順をスキップします。
Linuxインスタンスにrootとしてログインします。
詳細については、「VNCを使用したインスタンスへの接続」をご参照ください。
次のコマンドを実行して、PAM設定ファイルが認証制限を実装しているかどうかを確認します。
cat /etc/pam.d/system-auth
次のコマンド出力が返されます。これは、root以外のユーザーまたはrootユーザーによるパスワードの試行失敗回数が3回に達すると、ユーザーアカウントがロックされ、インスタンスへのログインに50秒間使用できないことを示しています。
問題を解決します。
方法1: PAMで指定されたアカウントロックアウト期間 (50秒など) が経過するのを待ちます。 次に、インスタンスにログインします。
方法2: PAM設定ファイルを変更します。 この例では、
/etc/pam.d/system-auth
設定ファイルが使用されています。 同じ操作を実行して、他のPAM設定ファイルを変更できます。次のコマンドを実行して、
/etc/pam.d/system-auth
設定ファイルを開きます。vim /etc/pam.d/system-auth
I
キーを押して挿入モードに入ります。ビジネス要件に基づいて、アカウントロックアウトしきい値とアカウントロックアウト期間を指定する行をコメントアウト、変更、または削除します。
この例では、行はコメントアウトされています。
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」をご参照ください。