Red Hat Ansible Automation Platform は、エンタープライズ全体の自動化を実装するためのプラットフォームであり、セキュリティ監査に最適なツールです。セキュリティには多くのレイヤーがありますが、この記事では管理対象ホストに対する SSH 攻撃の緩和に焦点を当てます。すべてのセキュリティリスクを排除することはできませんが、管理対象ホストを強化して一部のリスク (特にブルートフォース攻撃) を最小限に抑え、その他のリスクを緩和する (承認されたホストからのみ SSH 接続を許可する、sudo を強制するなど) ことができます。この記事では Ansible Automation Platform を使用しますが、強化設定のほとんどは管理対象ホストに適用されるため (sshd_config、sssd.conf、access.conf を編集)、これらの概念を Red Hat Satellite などの他の一元化された設定ツールでも適用できます。
この記事では、次のスキーマを使用して管理対象ホストの設定を強化する方法について説明します。
- AD/LDAP で作成された、ホストへの SSH ログイン用の複数のサービスアカウント:
- 公開鍵を AD/LDAP に保存して、公開鍵認証による SSH ログインを実現
- sudo 専用のパスワードを AD/LDAP に保存 (SSH ログインでは不可)
- 任意の管理対象ホスト上:
- サービスアカウントは Ansible Automation Platform 実行ノードからのみログイン可能 (他の場所からのログイン試行はすべて拒否される)
- どのサービスアカウントでも、sudo を使用した権限エスカレーションにはパスワードが必要

セットアップ
強化されていない標準のデプロイメントから開始します。これには通常、以下が含まれます。
- Ansible Automation Platform サービスアカウント (1 つ)
- ホストへの SSH ログインに使用される
- AD/LDAP で作成され、ランダムなパスワードが使用される
- 任意のホスト上:
- サービスアカウントはパスワードを使用してログインできる
- サービスアカウントはパスワードなしで sudo を使用できる
設定の強化
多くの企業では、サービスごとにサービスアカウントを 1 つだけ作成しています。この Ansible Automation Platform シナリオでは、Ansible Automation Platform で使用するサービスアカウントを 1 つだけ作成し、すべての管理対象ホストに接続します。ただし、何らかの理由でこのサービスアカウントが侵害された場合、攻撃者は任意の管理対象ホストにアクセスできます。
これが最初に行う必要がある変更です。セキュリティはレイヤーで実現されます。そのため、異なるサービスアカウントを作成することが重要な基礎になります。これを実装するための普遍的なアプローチは存在しません。アーキテクチャを確認して、インフラストラクチャにとって何が最も理にかなっているかを判断する必要があります。異なるサービスアカウントを作成するための一般的な戦略を以下に示します。
- ロケーションまたはデータセンター:データセンターごとにサービスアカウントを 1 つ作成する
- 組織またはドメイン:組織またはドメインごとに 1 つのサービスアカウントを作成する
- OS:ホストタイプごとにサービスアカウントを 1 つ作成する (Red Hat Enterprise Linux 7、8、9 など)
- 用途:メインアプリケーションのホストの用途ごとに 1 つのサービスアカウントを作成する (データベース、Apache、Kafka)
- セキュリティ:セキュリティーゾーンごとに 1 つのサービスアカウントを作成する (DMZ、Internal Zone 1 など)
すべてのサービスアカウントに共通のグループを作成します。これにより、1 つのサービスアカウントを許可し、残りのアカウントへのアクセスを拒否することが容易になります。
AD/LDAP を使用した SSH 公開鍵認証
サービスアカウントの SSH 認証は公開キーに基づいて行います。公開鍵には、パスワードと比較するといくつかの欠点がありますが、鍵を使用することで SSH ログインに対するブルートフォース攻撃の有効性をなくすことができます。
まず、各サービスアカウントの SSH 公開鍵を、AD/LDAP の altSecurityIdentities
属性に追加します。
各管理対象ホストで、 次のように /etc/sssd/sssd.conf
のサービスリストに ssh を追加します。
services = nss, pam, ssh
ldap_user_extra_attrs
および ldap_user_ssh_public_key
パラメーターを、次のように /etc/sssd/sssd.conf
の [domain]
セクションに追加します。
[domain/example.com] ldap_user_extra_attrs = altSecurityIdentities ldap_user_ssh_public_key = altSecurityIdentities
AuthorizedKeysCommandUser
オプションは、AuthorizedKeysCommand
を実行するために使用されるユーザーアカウントを指定します。これには専用のユーザーを使用することをお勧めします。そのため、これらの SSH パラメーターを /etc/ssh/sshd_config
に追加します。
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys AuthorizedKeysCommandUser nobody
詳細については、Red Hat カスタマーポータルで SSH 認証のためにユーザーの SSH キーを Active Directory に保存するを参照してください。
パスワード認証を拒否する
これらの SSH パラメーターをすべての管理対象ホストの /etc/ssh/sshd_config
に追加して、SSH パスワード認証の使用を拒否します (
Match User <Service Account> PasswordAuthentication no Match all
sudo のパスワードが必要
sudo の場合、サービスアカウントのパスワードを要求します。この場合は、サービスアカウントグループの名前を付けた新しいファイルを /etc/sudoers.d
に作成し、次の行を追加します。
%<Service Account Group> ALL=(ALL:ALL) ALL
たとえば、グループ名が aapsas
の場合は次の通りです。
$ cat /etc/sudoers.d/aapsas %appsas ALL=(ALL:ALL) ALL
セキュリティのベストプラクティスでは、sudo を実行するために特定の許可コマンドのみを追加することが推奨されていますが、これは Ansible Automation Platform では不可能です。管理対象ホストの場合、Ansible Automation Platform はターゲットマシンと通信し (通常は SSH を使用)、Python スクリプトをコピーして実行します。
認証済みの Ansible Automation Platform 実行ノードからの接続を許可する
強化の最終的な設定では、Ansible Automation Platform 実行ノードまたは LOCAL
(sudo) からのみサービスアカウントの SSH 接続を許可します。これを実装するには、/etc/security/access.conf に行を追加します。1 行目は Ansible Automation Platform および LOCAL からの接続を許可し、もう 1 行はその他のサービスアカウントを禁止します。
+: <Service Account> : <AAP Execution Nodes IPS> LOCAL -: <Service Account Group> : ALL
すべての構成の自動化
この記事では、管理対象ホストの SSH ログインを強化するために必要な手順を説明しましたが、これは Ansible Automation Platform であるため、すべてを手動で行う必要はありません。ここまでで取り上げた設定手順はすべて、テンプレートモジュールを使用して簡単に自動化できます。設定ファイル /etc/security/access.conf
、/etc/sssd/sssd.conf
、および /etc/ssh/sshd_config
のテンプレートを作成します。
ターゲットホストの接続セキュリティパラメーターを変更するため、慎重に作業してください。設定に誤りがあると、sshd サービスの失敗や、アクセスを必要としないユーザーへのアクセス権付与を引き起こす可能性があります。変更を伝搬する前に作業を再確認してください。
もちろん、一度構成するだけで優れたセキュリティが完成するわけではありません。管理対象ホストの SSH 設定の強化は継続的なプロセスにおける重要なステップであり、Ansible Automation Platform によって容易になります。
執筆者紹介
Alberto Gonzalez de Dios is a Senior Cloud consultant: Automation and OpenShift specialist. He joined Red Hat in 2018, and he is certified in Azure, AWS and Red Hat (Red Hat Certified Architect Level II).
チャンネル別に見る
自動化
テクノロジー、チームおよび環境に関する IT 自動化の最新情報
AI (人工知能)
お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート
オープン・ハイブリッドクラウド
ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。
セキュリティ
環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報
エッジコンピューティング
エッジでの運用を単純化するプラットフォームのアップデート
インフラストラクチャ
世界有数のエンタープライズ向け Linux プラットフォームの最新情報
アプリケーション
アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細
オリジナル番組
エンタープライズ向けテクノロジーのメーカーやリーダーによるストーリー
製品
ツール
試用、購入、販売
コミュニケーション
Red Hat について
エンタープライズ・オープンソース・ソリューションのプロバイダーとして世界をリードする Red Hat は、Linux、クラウド、コンテナ、Kubernetes などのテクノロジーを提供しています。Red Hat は強化されたソリューションを提供し、コアデータセンターからネットワークエッジまで、企業が複数のプラットフォームおよび環境間で容易に運用できるようにしています。
言語を選択してください
Red Hat legal and privacy links
- Red Hat について
- 採用情報
- イベント
- 各国のオフィス
- Red Hat へのお問い合わせ
- Red Hat ブログ
- ダイバーシティ、エクイティ、およびインクルージョン
- Cool Stuff Store
- Red Hat Summit