SELinux の構成ミスが原因で Azure Linux 仮想マシンへの SSH 接続が失敗する
適用対象: ✔️ Linux VM
Note
この記事で参照されている CentOS は Linux ディストリビューションであり、EOL (End Of Life) に到達します。 適宜、使用と計画を検討してください。 詳細については、「 CentOS End Of Life ガイダンスを参照してください。
この記事では、SELinux の構成ミスが原因で Azure 仮想マシン (VM) への Secure Shell (SSH) 接続が失敗する問題の解決策を示します。
背景
Unix セキュリティ モデルは、随意アクセス制御 (DAC) に基づいています。 Security-Enhanced Linux (SELinux) は、カーネル モジュールとユーザースペース ツールを使用して Linux 用の必須アクセス制御 (MAC) を実装します。 MAC は、リソース アクセスに対してより制御された環境を提供し、ルート ユーザーがオペレーティング システム (OS) 上のすべてのリソースに制限なしでアクセスする機能を削除します。 また、従来の Unix セキュリティ モデルを利用することで、複数の種類のセキュリティ リスクを軽減します。
さまざまなディストリビューションには、すぐに使用できる SELinux が含まれるか、カーネルサポートをアクティブ化してユーザースペースツールをインストールする簡単な方法が用意されています。 詳細については、主要な Linux プロバイダーの一部の SELinux に関する次の記事を参照してください。
Azure 上の Red Hat ベースのイメージには、SELinux が有効になっています。他のディストリビューションでは行われません。 Ubuntu で SELinux を使用すると、このディストリビューションで保持されていない状態に関する警告が表示されます。 Ubuntu では、 AppArmor と呼ばれる MAC 用の別のソリューションが実装されています。
前提条件
コンソールが有効になっており、Linux VM で機能していることを確認します。
現象
SELinux が正しく構成されていないと、OS が SELinux ポリシーを読み込めなくなり、OS がブートを完了できなくなる可能性があります。
Azure portal または Azure CLI からシリアル コンソールを確認します。 出力の末尾近くに次のメッセージが表示されます。
SELinux 構成は、システム管理者によって管理されます。 システム管理者は、次のいずれかの方法を使用して、この問題を解決できます。
解決策 1: シリアル コンソールを使用して SELinux がオフになっている VM を起動する
ESC キーを使用して GRUB メニューで VM を中断します。[ E を選択して、GRUB メニューの最初のカーネル エントリを変更します。
linux16
行に移動し、を追加して SELinux を一時的に無効にします。 /etc/selinux/config
で SELinux 構成を検証して修正します。たとえば、一般的な間違いの 1 つは、
SELINUXTYPE
キーを、SELINUX
キーに使用される値のいずれかに設定することです。 例として、次のスクリーンショットを参照してください。最後の行 (
SELINUXTYPE=disabled
) に注目してください。SELINUXTYPE
キーは、disabled
ではなく、targeted
、minimum
、またはmls
に設定する必要があります。 次のスクリーンショットは、正しい構成を示しています。
解決策 2: 復旧 VM を使用して SELinux の構成ミスを修復する
ヒント
VM の最近のバックアップがある場合は、 バックアップから VM を復元し 構成の問題を解決します。
Azure シリアル コンソールが特定の VM で動作しない場合、またはサブスクリプションのオプションでない場合は、復旧/修復 VM を使用してこの問題のトラブルシューティングを行います。 vm 修復コマンドを使用して影響を受ける VM の OS ディスクのコピーがアタッチされた修復 VM を作成します。 chrootを使用して、修復 VM に OS ファイル システムのコピーをマウントします。
Note
または、Azure portalを使用して手動で復旧 VM を作成することもできます。 詳細については、「Azure portal で OS ディスクを復旧 VM に接続して Linux VM のトラブルシューティングを行う」を参照してください。
/etc/selinux/config
で SELinux 構成を検証して修正します。 これを行うには、「 ソリューション 1: シリアル コンソールから SELinux をオフにして VM を起動するの手順 5 に従います。SELinux 構成が修正されたら、次のアクションを実行します。
- chroot を終了します。
- 復旧/修復 VM からファイル システムのコピーのマウントを解除します。
az vm repair restore
コマンドを実行して、修復された OS ディスクを VM の元の OS ディスクにスワップします。 詳細については、「 Azure 仮想マシンの修復コマンドを使用して Linux VM を修復するの手順 5 を参照してください。- Azure シリアル コンソールを確認するか、VM に接続して、VM を起動できるかどうかを検証します。
次のステップ
SELinux の構成ミスが原因で問題が発生しない場合は、「 Azure Linux 仮想マシンのブート エラーをトラブルシューティングする 」を参照してください。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。