Blog Article
Webセキュリティの攻撃に対する装置・対策
ファイアーウォール
ファイアーウォール(Firewall)は、ネットワークやコンピュータシステムを保護するためのセキュリティデバイスやソフトウェアです。主な目的は、不正なネットワークトラフィックやアクセスを防ぎ、許可された通信だけが行われるように制御することです。
パケットフィルタ型ファイアーウォール
パケットフィルタ型ファイアーウォールは、ネットワークトラフィックをパケット単位で検査し、事前に定義されたルールに基づいてパケットを許可またはブロックするセキュリティデバイスです。
以下に、パケットフィルタ型ファイアウォールの基本的な機能や動作について説明します。
パケットの検査
パケットフィルタ型ファイアーウォールは、ネットワークを通るデータパケットを検査します。これは通信の基本単位であるパケットが、どのようなデータを含んでいるかを確認することです。
アドレスやポート番号の確認
パケットフィルタは、送信元や送信先のIPアドレス、および使用されているポート番号などの情報を確認します。これにより、特定の通信を許可またはブロックするための条件を設定できます。
ルールベースの判断
ファイアーウォールは、管理者が設定したルールに基づいて、パケットを通過させるかブロックするかの判断を行います。例えば、「特定のポートを使用する通信は許可」「特定のIPアドレスからの通信はブロック」といった条件が設定されます。
Stateless(状態を持たない)
パケットフィルタは、特定の通信のコンテキストやセッションの状態を保持しません。各パケットは単独で評価され、過去の通信履歴などを考慮しません。
高速な処理
パケットフィルタは、単純なルールに基づいて動作するため、高速にパケットを処理できます。これにより、ネットワークの性能に対する影響が最小限に抑えられます。
一般的な利用例
パケットフィルタは、特定のポートを介した通信の制限や、特定のIPアドレスからの不正なアクセスの防止など、基本的なネットワークセキュリティの要件に対応します。
ただし、パケットフィルタ型ファイアウォールは単純な条件に基づくため、高度なセキュリティ要件やアプリケーション層の制御が必要な場合は、より高度なファイアウォール技術が求められることがあります。
IDSとは
IDS(Intrusion Detection System)は、ネットワークやシステム上で悪意のあるアクティビティや不正アクセスを検知するセキュリティシステムの一種です。IDSは通常、ネットワークトラフィックやシステムログなどを監視し、異常が検出された場合にはアラートを発行します。その主な目的は、未然に攻撃や侵害を発見して対処することです。
以下は、IDSの基本的な機能や動作に関するポイントです。
監視と検知
IDSは、ネットワーク上で発生する通信やシステム上のアクティビティを監視し、事前に設定されたシグネチャ(既知の攻撃パターン)や挙動解析に基づいて潜在的な攻撃や不正な活動を検知します。
アラートの発行
IDSが異常を検知すると、事前に設定されたアラートメカニズムに従ってセキュリティ担当者や管理者に通知を発行します。アラートには、検知された攻撃の種類、影響範囲、発生時刻などの情報が含まれます。
異常と通常の区別
IDSは通常のネットワークトラフィックやシステムアクティビティと異常な挙動を区別します。これにより、未知の攻撃や新たな脅威にも対応できるようになります。
ネットワークベースとホストベース
ネットワークベースのIDS(NIDS)は通信を監視し、ホストベースのIDS(HIDS)は各ホストやサーバー上のアクティビティを監視します。
IDSはセキュリティイベントの検知と通知に特化しており、攻撃への対応や阻止は別途対策が必要です。IPS(Intrusion Prevention System)と組み合わせて使用することで、検知だけでなくアクティブな対応も可能となります。
IPSとは
IPS(Intrusion Prevention System)は、ネットワークやシステムにおいて悪意のあるアクセスや攻撃を検知し、それに対して自動的に対処するセキュリティシステムです。IPSは、攻撃が検出された場合に、即座にアクションを実行して攻撃を防止または無害化します。これは主にIDS(Intrusion Detection System)の進化した形態と考えることができます。
以下は、IPSの主な特徴や機能についての説明です。
アクティブな対応
IPSは攻撃が検知されたとき、事前に設定されたポリシーやルールに基づいて、即座に対応アクションを実行します。これには攻撃のブロック、トラフィックの排除、システムのリセットなどが含まれます。
リアルタイムな保護
IPSは通常、リアルタイムでネットワークやシステムを監視し、攻撃が検知されると即座に対応します。これにより、攻撃が成功する前に迅速な対策が可能となります。
阻止機能
IPSは検知だけでなく、攻撃を阻止するための機能を持っています。これにより、攻撃がシステムに被害を与える前に防御することができます。
シグネチャおよび挙動解析
IPSは、シグネチャ(既知の攻撃パターン)を使用して攻撃を検知するほか、不審な挙動や通信パターンを解析して未知の脅威にも対応します。
IPSはセキュリティシステムの進化した形態であり、攻撃の早期検知と即座な対応が求められる状況において重要な役割を果たします。
IDSとIPSの不正アクセスの検知方法には、「シグネチャ型」と「アノマリー型」があります。
シグネチャ型(不正検知型)
シグネチャ型(Signature-based)は、セキュリティシステムが既知の攻撃やマルウェアの特徴的なパターンを検出する手法です。シグネチャは、攻撃やマルウェアが特定のパターンや特徴を持つ場合にそれを識別するための一種の指紋や署名です。シグネチャ型の検出は、既知の脅威に対して非常に効果的であり、特定の攻撃やマルウェアのパターンが既知のものであれば、それを検知し阻止することが可能です。(SYN Flood攻撃のような特徴的な通信を行う攻撃を検出可能)
アノマリー型(異常検知型)
アノマリー型(Anomaly-based)は、セキュリティシステムが通常のパターンから逸脱した異常な挙動やアクティビティを検知する手法を指します。アノマリー型の検出は、事前に知られている攻撃パターンやシグネチャに依存せず、通常の状態やアクティビティの「正常性」を学習し、それからの逸脱を検知することを目指します。
シグネチャ型が既知の攻撃に対応するのに対して、アノマリー型は未知の新種の攻撃にも対処することができます。この点で、ゼロデイ攻撃への対応が強みです。(アクセス量が急増するF5攻撃などを検出可能)
WAF
WAF(Web Application Firewall)は、ウェブアプリケーションに対するセキュリティ攻撃を防ぐためのセキュリティ対策ツールの一種です。ウェブアプリケーションは、ユーザーとの直接的な対話が可能なため、様々な脆弱性や攻撃にさらされやすいです。IDSやIPSを使うことで、DoS攻撃のような不審な通信が発生する攻撃を防ぐことが出来ます。しかし、IDS、IPSは通信の中身まで確認せず、ユーザーから送信されるデータに悪意のあるデータが含まれる攻撃に対応出来ません。(XSS、SQLインジェクション等)
WAFは、これらの攻撃からウェブアプリケーションを保護し、セキュリティを向上させるために設計されています。
以下は、WAFの主な特徴や機能についての説明です。
攻撃検知と防止
WAFは、「SQLインジェクション」、「クロスサイトスクリプティング(XSS)」、「クロスサイトリクエストフォージェリ(CSRF)」、不正アクセスなどの一般的なウェブアプリケーション攻撃を検知し、防止します。
パラメータ検査
WAFは、ウェブリクエストのパラメータやデータを検査し、不正なパターンや悪意のあるコードを含むものをブロックします。これにより、攻撃者がアプリケーションに不正なデータを送り込むことを防ぎます。
ユーザーセッションの保護
WAFは、クッキーの改ざんやセッションハイジャックなどからくるユーザーセッションの脆弱性に対処します。これにより、ユーザーのセッションデータが不正に利用されるのを防ぎます。
APIセキュリティ
近年のウェブアプリケーションはAPIを活用しています。WAFは、APIに対する攻撃や不正なリクエストからもアプリケーションを保護します。
ログの生成とモニタリング
WAFは、攻撃の試行やブロックされたアクティビティに関するログを生成し、モニタリングします。これにより、セキュリティイベントの追跡や分析が可能となります。
リアルタイムでの対応
WAFはリアルタイムでウェブトラフィックを監視し、即座に攻撃に対処します。これにより、セキュリティインシデントへの迅速な対応が可能です。
WAFはウェブアプリケーションを保護するための非常に重要なツールであり、セキュリティポリシーの実施や新しい攻撃への対応などを通じて、アプリケーションのセキュリティを確保します。
ブラックリスト型
WAFのブラックリスト型は、攻撃を検知・防止する手法の一つで、既知の攻撃パターンや特定の悪意のあるパターンを含むリストを使用して、それにマッチするリクエストやトラフィックを阻止します。この手法は「ブラックリスト」が攻撃の署名やパターンを記述したものであり、これに一致するものは通過させずにブロックします。
以下は、WAFのブラックリスト型の特徴や仕組みについての説明です。
シグネチャベースの検知
ブラックリスト型WAFは、攻撃のシグネチャや既知の攻撃パターンを含むブラックリストを使用しています。これは通常、SQLインジェクション、クロスサイトスクリプティング(XSS)、リモートファイルインクルージョンなどの一般的な攻撃に対するものです。
攻撃パターンのブロック
ブラックリスト型WAFは、リクエストやトラフィックがブラックリストに定義された攻撃パターンと一致するかどうかをチェックします。もし一致する場合、それを攻撃と見なして、リクエストを拒否または適切なアクションを実行します。
アップデート可能なブラックリスト
ブラックリストは定期的に更新され、新たに発見された攻撃パターンや脆弱性に対応するために、セキュリティベンダーから提供されるアップデートを適用します。
適用範囲
ブラックリスト型WAFは、一般的には既知の攻撃に対して有効であり、特に特定の攻撃パターンが既知である場合に効果を発揮します。しかし、未知の新種の攻撃に対しては対処しきれない可能性があります。
ホワイトリストとの併用
一部のWAFは、ブラックリストと併用してホワイトリスト(許可リスト)も使用します。ホワイトリストは、正当なトラフィックやリクエストのみを許可するためのリストで、ブラックリストと組み合わせて使用することで、より精密な制御が可能です。
ブラックリスト型WAFは、既知の攻撃に対する素早い対応が可能であり、セキュリティインシデントへの効果的な対処が期待されます。ただし、新種の攻撃やゼロデイ攻撃には対応が難しく、そのためには他の手法やセキュリティ対策も組み合わせることが重要です。
ホワイトリスト型
WAFのホワイトリスト型は、セキュリティの手法の一つで、正当なトラフィックやリクエストのみを許可するためのリスト、つまりホワイトリストを使用しています。この手法は、「ホワイトリスト」に含まれるパターンや要求だけが通過し、それ以外のすべては拒否されるというアプローチです。
以下は、WAFのホワイトリスト型の主な特徴や仕組みについての説明です。
正当なトラフィックの制御
ホワイトリスト型WAFは、特定のリクエストやトラフィックが事前に定義されたホワイトリストに一致するかどうかを確認します。ホワイトリストに載っているものだけが通過可能で、それ以外のものはブロックされます。
特定のパラメータやパターンの指定
ホワイトリストは通常、許可されるURL、パラメータ、HTTPメソッド、ヘッダーなどの詳細な仕様を含むことがあります。これにより、正当なアプリケーションの動作に必要な通信のみが許可されます。
適用範囲
ホワイトリスト型WAFは、既知の正当なリクエストやアプリケーションの動作に基づいて設計されています。特定の攻撃パターンを阻止するのではなく、正常な通信を特定することに焦点を当てています。
設定とメンテナンスの注意が必要
ホワイトリストは正当な通信を限定するため、適切な設定が重要です。特に、アプリケーションが変更される場合や新しい機能が追加される場合には、ホワイトリストを適切に更新する必要があります。
攻撃への強力な防御
ホワイトリスト型WAFは、攻撃者が既知の攻撃パターンや脆弱性を利用するのではなく、正当なアプリケーションの挙動に合致する攻撃を試みる場合にも効果を発揮します。
ブラックリストとの併用
一部のWAFは、ホワイトリストとブラックリスト(拒否リスト)を併用して使用します。ホワイトリストが正当な通信を許可し、ブラックリストが既知の攻撃を阻止することで、より堅牢なセキュリティ制御が実現できます。
ホワイトリスト型WAFは、正当な通信を明示的に許可するアプローチを取るため、正確な設定と定期的なメンテナンスが重要です。特に、アプリケーションが変更される度に、ホワイトリストを最新の状態に保つことがセキュリティを維持する上で重要です。
暗号化
暗号化は、データや情報を非常に複雑なアルゴリズムに基づいて変換するプロセスです。元のデータ(平文)を暗号化の手段(暗号化アルゴリズム)で第三者が読み取れないデータ(暗号文)にすることです。受け取った安藤文を利用するために平文に戻すことを複合を呼びます。この変換によって、元のデータが不正アクセスや盗聴から守られ、安全に保たれます。
暗号化にはいくつかの主要な要素が含まれます。
鍵
暗号化には鍵が不可欠です。鍵は、データを変換するアルゴリズムに使用されるパラメータであり、同じ鍵を知っている者だけがデータを正常に復号できます。鍵には対称鍵(同じ鍵を暗号化と復号に使用する)と非対称鍵(異なる鍵を暗号化と復号に使用する)の2つの主要なタイプがあります。
対称鍵暗号
対称鍵暗号では、同じ鍵がデータを暗号化および復号するため、鍵の安全な共有が必要です。代表的な対称鍵暗号アルゴリズムにはAES(Advanced Encryption Standard)があります。
非対称鍵暗号
非対称鍵暗号では、異なる2つの鍵(公開鍵と秘密鍵)が使用されます。公開鍵は誰でも知っていても安全で、秘密鍵はその情報を知っている者だけが所有しています。代表的な非対称鍵暗号アルゴリズムにはRSAやElliptic Curve Cryptography(ECC)があります。
ハッシュ関数
ハッシュ関数は、データから一定の固定サイズのハッシュ値を生成するもので、通常は一方向の変換です。同じデータからは同じハッシュ値が生成されますが、ハッシュ値から元のデータを復元することはできません。代表的なハッシュ関数にはSHA-256やMD5があります。
デジタル署名
デジタル署名は、非対称鍵暗号を使用してメッセージに署名を付ける技術です。この署名は、メッセージが送信者によって作成され、途中で改ざんされていないことを確認するために使用されます。
暗号プロトコル
暗号化は通信プロトコルにも組み込まれています。例えば、HTTPSはSSLやTLSプロトコルを使用してWeb通信を暗号化します。
暗号化はセキュリティの基本的な概念であり、機密情報や通信のセキュリティを確保するために広く使用されています。データの暗号化は、サイバーセキュリティの観点から非常に重要であり、個人情報や機密データを守る上で欠かせない手段です。
公開鍵証明書
公開鍵証明書は、公開鍵暗号方式に基づくセキュリティ通信で利用される重要な要素の一つです。これは、通信相手やサービスが信頼できるエンティティであることを証明するためのデジタル証明書です。SSL通信の公開鍵の証明に使われることが多いため、「SSL証明書」とも呼ばれています。
以下は、公開鍵証明書に関連する要点です。
公開鍵暗号方式の基本
公開鍵暗号方式では、2つの鍵(公開鍵と秘密鍵)が使われます。情報の送信者は相手に対して公開鍵を提供し、相手はその公開鍵を用いてデータを暗号化します。この暗号化は、秘密鍵を持つ受信者だけが復号できます。
信頼の確保
公開鍵を受け取る側が、提供された公開鍵が本当に信頼できるものであることを確認する必要があります。ここで公開鍵証明書が役立ちます。公開鍵証明書には、公開鍵と関連する情報(発行者の情報など)がデジタル的に署名されています。
認証局(CA)による署名
公開鍵証明書は通常、信頼できる認証局(Certification Authority, CA)によって署名されます。認証局は、エンティティが公開鍵証明書を取得する際に、そのエンティティが実在し、信頼性があることを確認します。認証局によって署名された公開鍵証明書は、その署名のおかげで信頼性が高まります。
SSL/TLS通信での利用
Webブラウジングなどのセキュアな通信で一般的に使用されます。HTTPS通信では、ウェブサーバーが公開鍵証明書を提供し、ウェブブラウザがそれを検証することで通信の安全性が確保されます。
信頼の鎖
複数の認証局が存在し、それらの認証局が信頼されている場合、公開鍵証明書は信頼の鎖(Certificate Chain)と呼ばれるもので結ばれます。これにより、最終的な公開鍵証明書が信頼される認証局によって署名されていることが確認できます。
公開鍵証明書は、安全な通信を確保する上で重要な要素であり、ユーザーが信頼できるウェブサイトと通信する際にも利用されます。
認証
認証(Authentication)は、ユーザーやデバイスがシステムやサービスに対して正当なものであることを確認するプロセスです。正当性を確認することで、不正アクセスやセキュリティ侵害を防ぎ、データやリソースの安全性を確保します。認証はセキュリティの基本的な要素であり、多くの場面で利用されます。
認証API
認証APIは、開発者がアプリケーションやサービス内でユーザーを認証するためのプログラムインターフェース(API)を提供します。これにより、開発者はユーザー認証の複雑な実装を行わずに、セキュアで効率的な認証機能を組み込むことができます。
OpenID
OpenIDは、ウェブ上の異なるサービスやアプリケーション間でユーザーを認証するためのオープンな標準プロトコルです。このプロトコルは、ユーザーが1回の認証で複数のウェブサイトやサービスにアクセスできるシングルサインオン(SSO)の仕組みを提供します。
認可
認可(Authorization)は、ユーザーがシステムやサービスに対して行える操作やアクセスの範囲を指定するプロセスです。認可はユーザーが認証された後に行われ、ユーザーに特定の権限やアクセス権を与え、リソースや機能へのアクセスを制御します。
認可はセキュリティの一環であり、認証されたユーザーが必要な権限を持っていることを確認し、機密性やデータの安全性を確保します。OAuthやJWTなどの標準プロトコルやフォーマットを利用することで、セキュアかつ効率的な認可が実現されます。
OAuth
OAuth(Open Authorization)は、ウェブサービスやアプリケーションが、ユーザーのリソースに対してセキュアで制御されたアクセスを取得するためのオープンな標準プロトコルです。主にサードパーティのアプリケーションが、ユーザーのデータにアクセスするために使用されます。OAuthは、認可(Authorization)フレームワークであり、ユーザーの認証(Authentication)には直接関与しません。
OAuthの主な要素や動作は以下の通りです。
リソースオーナー(Resource Owner)
リソースオーナーは、自分のデータや資源へのアクセスを他のアプリケーションに許可するユーザーを指します。
クライアント(Client)
クライアントは、リソースオーナーのデータにアクセスするために、サービスプロバイダからアクセストークンを取得するアプリケーションやサービスです。クライアントには、第三者のアプリケーションやモバイルアプリケーションなどが含まれます。
サービスプロバイダ(Authorization Server)
サービスプロバイダは、ユーザーのアクセス許可を管理し、クライアントがアクセストークンを取得するための認可を行います。また、ユーザー認証の詳細は通常サービスプロバイダが担当します。
リソースサーバー(Resource Server)
リソースサーバーは、リソースオーナーのデータを保持し、クライアントが有効なアクセストークンを使用してアクセスできるようにします。
アクセストークン(Access Token)
アクセストークンは、サービスプロバイダからクライアントに発行され、リソースサーバーに対してユーザーのデータへのアクセスを許可するために使用されます。
OpenID Connect
OpenID Connect(OIDC)は、OAuth 2.0プロトコルの上に構築された、ユーザーの認証やIDトークンの発行を提供するプロトコルです。主にウェブアプリケーションやモバイルアプリケーションがユーザーを認証し、セキュアかつ標準化された方法でユーザーの識別情報を取得するために使用されます。
OpenID Connectは、ウェブアプリケーションやサービスがユーザーを認証し、安全かつ効果的な方法でユーザーの識別情報を取得するための堅牢なフレームワークです。特にシングルサインオン(SSO)の実現や、異なるサービス間でのユーザーの認証情報の共有に役立ちます。