AWSコラム

AWSエンジニアのためのブログメディア

AWSのポート開放|基本的な手順をご紹介

公開日時:   更新日時:
AWSのポート開放|基本的な手順をご紹介

EC2インタンスのポート開放とは?


EC2インスタンスに外部からのアクセスを許可するのがポート開放です。

AWSではManagementConsoleから指示する事で簡単にサーバー(EC2インスタンス)を起動できます。

しかし、ただ起動しただけでは外部からのアクセスは遮断されておりどこからも接続する事ができません。明示的にアクセスを許可しない限りは外部からのアクセスはできないのです。

ポート開放についての基本知識

AWSでポート開放を設定するためには、TCP/IPのポートについて理解しておく必要があります。

詳細な内容はネットワークの専門サイトなどで解説されています。次項目では基本的な事項を説明します。

ポートとは

HTTPなら80番、HTTPSなら443番といったように、主要なプロトコルはポート番号が決まっています。

インターネット上のサーバーTCP/IP通信でアクセスする場合、通常はサーバーのIPアドレスとプロトコル(ポート番号)の組み合わせが必要となります。

例として「http://www.hogehoge.jp/」というURLであれば「www.hogehoge.jpが示すIPアドレスのサーバー」の「http(80番ポート)」に接続するという意味となります。

ポート開放=アクセス許可

サーバーの特定ポートに外部からのアクセスを許可する事をポート開放(アクセス許可)といいます。

一例として「ウェブサーバーなので80番ポート(http)と443番ポート(https)のアクセスを許可する」というものです。

ポート開放とセキュリティ

開放するポートは必要最小限にするのが通例です。インターネットに接続されているということは世界中からアクセスされるという事に他なりません。

クラッカーなどの悪意を持ったアクセスもある事も考慮しておきましょう。SSHのようにサーバーOSを操作するためのポートもあるため、すべてのポートに自由にアクセスできるような設定は非常に危険です。

ポート開放の手法

AWSには標準で「セキュリティグループ」という機能がありますので特別な理由がない限りはこちらを使用してください。

ゲートウェイ(ルーター等)でポートを管理したり、サーバー本体にファイヤウォールをインストールする等の方法もあります。前者はルーターなどの機器の取り扱いを理解しなければなりません。

後者はファイヤウォールの設定方法を覚える必要があります。またどちらの場合も、設定変更時に機器の再起動が必要になるケースもあるため必ずしも手軽とはいえません。

EC2インスタンスのポート開放作業の例

AWS上でEC2インスタンスを起動し、ブログを運用するためのWebサーバーを用意したと仮定します。ElasticIPアドレスを取得しインスタンスに関連付けも完了しました。

しかし、ブラウザに上記のIPアドレスを入力してもまだアクセスする事はできません。

セキュリティグループでアクセス許可する内容を設定し、EC2インスタンスに割り当てる事でポート開放を実現します。

EC2セキュリティグループを作成する

AWS ManagementConsoleからEC2管理画面を開きます。メニューから「ネットワーク&セキュリティ」→「セキュリティグループ」を選択します。

「セキュリティグループの作成」をクリックして新規セキュリティーグループを作成します。

セキュリティグループ名

今回は公開ウェブサーバーなのでpublic_webという名称とします。将来的にサーバーを増減するときにも対応ができるように、用途別にセキュリティグループ名を付けてください。

この項目は後から名前を変更する事ができないという点に留意してください。

注意点として、EC2インスタンスとサーバーと1対1で対応するような名称は避けてください。管理が煩雑になり、設定漏れなどの困った事態を招く可能性が高くなります。

説明

取り急ぎセキュリティグループ名と同じ文字を入れておきます。

適切な説明分を思いつくのであれば入力しておきましょう。後々に複数の管理者が使用する事になっても誤解が生まれにくくなります。

VPC

ポート開放の対象になるEC2サーバーが所属するVPCを選択してください。

VPCを別途作成していない場合はそのままで構いません。セキュリティグループは同一のVPC内でのみ使用できます。

インバウンドルール

外部からサーバーへアクセスを許可する内容を指定します。

「ルールを追加」をクリックしてください。「タイプ」は「HTTP」を選択します。ポート範囲の値には自動的に80が入力されます。

「ソース」は許可する接続元の指定です。今回の場合はウェブサーバーなのでインターネット上のすべてからアクセスを許可するという意味の「0.0.0.0/0」を指定します。

アウトバウンドルール

こちらはサーバーから外部へのアクセスに対する制限です。

今回のケースでは特に理由がなければそのままでも構いません。

一通り入力が完了したら「セキュリティグループを作成」をクリックしてセキュリティグループを追加します。

セキュリティグループの挙動を確認する

作成したセキュリティグループをEC2サーバーに対応付けします。AWSコンソールからEC2インスタンスを起動する際に「既存のセキュリティグループを選択する」を選び、先程作成したセキュリティグループを選択してください。

ブラウザにEC2インスタンスのIPアドレスを入力してアクセスしてみましょう。

apacheなどのウェブサーバーが正常起動しポート解放が正しく設定されていればウェブページが表示されます。

試しにhttps://をつけて443番ポートにアクセスすると接続できません。これはセキュリティグループでhttpsが許可されていないため、アクセスしてもサーバーまで到達できなかったたのが原因です。

先ほどのセキュリティグループ設定でhttpsを追加してみましょう。ポートが開放されhttpsでのページ表示もできるようになります。

ポート開放の状態をチェックするツール

ブラウザからアクセスする以外にもポート開放の状況をチェックできるサイトやツールも公開されています。正常にポートが開放されているかだけではなく、意図しないポートが開放されていないかといった点もチェックしてください。

ただし、ポート開放のチェックはセキュリティホールを探している行為とも重なるため、度が過ぎると攻撃とみなされてしまう可能性もあります。AWS上で自己管理しているサーバー以外へのチェックは控えるようにしてください。

AWSの実務で使われるセキュリティグループ設定例

実際の商用サイトでは、一般ユーザーに使いやすいように広く公開しつつ悪意のあるアクセスからサーバーを守る必要があります。

そのため用途に応じて複雑なセキュリティグループの設定が必要となります。

これらは一度設定して終わりではなく、サイトの成長やシステムの変更のたびに細かく見直していく必要があります。以下に一例を示します。

公開用ウェブサーバー

ウェブ向けのアクセスは広く受け入れつつ管理用のアクセス許可は最小限にしぼりセキュリティを確保する事がポイントとなります。

公開ウェブサーバーのため、httpとhttpsについてはすべてのIPアドレスからアクセス許可とします。サーバー管理については会社の固定IPアドレスからのみ行えるようにしたいため、sshについては特定のIPアドレスからのみ許可とします。

MySQLなどのDBサーバー

ブログのデータベース用MySQL等のDBサーバーは通常、一般公開しないサーバーです。

ウェブサーバーからのMySQLアクセスと管理用のアクセスだけに絞ってアクセスを許可します。

ソースにWebサーバーのIPアドレス、プロトコルにMySQLを入力します。管理用のsshについては公開ウェブサーバーと同様に安全なIPアドレスからのアクセスだけを許可するようにすればよでしょう。

アクセス許可の小技

AWSのセキュリティグループにおいてソースの指定はIPアドレスだけでなくセキュリティグループ名で指定することもできます。

例えば「セキュリティグループAに割り当てられているサーバーからアクセスを許可」といった指定が可能です。

この方法を採用すれば、サーバーのIPアドレスが変わってもポート解放設定は影響を受けないため安心して作業を進められるでしょう。

まとめ


今回はAWSのセキュリティグループ設定によるポート開放の手順を紹介しました。

目的に応じて適切なセキュリティグループを設定し、安全なサーバー運用を目指しましょう。


AWS分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags