EC2のシリアルコンソールが有効かどうかを確認する方法

By 清水 孝郎 - APRIL 20, 2021

SHARE:

本文の内容は、2021年4月20日にStefano Chiericiが投稿したブログ(https://sysdig.com/blog/ec2-serial-console-enabled/)を元に日本語に翻訳・再構成した内容となっております。

先日、Amazon AWSは、Nitro Systemを使用しているインスタンスに新機能EC2シリアルコンソールを導入しました。これは、インスタンスのシリアルポートへの接続を確立することで、トラブルシューティングを簡単かつ安全に行う方法を提供するものです。

この機能は、ガラスが割れたような、すなわち可及的な状況の場合には便利ですが、セキュリティの観点からは、敵対者がガードされていない二次的な入り口からアクセスするために使用される可能性があります。

この記事では、EC2シリアルコンソールの仕組みと、なぜこれがセキュリティ上の問題になるのかを見ていきます。Sysdig Secureを使えば、あなたの環境でこの機能が有効になるかどうかを検知し、できるだけ早くアラートを出すことが可能です。

EC2シリアルコンソールとはどのようなものですか?

EC2シリアルコンソールは、インスタンスのシリアルポートにモニターとキーボードが接続されているかのように、ワンクリックでテキストベースのアクセスを提供します。これは、起動やネットワーク接続の問題をトラブルシューティングするための簡単で安全な方法です。

この機能は、AWSがEC2の多くに採用しているネットワーク、ハイパーバイザー、セキュリティハードウェアの組み合わせであるNitro Systemを使用しているインスタンスで利用できますが、すべてではありません。

デフォルトでは無効になっているので、この機能を使いたい場合は、特定のリージョン毎に有効にする必要があります。

$ aws ec2 enable-serial-console-access --region us-east-2
{
    "SerialConsoleAccessEnabled": true
}

リージョンで機能が有効になったら、特定のインスタンスのセッションを開く際に、ユーザーの公開鍵をプッシュして認証を行う必要があります。

aws ec2-instance-connect send-serial-console-ssh-public-key \
	--instance-id  \
	--serial-port 0 \
	--ssh-public-key file:// \
	--region us-east-2

これで、ssh を使ってインスタンスとの接続を確立し、関連する秘密鍵を提供することができます。

シリアルコンソールを使って接続が確立されたら、次のステップとして、インスタンスの有効な認証情報を提供する必要があります。正しく認証してマシンとの対話を開始するには、ローカルユーザが先に設定したパスワードを持っている必要があります。

セキュリティに関する懸念

セキュリティの観点からは、EC2シリアルコンソールは、ガードされていない環境への第2の入り口と考えることができます。

EC2シリアルコンソール機能は、セキュリティを考慮して作成されており、このルートを使って侵入しようとする攻撃者にある程度の抵抗がなされます。しかし、いつものようにヒューマンファクターが命取りになることもあります。

前述したように、実際にコンソールを使い始めるには以下のことが必要です。

  1. リージョンでこの機能を有効にする。
  2. 接続を開始する前に公開鍵をプッシュし、関連する秘密鍵を持っている人だけが、作成されたセッションに接続できるようにする。
  3. パスワードが設定されていなければならないユーザーに対して、有効な認証情報を提供する。

まず、この機能を悪用すると、攻撃者はインスタンスに設定されているセキュリティグループのルールを完全に回避して、シリアルコンソールを直接指定することができます。

攻撃者は、所有している公開鍵をプッシュして、有効な認証情報のセットを要求しているサーバとの対話を開始できます。アクティブユーザーのパスワードが適切でない場合、攻撃者がインスタンスに接続してシステムを侵害してしまう可能性があります。

また、ブルートフォース攻撃を回避する仕組みがないため、攻撃者は無限回に認証情報を使用する可能性があります。

CloudTrailによるEC2シリアルコンソールの検出

幸いなことに、この種のサイドドアに注意を促し、自分の環境でこの機能が有効になっているときにはいつでもセキュリティチームに警告することが可能です。

ご存知の通り、AWSは環境で何が起こっているかを理解するための強力な機能を提供している。CloudTrailは、AWS Management Console、AWS Command Line Interface、およびAWS SDKとAPIから、ユーザー、ロール、またはAWSサービスによって行われたアクションを記録します。

CloudTrailを通じて、ユーザー管理者がManagement Consoleを介して機能を有効にしたタイミングなどを知ることができます。

AWSの別の機能であるCloudWatchを使えば、CloudTrailのイベントに基づいてアラートを作成することが可能だ。今回は、誰かが機能を有効にした場合のアラートを作成してみよう。

Amazon SNSサービスと組み合わせれば、メールでアラートを受け取ることができ、CloudTrailに取り込まれた重要な運用イベントに迅速に対応することができる。

Sysdig Secure for cloudを使ったEC2シリアルコンソールの検出

Sysdig Secureでは、Sysdig Cloud Connectorをお客様のクラウドインフラで利用することで、すぐにプロセスを開始することができます。監査ログなどからイベントを読み取り、Falcoのルールに照らし合わせて評価することで、異常な動作や設定ミスを検出することができます。例えば、意図していないのにEC2のシリアルコンソールが有効になっていることなどです。

Sysdig Secure for cloudを使えば、設定がクラウド環境にデプロイされた直後にアラートを出すことが可能です。このアラートには、リージョンやどのユーザーが実際に変更を行ったかなどの有用な情報が付加され、調査を迅速に行うことができます。

次のルールは、特定のリージョンでEC2シリアルコンソールが有効になっていることを検出できます。

- rule: "EC2 Serial Console Access Enabled"
  desc: "Detect EC2 serial Console Access enabled in the account for a specific region"
  condition:
    jevt.value[/eventName]="EnableSerialConsoleAccess"
    and (not jevt.value[/errorCode] exists)
    and jevt.value[/responseElements/EnableSerialConsoleAccessResponse/serialConsoleAccessEnabled]="true"
  output:
    The EC2 serial Console Access has been enabled in the region %jevt.value[/awsRegion].
    requesting IP=%jevt.value[/sourceIPAddress], AWS region=%jevt.value[/awsRegion],
    requesting user=%jevt.value[/userIdentity/arn])"
  priority: "WARNING"
  tags:
    - "cloud"
    - "aws"
  source: "aws_cloudtrail"

クラウドセキュリティイベント上のフィールドを参照するために、Falcoルールのconditionおよびoutputフィールドでjevt.value[]式をどのように使用できるかに注目してください。出力イベントには、どのAWSリージョンでEC2のシリアルコンソールが有効になったか、どのアカウントで、どのIPアドレスからアクセスしたかなどの有用な情報が含まれています。

このようなルールを導入することで、特定の瞬間に環境で何が起こっているかについての一般的な認識を高め、未知な事象に注意を向けることができます。

まとめ

EC2のシリアルコンソール機能は、トラブルシューティングや可及的な状況では非常に便利な機能となるでしょう。しかし、攻撃者の自由な侵入口となってしまう可能性のある二次的な入り口を環境に残さないようにすることも重要です。

新しいSysdig Secure for cloudを使用することで、セキュリティチームはカスタムセキュリティルールを作成し、何が起こっているのかを警告することができ、環境内の未知の設定ミスからハッキングされる可能性を最小限に抑えることができます。

Sysdigのツールは、セキュリティイベントの調査を容易にし、すべての関連情報を同じ場所で、一元化されたタイムラインで提供し、イベント間の相関性を持たせます。

ぜひお試しください!

Sysdig Secure for Cloudを使えば、悪者が侵入する前にクラウドの設定ミスに継続的にフラグを立てたり、流出した認証情報からの異常なログインなどの不審なアクティビティを検出することができます。これらはすべて単一のコンソールで実行されるため、クラウドのセキュリティ態勢を簡単に検証することができます。しかも、わずか数分で始められます。

Sysdig Free Tierでは、無料でクラウドのセキュリティを確保できます!

Sysdig Secure DevOps Platformは、コンテナ、Kubernetes、クラウドを自信を持って実行するために必要な可視性を提供します。オープンソース・スタック上に構築され、SaaS型で提供されています。

今すぐ無料トライアルをお申し込みください!