ネットワークセキュリティについてまとめてみました。

#はじめに
こんにちは、山田です。
今回は、ネットワークセキュリティについてまとめてみました。

#ファイアウォール
ファイアウォールは、ある特定のポリシーやフィルタリングルールに基づいて、パケットの通過・拒否・破棄を行うネットワーク機器である。
OSI参照モデルのネットワーク層(第3層)、トランスポート層(第4層)に相当するパケットの通信を制御する。

【主な機能】
**1.フィルタリング機能：宛先および送信元のIPアドレス、TCP/UDPポートの番号江尾用いてパケットを選別する。**
**2.監査用ログ機能：パケットの処置内容をログに記録する。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1096361/a2fe80fd-39a0-7352-c33a-dd7a40dfc8fd.png)


#侵入検知システム・侵入防御システム
###IDS(Intrusion Detection System)「侵入検知システム」
通信を監視し、攻撃パターンやシグネチャ（ウイルス定義データベースに登録された項目のこと）に基づいてネットワーク上の攻撃を検知する。
###IPS(Intrusion Prevention System)「侵入防御システム」
検知したものを遮断する機能を持つ。

【検知方法】
**パターンマッチング：シグネチャを利用し、マッチングするものを検知する。**
**アノーマリ検知：通常とは異なる状態を検知する。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1096361/f580dba1-7ce4-0ae5-934e-5e855c48132c.png)



#WAF(Web Application Firewall)
WEbアプリケーション層のプロトコルであるHTTPなどの通信内容を分析して、攻撃を検知防御する。

代表的な攻撃３つ以下に記載する。
##XSS(Cross Site Scripting)攻撃
動的なWebアプリケーションにおいて、利用者の入力・出力のチェックをしていないことで悪意のあるスクリプトが送信され実行されてしまうことである。XSS攻撃のより、改変したページを表示させたり、入力情報を第三者に送信させるように仕込んだりすること可能である。また、クッキーを盗み出すことも可能であり、攻撃者が正規利用者に成りすますことも可能である。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1096361/cff4545a-0529-ad9f-4819-e2034dce23be.png)



###XSS攻撃の対策
**エスケープ処理**
XSS脆弱性の原因は、利用者の入力に応じて、Webページを作成する際は、HTMLにおいて特別な意味を持つ「<」「>」「&」などの文字列を、その特別な意味のまま使ってしまうことである。特別な文字ではなく、普通の文字として解釈する必要がある。
変換規則を用いて、変換前の文字列が含まれていたら、変換後の文字列に置き換える。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1096361/c8b6de83-74f8-13be-17fb-fbe722271092.png)


##SQLインジェクション
SQLインジェクションとは、開発者が想定しないSQL文を構成して実行させることにより、Webアプリケーションサーバ、DBMSを不正に実行する攻撃手法である。

SQLインジェクションが及ぼす脅威は主に3つ。
**1.重大な情報の漏洩：DBに含まれるデータがすべて抜き取られる可能性がある。**
**2.重大情報の書き換え：DBデータをもとにWebpeページを作成している場合、Webページを攻撃者の意図通りに書き替えることが可能である。**
**3.認証回避：利用者からのIDとパスワードをDBと突き合わせて認証を行っている場合、SQLインジェクションにより認証を回避することが可能になる。**



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1096361/fc7062e5-d9ce-d941-d4e9-e18e60b2d4ce.png)
①：Webページにて、Yamadaのほかに’A’=‘Aと入力。入力した文字列をクエリ文字列として、
　　Webアプリケーションサーバーに送信される。
②：id の欄に、「 ‘Yamada’ or ‘A’=‘A’ 」が入力される。
③：SQL文は「id=‘Yamada’ もしくわ ‘A’=‘A’が成立していれば、データベースのuserをすべて
　　選択する」となり、データベースのuserからすべての情報が取得できる。
④：データベースのuserに含まれるデータを含めたHTMLページを作成する。



###SQLインジェクション対策

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1096361/d5202103-dd8b-b47b-eb83-8d5a6bf093cf.png)
①：Webページにて、Yamadaのほかに’A’=‘Aと入力。入力した文字列をクエリ文字列として、
　　Webアプリケーションサーバーに送信される。
②：SQL文の雛形を用意しておく。用意しておいたSQL文の雛形と入力値をDBMSに送る。
③：「'」を「"」に変換する。
④：「"Yamada"or"A"="A"」は文字列として解釈されるので、SQL文を実行してもデータは取得できない。


##CSRF(Cross Site Requset Forgeries)攻撃
CSRFとは、攻撃者が用意したドメインのWebサイトの閲覧中に、Webブラウザの利用者の意図に関係なく、別ドメインのWebサイト閲覧中に、Webブラウザの利用者の意図に関係なく、別ドメインのWebサイト上で何らかの操作を行わせる攻撃のこと。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1096361/becde409-e12a-285b-259e-32b895190c54.png)
①：会員制サイトにログイン
②：Cookie送信
③：会員制サイト上で悪意のあるアクションを引き起こすトラップサイトに誘導。
④：悪意のあるアクションを伴うWebページ
⑤：会員サイトにログインしたまま、Webページを取得すると、会員サイトへ退会確認ボタンが押されたのと同じリクエストが会員制サイトのサーバーへ送信される。こうして、知らぬ間に大会処理が行われてしまう。

###CSRF攻撃対策
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1096361/83129a18-4173-4ab8-2dc9-fcd624663966.png)
①：会員制サイトにログイン
②：秘密情報送信
③：会員制サイト上で悪意のあるアクションを引き起こすトラップサイトに誘導。
④：悪意のあるアクションを伴うWebページ
⑤：会員サイトにログインしたまま、Webページを取得すると、会員サイトへ退会確認ボタンが押されたのと同じリクエストが会員制サイトのサーバーへ送信されるが、秘密情報が含まれたいないため退会処理は実行されない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1096361/00f2b1d1-d1d1-9bf0-123a-402e95fc3b17.png)
①：会員制サイトにログイン
②：秘密情報送信
③：会員制サイト上で悪意のあるアクションを引き起こすトラップサイトに誘導。
④：悪意のあるアクションを伴うWebページ
⑤：会員サイトにログインしたまま、Webページを取得すると、会員サイトへ退会確認ボタンが押されたのと同じリクエストが会員制サイトのサーバーへ送信される。
⑥：操作の確認とパスワードなどの再入力を利用者に求める。正しく入力されないと退会処理は実行されない。