【AWS入門】初心者がWebサーバをインストールしポートを理解する

■初心者がまんまと罠にはまった話

AWSにてEC2インスタンスをひとつ作成し、Webサーバとして構築しようとapache(Webサーバソフトウェア)をEC2にインストールしました。パブリックIPが発行されたため、理論上はこれでIPアドレスをブラウザにて指定すればページが開けます。・・・と思っていましたが、エラー画面が出るだけでページは表示されません。コピペでも手入力でももちろん同じ結果です。どうしてでしょう。

■EC2はそもそもWebサーバ専用ではない

AWSは柔軟さがセールスポイントです。利用するユーザによって用途はさまざまなため、必ずしも全てのユーザがEC2を基本的なWebサーバとして利用するわけではありません。そのため、EC2は基本的にポートを閉じています。自身でポートを設定しなければ、それに応じた動作がないのは当然です。

現在のインスタンスにてセキュリティグループ(ポートの解放設定)の状態を確認してみます。インバウンドルールの22番ポートのみ受け付けているため、ブラウザからのアクセスが不可だったのです。

■ポート(Port)番号とは

ポートはネットワーク内の住所の役割を担っています。IPアドレスと似た概念がありますが、IPアドレスが住所ならポート番号は部屋番号で例えられることが多いです。IPアドレスにより個々のコンピュータへの住所までは特定できますが、コンピュータの提供するサービスまでは特定できません。そこで部屋番号にあたる、サービスの種類を識別し特定するためにポート番号が存在します。

サーバは色々なリクエストを受け付けているため、様々なサービスを同じ入口から受け付けていると処理がとても大変になります。そこでサーバにポートという出入口を設けることにより、サービス毎に処理がしやすくなり、受け付ける側においても受け付けるサービス範囲を決めることができるようになります。理論上ポート番号は65535番まで用意されています。

ただ、ポート番号が色々な形で使用されているとリクエストをする際にスムーズなやり取りが困難です。それを回避するため、標準化として0番ポート~1023番ポートまでをウェルノウンポートと言い、メジャーなサービスやプロトコルが利用するために管理されています。基本的なソフトウェアやネットワークにおいてはこの規定に従い運用されており、HTTPプロトコルでは80番ポート、POPプロトコルでは110番ポートなどプロトコル毎にいくつか指定されたものがあるため、代表的なものは覚えていきましょう。

■使用していないポートは閉じるのが鉄則

セキュリティの関係上、意図的にポート番号を変更して使用したり、またはポートを閉じたりすることがあります。Webサーバとして機能させる場合、ローカル内だけでなく外部からの情報にも応答させるのが一般的なため、必然的にポートを解放することになります。しかしサーバシステム内にセキュリティ的な欠損があった場合、そこから第三者の侵入を許してしまうため、例えばサーバを乗っ取られて意図しない動作になってしまったり、情報の搾取、あるいは金銭的な被害を受ける可能性があります。様々なサーバとして使用する際はセキュリティ面を含め慎重に検討する必要があります。無闇にポートを解放せず、セキュリティ対策を立てて最小限のポートを解放するよう工夫することも大切です。

■Elastic IP(EIP)の設定も重要

EC2はダイナミックIPのため、EC2インスタンスの再起動などによりIPアドレスが変動する可能性があります。一般的にWebサーバはドメインをIPアドレスに紐づけて使用するため、再起動のたびにコロコロとIPアドレスが変わってしまうと接続できなくなったり、その都度変更したりするのは運用上大変困ります。そこで、IPアドレスを固定するためにAWSのElastic IP(EIP)をという機能を利用します。AWSのEIPは「起動しているEC2インスタンスでEIPをひとつ利用時」は無料範囲内のため料金は発生しません。それ以外は課金制となり、柔軟な料金設定がなされています。

■カスタムにてアクセス制限をつけることができる

EC2のセキュリティグループにて、アクセスする制限をつけることができます。IPアドレスにて指定したり、範囲にて設定が可能です。制限なしで設定する場合は0.0.0.0で全てを受け付けます。自分のグループ内や、利用用途によりアクセス制限をかけられるためセキュリティ度は高めです。

■ポートを自分で開放する

ブラウザからパブリックIPでアクセスできるようにポートを解放設定します。EC2のダッシュボードよりセキュリティグループの編集にて、HTTPの80番ポートとHTTPSの443番ポートを解放です。自分のみで確認できれば良いため、カスタムにてソースを自身のIPアドレスだけに制限をかけます。設定後にブラウザからのアクセスを確認できました。

■まとめ

これで問題なくブラウザからEC2 Webサーバにアクセスすることができました。AWSは柔軟さが売りですが、柔軟なゆえにセキュリティ面は自身にて責任を持てる環境構築がより重要だとわかりました。セキュリティについては学習することがたくさんあるため、最初はポートからしっかりと知識をつけていく事が重要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

AWS SSH接続方法。

次の記事

縁の下の力持ちFree RTOS