ブログ

AWS の EC2 インスタンスをプライベート接続で安全に管理しよう

AWS は皆さんもご存知の通り「クラウド」環境です。

従来のオンプレミスと異なり、クラウド環境にある Amazon EC2 インスタンスなどのサーバーは、多くの場合、例えば会社やリモートワーク先からインターネットを利用して AWS 上のサーバーに接続することになります。

パソコンだけでなくスマホが普及し、お財布になったり通信機器になったり、当たり前のようにインターネットを使うようになり、殆どの人にとってインターネットの無い生活は考えられない世の中になってきました。

インターネットって危険?

インターネットは繋がる機器を持っていれば誰でも使えますが、おそらく多くの利用者は危険性を意識せずに利用しているのではないでしょうか。

セキュリティホールやバグを完全に無くすことは難しいのですが、殆どの機器は安全性を考慮して通信できるように作られているので、個人的には怪しいサイトにアクセスしたり、フィッシングや詐欺メールなど利用者の知識や警戒心があれば、大抵防げるように思います。

しかし世の中には巧妙な手口で、知らないうちに個人情報やログイン情報を盗まれたり、アカウントを乗っ取られたりする事件のニュースを見聞きすることがあります。

インターネットは誰もが自由に使える、例えるなら一般道のようなものなので、いろいろな人や物が行き来することから、事故が起きることもあれば、悪意を持って危害を加えたり、金品を得るために犯罪行為を犯すこともできる場所でもあるので「安全ではない」と言えます。

プライベートネットワークとパブリックネットワーク

インターネットはネットワークの一部で、一般的には「パブリックネットワーク」と言われることが多いです。文字通り「公共のネットワーク」です。

パブリックネットワークに対して「プライベートネットワーク」も存在します。こちらも文字通り「個人的なネットワーク」です。

例えば会社内や自宅内のネットワークは、通常プライベートネットワークです。パソコンやスマホ、プリンターなどを無線LAN(Wi-Fi)や有線LANで繋ぐネットワークです。仮にインターネットに繋がっていなければ、プライベートネットワークはかなり安全なネットワークです。

それであればお客様が利用されるネットワークは、とても安全なためすべてプライベートにすればいいのですが、やはりインターネットに繋がっていないとインターネットの恩恵を受けられないので、とても不便です。スマホもインターネットに繋がらなければ、殆ど意味がありません。

安全なネットワーク接続

では、どうすればいいのでしょうか。

よく利用される手段として、通信の暗号化があります。暗号化することで、万が一意図的に傍受されても簡単には解読できない形で通信ができるようになります。

ブラウザで接続する時に、URLの左側に鍵のアイコンが表示されているのを見られたことがあると思います。これは https (Hypertext Transfer Protocol Secure) というプロトコルで暗号化通信のひとつです。最近のブラウザでは、https プロトコルで通信できないと警告されたり、表示できなかったりする場合があるので、現状では最低限対応しなければならない通信設定と考えていただいても問題ありません。

外部から AWS へ安全に接続できるプライベートネットワーク

次に、AWS へ安全に接続するにはどうすれば良いのでしょうか。

システムによっては、運用上インターネットに接続する必要がない場合があります。この場合は AWS 上のシステムは、プライベートにすればいいのでかなり安全ですが、外部から何らかの接続ルートを設けないと、誰も繋げなくなります。

そこでよく利用されるのは、VPN (Virtual Private Network) 接続です。

インターネットを利用しますが、専用のトンネルを設けることで安全な通信が可能になります(暗号化なしでも通信できますが、一般的に暗号化もセットで設定します)。VPN 接続を利用することで、お客様の拠点と AWS 間がプライベートネットワーク接続になります。

ただし VPN 接続には以下の設備や利用料金が必要です。

  • VPN 対応ルータ
  • 固定 IP アドレス
  • VPN 利用料
  • ルーターへの設定費用(業者に依頼した場合)

また、VPN 接続と比較すると高額ですが、安定した帯域で通信が可能な Direct Connect(ダイレクトコネクト)というサービスもございます。こちらも VPN 接続と同様に設備や設定、利用料が必要です。

※本ブログでは、VPN や Direct Connect のご紹介は控えますが、詳細のお問い合わせは弊社までご連絡くださいませ。

プライベートな通信で AWS のサーバーを管理 ー
AWS Systems Manager

AWS 上のサーバー管理が目的であれば、VPN 接続を利用しなくてもプライベート通信できるサービス「AWS Systems Manager (SSM)」があります。

例えば公開しているWebサーバーなど、インターネットに対しては https のポートのみを開放し、サーバーの管理は SSM を利用することでセキュリティレベルの高い運用が可能です。

お客様は AWS コンソールにログインすることで、AWS 上のサーバーにアクセスできるようになります。

※ Linux インスタンスの場合は SSH 接続、Windows の場合は PowerShell(RDP は不可)

まず、システムマネージャーを利用するには、以下の設定が必要です。

サーバーに SSM Agent がインストールされていること

SSM Agent は、下記 EC2 インスタンス AMI ではデフォルトでインストール済み

  • Linux
    • Amazon Linux
    • Amazon Linux 2
    • Amazon Linux 2 ECS に最適化されたベース AMIs
    • SUSE Linux Enterprise Server(SLES) 12 と 15
    • Ubuntu Server 16.04、18.04 および 20.04
  • Windows
    • 2016 年 11 月以降に公開された Windows Server 2008-2012 R2 AMIs
    • Windows Server 2016 および 2019

システムマネージャー用の IAM ロールがインスタンスにアタッチされていること

※以下は IAM ロールのサンプル

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeAssociation",
                "ssm:GetDeployablePatchSnapshotForInstance",
                "ssm:GetDocument",
                "ssm:DescribeDocument",
                "ssm:GetManifest",
                "ssm:GetParameter",
                "ssm:GetParameters",
                "ssm:ListAssociations",
                "ssm:ListInstanceAssociations",
                "ssm:PutInventory",
                "ssm:PutComplianceItems",
                "ssm:PutConfigurePackageResult",
                "ssm:UpdateAssociationStatus",
                "ssm:UpdateInstanceAssociationStatus",
                "ssm:UpdateInstanceInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2messages:AcknowledgeMessage",
                "ec2messages:DeleteMessage",
                "ec2messages:FailMessage",
                "ec2messages:GetEndpoint",
                "ec2messages:GetMessages",
                "ec2messages:SendReply"
            ],
            "Resource": "*"
        }
    ]
}

エンドポイントを設定して AWS にプライベート接続

上記の設定では、お察しの良い方はお気づきかと思いますが、実は SSM は AWS へのインターネット接続が必要なため、実質的にプライベート環境ではありません。

それでは完全なプライベート環境では SSM が利用できないのかと問われると、ご安心ください、プライベート環境で利用できます。

では、SSM エージェントと IAM ロール以外に必要な設定などをご案内いたします。

エンドポイントを設定

  • com.amazonaws.ap-northeast-1.ec2messages
  • com.amazonaws.ap-northeast-1.ssm
  • com.amazonaws.ap-northeast-1.ssmmessages

   ※ ap-northeast-1 は東京リージョンの場合

セッションを開始

エンドポイントが設定できたら、セッションを開始しましょう。

1 | AWS Systems Manager コンソールから Session Manager を選択

2 | セッションの開始ボタンをクリック

3 | ターゲットインスタンスを選択し、セッションを開始するボタンをクリック

4 | セッションが開始されます(表示例はWindows のため PowerShell)

AWS の EC2 インスタンスをプライベート接続で安全に管理しよう(まとめ)

いかがでしたでしょうか?

本ブログでは、セキュアに AWS に接続をする方法についてご紹介いたしました。

接続方法については、様々な方法がございますので、最適な接続方法について悩まれることもあるかと思います。

そんな時は弊社までお気軽にご相談ください!

お客様のご希望のセキュアな接続について、最適な方法をご提案させていただきます。

元記事発行日: 2022年06月27日、最終更新日: 2022年06月27日