SSH ポスチャ制御を使用すると、Windows Server 2025 で SSH Server のセキュリティ体制を監査および構成できます。 SSH Posture Control は、Azure ガバナンス サービス (ポリシー、マシン構成) とシームレスに統合されるため、次のことができます。
- 業界または組織で sshd 標準に準拠していることを確認する
- sshd ベースのリモート管理の攻撃対象領域を減らす
- セキュリティと生産性のために、フリート全体で一貫した sshd セットアップを確保する
監査者へのコンプライアンスを示すのに役立つ (および必要に応じてアクションを実行できるように) 各コンプライアンス チェックには、コンプライアンスまたは非コンプライアンスがどのように決定されたかを示す [理由 ] フィールドを使用した証拠が含まれます。
sshd パラメーター (ポート番号、許可されるグループなど) をカスタマイズすることも、ポリシーの既定値を使用することもできます。
作業を開始するためのドキュメント
- クイック スタート: クリック バイ クリックのハンズオン エクスペリエンスについては、「クイック スタート: SSH ポスチャ 制御 をテスト マシンに適用する」を参照してください。
- 概要とリファレンス: 概念情報、リファレンス、FAQ については、 この 記事に進んでください。
監査のみの動作と監査と構成の動作の選択
SSH ポスチャ制御ポリシーを割り当てるときは、 監査専用 ("監査" とも呼ばれる) 動作または audit-and-configure (別名"構成") 動作を選択できます。
ポリシー定義 | Azure Policy の効果 | 想定される内容に関する注意事項 | |
---|---|---|---|
監査のみの動作 | **Audit** SSH Posture Control on Windows machines |
auditIfNotExists | このポリシーには、多くの一般的なシステム イメージと比較して、より制限の厳しい設定が含まれています。 たとえば、ルート SSH アクセスの拒否などです。 したがって、 非準拠 状態が報告されます。 |
監査と構成の動作 | **Configure** SSH Posture Control on Windows machines |
deployIfNotExists | 上記のように、最初に報告された 非準拠状態 が表示されます。 その後、マシンはポリシーに合わせて再構成され、最終的な 準拠 状態になります。 |
既存のマシンの場合、管理者は通常、監査のみの動作から始めて既存の状態を判断し、システム自動化で許可されているアカウントなどの依存関係を検出します。 既存のフリートと SSH ポスチャ コントロールの既定値を比較した後、カスタマイズする SSH ポスチャ コントロール パラメーターを決定します。 この分析と計画の後、監査と構成の動作 (リングなどの安全な展開プラクティス) に移行します。
グリーンフィールド シナリオや破棄可能なテスト マシンの場合は、その分析をスキップし、強力な SSH ポスチャ コントロールの既定値から始めて、監査と構成の動作に直接移動することを選択できます。
注意事項
マシンを構成する前に、新しい構成を検証するように細心の注意を払ってください。 誤ってマシンにアクセスできなくなる可能性があります。
誤って自分自身をロックアウトする例を次に示します。
- 適用されたネット承認設定 (
allowUsers
、denyGroups
の組み合わせなど) では、必要なログインは許可されません - sshd 用に構成する
port
は、環境内の他のコントロール (ホスト ファイアウォール規則、ネットワーク ファイアウォール規則など) によってブロックされます。- エンタープライズ チームの境界を越えないようにするために、SSH ポスチャ制御は sshd のみを構成しました。 現在、構成されている sshd ポートに対応するために、マシン上のファイアウォール規則などの変更は試行されません。 これらのシナリオについてご相談される場合は、お問い合わせください (以下の その他のリソース を参照)。
SSH ポスチャ 制御スコープ: ルール、既定値、カスタマイズ
次の表に、SSH ポスチャ 制御を使用して監査または構成できる項目を示します。 これらはそれぞれルールと呼 ばれます。
ほとんどのルールには、ポリシー割り当て パラメーター を使用して、監査または構成と監査を行うカスタム値を指定できます。 たとえば、組織の標準で sshd にポート 1111 (22 ではなく) を使用する場合は、ポリシー割り当てで対応するパラメーターを設定します。 これらのパラメーターには、次の表に含まれる識別子があります。 通常、短いパラメーター名はプログラムによって ( az policy assignment create --params ...
など) 使用され、長いパラメーター表示名は Azure portal ワークフローで使用されます。
値をカスタマイズするときは、sshd と互換性のある値を指定するように注意してください。 たとえば、 allowGroups
は、グループ名パターンのスペース区切りリストを受け取ります。 詳細については、 sshd_config man ページを参照してください。 sshd_configリファレンスは、 許可 リストと 拒否 リストの交差など、他の sshd 動作を理解する場合にも役立ちます。
注
表のレイアウトを維持するために、一部のセル値は表の下の脚注に移動されています。
規則名 | 既定値 | パラメーター名 | パラメーターの表示名 |
---|---|---|---|
SSH で許可されているグループが構成されていることを確認する | <脚注 1> | AllowGroups |
許可されるグループ |
SSH アクセスで許可されているユーザーが構成されていることを確認する | "" | AllowUsers |
許可されたユーザー |
SSH の認証方法が構成されていることを確認する | 任意 | AuthenticationMethods |
認証方法 |
SSH の拒否されたグループが構成されていることを確認する | "" | DenyGroups |
拒否されたグループ |
SSH に対して拒否されたユーザーが構成されていることを確認する | "" | DenyUsers |
拒否されたユーザー |
SSH のメッセージのログ記録時に使用されるファシリティ コードが構成されていることを確認する | LOCAL0 | SyslogFacility |
システム ログ機能 |
SSH MaxAuthTries が構成されていることを確認する | 6 | MaxAuthTries |
最大認証試行回数 |
SSH HostKey が構成されていることを確認する | <脚注 2> | HostKey |
ホスト キー |
SSH の承認されたキー ファイルが構成されていることを確認する | <脚注 3> | AuthorizedKeysFile |
承認されたキー ファイル |
SSH の GSSApiAuthentication が構成されていることを確認する | 偽り | GSSAPIAuthentication |
GSSAPI 認証 |
SSH 警告バナーが構成されていることを確認する | <脚注 4> | Banner |
バナー |
SSH に適切な暗号が使用されていることを確認する | aes128-ctr,aes192-ctr,aes256-ctr | Ciphers |
許可されている暗号 |
承認済みの MAC アルゴリズムのみが使用されていることを確認する | hmac-sha2-256 | MACs |
MAC アルゴリズム |
SSH ClientAliveCountMax が構成されていることを確認する | 0 | ClientAliveCountMax |
クライアント アライブ メッセージの数 |
SSH ポートが構成されていることを確認する | 22 | Port |
港 / ポート |
SSH LoginGraceTime が構成されていることを確認する | 六十 | LoginGraceTime |
ログインの猶予期間 |
SSH ClientAliveInterval が構成されていることを確認する | 3600 | ClientAliveInterval |
クライアントの有効期間 |
SSH PermitEmptyPasswords が構成されていることを確認する | 偽り | PermitEmptyPasswords |
パスワードの空のアクセス許可 |
表の脚注:
administrators "openssh users"
__PROGRAMDATA__/ssh/ssh_host_ecdsa_key
%programdata%/ssh/administrators_authorized_keys
#######################################################################/r/n/r/nAuthorized access only!/r/n/r/nIf you are not authorized to access or use this system, disconnect now!/r/n/r/n#######################################################################/r/n
- 注: エンド ユーザーには次のように表示されます。
####################################################################### Authorized access only! If you are not authorized to access or use this system, disconnect now! #######################################################################
追加の (sshd 以外の) ポリシー パラメーター
これらの追加のポリシー パラメーターは、ポリシーの割り当て中に使用できます。 これらは、マシン上の sshd 設定ではなく、Azure Policy の割り当て動作に影響します。
名前 | 説明 | 既定値 |
---|---|---|
Arc 接続サーバーを含める | このオプションを選択すると、Arc 接続マシンごとに毎月課金されることに同意します。 | 偽 |
影響 | このポリシーの実行を有効または無効にする | < 監査のみの選択と監査と構成の動作に依存> |
ポリシー定義 ポリシーの割り当て ゲストの割り当て マシンの構成 これはどのように一緒に収まりますか?
SSH ポスチャ制御の使用を開始するには、 ポリシー割り当てを作成することが主なアクションです。 ポリシーの割り当てによって、 ポリシー定義 ("Windows マシンの SSH ポスチャ制御の監査" など) が スコープ ("my_factory_3_resource_group" など) にリンクされます。
システムを使用すると、次に示すように、追加のリソースの種類と用語が表示されます。
説明 | |
---|---|
ポリシー定義 | Policy サービス内で、使用可能な監査や構成の動作のクラスターを記述する抽象データ。 たとえば、"Windows マシンでの SSH ポスチャ制御の監査" などです。 |
ポリシーの割り当て | 抽象ポリシー定義を、リソース グループなどの具体的なスコープにリンクします。 ポリシーの割り当てには、パラメーターとその割り当てに固有のその他のプロパティを含めることができます。 |
マシン構成 | OS レベルでの監査と設定の構成を処理する Azure サービスとエージェント。 |
ゲストの割り当て | ポリシーの割り当て、マシン、マシン構成サービスの間の 3 方向リンクとして機能するリソース。 ポリシーは、必要に応じてゲスト割り当てリソースを作成および監視します。 "guest" と "machine" の用語の詳細については、「ゲスト構成」と「Automanage」という用語が表示される理由を参照してください。 |
機械 | Arc 対応マシンまたは Azure VM。 |
互換性について (SSH サーバーの実装など)
SSH ポスチャ制御は、 単一の実行時間の長い SSH サーバー インスタンスのメインストリーム汎用 Windows Server シナリオ用に設計されています。
- サービス コントロール マネージャーなどの init システムによってライフサイクルが管理されている
- openSSH sshd の動作と一貫性のある、 sshd_config ファイルによって動作が制御される
- 有効な構成/状態が
sshd -T
出力によって明らかにされ、OpenSSH sshd の動作と一致する
サポートされているすべての OS (以下を参照) については、これが既定の SSH サーバーのユース ケースです。
原則として、マシンは、任意の数のコードベースに基づいて、さまざまな有効期間で任意の数の SSH サーバー インスタンスを実行し、任意の数の場所 (構成ファイル、コマンド ライン引数、コンパイル時パラメーターなど) から構成を取得できます。 このようなケースは、現時点では SSH ポスチャ 制御の範囲外です。 今後ご興味のある方は、お 問い合わせ 下さい。
SSH ポスチャ制御は、Azure Policy とマシン構成でサポートされている Windows Server 2025 マシンで使用することを目的としています。
sysadmins とイメージ ビルダーは OS からコンポーネントを削除したり、ファイルシステムを読み取り専用にしたりできるため、実行時の特定のマシンとの互換性は保証されません。
sshd_config Include ディレクティブとの互換性
SSH ポスチャ制御は、次のように、sshd_configで Include
ディレクティブに対応して使用しようとします。
- 監査/読み取りアクションの場合: sshd の観点からネット構成を反映するには、sshd -T に依存します。すべてのインクルードを考慮します。
- 構成/書き込みアクションの場合:
- 新しい SSH ポスチャ コントロール固有のファイルを (インクルードとして) sshd_configにリンクします。 その後、リンクされた SSH ポスチャ コントロール ファイルにすべての書き込みを配置します。 これにより、システムの検疫とシステム変更の追跡可能性が向上します。
sshd_config Match ディレクティブとの互換性
SSH ポスチャ 制御は、コア sshd 動作を監査および構成するように設計されています。 特定の母集団に異なる sshd 構成を適用できる条件付き Match
ブロック (存在する場合) との対話は試みません。
複数のsshd_config値との互換性
SSH ポスチャ制御では、ルール 'port' に複数の値を使用することはできません。つまり、ルール 'port' を 22 と 33 に設定します。 このルールは、監査と構成のシナリオに対する適切な機能とコンプライアンスを確保するために、1 つの値で構成する必要があります。 許可/拒否ユーザーや暗号などの他のルールは、1 行に追加されている限り、複数の値を持つことができます。
例:
- 既存のsshd_config ファイルには、行 "port:22" と別の行 "port:33" が含まれています。
- "SSH の監査" ポリシーは、予想されるポート値 33 を監査するために使用されます。
- 結果: 監査が予期しない成功または失敗する可能性があります。
- 推奨事項: このようなシナリオでは、この機能を使用 しないでください 。
プログラムを使用して結果を照会するにはどうすればよいですか?
Azure Resource Graph (ARG) クエリを使用すると、割り当てと状態データを独自のワークフローに統合できます。 これらの例では、PowerShell の Search-AzGraph
を使用して ARG クエリを実行しますが、PowerShell は必要ありません。 Azure Portal、Azure CLI、REST 呼び出しなど、多くのエントリ ポイントから ARG を使用できます。
要約の最も高度が高い場合は、コンプライアンス状態バケットごとにマシン数を取得できます。 例えば次が挙げられます。
$machineCountsQuery = @' // SSH machine counts by compliance status guestconfigurationresources | where name contains "SecureShell" | extend complianceStatus = tostring(properties.complianceStatus) | summarize machineCount = count() by complianceStatus '@ Search-AzGraph -Query $machineCountsQuery <# Sample output from an environment with two machines: complianceStatus machineCount ---------------- ------------ Pending 1 Compliant 1 #>
コンピューターごとに全体的なコンプライアンス状態が表示されるようにドリルインするには、次のコマンドを使用します。
$machinePerRowQuery = @' // SSH machine level compliance guestconfigurationresources | where name contains "SecureShell" | project machine = split(properties.targetResourceId,'/')[-1], complianceStatus = properties.complianceStatus, lastComplianceStatusChecked = properties.lastComplianceStatusChecked '@ Search-AzGraph -Query $machinePerRowQuery <# Sample output: machine complianceStatus lastComplianceStatusChecked ------- ---------------- --------------------------- sshdemovm01 Compliant 2/15/2024 11:07:21 PM sshdemovm02 Pending 1/1/0001 12:00:00 AM #>
設定の詳細にドリルダウンするには、次のコマンドを使用します。
$settingPerRowQuery = @' // SSH rule level detail GuestConfigurationResources | where name contains "SecureShell" | project report = properties.latestAssignmentReport, machine = split(properties.targetResourceId,'/')[-1], lastComplianceStatusChecked=properties.lastComplianceStatusChecked | mv-expand report.resources | project machine, rule = report_resources.resourceId, ruleComplianceStatus = report_resources.complianceStatus, ruleComplianceReason = report_resources.reasons[0].phrase, lastComplianceStatusChecked '@ Search-AzGraph $settingPerRowQuery <# Sample output: machine rule ruleComplianceStatus ruleComplianceReason ------- --------------- ------ ------ sshdemovm01 Ensure that the allowed groups for SSH are configured true ["administrators","openssh users"] contains the expected values: ["administrators","openssh users"] sshdemovm01 Ensure that appropriate ciphers are used for SSH true ["aes128-ctr","aes192-ctr","aes256-ctr"] contains the expected values: ["aes128-ctr","aes192-ctr","aes256-ctr"] sshdemovm01 Ensure that the authorized key file for SSH is configured true "%programdata%/ssh/administrators_authorized_keys" is equal to "%programdata%/ssh/administrators_authorized_keys" sshdemovm01 Ensure that the SSH ClientAliveInterval is configured true 3600 is equal to 3600 sshdemovm01 Ensure that the SSH PermitEmptyPasswords is configured true false is equal to false sshdemovm01 Ensure that the SSH port is configured true 22 is equal to 22 sshdemovm01 Ensure that the SSH MaxAuthTries is configured true 6 is equal to 6 sshdemovm01 Ensure that only approved MAC algorithms are used true ["hmac-sha2-256"] contains the expected values: ["hmac-sha2-256"] sshdemovm01 Ensure that the SSH HostKey is configured true "__PROGRAMDATA__/ssh/ssh_host_ecdsa_key" is equal to "__PROGRAMDATA__/ssh/ssh_host_ecdsa_key" sshdemovm01 Ensure that the SSH LoginGraceTime is configured true 60 is equal to 60 #>
場所に "ゲスト構成" と "Automanage" という用語が表示されるのはなぜですか?
マシン構成サービスは、 ゲスト構成 と Automanage Machine Configuration とも呼ばれます。 これらの名前は、サービスやドキュメントを操作するときに発生する可能性があります。 例えば次が挙げられます。
- この記事の Azure Resource Graph クエリの例では、データ テーブルを
guestconfigurationresources
と呼びます。 - Azure portal では、結果を監視するための便利なビューを "ゲスト割り当て" と呼びます。
- Azure portal で、関連する VM 拡張機能を適用してマシンの構成を有効にすると、拡張機能のタイトルは "Automanage Machine Configuration" になります。
SSH ポスチャ 制御の目的上、"guest" と "machine" の間に意味のある違いはありません。 Arc 対応マシンと Azure VM が対象です。
組み込みのポリシー定義の識別子は何ですか?
Azure CLI を使用してポリシー割り当てを作成する場合など、表示名ではなく ID でポリシー定義を参照すると便利な場合や必要になる場合があります。
ディスプレイ名 | 身分証明書 |
---|
|Windows マシンでの SSH ポスチャ制御の監査 | ...
|Windows マシンで SSH ポスチャ 制御を構成する | ...
|
関連リソース
- 問題などのサポートについては、Microsoft サポートにお問い合わせください
- フィードバックを提供するには、機能要求などについて話し合います。連絡先: linux_sec_config_mgmt@service.microsoft.com