知っておくべき「セキュリティ」基礎

# 導入
現代のデジタル社会において、情報セキュリティはすべての企業や組織にとって不可欠な課題です。
本記事では、情報セキュリティの基本やサイバー攻撃の具体例やセキュリティを強化するための技術・方法について、入門レベルの内容を紹介していきます。

# 情報セキュリティ

情報セキュリティとは、企業や組織の情報資産を「機密性」、「完全性」、「可用性」に関する脅威から保護することを指します。これらの要素は、セキュリティの基本的な柱であり、それぞれ次のように定義されます。

## 機密性
許可されたものだけが情報にアクセスできるようにすることです。
たとえば、パスワードや暗号化を使用して、データの閲覧や操作を制限します。
  
## 完全性
保有する情報が正確で完全であり、不正に改ざんされたり、破棄されたりしないような状態を保持することです。データの変更は許可された方法でのみ行われるべきで、バリデーションやアクセス制御を通じてこれを確保します。

## 可用性
  許可されたものが必要な時にいつでも情報にアクセスできるようにすることです。例えば、サーバやネットワークの冗長化やバックアップの実施により、サービスの継続性を確保します。

# 通信セキュリティ
Webサイトに対してサイバー攻撃による不正アクセスが行われると、重要な情報や顧客情報が流出するリスクがあります。これにより、以下のようなコストやリスクが発生します。

* **被害状況調査費用**  
  攻撃によって生じた被害を調査するためのコストが発生します。これは、専門家の雇用や分析ツールの導入などを含みます。

* **顧客からの問い合わせ対応**  
  情報漏洩が発生した場合、顧客からの問い合わせが急増し、その対応に追われることになります。

* **謝罪と損害賠償**  
  顧客や取引先への謝罪と、場合によっては損害賠償を行う必要があります。

* **システム修復・復旧**  
  攻撃によって損なわれたシステムやデータを復旧するための作業が必要です。これは、多大な時間とリソースを要することがあります。

* **企業のイメージダウンや機会損失**  
  セキュリティインシデントによって、企業のブランドイメージが低下し、ビジネスチャンスを失う可能性があります。

# 信頼境界

信頼境界とは、セキュリティ的に信頼する範囲としない範囲の境界を指します。
これにより、ネットワークやシステムの安全性を管理します。

* **信頼する範囲**  
  スイッチやルータなどの管理者により管理できるネットワーク部分。
  この範囲では、デバイスや通信のセキュリティ設定を管理者がコントロールできます。
　
* **信頼しない範囲**  
  クライアントPCなどのエンドユーザが所持する部分。
  ユーザーが自由に設定やインストールを行えるため、セキュリティリスクが高まります。

管理者がコントロールできる範囲か否かという観点が重要となります。

# RASIS

RASISは、システムやアプリケーションの信頼性、可用性、保守性、保全性、安全性を評価するための重要なフレームワークです。これらの要素の英語の頭文字をとったものがRASISになります。それぞれの要素は、システムの設計、運用、管理において重要な役割を果たします。
以下に、各要素について詳細に説明します。

### Reliability（信頼性）

**信頼性**は、システムやアプリケーションが故障せずに正しく動作し続ける能力を指します。信頼性が高いシステムは、予期しない障害やエラーが発生する確率が低く、正常に機能し続けます。信頼性の向上として以下の方法が挙げられます。

- **冗長化**  
  システムの重要な部分に複数のバックアップを持たせることで、1つが故障しても他が機能するようにします。データの複製や冗長ネットワーク構成などが考えられます。
  
- **フェイルオーバー**  
  メインシステムが故障した場合に、すぐにバックアップシステムに切り替える仕組みを構築します。これにより、ダウンタイムを最小限に抑えることができます。
  
- **監視とアラート**  
  システムの状態を常に監視し、問題が発生した場合に迅速に通知を受け取れるようにします。これにより、早期の障害発見と対処が可能になります。

### Availability（可用性）

**可用性**は、システムやアプリケーションがユーザーによって利用可能な状態をどれだけ維持できるかを示します。可用性の高いシステムは、ユーザーの要求に対して迅速に応答し、サービスの停止時間が少ないことが求められます。可用性を確保するための方法には次のようなものが挙げられます。

- **高可用性クラスタ**  
  複数のサーバを連携させ、1台が故障しても他のサーバが引き継いでサービスを提供できるようにします。
  
- **ロードバランシング**  
  負荷分散装置やソフトウェアを使用して、複数のサーバに処理を均等に分散し、個々のサーバにかかる負荷を軽減します。
  
- **バックアップと復元**  
  定期的なデータのバックアップを行い、障害が発生した際には迅速にデータを復元できるようにします。

### Serviceability（保守性）

**保守性**は、システムやアプリケーションを維持、管理しやすいかどうかを示します。保守性が高いシステムは、問題が発生した際に迅速に対応でき、また、システムの更新や機能追加が容易です。保守性を向上させるための考慮点は以下の通りです。

- **ドキュメント化**  
  システムやアプリケーションの構造、設定、運用手順を詳細に記録し、問題が発生した際や新たなスタッフが参加した際に迅速に対応できるようにします。
  
- **モジュール化設計**  
  システムを小さなモジュールに分けて設計することで、特定のモジュールに問題が発生した場合でも、他の部分に影響を及ぼさずに修正が行えます。
  
- **自動化ツール**  
  システムの管理作業や障害対応を自動化するツールを導入することで、保守作業の効率化を図ります。

### Integrity（保全性）

**保全性**は、データやシステムが正確で改ざんされていない状態を保つ能力を指します。保全性が確保されているシステムは、不正な変更やデータの損失がなく、信頼性の高い情報を提供します。保全性を維持するための対策には次のものがあります。

- **入力バリデーション**  
  ユーザーから入力されるデータを適切にチェックし、不正なデータや予期しない形式のデータがシステムに入らないようにします。
  
- **暗号化**  
  データを暗号化することで、データが不正に読み取られたり改ざんされたりするのを防ぎます。
  
- **監査ログ**  
  システムの操作やデータの変更履歴を記録し、問題が発生した際に誰がどのような操作を行ったかを確認できるようにします。

### Security（安全性）

**安全性**は、システムやアプリケーションが不正アクセスから保護されているかどうかを示します。安全性の高いシステムは、外部からの攻撃や内部からの不正な操作からデータやシステムを守ります。安全性を確保するための対策には以下のようなものがあります。

- **アクセス制御**  
  誰が何にアクセスできるかを明確に定義し、認証や認可の仕組みを導入します。
  
- **セキュリティパッチの適用**  
  システムやアプリケーションに対して定期的にセキュリティパッチを適用し、既知の脆弱性を修正します。
  
- **侵入検知システム（IDS）と侵入防止システム（IPS）**  
  不正なアクセスや攻撃の兆候を検出し、必要に応じて通信をブロックする仕組みを導入します。

RASISは、システムの設計と運用においてバランス良く考慮することで、全体の品質とセキュリティを向上させるための基盤となります。信頼性、可用性、保守性、保全性、安全性を高めるための取り組みを通じて、堅牢で信頼性の高いシステムを構築しましょう。

# Webアプリケーション攻撃
Webアプリケーション攻撃とは、Webアプリケーションを狙った攻撃手法や脆弱性を利用した攻撃を指します。Webセキュリティ脅威とも呼ばれ、これらの攻撃手法は、Webアプリケーションの設計や実装の欠陥を突くことで、機密情報の漏洩やシステムの不正利用を引き起こすものです。

以下にWebアプリケーション攻撃の例を挙げます。
これらはあくまで例で、これ以外にも数多くの攻撃が存在しています。

## SQLインジェクション

SQLインジェクションとは、DBと連動するWebサイトに対して、外部からの問い合わせや操作を行うプログラムにSQL文を含む文字列を入力し、DBのデータを不正に読み取ったり、改ざんしたり、削除したりする攻撃です。
攻撃者は、SQL文を悪用して、アプリケーションが意図しない操作を行わせます。

## スクリプトインジェクション

スクリプトインジェクションとは、WEBサーバーにスクリプトを含むリクエストを送信して、ページ内にスクリプトを挿入する攻撃の総称です。SQLインジェクションは問題のあるSQLを、スクリプトインジェクションは問題のあるスクリプトを**挿入(インジェクト)** する攻撃です。この攻撃は、ユーザーのブラウザでスクリプトを実行させ、不正な操作や情報漏洩を引き起こします。

## クロスサイトリクエストフォージェリ (CSRF)

クロスサイトリクエストフォージェリ（CSRF）とは、ユーザが会員サイトにログインした状態で偽サイトを閲覧すると、ユーザのログインしている会員サイトへ悪意のあるリクエストを送信する攻撃です。以下は、この攻撃の流れの例になります。

1. 攻撃者が事前に攻撃用の偽サイトを用意しておきます。
2. ユーザーがSNSサイトなどにログインしている状態で、攻撃者が作成した偽サイトを閲覧します。
3. その時偽サイトに仕込まれた機能によって、ユーザーがアクセスするつもりのないSNSサイトへ強制的にアクセスされ、コメントを書き込まれる。

## OSコマンドインジェクション

OSコマンドインジェクションとは、ユーザからデータや数値入力を受けるWebサイトなどで、パラメータにOSへの命令文を紛れ込ませて不正操作する攻撃です。
攻撃の流れは次の通りです。

1. 攻撃者がWebアプリケーションに攻撃パターンを入力します。
2. Webアプリケーション内で入力値とともに**コマンド文字列**が構成されます。
3. コマンド文字列がWebサーバのシェルにおいて解釈されます。
4. 3で解釈されたコマンド(開発者が意図しないコマンド)が実行されます。

## DoS/DDoS攻撃
DoS (Denial of Service attack)とはサイトやサーバに大量のデータを送り付ける攻撃です。トラフィックが増大し、負荷に耐えられなくなったサーバやサイトをダウンさせることを狙います。

DoS攻撃にはさまざまな種類が存在します。
その一つにDDoS (Distributed Denial of Service attack)というものがあります。

DDoS攻撃とは、トロイの木馬などのマルウェアを使って複数のマシンを乗っ取った上で、DoS攻撃を仕掛ける攻撃手段。複数のIPから攻撃するため、より大きな負荷をかけることができます。

# セキュリティ強化の技術
ネットワークやシステムに対する不正アクセスや攻撃から保護するためのセキュリティ技術が存在します。これらの技術の例を紹介します。

## IDS/IPS

### IDS (Intrusion Detection System)
**IDS（Intrusion Detection System）** は、不正侵入や攻撃の兆候を検知し、警告を発するためのシステムです。IDSは、ネットワークやシステム内で発生する通信や活動を監視し、異常や攻撃のパターンを検知します。検知された場合には、管理者に通知することで早期の対応を促します。ネットワーク型は通信パケットを、ホスト型はサーバ上の受信データやログを監視します。

### IPS (Intrusion Prevention System)
**IPS（Intrusion Prevention System）** は、不正侵入や攻撃を検知し、積極的に防御するシステムです。IPSは、IDSの機能に加えて、検出された脅威に対して自動的に対策を講じることができるため、攻撃を未然に防ぎます。IDSは防御措置を取りません（管理者が気づいてからの対処になる）が、IPSはIDSの機能に加えて、検出された脅威に対して自動的にトラフィックの遮断などの対策を講じることができるため、攻撃を未然に防ぎます。

### WAF (Web Application Firewall)
**WAF（Web Application Firewall）** は、Webアプリケーションに対する特定の攻撃を防御するためのファイアウォールです。ユーザーからの入力を受け付けたり、リクエストに応じて動的なページを生成したりするWebサイトを不正な攻撃から守ります。WAFは、SQLインジェクションやクロスサイトスクリプティング（XSS）などの攻撃を検出し、ブロックすることができます。


## 終わりに
情報セキュリティは、単なる技術的な課題にとどまらず、企業の信頼性や社会的評価に直結する重要なテーマです。本記事で紹介したセキュリティの基本概念や防御技術は、現代のサイバーリスクに対応するための基礎知識として役立ちます。情報セキュリティへの理解と実践を深め、より安全な環境を構築しましょう。