（初心者向け）一般教養セキュリティ知識まとめ

# （初心者向け）一般教養セキュリティ知識まとめ
エンジニア or 非エンジニアでも最低限このぐらいのセキュリティ知識は欲しいよね〜と言う内容を超ざっくりまとめました。

浅く広くセキュリティについてまとめた内容なので、もっとゴリゴリの深いセキュリティ知識が知りたいのだ！と言う人は[徳丸本](https://amzn.to/40PVRkV)がオススメになります。

■ 対象読者

```
IT系企業に勤める人全員
```

参考図書：　[図解まるわかり セキュリティのしくみ ](https://amzn.to/40TCdou)

# セキュリティの基本的な考え方
セキュリティの基本的な考え方について

## 攻撃者の目的

セキュリティ攻撃者の目的の大半は**金銭目的**になります。

しかし、稀にただのイタズラなどの愉快犯も少なからず存在します。

![スクリーンショット 2020-09-27 0.29.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/a66fda82-1da3-c6bc-7feb-101a55ac70c6.png)

```
フィッシング詐欺攻撃 -> 不特定多数に向けての金銭目的に行う
標的型攻撃 -> 特定対象に向けての金銭目的に行う
ウィルス（スパムメール） -> 不特定多数に向けてのイタズラ
WEBサイトの改ざん -> 特定対象に向けてのイタズラ
```

## セキュリティに必要な考え

ヒトモノカネに加えて今は**情報**も大切な資産です。

脅威やリスクを理解して、適切に情報を守る仕組み化をすることが大事。

## 脅威の分類

セキュリティ脅威の種類は主に３つです。

```
人が原因になる人的脅威
サイバー攻撃による技術的脅威
情報資産が破壊される物理的脅威
```

## 内部不正が起きる理由
情報漏えいの原因の1つである、従業員による内部不正が起きる理由は**企業のアクセス権限**の曖昧さが原因。

内部不正を起きさせないためには以下が重要

```
1. データの保存先を限定する
2. データへのアクセス権限を決める
3. データの価値を従業員に理解させる
```

## セキュリティの三大要素

```
1.機密性
2.完全性
3.可用性
```

機密性とは**許可された対象者のみが利用できる設計**されていることを指します。
完全性とは**改ざんや破壊が行われてない状態**を指します。
可用性とは**障害は発生しにく、障害が発生しても復旧までの時間が短い状態**を指します。

## 三要素以外の特性
基本的にセキュリティの三大要素を覚えてればOKだけど最近では３要素に加えて以下も含まれきている。

```
1.真正性
2.責任追跡性
3.否認防止
4.信頼性
```

## コスト、利便性、安全性の考え方

セキュリティをガチガチにしたとしても、ビジネス面での利益は生みません。
ただ、セキュリティがガバガバでお客様情報などが盗まれると損害賠償問題に発展します。

「情報が漏えいするリスク」と「情報を守るコスト」の**バランスを考えてセキュリティ対策**することが大事です。

## 適切な人にだけ権限を与える

同じ会社内であっても、ファイルやデータベース、ネットワークなどに誰もがアクセスできてよいものではありません

**適切な人にだけアクセス権限を与えることで情報を守ることが出来ます。**（権限を与える場合は必要最小限の人に止めることが大事です）

ちなみに特定の個人を識別することを認証と言います。


アクセス権限と認証の意味がごっちゃにならないようにしましょー


## パスワードを狙った攻撃

パスワードを狙った攻撃例

```
1.総当たり攻撃
2.辞書攻撃
3.パスワードリスト攻撃
```

## 使い捨てのパスワードで安全性を高める

最近の銀行とかでよく使われるワンタイムパスワード（一度きりの使い捨てパスワード）を利用すれば安全性を高めることが出来ます。

## 生体認証
最近では生体認証をパスワード代わりに利用するサービスも増えてきました。

生体認証例

```
1. 指紋認証
2. 静脈認証
3. 顔認証
```

iPhoneなどで指紋認証するのもこの生体認証の一つです。

顔見てピッと認証されてドアがオープン！みたいなSF映画みたいな話が現実化されてます。

# ネットワークを狙った攻撃
インターネットに接続するということはネットワークを通して外の世界と通信することになります。

外の世界には悪いウィルスや攻撃者もたくさんいます、そういった悪いウィルスや攻撃者はネットワークを通して攻撃してくるので要注意です。

## データの盗み見

入力した個人情報を**ネットワーク上で盗み見されることを盗聴**と呼びます。

![スクリーンショット 2020-09-29 21.13.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/1fbdcd77-a1f0-30bb-d984-6016d5cfa190.png)

これを防ぐには以下のような対策が重要です。

```
1. 無線LANの暗号化
2. データの暗号化
```

## データの信頼性を脅かす攻撃
伝送途中のデータを書き換えられてしまうことを**改ざん**と呼びます。
![スクリーンショット 2020-09-29 21.17.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/2b99c7b6-dbc0-b411-cb39-1f7efb228ff4.png)

## なりすまし

IDやパスワードが漏れてしまうと、本人以外でもサービスにログインできてしまいます。

このように他人のふりをして活動することを**なりすまし**と言います。

![スクリーンショット 2020-09-29 23.18.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/20876ef7-00da-762a-1e75-9cd9dbfbf981.png)

たまに古い友人からアマゾンギフト券購入して〜みたいな連絡が来たのですが、今考えればあれは友人のLINEアカウントが乗っ取りされたなりすまし詐欺だったのですね。

## 攻撃のための裏口を設置
攻撃者が外部からサーバを攻撃し、侵入に成功したとします。

このとき、侵入が成功してそれで終わりではありません。侵入に気づかれていない場合はもちろん、気づかれた場合でも、その後に新しい情報を求めて何度も侵入することを攻撃者は考えます。

そのため、次回以降の侵入を簡単にするために、バックドアと呼ばれるソフトウェアなどを攻撃者が導入することがあります。

バッグドアが設置されてしまうと、既存の設定やソフトウェアが改ざんされてしまう恐れがあります。

## 負荷をかけるタイプの攻撃

**一時的に大量の通信を発生させることにより、対象のネットワークを麻痺させてしまう攻撃は、DoS（DenialofService）攻撃と呼ばれています。**

DoS攻撃は1台のコンピューターからの攻撃になりますが、多数のコンピューターが１台のコンピューターに攻撃を行うことをDDoS攻撃と言います。

最近ではDoS攻撃ではなく、DDoS攻撃が多い印象です。（複数のコンピューターから攻撃することで犯人の特定を難しくする）

## 攻撃をかけるタイミング

攻撃者がネットワークを通して攻撃するタイミングは以下のパターンが一般的です。

```
1. 侵入：社内のPCにウイルスを感染させ
2. 拡大：社内のネットワークに感染したPCを増やす
3. 調査：機密情報を持っていそうなPCやサーバを探す
4. 取得：機密情報を抽出して、外部に送信する
```

ウィルスを入り口の段階で防ぐことを入り口対策、外部に機密情報などを漏らさないように対策することを出口対策と言います。

入口や出口対策など段階別にセキュリティ対策をすることを多層防御と呼んだりします。

![スクリーンショット 2020-10-03 12.06.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/0c1ec7c0-163b-082a-aac0-a6c698fed1a6.png)


OSI参照モデルと防御対策の比較表

![スクリーンショット 2022-03-06 14.57.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/1e2b3ed9-69fc-efbd-5b1d-a081be35c0dc.png)

## 不正アクセス対策の基本
インターネットと社内ネットワークの境界に設置して、社内ネットワークの門番の役割を担うネットワーク機器をファイアウォールと呼びます。

パケットフィルタリングは、送信元や宛先のIPアドレスやポート番号をチェックして、通信を制御する機能です。

![スクリーンショット 2020-10-03 12.08.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/4cc690ae-d29b-e617-ed94-364ffbe88237.png)


## 通信の監視と分析
ネットワークを流れる通信内容を調べるためにパケットを採集することをパケットキャプチャと呼びます。

僕の周りのエンジニアは趣味でパケットキャプチャをしており、中身を確認して遊んでたりします。（色んな意味ですごいですよねw）

パケットキャプチャをすることで、不審な通信がないかを確認します。

ちなみにパケットキャプチャでよく利用されるツールはWiresharkです。

## 外部からの侵入を検知、防止する
外部からの不正なアクセスを防ぐためにはファイアウォールを使いますが、正常の通信と区別できないことがあります。（例えば、Webサーバーに大量のアクセスが短時間に来た時とか）

このような方法で**外部から攻撃を受けたことを検知するために、IDS（IntrusionDetectionSystem：侵入検知システム）が使われます。（監視カメラみたいなイメージ）**

IDSは侵入を検知するだけなので、対策が後手に回りがちです。発覚して対処するときにはすでに機密情報が流出した後かもしれません。

**一方IPSは不正な通信がIPSを通過しようとした場合に検知し、その通信を遮断します。（ただ、誤検知の場合はネットワーク途切れる恐れあり）**

ファイアウォールやIDS／IPS、ウイルス対策ソフトなどを個別に導入すると、その運用には大きな負荷がかかります。そこで、これらを1つの製品としてまとめたのがUTMというサービスになります。

ちなみに、僕はエンジニアになる前の会社ではこのUTMを販売する仕事をしてました笑

## ネットワークを分割する

ネットワークには大きく３つの領域があります。

```
1.内部の領域
2.外部に公開する領域
3.インターネットの領域
```

外部に公開する領域には、Webサーバやメールサーバ、DNSサーバやFTPサーバなどがあります。

ただこの辺は、不特定多数からのアクセスを受けるという特徴があります。

このように、インターネットと内部ネットワークの中間に位置する領域をDMZと呼び、緩衝地帯としての役割を果たします。（DMZを使用することで、インターネットなど外部と通信するサーバを内部のネットワークと切り離すことができる）

![スクリーンショット 2020-10-03 12.17.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/c0fc6d80-e911-7977-8c70-57c93c060272.png)

## ネットワークの接続を管理する
事前に登録したPC以外を接続したくないときはMACアドレスフィルタリングします。

そうすることで、登録したPC以外のネットワークを遮断します。

## 安全な通信を実現する
無線でどこでもインターネットを利用できるのは便利ですが、通信を覗き見されたりする恐れがあります。

そこで、無線LANをつなぐ時は暗号化されているかを重要視すべきです。

無線LANの暗号化方式はWPS、WPA、WPA2などがあります。

きになる人はググってみてください。

# ウィルスとスパイウェア
ウィルスの種類について説明します。

## マルウェアの種類

悪意のあるウィルス全般をマルウェアと言います。

もう少し詳しく述べると以下のようなマルウェアがあります。

```
1. 他のプログラムに規制して動作するウィルス
2. 単独で自己増殖するワーム
3. 正常なプログラムであるように偽装して繁殖するトロイの木馬
```

## ウィルス対策の定番

では、どのようにしてウィルス対策すれば良いのでしょうか？

ウイルス対策ソフトのメーカーは、既存のウイルスを収集し、そのウイルスが持つファイルの特徴をパターンファイル（ウイルス定義ファイル）として用意します。

そのパターンと似た動きをした場合にウィルスとして検知します。

なので、パターンファイルは常に最新にする必要があります。

皆さんのPCとかにインストールされている、ウィルス対策ソフトのアップデートはきちんとしましょー（じゃないと、パターンファイルが最新化されないので、最新の攻撃とかに対応できなくなってしまいますー）

## 偽サイトを用いた攻撃

本物のWebサイトを装った偽のWebサイトを用意したうえで、メールなどを使ってそのURLに利用者を誘導し、入力されたIDやパスワードを盗み出す手口をフィッシングと呼びます。

変なメールに送付されているURLを何も考えずに開くのはやめましょう。

![スクリーンショット 2020-10-04 19.07.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/c05c67ef-afb5-0203-aa19-34e6b3670383.png)


## メールによる攻撃や詐欺

受信者の意向を無視して送信されてくるメールは、迷惑メールやスパムメールと呼ばれています。

これ絶対適当にランダムに送ってるやろ！ってメールはスパムメールになります。![スクリーンショット 2020-10-04 19.08.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/7614f4b5-3f9e-c71a-a34c-0bc7023764a9.png)

## 情報を盗む、ソフトウェア

知らないうちに情報が盗まれる攻撃もあります。

```
1. ID、パスワード、写真などを盗むスパイウェア
2. キー入力された内容を盗むキーロガー
```

## 身代金を要求するウィルス
PCにある脆弱性をついて、侵入しPCの中のファイルを勝手に暗号化して元に戻すには身代金を請求するランサムウェアというものがあります。

[ランサムウェア感染の様子](https://www.youtube.com/watch?v=JifixGBUjzU&ab_channel=MBSD)

中小企業などがターゲットにされるケースが多いです。

# 脆弱性の対応
脆弱性の対応方法について

## バグと脆弱性の違い

ちなみに不具合と脆弱性の違いは何でしょうか？

不具合 -> 本来できるはずの処理ができない

脆弱性 -> 通常の操作は問題ないが、攻撃者の視点では不正な操作ができる

## 脆弱性の対応方法

セキュリティホールを発見した場合は開発元が修正プログラム（セキュリティパッチ）を発表するので、その場合はすぐに最新状態に更新することが大事です。

## ゼロディ攻撃

脆弱性が見つかり、修正プログラムが提供される前に攻撃することをゼロディ攻撃と言います。

## SQLインジェクション
データベースに対して、データの更新、取得、削除などの操作を行う処理をSQLと呼びますが、そのSQLを不正に操作してデータの改ざんや、情報漏洩を狙う攻撃をSQLインジェクションと言います。

[【初心者向け】SQLインジェクションの概要と対策方法](https://www.kagoya.jp/howto/network/sql-injection/)

## クロスサイトスクリプティング

利用者が入力したHTMLなどの構文をそのまま出力する実装をすると悪意のあるプログラムを他の利用者の環境で実行させることが出来てしまい、情報漏洩につながります。

![スクリーンショット 2020-10-05 16.04.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/5037a096-af78-7746-8884-8e98630081b2.png)

## クロスサイトリクエストフォージュエリ
掲示板や問い合わせフォームなどを処理するWebアプリケーションが、本来拒否すべき他サイトからのリクエストを受信し処理してしまう脆弱性をクロスサイトリクエストフォージュエリと呼びます。

![スクリーンショット 2020-10-05 16.05.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/7d4c9aaa-79fa-1466-1dfe-f517353b8805.png)


クロスサイトスクリプティングとクロスサイトリクエストフォージェリの違いがよーわからない人
↓
[3分でわかるXSSとCSRFの違い](https://qiita.com/wanko5296/items/142b5b82485b0196a2da)

## セッションハイジャック
セッションハイジャックとは利用者がWEBアプリケーションにログインした時に発行される「セッションID」を攻撃者が不正に取得することで、利用者になりすます攻撃のことです。

パスワードを知らなくても他人になりすましすることが出来ます。

セッションハイジャックの手口として有名どころ

```
1. HTTP通信で暗号化せずに通信内容を盗み見される
2. クロスサイトリクエストフォージェリ
```

## Webアプリケーションを典型的な攻撃から守る
Webアプリケーションを狙った攻撃から守るためのファイアウォールのことをWAF(Web Application Firewall)と言います。

WAFは通信内容を確認して攻撃と判断されたものを遮断します。

![スクリーンショット 2020-10-06 19.18.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/f50cb95d-fc9e-608a-ee86-7c5c04ff96c9.png)

## 開発者が気をつけるべきこと
僕たちプログラマーはソースコードに脆弱性がないかを気をつけることだけに注目してしまいがちですが、ソフトウェアの開発は「設計」「実装」「テスト」「運用」などの工程あります。

それぞれの工程でセキュリティホールがないかを確認することが大事です。

![スクリーンショット 2020-10-06 19.20.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/14e93b76-6cb8-6d8c-ec9e-36ada4715f6e.png)


# 暗号・署名・証明書とは

通信の暗号化方法は沢山あります。

暗号化ってそもそも何？という人はこの動画おすすめです！
↓
[暗号化とは](https://www.youtube.com/watch?v=_GmM2dQDMr4&ab_channel=%E3%82%8F%E3%81%8F%E3%82%8F%E3%81%8F%E3%82%A2%E3%82%AB%E3%83%87%E3%83%9F%E3%83%BC)

## 共通鍵暗号
共通鍵暗号とは暗号化と副業に同じ一つの鍵を使って暗号化する手法です。

暗号には[シーザー暗号](https://www.youtube.com/watch?v=JR25c0seApM&ab_channel=%E3%82%8F%E3%81%8F%E3%82%8F%E3%81%8F%E3%82%A2%E3%82%AB%E3%83%87%E3%83%9F%E3%83%BC)を利用してます。

共通鍵暗号では簡単に実装でき、暗号化と復号の処理を高速に実行できます。

![スクリーンショット 2020-10-08 17.27.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/9fb45646-f459-bdcd-7f75-7a4536d16cf9.png)

## 公開鍵暗号方式
共通鍵をどうやってお互いに伝えれば良いのか？といった問題を解決した暗号化方式が公開鍵暗号です。（この暗号化の方が共通化暗号より一般的なイメージ）

この動画分かりやすいです。
↓
[公開かぎ暗号方式（暗号化）](https://www.youtube.com/watch?v=05x2eFFGOTA&ab_channel=%E3%82%8F%E3%81%8F%E3%82%8F%E3%81%8F%E3%82%A2%E3%82%AB%E3%83%87%E3%83%9F%E3%83%BC)

![スクリーンショット 2020-10-08 17.31.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/dc92be19-8b5c-ba88-a4a0-fa834390838a.png)

## 証明書
公開鍵は公開された鍵が正しい相手の鍵であるという保証がありません。

田中さんが佐藤さんになりすまして、佐藤さんの公開鍵を公開しても、それが正しいかを判断できないです。

そこで、なりすまし防止のために公開鍵を管理する認証機関があります。

そこで証明書が発行されると、安心して取引することができます。

この動画分かりやすいです。
↓
[公開かぎ暗号方式（署名）](https://www.youtube.com/watch?v=RXVzMB03qnA&ab_channel=%E3%82%8F%E3%81%8F%E3%82%8F%E3%81%8F%E3%82%A2%E3%82%AB%E3%83%87%E3%83%9F%E3%83%BC)

![スクリーンショット 2020-10-08 17.35.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/ea9aa663-d103-cf7d-3247-f6cc81249375.png)

## ハイブリット暗号
共通鍵は高速に処理できるけど、安全な配送や鍵の管理に難点がある。

公開鍵暗号は鍵の配送は安全だけど、処理が重い。

どちらも長所と短所がありますが、それぞれの長所を生かし、短所を補うために、これらとハッシュなどを組み合わせたハイブリット暗号が開発されました。

例えば、共通鍵の鍵をネットワーク経由で渡す、通信相手が正しいかを判定する認証用のデータをやり取りするといった重要なデータの受け渡しに公開鍵暗号を、実際に送信する大きなデータの暗号化は共通鍵暗号を、データの完全性の確認にハッシュなどを利用します。

![スクリーンショット 2020-10-08 17.43.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/e4ac1180-f40b-5bbb-4ce2-2a9699317316.png)


## HTTPS通信
WEBサイトがSSLやTLSに対応指定いる場合、HTTPSプロトコルが使われており、「https」で始まるURLに加え、会議のアイコンが表示されます。

こんな感じ
↓
![スクリーンショット 2020-10-10 16.41.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/4471800d-7861-8460-c228-e17339de7d68.png)

機密情報（クレジットカード情報とか）を送る時は必ず鍵マークついてるかは要確認です。

# 組織でセキュリティ対策
会社でできるセキュリティ対策方法について

## セキュリティポリシー
企業の情報セキュリティーに関する考え方をまとめたものを情報セキュリティーポリシーと呼びます。

セキュリティポリシーを定めて、それにしたがってセキュリティ運用することが大事です。

![スクリーンショット 2020-10-12 14.42.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/7c518d64-cf19-4159-5c2e-d714b2203b7f.png)


一旦、セキュリティポリシーを決めた後も定期的にPDCAサイクルを回し、常に改善していくことが大事です。

## 人が問題となるセキュリティリスク

盲点なのが、セキュリティ漏洩の原因が人にあるケースが多いということです。

ガチガチにセキュリティ対策しても人経由でセキュリティ問題につながることが多いです。

■ 人が原因となるセキュリティリスク

```
1. ソーシャルエンジニアリング
2. 紛失、盗難
3. 誤操作
4. SNSへの投稿
```

対策としてはeラーニングの実施、集合研修などでセキュリティリテラシーをあげることです。

## URLフィルタリング
インターネット上には危ないサイトが沢山あります。

昔のおじさん世代の人は勤務中にエロサイトをみて、問題になったとかよく聞いた話です。

そういったサイトにアクセスしてしまうと、閲覧するだけでマルウェアに感染してしまうケースがあります。

そうったサイトから従業員がアクセスできないようにする一つとしてURLフィルタリングがあります。

URLフィルタリング方法は２種類あります。

```
1. ブラックリスト方式
2. ホワイト形式
```

![スクリーンショット 2020-10-12 14.50.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/9332a1cc-cd84-a573-f564-da64c8767a51.png)

## ログ管理
企業で何かアクシデントがあったときに原因追求するためにログ管理することが大事です。

ログを分析することで、「いつ」「どこで」「誰が」「何を」行ったのかが明確になります。

またログの効果として以下の３つがあると思います。

```
1. 不正抑止
2. 予兆検知
3. 事後調査
```

# 終わり
非エンジニアでもこれくらいは知っておいた方が良いレベルのセキュリティ知識をまとめました。

まあ、一番良いのは各個人が最低限のセキュリティ知識をつけることだと思います。