最 小コストで最 大 限 の 不 正 行 為 対 策

ipfwadmの4つの機能
LinuxのカーネルにはIPパケットのフィルタリングによるIPファイアーウォール機能が用意されています。今回想定しているRedHat
Linux 5.2のカーネルは、すでにIPフォワードの機能が組み込まれていて、簡単な設定でファイアーウォールの機能が有効になります。
Linuxにはいくつかのディストリビューションパッケージがありますが、すべてのパッケージにこの機能が初期状態でカーネルに組み込まれているかどうかはわかりません。 もしRedHat以外のパッケージを使っているなら

実践

Linux

ば、IPフォワードの機能を有効にするために、再コンパイルが必要なのかどうかをチェックしてください。
Linuxマシンに対してIPパケットのフォワードの指定を行っただけでは、マシンはネットワークを橋渡しするルーターの役割しかしていません。これをipfwadmのようなコマンド

セキュリティー講座を使い、制御の設定をして初めてIPパケットSOHO環境を想定したPCルーターによるフィルタリングの設定は前回で終了しるためのインターフェイスの役目をしています。

ました。
しかし、何度も述べたとおり、これまでの解説は一例であって、解説したとipfwadmを使ったIPファイアーウォールはおりの設定がすべての環境で万能であるとは考えていません。そこで今回は、前回フィルタリングによるファイアーウォールの役目を果たすようになります。i p f w a d m はLinuxのカーネルに組み込まれているIPファイ
アーウォールの機能を外部からコントロールす

次の5つの機能から成り立ちます。

で足りなかった部分を補足するような形で、LinuxによるIPファイアーウォールと1IPパケットの記録（アカウンティング）

コマンド「ipfwadm」について説明を加えます。

…通過したIPパケットの記録を取る

第6回

2ファイアーウォールへの入力パケットの制御

ipfwadmを極める…コンピュータに入ってくるIPパケットを制御する

ソフトウェアコンサルタント すずきひろのぶ

3ファイアーウォールからの出力パケットの制御…コンピュータから出ていくIPパケットを制御する

4ファイアーウォールを中継するパケットの制御…コンピュータを通過していくIPパケットを制御する

304 INTERNET magazine 1999/7

インターネットマガジン／株式会社インプレスR&D©1994-2007 Impress R&D

5IPマスカレード機能…コンピュータを通過していくIPパケットのアドレス情報を書き換えるめの窓口を作り、これを利用して通信を行いしたルールに従って記録されます。これらのます。ポートは0から65535までの番号で示

記録は/proc/net/ip̲acctに保存されます。

します。0から1023まではWell-Knownポー

IPパケットの記録といっても基本的にはIPトと呼ばれ、どのアプリケーションプロトコルパケットの送信元と送信先、ポートの区別と今回はこれらに関して説明しますが、そのに使用するかが決められています。また、通過した流量を記録しているレベルに留まっ前にTCP/IPのアドレスとポートの仕組みをざ

Well-Knownポートはroot権限がなければ使ています。セキュリティーに対してこの記録っとおさらいしておきましょう。

えません。1024から49151までは登録ポートの上手な使い方があるのかも知れませんが、と呼ばれていて、何らかのアプリケーション筆者は残念ながら効果的な使い方は知りませのために用意されているポートです。49152

ん。個別のマシン（IPアドレス）に対してもから65535までは自由に使ってよいポートと記録が取れるので、どのマシンがどの程度ルなっています。

ーターを使っているかぐらいの情報はわかり

IPパケットは3つの情報を持つ
TCP/IPをごく単純なモデルを使って説明します。 前 回 も簡 単 に説 明 しましたが、どのプログラムがどのポートを使っているのTCP/IPはプロトコルの種別とIPアドレス、ポかがわからなければ、双方で通信ができませート番号で接続する相手を区別しています。

んので、共通の規約が決められています。たIPパケットのヘッダー部分には次のような情とえば、電子メールに使うSMTPプロトコル報が入っていて、この情報によってIPパケッのポートは25番ですし、ウェブサーバーのトはどこのコンピュータのどのプログラムにたHTTPプロトコルのポートは80番です。相手どり着けばよいかを区別します。のコンピュータまではIPアドレスを使って識Step2 ルーターとして使用する（記録中）

別し、そのコンピュータ上のどのアプリケー

Step3・プロトコル種別（TCPかUDPか）

ションに接続するかは、ポート番号を使って・送信元IPアドレス／送信元のポート番号識別します（図1）。

ます。
IPパケットの記録と表示の手順は次のよう。
なステップになります（リスト2）

Step1

ipfwadmで記録をとる条件を設定する

ipfwadmを使って表示する

IPパケットを制御する

これらの接続状況は「netstat」というコ・送信先IPアドレス／送信先のポート番号マンドを使って観察できます。リスト1 はこの連載では、PCにLinuxをインストール

プロトコルの種別は相手と通信する方法のnetstatを使って観察しているところです。マ

してルーターにしたマシンをPCルーターと命規定になります。もちろん、双方で同じプロシン名clientからマシン名serverへFTPして名しています。図2がこの連載のモデルとなるいる状態で、server上でnetstatを実行してネットワーク構成です。PCルーターの中身は接続状況を表示させています。

eth0とeth1という2つのNICを使って内部ネトコルを使わなければ通信ができません。
皆さんがご存じのとおり、IPアドレスはネットワークに接続されているコンピュータを区別するためのもので、IPパケットがそこに到ットと境界ネットのルーターの役割を果たし、IPパケットの記録をとる

入力パケットと出力パケット、中継するパケ達するために必要な情報です。

ットを制御するようなIPフィルタリングによポートというのはプログラムの通信の窓口

IPパケットの記録をとる機能のことを普通ってファイアーウォールを実現しています。こだと考えればよくわかると思います。コンピはアカウンティング（accounting）と呼んでれだけでも専用ルーター機によるIPパケット

ュータの上でプログラムは自分が通信するたいます。IPパケットの流れはあらかじめ設定

フィルタリングと遜色のない機能を提供して

図1

リスト1

IPパケットの持つ情報

netstatを使って通信の状態を見る% netstat192.168.0.10

Active Internet connections (w/o servers)
FTP
TELNET
SMTP
DNS
WWW

21
T 23
C 25
P 53
80

プロトコル種別

192.168.1.8

ここへ接続
IPパケットProto Recv-Q Send-Q Local Address

Foreign Address

Statetcp

client:6228ESTABLISHED

00 server:ftp

TCP 192.168.0.10/21 192.168.1.8/6228

ポート番号

プロトコル
種
別

送信先アドレス/
ポート番号

送信元アドレス/
ポート番号

プロトコル種別

ポート番号（サービス名）
自分のマシンのアドレス（マシン名）

インターネットマガジン／株式会社インプレスR&D©1994-2007 Impress R&D

ポート番号（サービス名）相手のマシンのアドレス（マシン名）

INTERNET magazine 1999/7305

います。

ただけですが、通過に関する大枠のポリシー

山口英監訳

付録G IPプロトコル一覧 p.p.905-915

PCルーターで制御できるのは、入力パケッ

は、内側にも外側にもまず何も通過させない

トと出力パケット、中継するパケットの3つでというところから始めます。次に慎重に必要す。この連載では通過させるIPパケットのフ最小限のIPパケットのみを通過させます。どィルタリングというのが目的なので、中継すのようなパケットの通過を許すべきかは、次るパケットのみを取り上げ制御しています。の本が参考になるでしょう。

レスの変換とポート番号を変換することによ
UNIX&インターネットセキュリティー

前回は「どんなプロトコルを通すべきか、考慮が必要である」ということを簡単に触れ

IPマスカレードの持つ意味
IPマスカレード機能は、ルーターがIPアド

制御方法に関しては前回の記事を参照してください。

谷口功訳

り、外側に向けている1つのIPアドレスを複オライリージャパン

数のIPアドレスで使えるようにする機能です

Simon Garfinkel, Gene Spafford著（図3）。
IPマスカレードの最大の利点はグローバル

リスト2IPパケットの記録を取るアドレスを有効に利用できることです。イン

Step1 条件の設定

ターネットの世界で唯一しかないグローバル

次のコマンドを入力する（スクリプトファイルにして実行してもいい）# /sbin/ipfwadm -A -f# /sbin/ipfwadm -A out -a -S 192.168.1.0 -D 0.0.0.0# /sbin/ipfwadm -A out -a -S 0.0.0.0 -S 192.168.1.0# /sbin/ipfwadm -A in -a -S 192.168.1.0 -D 0.0.0.0# /sbin/ipfwadm -A in -a -S 0.0.0.0 -D 192.168.1.0

アドレスの組み合わせは約42億になります（ただし、すべてのアドレス空間を有効に使えているわけではないので理論値よりもさらにこのコマンドを実行小さい値になります）。しかし、それだけあってもグローバルアドレスが枯渇する状況が憂●オプション説明-A [方向]-a-S [IPアドレス*] [ポート番号]-D [IPアドレス*] [ポート番号]

ルールを定義する方向の指定。[方向]はin、out、bothのいずれかルールの追加
発信元アドレスの指定（ポート番号はなくてもいい）
送信先アドレスの指定（ポート番号はなくてもいい）慮されています。そこで、IPマスカレードによって少ないグローバルアドレスを有効に使うわけです。
IPマスカレードには副作用として利点と欠*IPアドレスは192.168.1.0/24というようにマスクを加えることができる点があります。利点としては、内部から外部

Step2 実際にルーターとして使うへのIP接続がないかぎりアドレスとポートのStep3 記録した結果を表示する
次のコマンドを実行する# /sbin/ipfwadm -A -l
IP accounting rules
pkts bytes dir prot source
117 11764 out all
116 11666 out all
178 7183 in all
177 7143 in all

192.168.1.0/24
anywhere
192.168.1.0/24
anywhere

割り振りが行われないため、外部からは内部へアクセスしようがないことです。内部を隠このコマンドを実行
destination

ports

anywhere
192.168.1.0/24
anywhere
192.168.1.0/24

n/an/an/an/a

してしまうことと同じことになります。IPマ
表示結果

スカレードでは、内部から外部に接続して送ったパケットの応答パケットのみを通します。
原理的には、応答パケットを装ったパケットを送り込むという特殊な攻撃ができますが、pkts：記録したパケットの数
bytes：データ量（バイト）
dir：方向prot：プロトコル
source：発信元アドレス
destination：送信先アドレス
ports：ポート

逆をいえば攻撃としてできるのはその程度しかなく、この点に関してはセキュリティー上有利に働きます。
欠点としては、ポートを変換するのでいく
つかのアプリケーションはIPマスカレード越し

プロトコルは指定していないのでTCPとUDPの両方を記録している。TCPでポートの指定がないときportsの表示は *->* となる。ポートの指定をしているときは、*の部分にそのポート番号が入る。
例）に使えない可能性があることです。しかし、今では大きな問題ではなくなってきています。
以前は、pingコマンドやtracerouteのような# /sbin/ipfwadm -A in -a -P tcp -S 192.168.1.0/24 1024:65535 -D 0.0.0.0/0 80# /sbin/ipfwadm -A -l
IP accounting rules
pkts bytes dir prot source
destination
ports
291 30043 in tcp 192.168.1.0/24
0.0.0.0/0
1024:65535 -> 80

ICMPプロトコルを使うコマンドが使えないという問題がありましたが、現在では改良されて使えるようになっています。また、使用頻度の高いプロトコルでIPマスカレードを使っ

306 INTERNET magazine 1999/7

インターネットマガジン／株式会社インプレスR&D©1994-2007 Impress R&D最 小コストで最 大 限 の 不 正 行 為 対 策て中継できないものは、専用のカーネルモジュ

すべてPCルーターのeth0（192.168.0.14）

L i n u x - 2 . 2 . x ではi p f w a d m に替 わりールがどんどん作られている状況にあります。のように見えます。
（インターネット側も含ん「ipchains」を使ってLinux-2.2.xで強化されで）境界ネット側から内部ネット側にあるネたIPファイアーウォール機能を使います。

IPマスカレードを使う

ットワーク機材は何も見えないので、アクセSOHO環境のような小規模なネットワークスできないだけではなく、内部構造もわかりはipfwadmで十分に保護することができるの

さて、IPマスカレードの使い方ですが、こませんし、あるいはICMPに関連したサービで、あわててipchainsに乗り換えることはな

れから説明する例では、PCルーターのeth0ス不能攻撃も仕掛けることもできません。

いと考えています。また、ipfwadmで行って（192.168.0.14）にIPマスカレードをかけま

この設定だけではすべてのIPパケットが通いる機能はipchainsでも同じことができるのす。一般には、境界ネットと内部ネットともってしまいますが、IPパケットフィルタリングで、将来乗り換えることがあってもそんなににプライベートアドレスを使う場合にIPマスと同じように特定のアドレス、特定のプロト大変ではないと思います。

カレードは使いません。しかし、Linuxによるコル、特定のポートに対してのみIPマスカレ

しかし、この強化によりLinuxはさらにビIPマスカレードを紹介するために、ここでは便ードを設定し（リスト3 ）、あとは通過させジネスシーンで活躍するでしょうし、PCルー宜上PCルーター上でIPマスカレード機能をないこともできます。

ターでも高価な専用ルーターと同等な機能を用意できるようになります。

実行することにします。次のコマンドを実行

PCルーターのこれからすると、IPマスカレードが実行されます。

■お詫び# /sbin/ipfwadm -F -p masq

現 在 、 こ の 連 載 は RedHat Linux 5.2

前 回 （ INTERNET Magagine 1999/6）（Linux-2.0.36）を前提としています。今後のP299にあるリスト⑤に誤りがありました。

一般に広まるLinux-2.2.xでは、さらにIPフリスト④のように訂正してください。

このようにすると、 内 部 ネット側

ィルタリング関連が強化されます。

（192.168.1.0）から外部へ接続するときは、
図2

リスト3

サイトのネットワーク構成ネットワークアドレス

ルーター（専用機）●以下のファイルIPmasqを作成して実行する

サイト

192.168.0.0
192.168.0.1

境界
ネット

内部
ネット

サーバー
192.168.0.10

プロバイダー
ネットワークアドレス
192.168.1.0
192.168.1.8
192.168.0.14

eth0

192.168.1.1

eth1
PCルーター
クライアント

図3

IPマスカレードを設定する

ブロードキャストアドレス

ブロードキャストアドレス

192.168.0.255

192.168.1.255

IPマスカレードのしくみ#!/bin/sh#すべてを拒否/sbin/ipfwadm -F -p deny
#IPマスカレードを行うと同時に内部ネットからのDNS（53）の通過を許可/sbin/ipfwadm -F -a m -b -P udp -S 192.168.1.0/24 -D 0.0.0.0/0 53#IPマスカレードを行うと同時に内部ネットからのHTTP（80）を許可/sbin/ipfwadm -F -a m -b -P tcp -S 192.168.1.0/24 -D 0.0.0.0/080
このコマンドを実行●IPマスカレードが有効かを確認する% /sbin/ipfwadm -F -l
IP firewall forward rules, default policy: denytype prot source
destination
ports
acc/m udp 192.168.0.0/24
anywhereany -> domain
acc/m tcp 192.168.0.0/24
anywhereany -> httpIPマスカレードが有効になっている

192.168.0.2

イン
ターネット

202.XXX.2.5

表示
結果PCルーター

192.168.0.3
192.168.0.1

リスト4

先月号リスト5の訂正●間違いif [ ! -f $C ]; then## ipfwadmがみつかりません。
echo "IP filter: ipfwadm not found" >&2
exit 0fi

192.168.0.4

IPパケット

IPパケット202.XXX.2.5/8656

192.168.0.2/6856

IPマスカレード機能

IPパケットの送信元アドレスとポート番号が変換される●正解$Cの部分は正しくは/sbin/ipfwadmです。
if [ ! -f /sbin/ipfwadm ]; then## ipfwadmがみつかりません。
echo "IP filter: ipfwadm not found" >&2
exit 0fi

インターネットマガジン／株式会社インプレスR&D©1994-2007 Impress R&D

INTERNET magazine 1999/7307

［インターネットマガジン バックナンバーアーカイブ］ ご利用上の注意
この PDF ファイルは、株式会社インプレス R&D（株式会社インプレスから分割）が 1994 年～2006 年まで発行した月刊誌『インターネットマガジン』の誌面を PDF 化し、「インターネットマガジン バックナンバーアーカイブ」として以下のウェブサイト「All-in-One INTERNET magazine 2.0」で公開しているものです。

http://i.impressRD.jp/bn
このファイルをご利用いただくにあたり、下記の注意事項を必ずお読みください。
z 記載されている内容（技術解説、URL、団体・企業名、商品名、価格、プレゼント募集、アンケートなど）は発行当時のものです。
z 収録されている内容は著作権法上の保護を受けています。著作権はそれぞれの記事の著作者（執筆者、写真の撮影者、イラストの作成者、編集部など）が保持しています。
z 著作者から許諾が得られなかった著作物は収録されていない場合があります。
z このファイルやその内容を改変したり、商用を目的として再利用することはできません。あくまで個人や企業の非商用利用での閲覧、複製、送信に限られます。
z 収録されている内容を何らかの媒体に引用としてご利用する際は、出典として媒体名および月号、該当ページ番号、発行元（株式会社インプレス R&D）、コピーライトなどの情報をご明記ください。
z オリジナルの雑誌の発行時点では、株式会社インプレス R&D（当時は株式会社インプレス）と著作権者は内容が正確なものであるように最大限に努めましたが、すべての情報が完全に正確であることは保証できません。このファイルの内容に起因する直接的および間接的な損害に対して、一切の責任を負いません。お客様個人の責任においてご利用ください。

このファイルに関するお問い合わせ先
All-in-One INTERNET magazine 編集部
im-info@impress.co.jp
Copyright © 1994-2007 Impress R&D, an Impress Group company. All rights reserved.