simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

AWSのセキュリティ設定

ゲーム開発会社のエンジニアとして生きていると、ある時 GNU / Linux というものを扱えないといけない時がやってくる

パソコンに触り始めてそろそろ10年くらい経つけど、ずっと Windows 系のOSマシンでしか仕事してこなかった。
そのためいきなり GNU / Linux のコマンドのオンパレードが続くと疲れる

少しでも慣れるために、まずは GNU / Linux マシンを触っておこうと思う。

ということで今回は安全にアクセスできる AWS インスタンスを立ち上げて、自分だけがその GNU / Linux にアクセスできるようになるお話
少し前に Terraform で AWSインスタンスを立ち上げることができていたけど、具体的には、ここにセキュリティ設定を追加するのが今回の狙いとなる
simplestar-tech.hatenablog.com

まずは、AWS がセキュリティの設定につてドキュメントを書いていると思うので、読んで知識の下地をつくります。
docs.aws.amazon.com

IPアドレスでポート番号ごとにアクセス制限するだけだと素人は考えるので設定はとっても簡単わかりやすいものだと楽観するのですけど
なんかわざと難しく説明している気がしてならない。読んでて疲れる

読んだので概要を書いてみます。

VPCってのは Amazon が考える仮想ネットワーク機構のことで、柔軟に通信をさばくために作られた新しめのシステム
終始 Classic と VPC の違いについて述べている
具体的には、セキュリティーグループの設定を後から切り替えられるのはVPCだけ、Classic で変えられると思うなを連発

その後、インスタンスとセキュリティーグループの結びつきを強調し、連続で説明しながら、実はセキュリティーグループはネットワークインタフェースに関連づけるものとほのめかして混乱を招く

その混乱を持ったまま、セキュリティーグループに設定できるのは通信の許可のみで、通信を禁止するような設定は行えない仕組みであることを示す。
具体的にすべての通信を許可するときは 0埋めのアドレスを指定すると、すべてのアドレスを意味すると仕様を述べる

外からインスタンスに情報が入ることをインバウンドやイングレスと呼称し、逆にインスタンスから外部に情報を渡すことをアウトバウンドやイグレスと呼称していることを暗にほのめかす。

セキュリティの通信許可はインバウンドとアウトバウンドの通信に対して行うことができる(VPCだけがアウトバウンドの設定が可能)

削除することのできないディフォルトのセキュリティーグループはすべてのインバウンド、アウトバウンドの通信を許可する設定、安全ではないので絶対設定しない方がいいが、最初はディフォルトが設定される
強い許可が生き残るので、ディフォルトのセキュリティーグループが当たっていると、どんなに厳しい制約を追加で与えても、どこからでもアクセスできる状態のままになる、危険

カスタムセキュリティーグループを何の設定もせずに作ると、インバウンド通信をすべて禁止し、アウトバウンド通信をすべて許可する設定となっている。インバウンド・アウトバウンドの通信について TCP/UDP などのプロトコルを決め、ポート番号ごとにどのIPアドレスからの通信を許可するかを設定する必要がある

コマンドラインからセキュリティーグループを設定するときだけ、インバウンドを ingress, アウトバウンドを egress と呼称して利用する

つまり

インバウンド・アウトバウンドごとに
1.通信プロトコルTCPUDP か)
2.ポート番号範囲 (22, 80, 8081 とか)
3.通信許可対象の IP アドレス (10.16.192.0/32 とか)

をセットに、いくつもルールを追加したセキュリティーグループを作って、インスタンスのネットワークインタフェースに関連付ける

という方法で AWS は信用するアクセス元からの通信のみを許可するようにセキュリティ設定を行っている。

ここまでわかれば、あとはその情報をどのように設定すればよいのかの書式を確認する作業になる。
次の記事でその書式や、信用するIPアドレスの確認の仕方などを調べておこうと思います。