基本情報技術者試験など情報処理技術者試験を受験する方にとっては必須の,ファイアウォールについてシンプルにまとめています。ファイアウォールの概要と機能の説明からはじめ,DMZ,バリアセグメント,ファイアウォールの構成,公開サーバー,ファイアウォールの分類(パケットフィルタリング方式(ACL(アクセス制御リスト),静的フィルタリング,動的フィルタリング,ステートフルインスペクション),サーキットゲートウェイ方式,アプリケーションレベルゲートウェイ方式(プロキシサーバー,リバースプロキシサーバー)),ファイアウォールの管理(ACLの管理,ログの管理(ログサーバー,syslog)),ファイアウォールの付加機能(認証と暗号化,侵入検知と侵入防止,ウイルススキャン,スパムメールフィルタリング),WAF(ブラックリスト方式,ホワイトリスト方式,シグネチャベース方式,ルールベース方式)を説明しています。いろいろありますので定着には時間がかかると思いますが,じっくり読んでみましょう。
ファイアウォール
ファイアウォールとは,必要な通信のみを通過(不必要な通信は遮断)させる,アクセス制御の概念のことをいいます。サーバーでソフトウェアとして動作するものや,専用の機器として提供されるものがあり,セキュリティレベルが異なるネットワークの間(セキュリティ境界)に設置されます。
※ ファイアウォールは,ルーターなどに,機能の一つとして実装されることもある。OSなどに含まれることもある
ファイアウォールの機能
- パケットの中継機能(ルーターとしての機能)
- 必要な通信のみを通過(フォワーディング)させ,不必要な通信は遮断(フィルタリング)する機能
- 通過/遮断した通信のログを取得する機能
- コンピューターやネットワーク,ログを管理・監視する機能
※ ログ…システムなどで起こった出来事を時系列に記録したデータ(IPアドレスやポート番号,通過/遮断の区別などが記録される)
※ ログは,不正アクセスの兆候を調べたり,不正アクセスが行われた際に,どのようなアクセスが行われていたかを調べるためなどに使用する
※ ログの記録方法には,ローカルの記憶装置に記録する方法や,独立した専用のログサーバーに記録し一元管理する方法がある
※ ファイアウォールの機能として,プロキシサーバーやNAT(NAPT)機能を含むものも多くある
※ ログの管理,ログサーバー,プロキシサーバーの詳細は後述
DMZ(DeMilitarized Zone;非武装地帯)
DMZとは,外部ネットワークと内部ネットワークの中間に位置するネットワークで,一般的には,外部に公開するサーバー(Webサーバーやメールサーバーなど)を設置します。
※ 公開サーバーを設置するネットワークと,外部ネットワーク,内部ネットワークのセキュリティレベルが異なるため,DMZを設ける
バリアセグメント
バリアセグメントとは,インターネットに接続するための(境界)ルーターとファイアウォールの間のネットワークのことをいいます。バリアセグメントに公開サーバーを設置する場合は,ファイアウォールで防御することはできませんので,公開サーバーそのものを要塞化する必要があります。
※ サーバーの要塞化…不要なポートを閉じたり,セキュリティパッチ(修正プログラム)を適用したり,不要なアカウントを無効にしたりする防御策。ログの管理も行う
※ 不要なポートを閉じるというのは,通信アプリケーションごとに割り当てられたポート番号(HTTP=80など)を使用できないようにすることをいい,外部からの攻撃を防ぐことができる
ファイアウォールの構成
ファイアウォールを1台設置し公開サーバーをバリアセグメントに設置する場合
この構成の場合,公開サーバーはバリアセグメントに設置されますので,セキュリティの確保が課題になります。
ファイアウォールを1台設置し公開サーバーをDMZに設置する場合
この構成の場合,公開サーバーは,DMZに設置されますので,ファイアウォールにより外部の攻撃から保護されます。ただし,ファイアウォールの設定が複雑になるので,設定ミスに気を付けなければなりません。
ファイアウォールを2台設置する場合
この構成の場合,ファイアウォールを2台使用しますが,それぞれを別々の製品にすることにより,1台目のファイアウォールに欠陥があった場合でも,2台目のファイアウォールにより内部ネットワークを保護することができます。
公開サーバー
DNSサーバーやメールサーバーは,DMZと内部ネットワークに設置することが多いです。
※ DMZに設置するサーバーは,外部に公開する。内部ネットワークに設置するサーバーは,外部に公開しない
ファイアウォールの分類
ファイアウォールは,ネットワーク通信の制御方法(OSI基本参照モデルの,どの層で動作するかの違い)により分類することができます。
パケットフィルタリング方式
パケットフィルタリング方式の場合は,ファイアウォールに届いたパケットの送信元IPアドレス,あて先IPアドレス,送信元ポート番号,あて先ポート番号,プロトコル(TCP,UDPなど)を確認し,通過させるか,遮断するかを判断します。
※ OSI基本参照モデルの,ネットワーク層とトランスポート層で動作する
ACL(Access Control List;アクセス制御リスト)
ACLは,パケットの通過/遮断を判断するためのリストです。
※ ACLは,ルーターやファイアウォールのフィルタリングテーブルに登録する
たとえば,上記の,「ファイアウォールを1台設置し公開サーバーをDMZに設置する場合」の場合,ACLは次のように登録します。
ACLのルールは,上の行が優先され条件に合致するまで順に検索されますので,重要なルールほど上の行に登録します。また,いちばん下の行では,すべてを遮断するようにします。
パケットフィルタリングに関する具体例は,「インターネットへの接続と通信の流れ -情報処理シンプルまとめ」を参照してください。
静的フィルタリング(スタティックパケットフィルタリング)
静的フィルタリングでは,行きのルールと戻りのルールを,それぞれ登録します。静的フィルタリングは,構造が単純で,高速に処理できますが,戻りのパケットが詐称されていた場合,対処できません。
動的フィルタリング(ダイナミックパケットフィルタリング)
動的フィルタリングでは,行きのルールのみを登録します(戻りのルールは登録しません)。TCPやUDPの接続情報を管理して,該当するセッションのパケットであれば,戻りのパケットを通過させます。
ステートフルインスペクション
ステートフルインスペクションとは,パケット内のアプリケーション層までの情報を検査して,通過/遮断の判断をする動的フィルタリングをいいます。
たとえば,TCPで3ウェイハンドシェイクによりコネクションを確立する場合,最初のSYNパケットを記憶しておき,その後の,SYN+ACKパケットやACKパケットについては,該当するセッションのパケットのみを通過させるようにします。
※ 該当しないACKパケットが送られてきたら,動作の不具合か,攻撃が疑われる
サーキットレベルゲートウェイ(トランスポートゲートウェイ)方式
サーキットレベルゲートウェイ方式の場合は,TCPやUDPで動作するアプリケーションのポート番号に対する制御規則を登録し,通過させるか,遮断するかを判断します。リバースプロキシサーバーがプロトコル処理を代行することもよくあります。
※ OSI基本参照モデルの,トランスポート層で動作するので,IPアドレスを偽装した通信を遮断することができる
※ 実装時には,パケットフィルタリングでIPレベルの制御を行い,サーキットレベルゲートウェイでTCPのセッション単位に制御を行う
※ リバースプロキシサーバーの詳細は後述
アプリケーションレベルゲートウェイ方式
アプリケーションレベルゲートウェイ方式の場合は,HTTPやSMTPなどのアプリケーションごとに細かく制御規則を登録し,通過させるか,遮断するかを判断します。一般的には,プロキシサーバーがプロトコル処理を代行します。
※ OSI基本参照モデルの,アプリケーション層で動作するので,(パケット単位ではなく,パケットを組み立てた)実データの内容を確認することができる
プロキシサーバー
プロキシサーバーは,内部ネットワークから(インターネットなど)外部への通信を代行するサーバーです。一般的には,DMZに設置され,内部ネットワークのコンピューターから外部Webサーバーへのアクセスを中継します。
※ プロキシ…代理という意味
※ プロキシサーバーは,HTTPだけでなく,SMTP,IMAPなど,さまざまなプロトコルに対応可能
プロキシサーバーには,次のような機能があります。
キャッシュ
一度アクセスした情報を,一時的にプロキシサーバーに保存しておく機能。再度,同じ情報へのアクセスがあった場合,保存しておいたキャッシュの情報を返すことにより2回目以降のアクセスを高速にすることができる(トラフィックの軽減にもなる)
セキュリティ
外部へのアクセスをプロキシサーバーが代理で行うため,内部ネットワーク(コンピューターのIPアドレスなど)の情報を秘匿できる(外部からはプロキシサーバーしか見えないため)
URLフィルタリング
特定の(有害な)Webサイト(URL)の閲覧を禁止(フィルタリング)する機能
※ キャッシュ…一度アクセスした情報を一時的に保存しておく仕組み
リバースプロキシサーバー
リバースプロキシサーバーとは,(インターネットなど)外部の不特定多数から公開サーバーへの通信を代行するサーバーです。一般的には,DMZに設置されます。
※ 通常のプロキシサーバーとは,逆の働きをする
リバースプロキシサーバーには,次のような機能があります。
キャッシュ
外部に応答した情報を,一時的にリバースプロキシサーバーに保存しておく機能。再度,同じ情報へのアクセスがあった場合,保存しておいたキャッシュの情報を返す(Webサーバーの負荷を軽減できる)
負荷分散
同じ処理をするWebサーバーが複数台ある場合に,より負荷の少ないWebサーバーにアクセスを振り分けることにより負荷を分散する機能。また,リバースプロキシサーバーを複数台使用すれば,リバースプロキシサーバー自体の負荷も分散できる
SSL高速化
Webサーバーとクライアントの間で行うSSL/TLS通信を,リバースプロキシサーバーとクライアントの間で行うことにより,Webサーバーの負荷(暗号化,復号の負荷)を軽減することができる。この場合,リバースプロキシサーバーとクライアントの間の通信は暗号化されるが,リバースプロキシサーバーとWebサーバーの間の通信は暗号化されない
※ キャッシュ…一度アクセスした情報を一時的に保存しておく仕組み
ファイアウォールの管理
ファイアウォール自体の脆弱性や,アクセス制御規則に漏れや誤りが存在する可能性があるので,日頃から脆弱性情報の収集や,定期的な点検,セキュリティパッチの適用など,ファイアウォールの管理体制を整えておく必要があります。
ACLの管理
ACLについては,悪意のある第三者によって変更される恐れがあるため,チェックリストを使用して定期的にチェックする必要があります。
ログの管理
ログについては,不正アクセスの解析に使用したり,不正アクセスした者を告発するための証拠として使用することがあるため,確実に保存するようにします。次のような情報を,ログとして記録します。
※ ログ…システムなどで起こった出来事を時系列に記録したデータ
※ 一般的なファイアウォールにはログを保存する機能がある
許可したアクセス
通信の開始日時,送信元IPアドレス,あて先IPアドレス,送信元ポート番号,あて先ポート番号,接続の方向,アプリケーション,通信時間,アクセス回数など
遮断したアクセス
遮断日時,遮断コード,送信元IPアドレス,あて先IPアドレス,送信元ポート番号,あて先ポート番号,アクセス回数など
ファイアウォールへのログイン
ログイン日時,ユーザーID,成功/失敗,設定変更内容など
また,取得したログは,定期的にバックアップするようにします。さらに,ログの解析ツールを利用して,アクセス状態を分析するようにします。アクセス量を定期的に測定して閾値を設定することにより,DoS攻撃などの兆候を検知することができます。
※ ログは,ファイアウォールの増強計画を立案する際にも利用できる
ログサーバー
ログの取得に関しては,ログサーバーを設置して,ログを集約する方法もあります。
ログサーバーを使用する利点は,次のとおりです。
- (攻撃などにより)ログファイルが失われても,直前までに集約したログは失われない(バックアップできている)
- 集約したログを解析することで,不正アクセスの経路や手口を分析できる
※ ログを集約して分析するためには,各サーバーから送られてきたログの時刻の正確性を確保しなければならないので,NTPを利用する
※ NTP(Network Time Protocol)…時刻同期を行うためのプロトコル
syslog
syslogとは,ログを転送するためのプロトコルです。UDPで動作します。
ファイアウォールの付加機能
ファイアウォール製品には,次のような付加的機能を備えたものがあります。
認証と暗号化 | 特定のユーザーやホストに対してのみアクセスを許可し,暗号化通信を行う機能(VPN機能) |
侵入検知と侵入防止 | 通信の状況をアプリケーション層レベルで分析し,DoS攻撃などを検知・阻止する機能 |
ウイルススキャン | アプリケーションのプロトコルを解析し,ダウンロードするファイルや,電子メールの添付ファイルなどに対してウイルススキャンを実行する機能 |
スパムメール フィルタリング | 電子メールのヘッダーやコンテンツを解析し,スパムメールの特徴を持つ電子メールであった場合に,その電子メールを取り除く機能 |
WAF(Web Application Firewall)
WAFは,Webアプリケーション用のファイアウォールで,HTTPやSMTPなどのアプリケーションごとに細かく制御規則を登録することができます。SQLインジェクションやクロスサイトスクリプティングなどの攻撃に対応できます。
不正アクセスや攻撃を検知する方法には,次のようなものがあります。
ブラックリスト方式 | 外部とWebサーバーの間の通信を調べ,あらかじめ登録しておいた攻撃と判断できるパターン(ブラックリスト)と比較して,合致した場合に警告や遮断を行う方式。ブラックリストは,管理者が手動で登録する |
ホワイトリスト方式 | 外部とWebサーバーの間の通信を調べ,あらかじめ登録しておいた許可するパターン(ホワイトリスト)と比較して,合致した場合にだけ通信し,それ以外の場合は,警告や遮断を行う方式。ホワイトリストは,管理者が手動で登録する |
シグネチャベース方式 | 開発元が,ブラックリストとホワイトリストをデータベース化し,定期的に(自動)更新する方式。現在の主流 |
ルールベース方式 | 蓄積されたブラックリストやホワイトリストをデータマイニングツールなどで分析してルールベースとして登録しておき,(通信時に)通信内容が安全か危険かを判断する方式(人工知能(AI)方式)。新しい攻撃にも対応できる |
※ ルールベース方式は,シグネチャベース方式の問題(更新するたびにデータベースの容量が大きくなり,検索時間が増える問題)への対応として開発された
まとめ
今回は,ファイアウォールについて,シンプルにまとめてみました。難しいかもしれませんが,しっかり頑張りましょう。