【AWS】セキュリティグループの役割
自分の中でEC2のセキュリティグループについて曖昧だったので復習を兼ねてざっくりメモしていきます。
セキュリティグループとは
EC2のセキュリティグループは、AWSの仮想ファイアウォールであり、EC2インスタンスに関連付けられたグループを保護するバリアとして機能します。
ファイアウォールとは
不正な通信がネットワークに侵入することを遮断し、保護するセキュリティ対策機能
セキュリティグループの役割
- セキュリティグループはVPCに複数定義が可能で、インスタンスに対して最大5つまで関連付けられる
- 1つのセキュリティグループには、複数のアクセス許可ルールを設定できる
- インスタンスへ入ってくる通信「インバウンドトラフィック」と、インスタンスから出ていく通信「アウトバウンドトラフィック」を別々に設定できる
- 接続が維持される
インバウンドルールとアウトバウンドルール
インバウンドルールとは
EC2インスタンスにアクセスするインバウンドトラフィックに制限をかけるためのルールです。
セキュリティグループを作成するときには、インバウンドルールはありません。インバウンドルールをセキュリティグループに追加するまでは、別のホストからインスタンスに送信されるインバウンドトラフィックは許可されません。
アウトバウンドルール
特定のアウトバウンドトラフィックのみを許可するためのルールです。
デフォルトでは、セキュリティグループにはすべてのアウトバウンドトラフィックを許可するアウトバウンドルールが含まれています。このデフォルトのルールを削除し、特定のアウトバウンドトラフィックのみを許可するアウトバウンドルールを追加することをお勧めします。
おまけ
ルールを設定する際にルールの固まりを設定します。その際にウェブサーバーの場合は、利用者がアクセスするためのhttpやhttpsが許可されている必要があり、開発者やシステム運用者がサーバーにアクセスする場合は、SSHが許可されている必要があります。そのようなルールの固まりでセキュリティグループを作成します。
失敗例
自分は上記のhttpやhttps、SSHの意味をよく理解することなくインバウンドルール設定時にSSHにIPアドレスを入力し制限をかけていたのですが、それを忘れてEC2にアクセスする際に下記のコマンドを入力しエラーが出ました。
$ ssh -i ~/.ssh/xxxxx-xxx.pem ec2-user@xx.xx.xx.xx
上記コマンドを入力しても繋がらずssh: connect to host 43.207.80.136 port 22: Connection timed out
というエラーが出ました。
それもそのはず、下図のSSHのソース欄にVPCのIPアドレスを入力していたため制限がかかってしまいアクセスできないだけでした。
アクセスするには図のように入力しすべてのIPアドレスを対象にする必要がありました。
0.0.0.0/0
は、「すべてのIPアドレスへの開放」を意味し、一般公開するウェブサービスのウェブサーバーなどのように対象のルールに対して接続先を制限する必要がない場合などに設定します。
参考
Discussion