2004年1月
by COON
はじめに
セキュリティの実態
通信の仕組み
セキュリティ向上のために
ファイヤーウォールマシンの製作(Linuxマシン)
ルーターについて
ネットワーク構成
IPアドレスの設定
ルーターのハードウェア
ソフトウェア(Floppyfw)
起動(システム)ディスクの作成
ファイルの設定、編集
おわりに
参考文献
|
|
<はじめに>
インターネット、及びパソコンの技術の発達は目を見張るものがあります。私がインターネットに初めて接続した10年前はPPP接続(電話を使ったダイヤルアップ接続のこと)でわずか9600bps(1秒間に1bitの情報を送る速さの単位)の今では考えられない低速でした。それが、2000年5月からはFLET'S
ISDNが64kbps(1kbps=1000bps)で常時接続を提供し、さらにはOCNエコノミーでも128kbpsとかなりの高速となりました。ここ福岡でも2000年夏よりCATVインターネットが可能になり、今春サービス開始予定のADSLや無線接続による1.5Mbps(1Mbps=1000kbps)の接続(名前を覚えるだけでも大変!!)など、状況はどんどん進化しています。Internet接続がより高速化し、そして常設(24時間接続のこと)の方向で進んでいるのです。
わたしの家でもこの波に乗り遅れまいと、CATVインターネット常設がサービスされるのと同時にこれを使用しはじめました。24時間好きなときにインターネットを利用できるわけですから、朝起きたときにまず寝室で天気やTOPニュースを見、子供達は学校から帰って来るといつでも子供部屋でインターネットを利用して調べ物が出来るという環境になったわけです。この調子で行くと新聞が不必要になるのも近いのではないかと思っています。通信速度もISDNと比べても20〜160倍近く速くなり、ホームのページ(ブラウザを起動したときに表示される画面)にしているYahooの画面が一瞬のうちに表示されるのは、今までのイライラから解放され実に心地良いものです。
ところがこの「常時接続」にはセキュリティ上のとんでもない罠が隠されているのは、一般の人はほとんど知りません。自分はそんなはことはないと無関心でいると、世の中を騒がしている大事件に荷担してしまうおそれは十分にあるのです。(決して大げさではありません)以前、国の機関のホームページが勝手に何者かによって書き換えられるという事件、つまりハッカーによって他者のコンピューターが制御されるという事件がありました。そういう人たちは(インターネットはインターナショナルなネットワークですから日本に住んでいるとは限りません。)直接ターゲット(コンピュータA)に攻撃をすることはありません。なぜならAに直接に攻撃をすると、その経路情報から自分(D)が特定されてしまうからです。従って彼らはまず自分の自由になる無関係な人のコンピュータ(C)を探す事になります。そしてそれがうまくいくと今度はCを使ってまた新たに自分の意志通りに動く別のコンピュータ(B)を探し、たとえばそこからAを攻撃します。つまりD→C→B→Aの順にアタックし、問題を複雑にしDを分からなくしてしまいます。もちろんもっと階層を深くして複雑にも出来ます。
BやCは大きな会社のセキュリティで守られたコンピューターはふつう使いません、むしろセキュリティの甘い個人のコンピューターを使います。うちのはウインドウズマシンだから関係ない、というのは間違いで、そういうコンピューターこそ狙われるのです。そして彼らはPPP接続よりも常設接続を利用して進入してきます。コンピューターの電源を落としても、IPアドレス(後述)が変わらなければ同じです。「罠」といったのはこういうことなのです。こういう攻撃は世界中から日常的に行われています。そのほとんどはただの興味でやっていることかもしれません。好奇心旺盛な青年がただの遊びでやっているにすぎません。しかし中には悪意を持った人間もいることをお忘れなく。
それに、自分のコンピューターの中身が知らないうちに他人にのぞかれているかもしれないのは、あまり気持ちのいいものではありません。インターネット常設で何気なくネットワークコンピューターを開いたらお隣の家のコンピューターの中身がごっそり見えたという笑えない事実もあります。
ここではインターネットの通信の仕組みと、どうすればセキュリティを向上する事が出来るか、出来るだけわかりやすく話していきたいと思います。
<通信の仕組み>
(IPアドレス)
IP(Internet Protocol)アドレスという名前を聞いたことがあるでしょうか?LANを組んでいるコンピューターとかインターネットに接続しているコンピュータには必ず付いている、コンピューターを特定する32bit(2進数32桁)のアドレスで(8bitずつに区切って10進数で表記する)。例えばウィンドウズマシンで「スタート/ファイル名を指定して実行/Winipcfg.exe (CR)」すればあなたのコンピューターのIPアドレスがわかります。(ちなみに今艇庫で打ち込んでいるこのコンピューターのIPアドレスは192.168.1.2という値でした)このアドレスは自分で設定する方法とDHCPサーバーというネットワークにつながっている別のコンピュータから割り当てられる(取得する)方法があります。いずれにしても、全てのコンピューターはこのIPアドレスによって区別され、今、はやりのE−MailやWebもこのIPアドレスを頼りに、情報の経路設定(ルーティング)が行われ、間違いの無いように情報(パケット)が伝達されます。つまりIPアドレスはパケットを届けるための宛先や差出人を表す住所のようなものです。よくホームページでhttp://www1.ocn.ne.jp/~suisan-h/などというURL(ホームページのアドレス)が使用されますが、これは先のIPアドレスをDNS(Domain
Name Service)という機能によって、私達が使いやすいように変換したものなのです。時々間違える人がいますが、このIPアドレスはコンピューターについているのではなく、厳密にはコンピューター内部のネットワークカード(NIC、つまりLANカードのこと)ごとに設定されています。
(グローバルIPアドレスとプライベートIPアドレス)
IPアドレスはグローバルIPアドレスとプライベートIPアドレスに分けることが出来ます。インターネットの世界では、ふつうグローバルIPアドレスが使われています。これは世界中で一意しかありません。つまり同じグローバルIPアドレスを使っているコンピューターは同時に2台はないわけです。もし同じIPアドレスで2台以上インターネットに接続されていたら、パケットをどこに送ったらいいのか分からなくなってしまうからです。従って数に限りがあり、単純に言うと2の32乗=43通りのアドレスがあります。もちろん後に出てくるプライベートアドレスやその他の理由で実際はずっと少なくなります。いま時々新聞の紙面をにぎわしているIPアドレスの枯渇はこのグローバルIPアドレスのことなのです。
あなたは普通グローバルIPアドレスでインターネットに接続しています。もしこの接続が「常設」接続であり、24時間使いたい放題だったらどうなるでしょう。それはハッカー達の攻撃の対象になり、彼らはパスワードを高性能なパソコンにせっせと解かせ、進入を試みるわけです。
プライベートIPアドレスの方は、内部LANという閉じたネットワークの中で使用し、WAN(外側)に出ていかない、つまりインターネットで使用できないIPアドレスです。このプライベートIPアドレスは、はじめの8bitが192で表されるのですぐに分かります。
それではどうすれば他者の進入をくい止める事ができるでしょうか。進入を防ぐために防護壁(Fire Wallと言います)を作ります。必要であれば何重にも作るわけですが、確実な方法はありません。また新しい抜け道(Security
Holeと言います)が発見されるからです。基本は相手の進入の機会を許す過剰なサービス(例えばCGIやSSI、Sendmailなど)を使わないことですが、実際問題として不可能です。ところが、本来インターネットで使うことができないプライベートIPアドレスでインターネットに接続するという方法でセキュリティを高めることができます。これは自分のセキュリティを守るために大変有効で基本的な方法です(スクリーニング フィルターといいます)。下図のように、自分のコンピューターはプライベートIPアドレスなのに途中でグローバルIPアドレスに自動的に変換して(ルーターという装置を使います)、あたかもAからグローバルIPアドレス(例では202.138.162.10とします。このグローバルIPアドレスは契約しているプロバイダーからもらいます、ここでは例として適当に書いたので、上段の説明でも分かるように、このアドレスで決してインターネットに接続しないように)をつかってインターネットに接続するというように見せかけてパケットを送る方法です。また逆にインターネットからA宛に送ったパケットはルーターで宛先をプライベートIPアドレスに替えるのですが、インターネット側からは、202.138.162.10に送っているようにしかみえないのです。この方法をIPマスカレードといいます。Masqueradeとは仮装舞踏会という意味があります。IPマスカレードを使うと、たとえグローバルIPアドレスを頼って、外部から進入してきても、そのグローバルIPアドレスはルーターに設定されているので、ルーターを越えることが出来ません。この様にルーターがファイヤーウォールとして働くため、侵入者は目的のコンピューターにたどり着くことができないのです。
|
|
from |
|
from |
|
← |
← |
この事によりルーターがファイヤーウォールとして働いていることが理解できたと思います。セキュリティーに関してはたとえ個人ユーザーであっても、一人ひとりがもっと関心を持って、対策をたてなければならない問題だと思います。余談になりますが、面倒くさがってパソコンショップや知人などにE−mailの設定などを頼むのもセキュリティー上危険です。簡単な操作で知らないうちにメールを読まれる可能性があります。もちろん読まれたという跡形は残りません。セキュリティーは近い将来もっと身近な、かつ深刻な問題になってくると私は思っています。以上でセキュリティーに関する概要を終わりにしたいと思います。
|
|
<ルーターについて>
上の章のルーターについて補足説明しますが、これは皆さんがISDNでダイヤルアップ接続するときに使うルーター(ダイヤルアップルータ)ではありません。NATやIPマスカレードという機能の付いたLANとWAN、またはLAN同士をつなぐルーターのことであり、ネットワークルーターといいます。もちろん市販されていますが、高価なものですから、この章で自作してみたいと思います。
これらのネットワークルーターはもともと、パケットのルーティング(情報経路の制御、つまりパケットの交通整理)することが目的で作られました。たとえばインターネットを一つのグローバルIPアドレスで、LANにつなぐ時に使います。そうすることにより次のネットワーク構成の図のようにLAN内の複数のコンピューターが同時にインターネットと接続することができるのです。もちろんこれから制作するルーターでもそういうことができますので、対応できる設定にしておきます。ただしプロバイダーによってはそのような使い方を禁止しているところもありますので注意してください。
この様にいくつかのコンピューターを一本のラインでインターネットにつなぐ方法は、ルーターをわざわざ使わなくても、WINDOWS98やMEにある「インターネットの共有」という機能でできます。私もしばらくそれを使っていましたが、ファイルのダウンロードなどが極端に遅くなって使いづらいようです。原因は分かりません
<ネットワーク構成>
インターネットからはプロバイダーを通じてモデムまでつながっています。
モデムからは普通のストレートケーブルでルーターのNIC(eth0とします)につながっています。ルーターには2枚のカードがついており、もう片方をeht1としました。そこからストレートケーブルでハブにつながり複数のコンピューター(ウインドウズマシン)につながります。
ここではインターネットからeth0までをWAN側、eth1から先をLAN側と言うことにします。

問題のグローバルIPアドレスはここでは202.138.162.10としていますが、前述しているようにこれらのIPアドレスはNICに割り当てられます。ここではeth0に割り当てられるのです。ただしこの値は、私の家ではプロバイダーのDHCPサーバーにより自動的に割り当てられるので、グローバルIPアドレスを手動で打ち込む必要はありません。従って本章でもDHCPによる自動取得を使うことにしました。自動取得してきた結果202.138.162.10になったと理解してください。
WAN側(インターネット側)のIPアドレスの設定の他に、DNS(ネームサーバーともいう)とゲートウェイというIPアドレスも設定しなくてはいけません。ここではとりあえず、
DNSを202.138.2.70ゲートウェイを202.138.2.71にしました。これらのアドレスはプロバイダーから教えてもらってください。(くれぐれもこの値で実際にテストしないように)
eth1はLAN側になりますのでプライベートIPアドレスが使えます。ここでは192.168.1.1を指定します
クライアント1〜nのIPアドレスはLAN側ですからプライベートIPアドレスで設定します。192.… とこちらで指定もできますが、ルーターにDHCPサーバーの機能を持たせ自動発行できるようにしました。
ルーターはLinuxで構築します。フロッピーディスク(後に詳しく作り方を説明しています)で起動させ、わずか8MBのRAMで走らせますので、あまり高性能のマシンの必要はありません。ハードディスクもいりませんし、CD−ROMも不必要です。いったん起動してしまったらキーボードもマウスもモニターもいりません。どのLinuxマシンもそうなのですが、NICの認識に手間取りますので、ISAバスよりもPCIバスのスロットルが2つ必要です。一世代前のペンティアムマシンで充分でしょう。私はアプ×××という店で¥3980でIBMのペンティアム100MHzのマシンを買ってきました。ハードディスクとCD-ROM、余分なRAMも外してジャンク部品にしました。
NICは2枚必要です。私は、1枚は¥980でPlanx社のFW100TXというカードをeth1に使いました。2枚目は家にあった型番不明のCompac社のカードをeth0に使っています。
<ソフトウェア>
トーマスさんという方がDebianというLinuxをOSにして走るFloppyfwというソフトを作っていますので、これを関連ファイルと共に、インターネットにつながっているウインドウズマシンの適当なフォルダーにダウンロードして使います。オリジナルサイト
は http://www.zelow.no/floppyfw/です。
ここから 1.floppyfw-current.img 2.dhcpcd.bz2 3.dhcpd.bz2 4.post-dhcpd.ini 5.rawrite2.exe 6.rtl8139.o 7.tlan.o
以上7つのファイルをダウンロードします。
1はプログラム本体 2はWAN側のDHCPサーバーよりIPアドレスを取得する(DHCPクライアントといいます)ために必要 3と4はLAN側にIPアドレスを発行する(DHCPサーバーといいます。)ために必要 5は1を解凍?するため 6はFW100TX(eth1)(RTL社の8139という石を使っていた)用のドライバーモジュール 7はCompac社のNIC(eth0)(調べてみるとテキサスインスツルメント社の石をつかっていた)のためのドライバーモジュールです。6と7は各自のシステムに合わせて適当なものをダウンロードしてください。
Floppyfwの起動ディスクを作成します。これは手持ちのウインドウズマシンより作ります。プログラムの設定や書き換えも同じくウインドウズマシンよりエディットするので簡単です。
(1)まず普通にフォーマット(MS-DOS Format)したフロッピィーを準備してAドライブに入れてください
(2)floppyfw-current.imgをrawrite2.exeで解凍しますがロングファイルネームに対応してないので、ファイルネームを適当に短く(半角8文字以内)、たとえばfloppyfw.imgとrenameします。
(3)(2)でできたfloppyfw.imgと同じディレクトリーにrawrite2.exeを持ってきて、これをMS−DOSプロンプトより実行します。するとフロッピーのなかにLinuxのシステムが書き込まれます。
(4)できたフロッピーはマイコンピュータで開くことができます。これを使ってフロッピーのPackageフォルダーにdhcpcd.bz2 dhcpd.bz2 post-dhcpd.ini をコピーし、Modulesフォルダーにrtl8139.o及びtlan.oをコピーしてください。
以下フロッピーのファイルの話です。編集はワードパッドで行ってください。ノートパッドでもできますが、改行コード表示が不適切なため使いにくいです。
(1)module.lstの編集
プログラムをワードパッドで開き(プログラムはプレーンテキストで書かれているのでそのまま開くことが出来ます)最後の行に
rtl8139.o ↓
tlan.o↓
と2行加えます。これは2枚のNICを認識、使用させるためのモジュールです。ここで矢印↓は改行を意味します。(以下同じ)
(2)config ファイルの編集
(1)と同様にファイルを開き以下を修正します。
(i) OUTOSIDE_IP=↓ #OUTOSIDE_IP
#OUTOSIDE_IP=DHCP を OUTOSIDE_IP=DHCP
にします。これはWAN側からeth0のIPアドレスを発行してもらうためにします。
(ii) OUTOSIDE_DEV=eht0↓
OUTOSIDE_NETMASK=↓
OUTOSIDE_BROADCAST↓
はそのまま使います。
これは(i)の変更に伴いIPを自動取得するため記入する必要が無いようです。
(iii) 次はLAN側eth1関係のの設定です。
INSIDE_IP=↓
INSIDE_IP=192.168.1.1↓
INSIDE_DEV=↓
INSIDE_DEV=eth1↓
INSIDE_NETMASK=↓
INSIDE_NETMASK=255.255.255.0↓
INSIDE_BROADCAST=↓
を INSIDE_BROADCAST=192.168.1.255↓
にします。
(iv)外部(WAN)にアクセスするためのDNSなどの設定です。
DEFAULT_GATEWAY=↓
DEFAULT_GATEWAY=202.138.2.70↓
NAME_SERVER_IP1=↓
NAME_SERVER_IP1=202.138.2.71↓
NAME_SERVER_IP2=↓
NAME_SERVER_IP2=↓
DOMAIN=↓
DOMAIN=mickey.ne.jp↓
HOSTNAME=↓ を HOSTNAME=m_matsuo↓
にします。ゲートウェイ、DNS(ネームサーバーのこと)、ドメイン、ホストネームの値はここでは仮の値です。実際はプロバイダーに聞いてください。HOSTNAMEは各自で好きな名前を付けていいのですが、福岡に展開しているCATVのプロバイダーはHOSTNAMEもCJ××××と指定してきますので、このまま正確に記入してください。
(v)メモリーを8Mしか使いませんのでそれを指定します。
ONLY_8M=n
を ONLY_8M_y
にします。8M以上搭載している場合はnのままでいいようです。
(3)post-dhcpd.iniの編集
LAN側にIPアドレスを発行する機能(DHCPサーバー)を追加するために編集します。
INSIDE_NET=192.168.0.0↓ を INSIDE_NET=192.168.1.0↓
にします。これは内部のネットワークを示すアドレスのことです。
DHCPD_FIRST_IP=↓ DHCPD_FIRST_IP=192.168.1.100↓
DHCPD_LAST_IP=↓
を DHCPD_LAST_IP=192.168.1.200↓
としました。これでLAN側に発行する開始アドレスと終了アドレスを指定します。こうすることによっでDHCPサーバーは192.168.1.100〜192.168.1.200の間でIPアドレスを発行することが出来るようになります。
さらにpost-dhcpd.iniの# Add special entries hereの行を次の様に訂正します。(訂正しなくても環境によっては動くかもしれません)
echo
"host m_matsuo { hardware ethernet 00:90:CC:07:D8:06; fixed-address
192.168.1.1; }" >> /etc/dhcpd.conf
もちろんm_matsuoは2の(iv)で説明したHOST名です。また00:90:CC:07:D8:06はeth1のMACアドレスと呼ばれるものです。この2つは各自の環境によって書き換えてください。MACアドレスはすべてのNICに製造時に割り当てられている固有のアドレスです。グローバルIPアドレスのように世界でただ一つしかありません。しかしこの値はNICのどこを見ても記入されてないし、取扱説明書にも、梱包されていた箱にも書かれていません。これを調べる方法は、対象のNICをウィンドウズマシンにとりあえず組み込み、ウィンドウズマシンから「スタート/ファイル名を指定して実行/Winipcfg.exe (CR)」を実行するとアダプタアドレスの窓にたとえば00:90:CC:07:D8:06の様に表示されます。または、今作っているこのフロッピーディスクでルーターを起動して、起動画面を注意深く見ていると表示されるのが分かるでしょう。いずれにしてもこのアドレスはIPアドレスのように変わることがありませんから、マジックでNICの金属プレートの部分に書き込んでいると、いちいち調べる必要がないので便利です。
(4)network.ini の編集
接続時にWAN側にホスト名を渡さなくてはいけないプロバイダーでは、次のように書き加えます。そうでないプロバイダーなら不要です。
if /bin/dhcpcd -d
-h ${HOSTNAME} ${OUTSIDE_DEV}; then の部分を
if /bin/dhcpcd -d
-h ${HOSTNAME} -I{HOSTNAME} ${OUTSIDE_DEV}; then とする。
(5)WINDOWS クライアントマシンの設定
インターネットの共有のクライアントマシンとして設定していればそのまま使えるので簡単です。TCP/IPの設定でIPアドレスは「自動取得」、WINS、GATEWAYは「なし」 DNSは「使わない」と設定してください。Microsoftネットワーククライアントもコンポーネントに忘れずに加えます。
<おわりに>
ずいぶん大急ぎで説明しました。かなり専門的なところは説明が不十分です。また、floppyfwはLAN内に構築されたウェブサーバーを外部に公開する方法など他にいろいろな機能を持っています。従って実際に構築しようとトライされる方は質問がたくさん出てくると思います。興味がある方は連絡ください。
またLinuxやウェブサーバーの構築についてもある程度ならお答えできると思います。メールでお願いいたします。(WindowsNT、2000については不勉強でよく分かりません。すみません)
mailto c00n_jp@yahoo.co.jp
<参考文献>
ファイル&Webサーバー構築ガイド スタークラスター著 エーアイ出版
Networking Linux やまだあきら 他著 アスキー出版
TCP/IPで使うローカルルーター 伊藤ぽん太 他著 エーアイ出版
Turbo Linuxでつくる
インターネットサーバー 内田康夫著
エーアイ出版
Red Hat Linuxで作る
ネットワークサーバー構築ガイド 秀和システム編著 秀和システム出版
<Floppyfw関連URL>
www.zelow.no/floppyfw/
www.bekkoame.ne.jp/~bero/1fd.html
www.dive-in.to/~makoto/floppyfw/index.html