セキュリティグループの設定
EC2には、セキュリティグループといういわゆるフィルタ機能があります。 詳細は不明ですが、これはEC2より前の(インターネット側にある)スイッチに投入される設定のようです。
デフォルトでは次の設定が入るはずです。
- インバウンドはSSH(22/tcp)のみを許可、ソースアドレスはANY(どこからでもSSHを許可)
- アウトバウンドは無制限
ルール default を編集するのではなく、 きちんと自分専用のグループを作り、 それをサーバに適用するべきだとおもいます。
下図の左メニューを下の方へすすむと
「ネットワーク&セキュリティ」という項目があり、
そこに「セキュリティグループ」というメニューがあるので、クリックしてください。
下図のようなメニューが出るはずです。
左上にあるオレンジ色の「セキュリティグループを作成」をクリックしてください
- 「セキュリティグループ名」は、 サーバに適用する際に使う名前なので、わかりやすいものをつけてください。 ここでは server-filter にしました
- 「説明」も適当に書いてください(グループ名をコピー&ペーストしてもよし)
- 「インバウンドルール」にルールを追加していきます
- (この演習では)「アウトバウンドルール」の設定は不要です
インバウンドルールの開け方
inboundとかincomingは、サーバへ向かってくる向きの通信です。 サーバがサービス(listen)しているポートを追加していきます。 注意: コンテナで動いているサーバをすべて追加する必要はありません
- サーバを操作するために、通常SSH(22/tcp)も開けてあります。 これは、たいていの場合、必須です
- インターネット側からアクセスを許すサービスだけを開けます。たとえば、 この演習では3段かまえ(nginx www.py mysql)のシステムを作っています。 このシステムでは、 それぞれのサーバがそれぞれのポートで待ち受けていますが、 インターネットからのアクセスを受けるのは nginx の 80/tcp だけです。 だから 80/tcp だけを開きます。
しかしながら、この典型的な2つの例は全然違う種類の通信です。
- SSHは開発や管理のための通信で、 ユーザも少数、 アクセス元も限定できます (そうできるネットワークを設計してください)
- HTTPは、そもそも世界中にコンテンツを見せたいからサービスをするわけなので、 アクセス元は無制限のはずです。 HTTPSも同様です
よって、 典型的なセキュリティグループは、 次のようにSSHはソースアドレスの指定あり、 HTTPやHTTPSは指定なし(すべてのIPアドレス = 0.0.0.0/0)となります。
プロトコル | ポート番号 | ソースアドレス |
---|---|---|
SSH | 22/tcp | 210.128.52.0/24 |
HTTP | 80/tcp | 0.0.0.0/0 |
HTTPS | 443/tcp | 0.0.0.0/0 |
ただ、この演習では自宅からのSSHアクセスが想定されていて、IPアドレスが固定できないので、 SSHも 0.0.0.0/0 にします。 警告が出ることもありますが無視、無視:-)
プロトコル | ポート番号 | ソースアドレス |
---|---|---|
SSH | 22/tcp | 0.0.0.0/0 |
HTTP | 80/tcp | 0.0.0.0/0 |
HTTPS | 443/tcp | 0.0.0.0/0 |
インバウンドルールの設定
虫眼鏡マークをたたくと候補が出ます。 検索も可能です。 候補から選ぶか、検索するか、手で値を入力してください。
- タイプでSSHを選び、 ソースに 0.0.0.0/0 を選択
- 「ルールを追加」をクリック
- タイプでHTTPを選び、 ソースに 0.0.0.0/0 を選択
- 「ルールを追加」をクリック
- タイプでHTTPSを選び、ソースに 0.0.0.0/0 を選択
必要なルールを追加したら、
右下にあるオレンジ色の「セキュリティグループを作成」をクリックしてください
サーバにセキュリティグループを適用
EC2インスタンスの画面にもどり適用するインスタンスを選んでください
(フィルタを変更したいサーバのインスタンスIDをクリック)
右のほうにある「アクション」から
アクション -> セキュリティ -> セキュリティグループを変更
を選択してください。
「セキュリティグループを変更」という画面になります。 虫眼鏡のところで、server-filter を検索し、 直下にある「セキュリティグループを追加」をクリックしてください。
右下にあるオレンジ色の「保存」をクリックすれば終わりです。 新しいセキュリティグループ(フィルタルール)が働いているはずなので、 確認してみてください