フィードを購読する

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 を使用した権限エスカレーションにはパスワードが必要
hardening-ssh-connections-with-ansible-img1-ja

セットアップ

強化されていない標準のデプロイメントから開始します。これには通常、以下が含まれます。

  • 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 パスワード認証の使用を拒否します ( <Service Account> をサービスアカウントの実際の名前に置き換えてください)。

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).

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

チャンネル別に見る

automation icon

自動化

テクノロジー、チームおよび環境に関する IT 自動化の最新情報

AI icon

AI (人工知能)

お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート

open hybrid cloud icon

オープン・ハイブリッドクラウド

ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。

security icon

セキュリティ

環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報

edge icon

エッジコンピューティング

エッジでの運用を単純化するプラットフォームのアップデート

Infrastructure icon

インフラストラクチャ

世界有数のエンタープライズ向け Linux プラットフォームの最新情報

application development icon

アプリケーション

アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細

Original series icon

オリジナル番組

エンタープライズ向けテクノロジーのメーカーやリーダーによるストーリー