ファイウォールによる通信制御

目次
この章では、ネットワークセキュリティの関門となるファイアウォールについて学んでいきます。

個人のホームネットワーク、企業ネットワーク問わずネットワークのセキュリティは重要です。

ネットワークに侵入され個人情報や企業秘密を盗まれてしまうととんでもない損害が出てしまいます。

それを防ぐためにも重要となるセキュリティの要を勉強していきましょう。

ファイアウォールとは

ファイアウォールは、名前の通り「防火壁」という意味から付けられています。

外部の火災から身を守るように、外からの悪意ある攻撃から守ってくれるネットワーク機器です。

基本的には、インターネットとプライベートネットワーク(=LAN)の間に設置し、行き来する通信を全てチェックし、通してよいもののみを通過させるという機能を持ちます。

プライベートネットワークを守る「門番」と言い換えてもいいかもしれませんね。
また、ファイアウォールは複数の種類があります。
  1. パケットフィルタリング型ファイアウォール
  2. ステートフルインスペクション型ファイアウォール
  3. アプリケーションゲートウェイ型ファイアウォール(プロキシ型)
それぞれ得意とするものが異なりますので、目的に応じて適した利用用途で設置してあげましょう。

パケットフィルタリング型ファイアウォール

最も基本的なタイプのファイアウォールで、L3(ネットワーク層)とL4(トランスポート層)の情報を基に通信を制御します。
具体的には、以下の情報を使用してフィルタリングを行います。
  • 送信元IPアドレス
  • 送信元ポート番号
  • 宛先IPアドレス
  • 宛先ポート番号
  • プロトコル(TCP/UDP)


例えば、「10.0.1.100のIPアドレスから192.168.1.5へのHTTP通信(TCP 80番ポート)は許可するが、その他は拒否する」といったルールを設定できます。
FWのイメージ
ホワイトリストとブラックリスト
許可と拒否の設定の仕方には、ホワイトリスト方式とブラックリスト方式があります。

■ホワイトリストの場合
許可を設定したもののみ通信可能。
設定のないものは暗黙的に拒否という扱いになります。

■ブラックリストの場合
拒否を設定したもののみ通信不可。
設定のないものは暗黙的に許可という扱いになります。

設定していない許可や拒否をどのようなルールにするかでホワイトリストかブラックリストかが決まります。

ステートフルインスペクション型ファイアウォール

ステートフルインスペクションは、通信の状態(ステート)を監視し、接続の確立状況を把握した上でフィルタリングを行う方式です。
パケットフィルタリングよりも高度な制御が可能で、現代のファイアウォールの多くはこの方式を採用しています。

例えば、内部から外部へのアクセスに対する応答パケットは、その接続が内部から開始されたものであれば許可するという動作が可能です。
これにより、一方向のみの通信ルールを設定するだけで、双方向の通信が適切に制御できます。

ステートフルのイメージ
応答パケット
今までの図ではクライアントからサーバへの1方向の通信のみに言及してきました。
ただ、実際の通信は双方向で行われるものです。

クライアントからサーバへ通信を行うと、サーバからクライアントへ応答パケットが返されます。
この応答パケットをクライアントが受け取れるところまでが通信となります。

なので、ネットワークのセキュリティ設定を考える時には行きの通信と戻りの通信(=応答パケット)の両方の許可/拒否を考えることが重要です。

ステートフルインスペクション型では自動的に戻りの通信は許可してくれますが、パケットフィルタリング型では戻りの通信の許可も明示的に設定する必要があります。
このような戻りの通信を自動的に許可しないファイアウォールをステートレス型と呼ぶこともあります。

ステートレス型のファイアウォールを使っている場合、行きの通信だけ許可をして、戻りの通信が返ってこれず通信がうまくいかないというトラブルがよく発生します。

アプリケーションゲートウェイ型ファイアウォール(プロキシ型)

アプリケーションゲートウェイ型ファイアウォールは、L7(アプリケーション層)レベルで動作し、特定のアプリケーションプロトコルの内容を検査できます。

今まで紹介したファイアウォールは基本的にL4(トランスポート層)までの通信制御でした。
なので、IPアドレスやポートによる大まかな宛先と使用するアプリケーションが何かというレベルだけでフィルタリングを行っています。

比較して、アプリケーションゲートウェイ型ファイアウォールは更に細かい中身までチェックが可能です。
HTTPリクエストの内容を確認し、特定のURL、メソッド、ヘッダーなどをチェックして、通信の許可や拒否ができるのです。

例えるなら、今までのファイアウォールは宅配便で外の宛先ラベルと品名をチェックして、届けています。
アプリケーションゲートウェイ型は税関のようなもので、箱を空けて中身までチェックし、危険なものがないかを確認します。

アプリケーションゲートウェイ型のイメージ
この種類のファイアウォールは、セキュリティレベルが高い反面、処理に時間がかかるため、パフォーマンスへの影響が大きいという特徴があります。

ファイアウォールのポリシー

ファイアウォールの通信を許可/拒否する設定は、通常「ポリシー」と呼ばれるルールの集合で定義されます。

ポリシーとルール
ファイアウォールの設定では、ルールの順序が非常に重要です。
通常、ルールは上から順に評価され、最初に一致したルールが適用されます。
したがって、より具体的なルールを上位に、より一般的なルールを下位に配置するのが一般的です。

よくあるポリシーの例を以下に書いてみます。
  1. 社内から外部へのHTTPS通信(TCP 443番ポート)を許可
  2. 社内から外部へのDNS通信(UDP 53番ポート)を許可
  3. 社内から外部へのSMTP通信(TCP 25番ポート)を許可
  4. 外部から社内のWebサーバー(192.168.1.5)へのHTTP/HTTPS通信のみ許可
  5. 上記以外の通信はすべて拒否(デフォルトポリシー)

このポリシーの場合、社内のサーバからはWebサービスへのアクセスに使用するHTTPS(TCP:443)と名前解決のDNS(UDP:53)、メール送信のSMTP(TCP:25)を外部のサーバと通信する許可が入っています。

また、Webサーバのみ外部からHTTP(TCP:80)とHTTPS(TCP:443)の通信を受け取ることが許可されています。
そして最後に許可設定が入っているもの以外は拒否ということで、ホワイトリストでのポリシーが設定できます。

例えば、社内のサーバから外部にファイルを送信したくて、FTP(TCP:20,TCP:21)を使ったとしてもファイルサーバで拒否されてしまいます。

このように、ファイアーウォールのポリシーをうまく使うことで、情報漏洩や攻撃への防御などを行うことが可能となります。

まとめ

この記事では、インフラエンジニアを目指す初学者の方に向けて、ファイアウォールの仕組みについて解説しました。

ファイアウォールは、ネットワークにおいて、セキュリティを守る重要な機器です。

この機器の設定によって、外部からの攻撃から身を守れるか否かが決まってきます。

外部の悪意ある攻撃者は常に弱い部分を探し、攻撃方法を洗練させてきます。

それに対抗できるように、設計したルールは適宜見直しを行い、攻撃に負けないルール設定を作り上げていく必要があります。

この記事が皆さんのネットワーク学習の出発点となれば幸いです。