前回まででホストレベルのセキュリティ対策を行った。今回からはネットワークレベルに目を向けよう。まずはiptablesを使ったパケットフィルタリング機能でファイアウォールを構築する。今回はiptablesを使うための準備について解説する。
現在、多くのサイトでファイアウォールが導入されていますが、商用ファイアウォールを導入したくてもコストの面から導入を見送っているサイトもあるのではないかと思います。
ファイアウォールの種類は、プロキシ型とパケットフィルタリング型に大別できます。両者の違いなどについては省略させていただくとして、今回から比較的安価にファイアウォールを構築できるLinux(iptables)を用いて、パケットフィルタリング型ファイアウォールを構築する方法を説明していきます。
今回もまた、Red Hat Linux7.1J(kernel 2.4系)を例に説明します。kernel 2.2系のipchainsでもファイアウォールを構築することは可能ですが、ipchainsより優れているiptablesを使うことをお勧めします。
以下の解説では、例として次のような構成を前提にファイアウォールの構築を進めていきます。IPアドレスなどについては、適宜自分の環境に読み替えてください。
どのようなファイアウォールになるのかを簡単に説明します。まず、ファイアウォールの外側(インターネット側)のインターフェイスに保護対象となるサーバの仮想IPアドレスを割り当てます。実際のサーバはファイアウォールの内側に設置し、プライベートアドレスを割り当てます。
Webサーバに対してHTTPによるアクセスがあったとします。名前解決によって返されるIPアドレスに対してアクセスしてくるわけですが、これはファイアウォールの外側のインターフェイス(eth0)が受け取ります。ファイアウォールはルールに従ってNAT(Network Address Translator)を実行し、Webサーバに転送します。
ファイアウォールの外側のインターフェイスであるeth0には、以下のように各サーバの仮想IPアドレスを割り当てます。
ルータ | 172.16.0.1 | |
---|---|---|
ファイアウォール | eth0 | 172.16.0.100 |
eth0:1 | 172.16.0.10 (Webサーバの仮想IPアドレス) | |
eth0:2 | 172.16.0.20 (メールサーバの仮想IPアドレス) | |
eth0:3 | 172.16.0.30 (DNSサーバの仮想IPアドレス) | |
eth1 | 192.168.1.1 | |
Webサーバ | 192.168.1.10 | |
メールサーバ | 192.168.1.20 | |
DNSサーバ | 192.168.1.30 | |
表 IPアドレス一覧 |
Copyright © ITmedia, Inc. All Rights Reserved.