SaaS

NPA PublisherにSSMセッションマネージャーで接続してみた

こんにちは、臼田です。

みなさんセキュリティしてますか?(挨拶

NetskopeのNPAではAWSなどにPublisherを設置してプライベートアクセスを実現します。このNPAをAWS上ではEC2インスタンスとして作成してsshでアクセスして管理します。

せっかくなのでSSMセッションマネージャーでアクセスできないかなーと思って試してみたらできたので、方法を紹介します。中身がCentOSなので問題なくできました。公式にサポートされている手段ではないので、利用できることを保証できるものではありませんのでご了承ください。

SSM セッションマネージャーとは

最初にSSMセッションマネージャーの説明をしておきます。知っているよという方は飛ばしてください。

SSMはAWS Systems Managerの略称で、EC2を管理するための様々な機能をまとめたものです。その中の1つがセッションマネージャーでです。

セッションマネージャーはEC2インスタンスにシェルアクセスできる機能です。通常ではデータプレーン側、つまりネットワーク側からSSHでアクセスする必要があるEC2ですが、この機能はコントロールプレーンでシェルアクセスが可能です。強力な機能ですが、代わりに管理側でのアクセス管理が重要ですのでご利用は計画的に。

原理としてはEC2にインストールしているSSMエージェントが、上りの通信でSSMエンドポイントと通信してコントロール側の司令を受け取っています。

詳しくはこちらのUserGuideもご参照ください。

やってみた

流れは以下のとおりです。

  1. Publisher EC2用のIAM Role作成
  2. Publisher EC2用にIAM Roleをアタッチ
  3. Publisher EC2にSSMエージェントをインストール
  4. 接続

今回は既にPublisherが作成されている状態で解説します。新規作成から行う場合は、アタッチの作業を作成中に実施してください。というわけでやっていきます。

まずIAM Roleの作成から。SSMセッションマネージャーでアクセスするには、対象のEC2がそのIAM Roleの権限を持っている必要があるため、これを作成してアタッチします。

IAMのコンソールへアクセスしてIAM Roleの画面から「ロールの作成」を実施します。

AWSサービスの「EC2」を選択して次へ

ポリシーをアタッチします。ssmで検索しAmazonSSMManagedInstanceCoreを選択して次へ

タグは任意で、何もつけなくてもいいので次へ。名前を適当につけたら作成です。

作成ができたらPublisherのEC2にアタッチします。選択して「アクション -> セキュリティ」から「IAM ロールを変更」を選びます。

変更画面で先程作成したIAM Roleを選択して「保存」します。

アタッチできたらSSMエージェントをインストールしていきます。CentOSのインストール方法はこちらに説明があります。

PublisherにSSHでアクセスして、PublisherのメニューをExitしてシェルにアクセスします。そしてSSMエージェントのインストールを行い、ステータスを確認します。

% ssh -i ~/.ssh/npa.pem centos@xxx.xxx.xxx.xxx
Last login: Thu Apr 22 15:50:53 2021 from xxxxxxxxxxxxxxxxxxxx
 _       __     __                             __
| |     / /__  / /________  ____ ___  ___     / /_____
| | /| / / _ \/ / ___/ __ \/ __ `__ \/ _ \   / __/ __ \
| |/ |/ /  __/ / /__/ /_/ / / / / / /  __/  / /_/ /_/ /
|__/|__/\___/_/\___/\____/_/ /_/ /_/\___/   \__/\____/
        _   __     __       __
       / | / /__  / /______/ /______  ____  ___
      /  |/ / _ \/ __/ ___/ //_/ __ \/ __ \/ _ \
     / /|  /  __/ /_(__  ) ,< / /_/ / /_/ /  __/
    /_/ |_/\___/\__/____/_/|_|\____/ .___/\___/
                                  /_/

Publisher information:
	Version: 1.4.6239

Registration information:
	Netskope address: xxxxxxxxxxxxxxxxxx
	Certificate CN: xxxxxxxxxxxxx

Network settings:
	Local IP address: xxx.xxx.xxx.xxx
	Gateway: xxx.xxx.xxx.xxx
	DNS: xxx.xxx.xxx.xxx
	EDNS: Enabled for Stitcher connectivity
	Default search domain: xxxxxxxxxxxxxxxx

Syslog settings:
	Disabled

Configuration menu:
1. Upgrade
2. Network settings
3. Syslog settings
4. Troubleshooter
5. Log settings
6. Exit
6
[centos@ip-xxx-xxx-xxx-xxx ~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[centos@ip-xxx-xxx-xxx-xxx ~]$ sudo yum install -y https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm
読み込んだプラグイン:fastestmirror
amazon-ssm-agent.rpm                                                       |  31 MB  00:00:00
…省略…
インストール:
  amazon-ssm-agent.x86_64 0:3.0.1031.0-1

完了しました!
[centos@ip-xxx-xxx-xxx-xxx ~]$ sudo systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
   Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: disabled)
   Active: active (running) since 金 2021-04-30 22:26:13 UTC; 1min 6s ago
 Main PID: 10985 (amazon-ssm-agen)
   CGroup: /system.slice/amazon-ssm-agent.service
           ├─10985 /usr/bin/amazon-ssm-agent
           └─11020 /usr/bin/ssm-agent-worker
…省略…

SSMエージェントの状態をAWS側から確認する場合は、SSMのマネジメントコンソールにある「フリーとマネージャー」のマネージドインスタンス一覧を確認します。ここにインスタンスが表示されていてオンラインであればOKです。

SSMセッションマネージャーで接続していきましょう。EC2のマネジメントコンソールから対象インスタンスを選択して「接続」を押します。

接続方法の選択肢が出るので「セッションマネージャー」のタブを選択して「接続」します。

繋がりました。最初はログインしていない状態でcentosユーザーでもないので、sudo su - centosでユーザーを切り替えます。するとログイン時のメニューが表示されます。

これで完了です。通常のSSH経路を塞いでよりネットワーク的にセキュアに管理することが可能になりました。

まとめ

NPA PublisherにSSMエージェントをインストールしてセッションマネージャーで接続してみました。これで管理が1つ楽になったと思います。

ぜひやってみてください。

臼田 佳祐

AWSとセキュリティやってます。普段はクラスメソッドで働いてます。クラウドネイティブでは副業としてセキュリティサービスの検証とかやってます。