AWSセキュリティとRoute 53

# セキュリティグループとネットワークACLについて

データ受信がインバウンド、データ送信がアウトバウンドの通信設定になる。

## セキュリティグループ
- インスタンス単位で適用
- 特定のVPCに紐づいて作成
- ステートフル：インバウンドのみ設定したらアウトバウンドも許可される（状態を維持）
- 許可のみをin/outで指定（拒否設定はない）
- デフォルトとしてインバウンドは設定なし（暗黙的な拒否）、アウトバウンドは許可
- すべてのルールが同時に適用
- ポート番号に対してトラフィック制御を行う

## ネットワークACL
- VPC/サブネット単位で適用
- ステートレス：インバウンドとアウトバウンドを別々に設定する必要あり
- 許可と拒否をin/outで指定
- デフォルトはすべての通信を許可
- 番号の順序通りに適用するため、重複したプロトコルに設定されている場合は小さい番号から優先されるルールがある
- ルール番号にアスタリスクが記載されているものは影響なし

## VPC使用される主なウェルノウンポート

VPC内のサービスによく使われるプロトコルで接続する際は、ネットワークACLとセキュリティグループ両方で必要なポート番号の許可をしておく必要がある。

| ポート  | 用途    | 説明               |
| ---- | ----- | ---------------- |
| 21   | FTP   | ファイル転送用のプロトコル通信    |
| 22   | SSH   | Linuxへのセキュア接続    |
| 80   | HTTP  | 非暗号化Webサイトへの接続       |
| 443  | HTTPS | 暗号化されたWebサイトへの通信     |
| 3389 | RDP   | Windowsサーバーへのセキュア接続  |
| 3306 | RDS   | DBインスタンスへのセキュアな接続 |


ネットワークACLを利用してサブネット内のリソースと通信する際は特定ポート番号に加え、エフェメラルポートの設定も必要

:::note info
エフェメラルポート（32768-65535）：IPアドレスを用いた通信を行うため、プロトコルスタックが事前に定義されている範囲内から自動的に割り当て、一時的に使用するポート
:::

セキュリティグループとネットワークACLはどちらか一方ではなく、目的や利用状況に応じて併用することで、よりセキュアな環境が実現できる。

# Route 53
- AWSが提供する __マネージド型DNSサービス__
- 権威DNSサーバーで、ポート53で動作することからRoute 53と呼ばれる
- IPアドレスを読みやすいURLに変換して対応づけて名前解決を行う
- DNSレコードを使ってIPアドレスとドメイン名（URL）を紐づけることで、名前解決とトラフィックのルーティングを実現する
- 主要機能は __ドメイン登録/DNSルーティング/ヘルスチェック__
- ポリシーによるルーティング設定できるのが特徴
- マネージド型サービスなため、ユーザー側で冗長性などを考慮する必要がない
- 100%可用性を保証するSLA
- ドメインを購入/登録/管理するレジストラーとしても機能し、他のレジストラーで購入したドメインを移管することも可能

### 利用方法
利用を開始しドメインを登録すると自動でホストゾーンが自動生成されるため、そこにルーティングを設定していく。
①ドメインを設定
②ドメイン名と同じホストゾーンを自動生成
③ホストゾーンにルーティング方法となるDNSレコードを作成
④トラフィックルーティングを設定

:::note info
DNSレコード：ドメイン名とIPアドレスを紐づけるための情報のこと
:::

### ホストゾーン
ドメインとサブドメインのトラフィックをルーティングするための情報を保持する領域のこと。

#### パブリックホストゾーン
- インターネット上に公開されたDNSドメインのレコードを管理する
- インターネットのDNSドメインに対してトラフィックのルーティング方法を定義
- 通常パブリックホストゾーンを使うことが多い

#### プライベートホストゾーン
- VPCに閉じたプライベートネットワーク内のDNSドメインのレコードを管理する
- VPC内のDNSドメインに対してトラフィックのルーティング方法を定義
- 一つのプライベートホストゾーンで複数のVPCに対応
- VPCが相互アクセス可能であれば複数リージョンのVPCでも同じホストゾーンを利用可能

### 主なDNSレコードタイプについて

| 種類    | 説明                              |
| ----- | ------------------------------- |
| SOA   | ドメインの管理情報を所持してゾーン転送時に情報更新の判断として使用             |
| A     | ホスト名とIPv4アドレスの関連付けを定義              |
| MX    | メールサーバーのホスト名を定義                  |
| CNAME | 正規ホスト名への別名を定義（IPとは紐付けない）                     |
| エイリアスレコード | AWSリソースとの関連付け（CloudFront、ELBなど） |

:::note info
エイリアスレコード：DNSクエリにAWSサービスのエンドポイントのIPアドレスを返すことで、AWSリソースに独自のドメイン名を設定することができるもの
:::

また、エイリアスレコードの主な利用例として、静的サイトホスティングされたS3バケットやCloudFront、ELB、AWS Elastic Beanstalk環境などのサービスに利用されている。

### ルーティングポリシー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763202/6bba7348-768c-4c0e-b937-a487b953a76a.png)

上記に加え、最新の __IPベースルーティング__ ポリシーもある。
これはトラフィック送信元のIPアドレスがわかっている場合に、IPアドレスによるユーザーの位置に基づいてトラフィックをルーティングするもの。


地理的近接性ルーティングはバイアスを調整することで範囲を決めることができる。
バイアスにより地理的な区分けをユーザー側で調整することができる。

位置情報ルーティングを利用して、コンテンツの配布を配信権限がある位置だけにルーティングを制限することができる。

複雑なルーティングポリシー地理的近接性ルーティングを __トラフィックフロー__ により視覚的に設定することが可能になった。

### フェールオーバー構成
システムに障害が発生した場合に代替システムがその機能を自動的に引継ぎ処理を続行する仕組みのこと。

__アクティブ/アクティブ__
- 複数のリソースをアクティブとしてルーティングし、フェールオーバールーティングポリシー __以外__ のルーティングポリシーを設定する（複数リソースが常に稼働）

__アクティブ/パッシブ__
- プライマリーリソースをアクティブなリソースとしてルーティングし、フェールオーバールーティングポリシーを設定する（障害時にセカンダリーへ切り替え）

## DNS名前解決

DNSはドメイン名をIPアドレスに変換する役割をになっており、ネームサーバーとリゾルバによって構成されている。

### 主要コンポーネント
- __ネームサーバー__ ：インターネット上でドメインとウェブサーバーやメールサーバーを結び付けるための名前解決をするサーバー
- __リゾルバ__ ：ドメイン名に対応付けられたIPアドレスを問われた際にドメイン名に関連付けられたネームサーバーを指定して、名前解決を行ってくれるサーバー

クライアント→リゾルバ→ネームサーバー
↓
リゾルバ→クライアント→サイトへリクエストの流れ

>クッキーを介することで、一度問い合わせたものについてはリゾルバを通さなくてもよくなるアクセスできる仕組みとなる