
第3回 Linuxで作るファイアウォール[準備編]
大貫大輔
株式会社ラック
不正アクセス対策事業本部
2001/10/20
ファイアウォールのための基本設定
これからファイアウォールを構築していくわけですが、その前にいくつかやっておかなければならない作業があります。
■カーネルの再構築
Red Hat Linux 7.1 Jのカーネルは2.4系なのでiptablesに対応しているのですが、デフォルトではモジュールが組み込まれていないため再構築する必要があります。また、せっかくカーネルを再構築するのですから、ついでに最新版にしておきましょう。
カーネルの最新版は、
ftp://ftp.kernel.org/
からダウンロードできます(編注)。2001年10月11日現在の最新版はkernel 2.4.12です。
| 編注:特に理由がなければミラーサイトからダウンロードすることをお勧めする。カーネルのミラーサイトは、http://www.kernel.org/mirrors/で調べることが可能だ。 |
ダウンロードしたら、カーネルのアップグレード作業を行います。以下に再構築の例を挙げますが、必ずしもここ例と同じ手順で行う必要はありません。重要なのは、iptablesを使うのに必要なモジュールをカーネルに組み込むことです(編注)。
| 編注:ここではmenuconfigを使っているが、xconfigなどでも構わない。カーネル2.4のインストール/再構築については、カーネル2.4.0導入活用術も参照。 |
$ tar -zxvf linux-2.4.12.tar.gz |
make menuconfigを実行すると、カーネルの設定画面になります。iptablesを組み込むには、まず「Networking options --->」を選択します。
![]() |
| 画面1 Networking options--->を反転させて[Enter]キーを押す(画像をクリックすると拡大表示します) |
次に、「Network packet filtering(replaces ipchains)」にチェックを入れます。
![]() |
| 画面2 Network packet filteringを選択(画像をクリックすると拡大表示します) |
下の方にある「IP: Netfilter Configuration --->」を選択します。
![]() |
| 画面3 IP: Netfilter Configuration--->で[Enter]キー(画像をクリックすると拡大表示します) |
ここから、iptablesに必要なモジュールを選択していきます。すべて選択しておけばよいでしょう。
![]() |
| 画面4 モジュールをすべて選択(画像をクリックすると拡大表示します) |
ここではiptablesに関連する部分だけを紹介しましたが、もちろん必要に応じてデバイスそのほかの設定も行っておいてください。設定が終わったらセーブします。これでカーネルをコンパイルする用意が整いました。
次にコンパイル/インストール作業を行います。以下に手順の一例を挙げます。
# make dep; make clean |
カーネルのコンパイルが正常に終了したら、新しいカーネルで起動するように/etc/lilo.confファイルを修正します。
boot=/dev/hda |
/etc/lilo.confを書き換えただけでは有効になりません。ファイルの編集後、以下のコマンドを実行してLILOの新設定を有効にします。
# /sbin/lilo |
以上で、iptablesを組み込んだカーネルが起動するようになりました。
# reboot |
などでファイアウォール用マシンを再起動します。
再起動したら、新カーネルでフィルタリング機能とNAT機能が有効になっているかを確認します。以下のようにオプション付きでiptablesを実行します。
# iptables -L |
以上のように出力されればカーネルの再構築は完了です。うまくいかない場合は、もう一度カーネルを再構築してみてください。
■仮想IPアドレスの割り当て
図1からも分かるように、NIC(Network Interface Card)が2枚挿入されているマシンをファイアウォールにします。NICはLinuxに対応しているものを用意してください。eth0がグローバルアドレス側、eth1がプライベートアドレス側になります。ここでは、外側のインターフェイス(eth0)に仮想IPアドレスを割り当てます。
Red Hat Linux 7.1Jの場合、NICの設定などは/etc/sysconfig/network-scripts以下のファイルで行います。ここにはifcfg-eth0というファイルが存在します。このファイルを起動時に読み込むことにより、インターフェイスにIPアドレスが割り当てられます。内容は次のようなものになります。
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 |
では、OS起動時にeth0に対して仮想IPアドレスが割り当てられるようにしましょう。ifcfg-eth0を参考にして、/etc/sysconfig/network-scripts以下に新しいファイルを作成します。以下はifcfg-eth0:1の例です。
# cd /etc/sysconfig/network-scripts |
ファイルを作成したら、Linuxを再起動して仮想IPアドレスが割り当てられているかどうかを確認します。
# ifconfig -a |
以上のようになっていれば成功です。試しに、仮想IPアドレスに対してpingを打ってみて応答があるか確認してみましょう(注)。同様にして、ほかのサーバに対する仮想IPアドレスも割り当てます。
| 注:eth0とeth0:1のHWaddrが同じになっていることも確認します。 |
ルールの設計
以上で、カーネルとNICの準備は完了しました。後はiptablesの設定を残すのみとなったわけですが、どのような設定を行うのかが問題です。ルールの設計が不十分だと、せっかくのファイアウォールも無意味になってしまいます。また、セキュリティを強くしすぎて必要なサービスまで使えなくしてしまうと、不便な環境になってしまいます。何を何から守るのか、何が必要で何が不要なのかをしっかり検討して、各自の環境に最適なルールを設計しましょう。
まず、どのようなルールにするのかを書き出してみます。実際に図に書き起こすと分かりやすくなります。対象ホストを書き、パケットの経路を矢印で表します。こうすると、パケットの流れがとても分かりやすくなるのでルールの設計が容易になります。
■フィルタリングルール
今回は、例として以下のようなフィルタリングルールを作成しました。図1と見比べてみてください。
- Webサーバに対しては、どこからでも80/TCPによるアクセスを許可
- メールサーバに対しては、どこからでも25/TCPによるアクセスを許可
- DNSサーバに対しては、どこからでも53/UDPによるアクセスを許可
- 各サーバ、ファイアウォールのメンテナンスを行うため、メンテナンス用ホストからの22/TCPによるアクセスを許可
- 各サーバからファイアウォールの内側のインターフェイス(eth1)へのicmp echo-requestと、それに対するecho-replyを許可
- 各サーバ、ファイアウォールの外側のインターフェイス(eth0)に対して、メンテナンス用ホストからのicmp
echo-requestと、それに対するecho-replyを許可
- ファイアウォールの外側のインターフェイス(eth0)へのicmp echo-requestと、それに対するicmp
echo-replyを許可
- 各サーバからの、ファイアウォールを介したSYNパケットのみでは外に出さない
- 各サーバは同一セグメント上のホストに直接アクセスできず、必ずファイアウォールを通過させる
- 上記以外はすべて不許可
■NATルール
もう1つ、NATルールも作成します。ここのポイントは、eth0に割り当てた仮想IPアドレスと、各サーバの実IPアドレスを結び付けていることです。これによって仮想IPアドレスによるアクセスが各サーバに転送されるようになります。
- D-Address172.16.0.10は192.168.0.10に変換
- D-Address172.16.0.20は192.168.0.20に変換
- D-Address172.16.0.30は192.168.0.30に変換
- S-Address192.168.0.10は172.16.0.10に変換
- S-Address192.168.0.20は172.16.0.20に変換
- S-Address192.168.0.30は172.16.0.30に変換
| 注: D-Address:Destination IP Address S-Address:Source IP Address |
以上でルールの設計は終わりです。次回は、このルールに従ってiptablesの設定を行います。
|
2/2
|
|
|
||||
|
||||
| 連載 ゼロから始めるLinuxセキュリティ |
| Linux Squareフォーラム セキュリティ関連記事 |
| 連載:習うより慣れろ! iptablesテンプレート集(全4回) 初心者にとって、iptablesは難しい。そこで、学習の第1歩としてテンプレートを自分の環境に適応させることから始めよう |
|
| 連載:ゼロから始めるLinuxセキュリティ(全11回) 奥が深いセキュリティ対策の世界をゼロから解説。ホストレベルのセキュリティからファイアウォール、IDSの構築、ログ管理方法まで、システム管理者必見 |
|
| 特集:WebDAV時代のセキュリティ対策[前編] WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる |
|
| 特集:FreeS/WANによるIPSecの導入と運用[前編] LinuxでIPSecを利用するには、「FreeS/WAN」というIPSecスタックを用いることになる。まず、これをインストールすることから始めよう |
|
| 特集:Linux以外のIPSecスタックとの相互接続[前編] 別のOSや異なるIPSecスタックとの相互接続が可能なら、その用途は大幅に広がる。前編では、FreeBSDのKAMEと相互接続を試みる |
|
| 特集:sshでセキュアネットワーク サーバにリモートログインする場合は、暗号化して転送するsshを使おう。sshをサーバとクライアントにインストールすれば、インターネット上でも安全な通信が可能になる |
|
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




