ファイアウォールの役割/OSI参照モデルまとめ

ファイアウォールについて深堀したので、いろいろなサイトを参考にさせて頂き、まとめてみました。

参考記事
[Firewall（ファイアウォール）とは](http://www.sql-master.net/articles/SQL1616.html)
[ファイアウォールの種類を詳しく解説](https://www.fenet.jp/infla/column/network/%E3%83%95%E3%82%A1%E3%82%A4%E3%82%A2%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AB%E3%81%AE%E7%A8%AE%E9%A1%9E5%E3%81%A4%EF%BD%9C%E6%B3%A8%E6%84%8F%E7%82%B9%E3%82%84%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%AB/)
[セキュリティの基本！](https://www.shadan-kun.com/blog/measure/325/)
[ファイアウォールの機能](https://www.rworks.jp/system/system-column/sys-entry/21277/)



| 項目| 
| -------- |
| 1.まずはファイアウォールをざっくり理解    |
| &nbsp;&nbsp;1-1.パケットフィルタリング型|
| &nbsp;&nbsp;1-2.アプリケーションゲートウェイ型|
| &nbsp;&nbsp;1-2.サーキットレベルゲートウェイ型|
| 2.用語理解    |
| 3.OSI参照モデルの階層理解  |


## ～まずはざっくりと～
**ファイアウォール**とは、防火壁の事で、インターネットの通信を行う際、外部からの攻撃を阻止したり、内部からの望まない通信を防いだりできるセキュリティシステムです。

![](https://i.imgur.com/2QKV2RA.png)

## ～どうやって？？～

ファイアウォールの種類には、大きく分けて3種類あります。

### 1. パケットフィルタリング型

通信を**パケット単位で解析**して、IPアドレスやポート番号を基にパケットの通信可否を判断する一般的なセキュリティ対策方法。

- メリット：通信の条件をあらかじめ設定しておくので、許可のないアクセスを効率良く判断できる!
- デメリット：クライアント側とサーバー側両方のファイアウォールで該当のポート番号の許可をしなくてはならない。

![](https://i.imgur.com/MunvuST.png)


### 2. アプリケーションゲートウェイ型
 
ポート番号で制御するのではなく、データの中身まで精査して通信を制御する方法。「プロキシ」と呼ばれる中継のプログラムを用意して、プロキシがクライアントからの通信を受け、外部にある目的のサーバに対する接続を行うことで、クライアントとサーバを仲介する仕組み。

- メリット：不正なデータやコマンドがないかを細かくチェックすることができる。
- デメリット：細かいチェック機能をアプリケーションが担うために、負荷が高くなってしまい、動作が重くなるのが難点。

![](https://i.imgur.com/IY9nZay.png)


### 3. サーキットレベルゲートウェイ型
パケットフィルタリング型を進化させたファイアウォール。
フィルタリングだけでなく、通信を許可するポート指定や制御を行うことができるタイプ。

- メリット：**コネクション単位で通信可否を判断する**ため、パケットフィルタリングでは防げない送信元IPアドレスの偽装を防ぐことが可能。
- メリット：使用するアプリケーションごとに設定が可能なため、特定のシステムやソフトにだけ通信を制御するという使い方もできる。


## ～用語理解～
- パケット
⇒コンピューターでの通信で、データを小さく一定のサイズに分割して送ることを「パケット通信」と言い、その分割されたひとつひとつのデータのことを「パケット」と言う。 

- プロキシ
⇒プロキシとは、プロキシサーバーを指し、セキュリティの確保や外部のインターネットへの接続を高速化するなどの目的で設置される中継サーバーのこと。

- ポート番号
⇒ネットワークとパソコンの間にあるドア（ポート）に割り振られている識別用の番号のこと。プロトコル、IPアドレス、ポート番号はまとめると、「どのような方法」で「どこ」の「何号室」に通信をとるのか？という形にいいかえることが出来る。
(詳しくは「[ポート番号とTCP/UDPの理解](https://qiita.com/mika777/items/93eef4bafb2ce7b033a7)」参照)


- コネクション単位
⇒通信する際に、信頼性を高めるために送信元＆宛先双方で状況を確認しあいながら通信する方式の事。


***
## ～OSI参照モデルの階層理解～

参考記事
[OSI参照モデルとは｜ファイアウォールの種類をわかりやすく解説](https://it-trend.jp/firewall/article/60-0003)
[初心者でもわかる簡単 AWS 用語解説](https://www.wafcharm.com/blog/osi-model-for-beginners/)

上記で、代表的なファイアウォールの種類を3つ挙げましたが、ファイアウォールは、動作する階層（レイヤー）によって分類されているので、ネットワーク階層の概念を詳しく見ていきます。
なお、OSI参照モデルとは、通信方法を統一する為に、ネットワークを7つの階層に分けた規格の事です。

ファイアウォールで通信を制御している階層は、レイヤー3～7までですが、
レイヤー1から順番に見ていきましょう。
また、各レイヤーによってデータの単位も異なるので合わせて見ていきます。

![](https://i.imgur.com/DjdMqnb.png)


### 【レイヤー1：物理層】　
**データの単位　⇒　ビット**

ハードウェアに最も近い部分で、コネクタの形状、ケーブルの種類などの物理的な要素を決めることで、さまざまな機器同士でデータのやり取りが可能となります。電気信号やアナログ信号による通信を行っています。


### 【レイヤー2：データリング層】
**データの単位　⇒　フレーム**

ネットワーク内にある通信相手のコンピューターを判断し、データのやり取りをサポートする役割を担っています。物理アドレスと呼ばれるMACアドレスを元に、データの送信元を特定しています。
（MACアドレスとは製造番号のようなもので、ネットワークで使う機器それぞれに割り当てられます。IPアドレスが、「最終的な届け先」を特定する際に使われるのに対し、MACアドレスは「次に渡す先」を特定する際に、使われます。）

### 【レイヤー3：ネットワーク層】
**データの単位　⇒　パケット**

通信相手が異なるネットワーク間にあってもデータのやり取りを可能とするのが、ネットワーク層の役割です。
論理アドレスと呼ばれるIPアドレスを元にネットワークを識別し、転送に必要な情報を付け加えて定義します。

### 【レイヤー4：トランスポート層】
**データの単位　⇒　セグメント**

データ転送の内容を制御することにより、信頼性を確保するために定められています。主にデータ通信のエラーの訂正や、大きなデータを小さいデータに分割する役割があります。

### 【レイヤー5：セッション層】
**データの単位　⇒　データ**

プログラム間で行われるデータ通信の接続手順を規定していて、
主に通信プログラム間の通信の確立から維持、終了までの規定を定めています。

### 【レイヤー6：プレゼンテーション層】
**データの単位　⇒　データ**

文字のコードや圧縮形式などをチェックし、データを共通の形に変換しています。ツールによって文字コードが違っても正しく表現されているのは、この階層で変換処理を行っているためです。
異なるコンピューターでも同じ内容を表示できるようにサポートし、相互の意思疎通をさせることが役割です。


### 【レイヤー7：アプリケーション層】
**データの単位　⇒　データ**

人間の行動に最も近い位置にあるのが、このレイヤー7です。
Webプラウザに入れた情報から検索結果を表示したり、メールアドレスに合わせて送信したりといった、アプリケーションレベルでの処理機能を持つのが特徴です。
人間の求める結果をネットワークで処理できるように変換することが役割となります。