11-2. ファイアウォ−ルとソフト (1) ファイアウォ−ルの基本 '96 * 種類と方法 UNIXのコンピュ−タでは、デ−タのやり取りの単位としてIPパケットを使う。もう 少し正確にいえば TCP/IP ネットワ−クの機構を持つコンピュ−タ、Windows パソコンで も Macintosh でも、何ならメインフレ−ムでもいい。 ネットワ−ク正確にいえば、セグ メントを相互接続するにはゲ−トウェイかル−タを使う。このゲ−トウェイまたはル−タ で、IPパケットを通過させないようにするのが、ファイアウォ−ルの基本である。 しかしまるでIPパケットを通さないのでは、ネットワ−ク接続している意味がない。そ こで特定のIPパケットのみ通しましょうというが、パケットフィルタリングである。あ るいは、プログラムを介してパケットを中継しましょう、但し特定のアプリケ−ションの パケットのみを中継しましょうというのが、コネクションフィルタリングである。 コネクションフィルタリングでは、 telnet などのコマンドを使う場合にゲ−トウェイに 一度入ってから、もう一度外部に telnet するような操作方法を必要とするのが、アプリ ケ−ションレベル・ゲ−トウェイのファイアウォ−ルという。そうでなくて、ユ−ザは意 識しなくても、プログラム側でゲ−トウェイを通過の制御してくれるのを、トランスポ− トレベル・ゲ−トウェイのファイアウォ−ルという。 a.IPパケットを選択する : パケットフィルタリング(スク−リニングともいう) b.IPパケットを通さない : コネクションフィルタリング 次の2種類ある b-1.アプリケ−ションレベル・ゲ−トウェイ b-2.トランスポ−トレベル・ゲ−トウェイ(サ−キットレベル・ゲ−トウェイ) [ ゲ−トウェイについて ] ゲ−トウェイでIPパケットの中継を禁止することを、IPフォワ−ディングを落とすと か ip forwarding off するといった言い方をする。ここでいうゲ−トウェイは UNIX のコンピュ−タでイ−サネット・インタ−フェ−スを2個持ったものか、専用ル−タであ る。しかしファイアウォ−ルのソフトを普通ゲ−トウェイのホストに載せるので、一般的 にはゲ−トウェイは、コンピュ−タの方を使う。イ−サネット・インタ−フェ−スを2つ 持つことから、ゲ−トウェイと呼ばずに Dual Homed Host などと呼ぶ場合もある。 * どちらがいいか コネクションフィルタリングの方が優勢なような気がする。これはインタ−ネットの環境 が変わって来たことと関係している。以前はクラスBを取得することが一般的で、内部ネ ットはこれをクラスC相当にサブネット化してネットワ−クを構成していた。ネットワ− ク的にもやや規模が大きく、パケットフィルタリングの方がパフォ−マンス的にも優れて いた。それに公式なIPアドレスを各ホストに割り振ることができたこと、幾つものサブ ネットを含む大きなネットワ−クだったことから、ホスト管理はDNSが適していた。こ の場合パケットフィルタリングのゲ−トウェイでなければ、このような構成はとれない。 それが最近どうも嫌がられるのは、新規のインタ−ネット接続サイトのネットワ−ク規模 が小さくなってきたこと。同時にクラスCを1個しか取得できないので、どうしても大規 模なネットワ−クを作りにくくなったことがある。基本的にはクラスCが1個では、1本 のネットワ−クのセグメントしか作れない。つまりバリアネットに使ったらおしまいとい う状況である。クラスCをサブネット分割して使うことも可能だが、DNSをトリッキ− に設定したりしなければならないので、これはあまり面白くない。否クラスCを1個まる まるもらえるのは96年当時でも難しくなっていた。 そうなるとゲ−トウェイはコネクションフィルタリングで、内部ネットにはプライベ−ト なIPアドレスを使うしかなくなる。コネクションフィルタリングの欠点は、ゲ−トウェ イを意識してネットワ−クコマンドを使用しなけばならないことであった。しかし最近は 意識しなくても使えるようなファイアウォ−ル製品が増えている。そうなると内部ネット のユ−ザ側からは、どちらでも構わないということになる。ネットワ−クの管理者からす れば、インタ−ネットに接続するために、IPアドレスの付け替えをひょっとしたらしな くて済むし、管理的にも安心で簡単になる。 どちらがいいか決めるのは結構難しい。コネクションフィルタリングの機構、即ちゲ−ト ウェイに各ネットワ−クコマンド用の Proxy サ−バ を置き、中継させるというのは、ど うもまっとうなやり方ではないような気がする。しかしIPパケットの転送を禁止してし まっているのだからしょうがないのだが。これに較べパケットフィルタリングの方は、ネ ットワ−クの設計をややこしいのだけれども、正当的に行うことができる。パケットフィ ルタリングの問題は、フィルタリングのル−ルを定義し設定することがやや難しいところ にある。FireWall-1 のGUIでル−ル設定したところ、ル−ルが複雑になって、思いも かけない部分に穴が生じていたという話も実際ある。 タイプ | IPアドレス | サブネット | DNS制御 | CPU負荷 ---------------|----------------|------------|------------|--------------- パケットフィル | パブリック | 分割する | 必要 | 一般的に小さい タリング | 外から見える | | | ル−ル数による ---------------|----------------|------------|------------|--------------- コネクション | プライベ−ト | しなくても | /etc/hosts | 一般的に大きい フィルタリング | 外から見えない | 関係しない | でもいい | * IPアドレス変換技術の登場 `21 この章を初め記述したのは1996年頃である。まだIPアドレス変換の技術が出てなか ったか、あるいは出始めたばかりであまり注目もされていなかった。当時ネットワンの人 達との勉強会があったりしたが、その席でも注目したのは小生だけだった。FireWall-1の Version 2.0 で、IPアドレス変換の実装が業界で初めてなされた。これによってファイ アウォ−ルの設置をはじめ、内部ネットワ−クの設計が大きく変わる予感がしたものであ る。その後の様子は、パブリックアドレスがクラスCまたはそのサブネットでしか取得で きなくなったことから、ともかく内部ネットワ−クはプライベ−トアドレスを使うことが 一般的になった。そしてファイアウォ−ルでIPアドレスの変換を行うのがデファクトな やり方となっていった。 ファイアウォ−ルのソフトはフリ−ソフトを初め、市販製品も多々出たが FireWall-1 が ほとんどのサイトで使われることとなった。やはり一番実績があり、信頼性も高いと評価 された結果だと思う。 FireWall-1 は最初パケットフィルタリング型のファイアウォ−ル として出発している。しかし小生が知った時には、単なるパケットフィルタリング型とは 呼べないものに進化していた。開発元の CheckPoint 社はステ−トフル・パケット・イン スペクション方式だといっている。パケットの中身までしっかり見て、どこからどこへの パケットかチェックしている。 このため UDP パケットでも確実に通過制御ができるよう になっている。内部的にはパケットフィルタリングとコネクションフィルタリングの機能 を持っているのだろうが、表面的にはパケットフィルタリング型といってよい。 * ファイアウォ−ル周りの構成パタ−ン `23/01 純粋なパケットフィルタリング型のファイアウォ−ルの場合は除く。ここではファイウォ −ルに装備の NAT によるIPアドレスの変換技術、 それにファイアウォ−ルの透過機能 によって、どのようなネットワ−ク構成が取れるか挙げてみた。透過機能はファイアウォ −ルの NetScreen に初めて搭載されたのでないか。 パケットフィルタリング型のファイ アウォ−ルと構成は同じように見えるが、IPアドレスがバリアセグメントも内部ネット も同一であることが異なる。パタ−ン5はボックス型の簡易ファイアウォ−ルでの構成で、 DMZ セグメントのIPアドレスがバリアセグメントと同じという製品仕様であり、違える ことはできない。ファイアウォ−ルの透過機能のように見えるが、そんな高級なものでな く、ただの仕様・制約である。製品としては SonicWALL や InstaGate がある。もちろん 透過機能をサポ−トする NetScreen であれば、パタ−ン5の構成もできる。 ※アルファベット大文字はパブリックIPアドレス。小文字はプライベ−トIPを示す。 バリアセグメント --------------------- A -------------------- A -------------------- A | | | ------ ------ NetScreen ------ FireWall-1 他 | | FireWall-1 他 | | 透過型ファイア | |--------- B ------ ------ ウォ−ル ------ DMZ セグメント |IPアドレス変換 | 内部ネット | --------------------- b -------------------- A -------------------- c << パタ−ン1 >> << パタ−ン2 >> << パタ−ン3 >> --------------------- A -------------------- A -------------------- A | | | ------ FireWall-1 他 ------ SonicWALL 他 ------ NetScreen | |--------- b | |--------- A | |--------- A ------ ------ NetScreen でも可 ------ 透過型ファイア | | | ウォ−ル --------------------- c -------------------- c -------------------- A << パタ−ン4 >> << パタ−ン5 >> << パタ−ン6 >> * ファイアウォ−ルに ACL ってあるか? 考えてみたらファイアウォ−ルに ACL はないぞ。そもそも ACL はレイヤ3スイッチやル −タでパケットフィルタリングさせるものだ。ACL( Access Control List )。2013/07/29、 FortiMail のことを調べていて何を考えたのか忘れたが、メモがあった。 (2) コネクションフィルタリングの特徴 '96 * 特徴 下の図のようにネットワ−クのセグメント a、b があり、ゲ−トウェイで接続しているが、 IPパケットの転送はしないという状況を考える。このままでは、ホストAからゲ−トウ ェイの向こうのホストBに直接アクセスできない。例えば telnet を使うには、一度ゲ− トウェイに telnet でロッグインして、そこからホストBに telnet をかけるという2段 階の操作が必要になる。AからBへファイル転送するには、まず Gate にファイルを持っ てきて、そこからBに持っていくという手順になる。これはだいぶめんどうである。 □ ホストB | -------------*----- a | IPパケット ↑ ------ % telnet B を転送しない × |Gate| ↓ ------ □ ホストA % telnet Gate | | -------*----------- b そこでゲ−トウェイに何らかのソフトを仲介させ、もう少しスマ−トにならないかと考え だされたのが、コネクションフィルタリングである。 代表的なフリ−ソフトに Socks が ある。Gate に sockd デ−モンを稼働させ、A側で rtelnet という Socks の専用コマン ドを使うと、% rtelnet B というようにアクセスが可能になる。Socks はネットワ−クの トランスポ−トレベルの TCP パケットを制御して、パケットを中継する。 このため、こ のタイプのゲ−トウェイはトランスポ−トレベル・ゲ−トウェイと呼ばれる。 telnet や ftp はこのような機構が必要であるが、WWWの HTTP パケットや電子メ−ル の SMTP パケットについては、ともかくパケットをゲ−トウェイを通過させるという点か らすれば、トランスポ−トレベルでの制御は不要である。ネットワ−クのアプリケ−ショ ンレベルで制御すれば済むことになる。 * トランスポ−トレベル・ゲ−トウェイ 実装に Socks、wrapper、fwtk などがある。下の図はネットワ−クレイヤ−を示したもの であり、Socks を例にとり説明する。トランスポ−ト層のすぐ上に、telnet や ftp で扱 う TCP パケットを制御するための socket layer がある。層というより、 TCP パケット 制御用のライブラリといった方が正しいかも知れない。このライブラリを使ってゲ−トウ ェイ用の socked を、他のホスト用に rtelnet などを作成する。socked デ−モンはゲ− トウェイ上で rtelnet や rftp などのコマンドを見張ることになる。 % rtelnet B ---------- ―――――――――――――――― socket layer | socked | | -----2------ -----1----- | |--------| ↓ ↓ | ↓ | | Transport | TCP | |--------| socked rtelnet Network ---|IP | IP |---- ------- ---------- ------- ---------- | TCP | | TCP | | TCP | |-----| |--------| |-----| | IP |------|IP | IP |------| IP | ------- ---------- ------- B Gate A 右上図は、ホストAからBへ telnet かける場合の socked デ−モンの働きを示している。 rtelnet B とすると、socked を中心にして 1 と 2 のコネクションが張られることにな る。それを socked は内部でまとめて、AからはあたかもBに telnet しているかのよう に見せかける。注意すべきはBにとってアクセス元は Gate であり、決してAではないと いうことである。このため、プライベ−トアドレスのホストからインタ−ネットのホスト にアクセスが可能なのである。 * アプリケ−ションレベル・ゲ−トウェイ ゲ−トウェイでIPパケットを通す場合と、通さないようにした場合のイメ−ジを下に示 す。左の図ではトランスポ−ト層の TCP レベルのところに通路があるので、 そこをパケ ットは素通りしていく。右図ではこの通路がふさがってしまっているので、このままでは パケットはゲ−トウェイを通過することができない。 そこでパケットを通過させるプログラムを用意する。このプログラムはすぐ下にきている TCP パケットを拾い上げて、反対の口に渡す働きがあればいい。 sendmail は最初からこ のような働きをするプログラムであり、その性質を利用してアプリケ−ションレベル・ゲ −トウェイとした例である。 また CERN httpd Proxy や Socks などは、 そのような働きをさせることを意図して作ら れたプログラムである。ちょうど敷居の上に構えておいて、何か来ないかいつも見張って いて、自分の欲しいものが来ると拾い上げて反対側に渡すのである。その時にただ渡すだ けでなく色を付ける場合もある。敷居の上にいるのは1人だけでなく、それぞれ担当別に いるかも知れない。 ここでいう"欲しいもの"ということは、パケットを選別することに他ならない。 "色を付 ける"というのは、DeleGate ように漢字コ−ド変換するといった話になる。一つ注意すべ きは sendmail や Proxy の機能は、 イ−サネットの口が2個ある必要は必ずしもないこ とである。IPパケットが入る口と、出る口が同じでも構わない。すなわち口が1個でも ファイアウォ−ルを構成できる。 ---------------- ---------------- | | | sendmail | Application | | | | | | | TCP | |−−−−−−−| |_| |______| |_| | | | | | | Transport | TCP -- TCP | | TCP | TCP | | -- | | | | |_| |__|__| |_| |_| |__|__| |_| Network _| | |_ IP _| | |_ --> _ IP | IP _ --> -----> _ IP | IP _ ----> IP IP | | | IP | | | ---------------- ---------------- < パケットを通す > < パケットを通さない > a. 最初から反対の口に渡す働きがある --> sendmail, named 等 b. 専用に反対の口に渡す働きをさせる --> CERN httpd Proxy, Socks 等 * トンネリング技術 `24/03 追記 [ AT&Tの TCP 固定トンネルソフト ] 本「ファイアウォ−ル」William R. Cheswick 氏ら、"4.5.1 メ−ル配送" の所に書いて あること。AT&Tベル研究所の Relay という TCP パケットのトンネリング・ソフトを メ−ル配送に用いた話である。メ−ル受信の流れでは、ホスト O に来たメ−ルは、 内部 のメ−ルサ−バのつもりですぐリレ−され、ポ−ト 26 番の I に送られる。 I に来たメ −ルはプログラム relay で、ポ−ト 25 番の R に送られる。ホストUser では sendmail などが動いていて、メ−ルが届けられることになる。 User からメ−ルを送信する流れは メ−ルサ−バのつもりで送ると、ホスト I の relay が働いて、すぐさま O に送られる。 INSIDEホストの /etc/inetd.conf 大体の設定イメ−ジ ----------------------------------------------------- OUTSIDE - O |port26 stream tcp nowait daemon tcpd relay tcp!R!25 INSIDE - I |port25 stream tcp nowait daemon tcpd relay tcp!O!25 RESEARCH - R と記す。 < メ−ル受信の流れ > ↓SMTP < メ−ル送信の流れ > ↑SMTP 25□ ____ 25□ ←― O| | O| | ------------------------- |リレ− ------------------------ |tunnel | User 25 26 | | User 25 | ■ □ <--- □ <----- □ ← FireWall ■ □ ------> □ ― ホストRは | | R| tuunel |I | | |I 関係なし ------------------------------ -------------------------- [ fwtk の plug-gw 汎用プロキシ・サ−バ ] hostX のメ−ルソフトが hostA に POP3アクセ POP3 POP3 Server スする。hostA では TCP/110番ポ−トを見張っ hostX □ ----> □ ---------> □ ていて、パケットが来たら、netperm-table の | |hostA |hostB 記述により hostB の 110 番ポ−トへ中継する。 ------------------------------------ 「UNIX MAGAZINE」'99/05/06/07,"ファイアウォ hostA% plug-gw -daemon pop & −ルの作り方" 参照のこと。7月号に FWTK 汎 用 TCP プロキシ− plug-gw の記事が詳しい。 hostA /usr/local/etc/netperm-table -------------------------------------------------- |plug-gw: port pop hostA -plug-to hostB -port pop [ SSH( Secure Shell ) のポ−トフォワ−ド機能 ] hostA% ssh -L 1000:hostB:110 hostB hostA の TCP/1000 番と hostB の TCP/110 に トンネルを張る。hostA から B へは 22番ポ− hostA □ --------> □ hostB トにアクセスする。hostA 上でメ−ルソフトを | 暗号化 22|sshd 使い、POP3サ−バは localhost の 1000番とす ----------------------------- る。別なホスト hostX が hostA に POP3 サ− メ−ルソフト POP3 Server バがあるとして、メ−ルソフトを設定してもア クセスはできない。 hostA% ssh -L 1000:hostC:110 hostB ssh のポ−トフォワ−ドは、こんなアクセスも sshd できる。「UNIX MAGAZINE」`23/08, P.149に書 hostA □ -------> □ ------> □ かれていること。次のように解釈した。 hostA | 暗号化 22| hostC| と hostC間でトンネルは張られるが、暗号化は ----------------------------------- hostA-B 間でなされる。hostB-C 間は暗号化は メ−ルソフト hostB POP3 Server されない。 [ relaytcp という概ねフリ−ソフト ] hostA% relaytcp -target hostB:80 -myport 8000 & hostX% http://hostA:8000/ 左の記載は hostB の 80番ポ−トにアクセスす る。SMTP, POP3, Telnet でもなんでも TCP パ 8000 トンネル 80 WWW ケットの通信を中継する。オプション指定で通 hostX □ ----> □ ---------> □ 信の記録もとれる。relaytcp は Perlで記述さ | |hostA |hostB れている。http://www.geocities.co.jp/Silic ------------------------------------ onValley-Oakland/4080/ にソフトはある。 [ ブロ−ドバンドル−タの静的IPマスカレ−ド機能 ] hostX □ |SMTP ADSL やBフレッツの個人向け BB-Router に搭 : ↓ 載されている、比較的新しい技術である。ポ− 10.1: 25 トフォワ−ディングとかバ−チャルサ−バとも ■ BB-Router ____ 言われる。外から来た特定番号のポ−トへのパ 1.1| | ケットを内部ネットのホストへ送る。図ではパ --------------------- | ブリックIPの 10.1 の 25/TCP に hostXから 1.2|SMTP 25 | アクセスすると、1.2 のメ−ルサ−バにアクセ □メ−ルサ−バ ← スすることになる。POP サ−バでも同様である。 (3) 2つのフィルタリングの方法 '96 * コネクションフィルタリング(IPパケットを通さない) [ 内部から外部への Mosaic のアクセス ] iij.ad.jpのDNS ■ □ www.iij.ad.jp | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ DNS \_________/ インタ−ネット ----- : |Out| : ----- □ Router | | パブリックアドレス -------*-------*------------------- nix.co.jj バリアセグメント | ------ HTTP の Proxy サ−バ(ポ−ト80で稼働とする) |Gate| /etc/resolv.conf ------ | プライベ−トアドレス -------*------------------- 内部ネット | User □ % mosaic http://www.iij.ad.jp ~./Xdefaults ----------------------------------- |mosaic*httpProxy: http://Gate:80/ [ 電子メ−ルのアクセス ] ----- : |Out| DNS MX Gate : ----- □ Router | | -------*-------*------------------- nix.co.jj | ------ ------ メ−ルサ−バ sendmail |Gate| |Mail| メ−ルリレ− ------ ------ User □ メ−ルクライアント | | | -------*----------*----------------- ゲ−トウェイに sendmail をおく。この sendmail は電子メ−ルを中継するだけであるか ら別に sendmail でなくても構わない。電子メ−ルは Gate からすぐホスト Mail に送ら れここからユ−ザに配送される。あるいはホスト Gate をメ−ルサ−バにして、直接ここ から配送する方法もある。ただこの場合 Gate ホストを、ファイアウォ−ルとメ−ルサ− バを兼任させることになり、注意が必要となる。 * パケットフィルタリング [ 構成例 ] パケットフィルタリング型のネットワ−ク構成にする場合、DNS の設定はだいぶややこし くなる。下図でホスト Out の DNS は、nix.co.jj ドメイン全体を管理する親である。サ ブドメイン sub.nix.co.jj の実際の管理は、ホスト Sub の DNS が行う。 これにより内 部ネットでホストを追加する場合でも、Sub の DNS を変更するのみで、Out の DNS はい じることはない。これはパケットフィルタリング型の、素直な分かりやすい構成である。 Sub の DNS を無しにして、Out の DNS にサブドメインの管理情報も一括管理させること はできる。しかし内部ネットの変更を、バリアネットのホストで行うのは、好ましいこと ではない。同様に Sub の DNS を Gate におくことも、 Gate をファイアウォ−ル機能に 専念させたいということから、これも好ましくない。 いっそ内部ネットでは DNS をやめ たいところだが、内部ネットもパブリックアドレスのため、そういう訳にも行かない。 iij.ad.jpのDNS ■ □ www.iij.ad.jp | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ DNS \_________/ インタ−ネット ----- : |Out| : ----- □ Router | | パブリックアドレス -------*-------*------------------- nix.co.jj | ------ ----- |Gate| |Sub| DNS ------ ----- | | パブリックアドレス -------*----------*-------------- sub.nix.co.jj | User □ % mosaic http://www.iij.ad.jp この構成で問題になるのは、外部から内部ネットのホスト名がすべて知られてしまうこと である。外部からはインタ−ネットの1次ネ−ムサ−バであるホスト Out の DNS にアク セスし、そこから Sub の DNS にアクセスして、内部ネットのホスト管理情報をみること ができる。内部から外部へアクセスできるが、 その反対はできないような DNS の設定は 可能である。"13-3. ファイアウォ−ルとDNS" で詳しく説明する。 [ 経路情報の問題 ] ネットワ−クが拡張されて、パブリックなIPアドレスが無くなってしまった。新たにセ グメント c を追加するには、プライベ−トアドレスを使うしかない。 あるいは管理者の 知らないところで、勝手にプライベ−トアドレスのセグメントを引っ付けられてしまった。 このような状況は非常に起こりそうである。この場合、プライベ−トアドレスの経路情報 がル−タを通過して、インタ−ネットに流れないようにしなければいけない。 インタ−ネット接続口のプロバイダ側で、おかしな経路情報はシャットアウトするように なってはいるらしいが、出していけないものは、ちゃんと自ネット側でチェックする必要 がある。具体的には Gate か Router で c の経路情報を通さないようにする。 このよう な状況で、ホスト User からインタ−ネットのWWWにアクセスしたいという要求が出た 場合、Gate2 にWWWの Proxy サ−バを導入して対応することになる。 ----- : ○ × |Out| : ↑ ↑ ----- Router □ a,b c の経路 | | -------*-------*--------------- a パブリックアドレス | ------ ○ × |Gate| ↑ ↑ ------ b c の経路 | -------*--------*------ b パブリックアドレス | ------- |Gate2| ------- □ User <-- 外部と直接関係してはいけない。 | | ------*---------------- c プライベ−トアドレス (4) フリ−ソフトによるファイアウォ−ル '96 * IPパケットを通さない場合 電子メ−ルはゲ−トウェイのホストで sendmail で中継するようにする。内部ネットから Mosaic や Netscape を使うために、ゲ−トウェイに HTTP のプロキシ−・サ−バ、 例え ば CERN httpd Proxy をおく。別に NCSA のものでもいいが、 CERN の方がデ−タのキャ ッシュ機能があるので、いいかなということである。それぞれの人が、同じWWWサイト をアクセスするような場合、インタ−ネットのそのWWWまでアクセスしなくても、ホス ト Gate にためておいてくれるので、素早くデ−タを見れたりするメリットがある。ル− タの負荷を減らすことにもなる。 [ Socks を使う場合 ] □ Router Socks のテストはやってない。一応このようにな | るのでないかということで、ご容赦頂きたい。し ----*---------- かし実際のところ、このような構成をとるサイト | はほとんど無かったと感じる。 ------ sendmail |Gate| socked Proxy ------ Socks 対応 CERN httpd Proxy | ----*---------- | User □ Socks 対応 telnet(rtelnet), ftp(rftp) [ fwtk を使う場合 ] | sendmail fwtk には HTTPアクセスのデ−タキャッシュ機能 ------ telnet-gw Proxy はない。キャッシュが必要ならば CERN を使う。 |Gate| ftp-gw Proxy ↓ ------ http-gw Proxy or CERN httpd Proxy | ----*---------- 注.ある時期から fwtk は商用利用禁止になった。 | 96年当時は自由にダウンロ−ドして使えた。今 User □ 通常の telnet, ftp 後は入手しても勉強やテスト程度で使うこと。 * IPパケットを選択する場合 | パケットフィルタリングするフリ−ソフトは色々 ------ 調べたところDEC社の screendぐらいしかない。 |Gate| DEC 社の screend しかし実際これを用いている記事は見たことがな ------ SMTP ポ−トを開ける い。一応注意点を。ftp クライアントにパケット | フィルタリング対応のソフトを使うことである。 ----*---------- | User □ ftp ソフトは NcFTP や FFF を用いる。 * tcp_wrapper を使ったメ−ルの制限 sendmail を inetd デ−モンの wrapper の tcpd 制御下におき、 外からの電子メ−ルを チェックする。inetd の働きは例えば telnet の要求があると、 inetd.conf の記述をみ て直ちに telnetd デ−モンを起動することである。wrapper の働きは telnetd を起動す る前に tcpd をかませてアクセスのチェックを行うことにある。この働きを sendmail に も使い、特定のIPアドレスからのメ−ルを拒否するよう設定する。具体的には下記のよ うに hostG の /etc/inetd.conf と crontab ファイルを記述する。 通過が許可されたメ −ルは hostG にたまる。それを cron で定期的に sendmail -q をやり、メ−ルをメ−ル サ−バ hostB に転送する。各ユ−ザへのメ−ル配送は hostB から行われる。 /etc/inetd.conf Sun, INDY 共通 ----------------------------------------------------------------- |smtp stream tcp nowait root /usr/etc/tcpd /usr/lib/sendmail -bs /var/spool/cron/crontab Sun, INDY 共通 ------------------------------------------ |0,15,30,45 * * * * /usr/lib/sendmail -q << 15分毎にメ−ルを配送する。 | ------- MX : メ−ルゲ−トウェイ この動作テストは行っていない。どうも |hostG| inetd.conf IPアドレスでメ−ルの受取り制限する ------- crontab というのは、実際的ではない。ダイアル | アップIPユ−ザからのメ−ルは、いわ --------*-------*------ 内部ネット ば全部同じIPアドレスになるのでない | か。これじゃ制限もへちまもない。各自 ------- 色々考えてもらいたい。 メ−ルサ−バ |hostB| sendmail ------- [ 要確認事項 ] hostG は外からの電子メ−ルを受ける窓口であり、hostB メ−ルサ−バへ中継する役目に なっている。上記の設定においてアクセス制限は hostG では有効なはずである。 しかし hostB ではアクセス制限しようとしても出来ないのでないか。電子メ−ルはいわばバケツ リレ−で hostG から hostB へのアクセスになる。hostG のバケツの相手は、まさに相手 そのものだからアクセス制限が有効になるのである。(uucp のバケツリレ−とは違う) [ tcp_wrapper のオプション ] tcpd をコンパイルする際に Makefile -DPARANOID とオプションを付けると、相手IPア ドレスからドメイン名の逆引きチェックができるようになるらしい。本当に相手が本者で あるかチェックするのである。相手ホストで identd デ−モンが稼働していれば、ユ−ザ 名のチェックをするオプションも設定できるらしい。ただし sendmail で相手ユ−ザ名を チェックするといってもこれは意味がない。ftp や telnet 等の場合に有効な機能である。 * Linux や FreeBSD の場合 `02/06 さて時は過ぎフリ−のフィアウォ−ル関係のソフトがいろいろ出てきた。 特に Linux が インタ−ネットサ−バとして着実に用いられるようになった。これらのソフトについてま とまって紹介しているサイトがあったので追記しておく。"Firewall 構築ガイド" という。 http://www.tac.tsukuba.ac.jp/~hiromi/firewall.html。 SOHO でのフィアウォ−ル設定 にはもってこいのサイトである。50万円以下のファイアウォ−ルのソフト並びにハ−ド 込みのソフトの一覧。それに FreeBSD OSにも最初から入っている IPFW、IP Filter と いうフリ−ソフトの紹介と実際の設定。NAT に SOCKS5 の設定記事もあった。 (5) ファイアウォ−ルなどソフトウェア '96〜 * 市販品 FireWall-1 Ver.2.0 プライベ−トアドレスとパブリックアドレスの変換を Ver.2.0 からサポ−ト。 初期 バ−ジョンはパケットフィルタリング型のファイアウォ−ルであったが、アプリケ− ションゲ−トウェイ機能なども含めて来ている。それに FireWall-1 同士で仮想プラ イベ−トネットワ−ク、VPN を開設できる。30日間有効のエバリュエ−ションキッ ト、マニュアルも有りは2万7千円。50ノ−ドまで79万円。ノ−ド数無制限版は 298万円。SunOS 4.1.3, Solaris 2.3 用。 認証に MD5, Kerberos, SecurID, SSL, SHHTP をサポ−トする。米国 CheckPoint Software Technologies 開発。 BorderWare Firewall Server DNS、電子メ−ルなどインタ−ネット接続に必要なソフトとファイアウォ−ル機能 を全てまとめたオ−ル・イン・ワンのソフトである。プライベ−トアドレスとパブリ ックアドレスを自動変換する機能をもつ。パソコンのハ−ドディスクやイ−サネット ボ−ドは指定の品でないとインスト−ルもできないことに注意。25ノ−ド版75万 円。BSD ベ−スで、DOS/V パソコン用のみ。 CRYPTOCard, MD5, SecurID をサポ−ト。 カナダ Border Network Technologies Inc. 開発。 TIS Gauntlet 3.0 TIS Firewall Toolkit の市販品である。Gauntlet 同士で VPN を開設できる。 これ は swIPe というソフトウェア暗号化方法でデ−タを暗号化する。 暗号化と復号化は DES で行う。しかしこの機能はアメリカでのみ利用できる。価格は70万円という話 もあるし、日立製作所の販売では132万円とか。BSD ベ−スのソフトは、DOS/V パ ソコンで稼働する。他 IRIX, SunOS 用等がある。 MD5, Kerberos, SecurID, Secure Net Key, SSL, SHHTP をサポ−ト。米国 Trusted Information Systems (TIS) 開発。 Sidewinder 4.1 米国 Secure Computing 社が開発。米国国防省、CIA、NSAで採用。OSとファ イアウォ−ルの機能が一体化された唯一のファイアウォ−ル。OS内部はモジュ−ル に別れていて安全性を高めている、Type Enforcementといいこの会社の特許になって いる。Heat-Beat 方式または RIP 活用のフェ−ル・オ−バ−機能、WWWと FTP サ −バ、DMZ、WWWフィルタの Smart Filter。米国 LAN Magazine 社の「Product of ther Year 1995」受賞。このソフト結構古くからある。2000年位のときのパンフレッ トより、700万円とメモを残している。2003 年でもまま売れていると聞いた。 この他 Interlock 3.0 --- 米国 Advanced Network & Services(ANS) 社。 Cyberguard 2.0 --- 米国 Harris Computer Systems 社。 * フリ−ソフト fwtk 米国Trusted Information Systems 社のフリ−ソフト。TIS Firewall Toolkitが正式 名称であり、略して fwtk と呼ばれている。Gauntlet の基本部分でもある。 telnet, ftp, rlogin, X, HTTP など各アプリケ−ションごとの Proxy サ−バが用意されてい る。HTTP Proxy サ−バにはキャッシュ機能はない。 この他、特定のアドレスとポ− ト間を接続する plug ゲ−トウェイ機能がある。ワンタイム・パスワ−ドも各種サポ −トする。 Socks sockd デ−モンが socks 対応の telnet コマンドなどを中継する。/etc/inetd.conf を書き換えて使う。rfinger,rftp,rtelnet,rwhois がクラインアントで用意されてい る。最初から専用コマンドを使い、ファイアウォ−ルを意識せずに使えるということ で、サ−キットレベル・ゲ−トウェイとも呼ばれる Proxy サ−バである。 日本国内 で使う場合は、インタ−ナショナル版の export.socks.xxx を使うこと。 DeleGate 国産汎用多目的 Proxy サ−バ。色々機能があり過ぎて、 作った本人の電総研の佐藤 豊氏も DeleGate とは何か説明するのに困っているらしい。漢字コ−ド変換機能もあ る。パケットを中継するする際に、漢字コ−ドを変換してしまうわけである。対応プ ロトコルは HTTP, Gopher, FTP, WAIS, Whois, Telnet, NNTP, SMTP, POP, SU-SeeMe, X Window に対応している。Mount機能で内部のWWWサ−バを公開することもできる。 CERN httpd Proxy ヨ−ロッパ素粒子物理研究所が作成した CERN httpd の Proxy 機能部分。 内部ネッ トにある Mosaic からでも Proxy サ−バ経由で、 インタ−ネットにアクセスできる。 Mosaic の WAIS, HTTP, Gopher, FTP などは、すべて HTTP に変換される。デ−タの キャッシュ機能もある。Mosaic は Proxy 対応にして使うことになる。 wrapper tcpd とも tcp_wrapper とも呼ばれている。inetd から起動されるプロセスに対して アクセス制限する。Proxy 機能はないので、ゲ−トウェイでない単体ホストのセキュ リティ対策向けである。ゲ−トウェイで使う場合は、CERN httpd Proxy などと組み 合わせて使う。ちなみに wrapper は包むという意味である。 portmapper, sendmail_wrapper, Securelib portmapper は RPC 制御をする portmap デ−モン用の wrapper と似たようなソフト らしい。sendmail_wrapper は sendmail 専用のアクセス制御ソフトらしい。 もう1 つあった Securelib というので、 inetd でなく直接起動するサ−ビスを対象にする ソフトらしい。この3つはほんとんど雑誌、本でも紹介されてない。一応名前だけ。 Freestone 米国SOS Corp. の製品で Brimstoneのフリ−ソフト版。S/Key、SecurID、CryptoCARD をサポ−ト。Solaris 2.x, BSD/OS, IRIX 5.3 などで稼働する。あまり聞かないけど。 ftp://ftp.cs.columbia.edu/pub/sos/freestone ftp://ftp.soscorp.com/pub/sos/freestone http://www.soscorp.com/products/Freestone.html NcFTP パケットフィルタリング型のファイアウォ−ルを設けた場合、内側から外部のホスト へ ftp アクセスするには、一方向のコネクションを張る ftp プログラムを使う必要 がある。passive モ−ド対応 ftp である。 NcFTP の他に、FFF( FireWall Friendly FTP ) というのもある。適当なサイトの /pub/Security/tool/fff を探されたい。 wu-ftpd インタ−ネットの anonymous FTP サイトのデファクト・プログラムである。 普通の ftpd は inetd 経由で起動するが、これはデ−モン・モ−ドでも稼働する。inetd を かまさないということで、サイトの安全性を高めることができる。OTP にも対応する。 制御ファイルは ftpaccess と ftphosts があり、 通常の ftpd より細かな制御がで きるようになっている。 * 市販品ハ−ド一体型ソフト追加分 `21/05 NOKIA FireWall-1 http://nokia.co.jp/ or http://www.asgent.co.jp/ NOKIA IP Security シリ−ズ。専用OS、ハ−ドで FireWall-1 が動くのでより安全 かつ速い。IP600/400/300 シリ−ズがある。一番安いのはIP330 Base System Bundle、 81 万円。OSと FireWall-1 本体は入っているが、FireWall-1 のライセンスはない ので別に購入する必要がある。他で購入にした FireWall-1 のライセンスでも構わな い。10/100 Ethernet の口は3つあるので DMZ にもできる。VRRP もサポ−トする。 SonicWALL PRO http://www.smisoft.ssd.co.jp/ 住友金属システム開発(株)扱い。 ユ−ザ数無制限、VPN に DMZ 対応で 65 万円。IPsec 準拠で IKE 対応。 56bit DES または RC4 を選択する。10/100 Mbps 3ポ−ト。 FireWall-1 とも VPN 接続できる もよう。VPN クライアントのソフトは、50ライセンスで 68 万円。 Webによる設定。 ユ−ザ数10の一番安いタイプは 14 万円。SOHO向けという感じの製品。開発元 SonicWALL, Inc。98年11月頃に発売開始。住友金属は2003/01/10、キャノンシス テムソリュ−ション(株)に社名を変更した。URLは http://canon-sol.jp/。 NetScreen 米国NetScreen Technologies,Inc. (株)日立システム&サ−ビス等 10 Mbps/100 Mbps/1Gbps のタイプがある。ユ−ザ数による制限はない。10 Mbpsタイ プの NetScreen-10 で約80万円、10base-T 3ポ−ト。SOHO 向けの NetScreen-5も ある。10ユ−ザと無制限タイプ、どちらも 10base-T 2ポ−ト。スペックを少し紹 介しておく。ステ−トフルインスペクション技術。Traffic Shaping による帯域制御。 NetScreen 同士の VPN 機能。Windows 95/98/NT4.0/2000 用の VPNクライアント用ソ フト NetScreen-Remote。IPSec V2 準拠, DES/3DES, MD5/SHA-1, IKE/Manual 鍵交換。 InstaGate EX2 http://www.jtc-i.com/, http://www.esoft.com/ 米国 eSoft,Inc. 開発の小規模向けセキュリティサ−バ。国内ではジュピタ−テクノ ロジ−(株)が扱う。販売開始は `21/03/01。ファイアウォ−ルの機能にWWWサ−バ がプラスされた製品と考えてよい。他 IPSec, PPTP による VPN。 WWWやメ−ルサ −バのウィルスチェック。WWWフィルタリングもできる。25ユ−ザで約35万円 から。値段は SonicWALL よりやや高めだが、SonicWALL と Cobalt Qube を合わせた よりは安い。`21/06 現在、和文マニュアルを鋭意作成中のこと。 NOKIA FireWall-1、ソフトだけの FireWall-1 でもそうだが、IPアドレスによる稼働制 限がある。購入時にWAN側のIPアドレスを申請し、そのIPアドレスでもってライセ ンスが発行される。LAN側のIPアドレスは受け付けてもらえない。プロバイダを変え るような場合、WAN側IPアドレスを変えることになるが、そんな場合は困ることにな る。SonicWALL, NetScreen, InstaGate ではそういうことはない。これらではそもそも購 入時にIPアドレスを申請することもない。 * ファイアウォ−ルの二重化について `22/04〜 Solaris などのマシンにクラスタ用のソフトを入れる。 FireWall-1 の二重化のために開 発された StoneBeat FullCluster というのがある。 平常時はロ−ドバランサ−として働 く。トラブル発生時は10秒で切り替わるとのこと。マシンは2つ以上稼働するが、仮想 的に1個のIPアドレス、MACアドレスである。Windows NT 4.0, Solaris 2.6 などに 対応する。 このクラスタ・ソフトを開発しているのは http://www.stonesoft.com/japan で、フィンランドが本社の会社である。高可用性クラスタリング・ソフトウェアの開発/ 販売を専門にしている。 他にも、StoneGate という独自OSで、初めからクラスタ構成をとるようにしたファイア ウォ−ルのソフトも出している。さらに、StoneGate をプリインスト−ルしたアプライア ンス、StoneWall というのも出している。1つの筐体に2つのファイアウォ−ルを収めて いる。ついでに Stonesoft ServerCluster というのも紹介しておこう。Solaris, RedHat, Windows 2000 で共有ディスクを使用したクラスタ用ソフトである。InterScan VirusWall や RealSecure Network Sensor などのアプリケ−ションに対応している。 FireWall-1 の二重化では、NOKIA のアプライアンス製品も挙げておく必要がある。 IPSO という独自OSを搭載した箱に、FireWall-1 をプリインスト−ルしている。 経路制御プ ロトコルの VRRP と FireWall-1 の同期機能が密接に連携し、二重化を計っている。ホッ トスタンバイ構成とロ−ドシェアリングの2通りの使い方がある。ホットスタンバイでは、 2台の NOKIA に仮想的に同じIPアドレスを付けておき、 マスタ−が駄目になったらセ カンダリが引き継ぐ。ロ−ドシェアリングは、別個のIPアドレスでそれぞれ稼働するが、 いざとなったらもう一方が引き継ぐようになっている。 * 不正アクセス検知のソフト幾つか CyberCop 98年7月追加 リアルタイム不法侵入( Intruder )検出ソフト。Sniffer とデ−タ互換で、詳細解析 と証拠に使える。200種以上の攻撃パタ−ンを内臓して自動認識する。 e-mail や SNMP トラップで管理者に知らせる。Network Associates, Inc. 製。約300万円。 Internet Scanner SAFEsuite セキュリティ・ホ−ル検出ソフト。米国 ISS( Internet Security System, Inc. )開 発。だいたい100万円から。98年なかば時点、国内でセキュリティ・チェックを サ−ビスする会社が10社程度あるが、このソフトを使っているようである。 SecureVIEW FireWall-1 のログを解析してグラフ等で分かりやすく表示する。米国SecureIT 開発。 国内は98年6月から販売。Windows 95/NT 用。約34万円、25ユ−ザ分より。フ ァイアウォ−ル自体のライセンス数は理解できるとしても、なぜこのソフトまで?。 * 参考:Linux にあるパケットフィルタリングのプログラム `2h/08/E 追記 マニュアルをどこからか出して自分のメモ用のディレトリに入れておいた。このコマンド は使ったことはない。しかし Linux の本を見ると簡易ファイアウォ−ルとして、 よく使 われているようである。ただしこれだけでファイアウォ−ルにするというのは、芳ばしい 話しではない。Linux が普及してきた頃には専用のファイアウォ−ルのソフトやアプライ アンスが出てきている。これらを企業など組織体では使うのがまっとうな事だろう。 IPFWADM(8) IPFWADM(8) NAME ipfwadm - IP firewall and accounting administration SYNOPSIS ipfwadm -A command parameters [options] ipfwadm -I command parameters [options] ipfwadm -O command parameters [options] ipfwadm -F command parameters [options] ipfwadm -M [ -l | -s ] [options] DESCRIPTION Ipfwadm is used to set up, maintain, and inspect the IP firewall and accounting rules in the Linux kernel. These rules can be divided into 4 different categories: accounting of IP packets, the IP input fire- wall, the IP output firewall, and the IP forwarding firewall. For each of these categories, a separate list of rules is maintained. See ipfw(4) for more details. OPTIONS The options that are recognized by ipfwadm can be divided into several different groups. CATEGORIES The following flags are used to select the category of rules to which the given command applies: -A [direction] IP accounting rules. Optionally, a direction can be specified (in, out, or both), indicating whether only incoming or outgoing packets should be counted. The default direction is both. -I IP input firewall rules. -O IP output firewall rules. -F IP forwarding firewall rules. -M IP masquerading administration. This category can only be used in combination with the -l (list) or -s (set timeout values) command. Exactly one of these options has to be specified. COMMANDS The next options specify the specific action to perform. Only one of them can be specified on the command line, unless something else is listed in the description. -a [policy] Append one or more rules to the end of the selected list. For the accounting chain, no policy should be specified. For fire- wall chains, it is required to specify one of the following policies: accept, deny, or reject. When the source and/or des- tination names resolve to more than one address, a rule will be added for each possible address combination. -i [policy] Insert one or more rules at the beginning of the selected list. See the description of the -a command for more details. -d [policy] Delete one or more entries from the selected list of rules. The semantics are equal to those of the append/insert commands. The specified parameters should exactly match the parameters given with an append or insert command, otherwise no match will be found and the rule will not be removed from the list. Only the first matching rule in the list will be deleted. -l List all the rules in the selected list. This command may be combined with the -z (reset counters to zero) command. In that case, the packet and byte counters will be reset immediately after listing their current values. Unless the -x option is present, packet and byte counters (if listed) will be shown as numberK or numberM, where 1K means 1000 and 1M means 1000K (rounded to the nearest integer value). See also the -e and -x flags for more capabilities. -z Reset the packet and byte counters of all the rules in selected list. This command may be combined with the -l (list) command. -f Flush the selected list of rules. -p policy Change the default policy for the selected type of firewall. The given policy has to be one of accept, deny, or reject. The default policy is used when no matching rule is found. This operation is only valid for IP firewalls, that is, in combina- tion with the -I, -O, or -F flag. -s tcp tcpfin udp Change the timeout values used for masquerading. This command always takes 3 parameters, representing the timeout values (in seconds) for TCP sessions, TCP sessions after receiving a FIN packet, and UDP packets, respectively. A timeout value 0 means that the current timeout value of the corresponding entry is preserved. This operation is only allowed in combination with the -M flag. -c Check whether this IP packet would be accepted, denied, or rejected by the selected type of firewall. This operation is only valid for IP firewalls, that is, in combination with the -I, -O, or -F flag. -h Help. Give a (currently very brief) description of the command syntax. PARAMETERS The following parameters can be used in combination with the append, insert, delete, or check commands: -P protocol The protocol of the rule or of the packet to check. The speci- fied protocol can be one of tcp, udp, icmp, or all. Protocol all will match with all protocols and is taken as default when this option is omitted. All may not be used in in combination with the check command. -S address[/mask] [port ...] Source specification (optional). Address can be either a host- name, a network name, or a plain IP address. The mask can be either a network mask or a plain number, specifying the number of 1's at the left side of the network mask. Thus, a mask of 24 is equivalent with 255.255.255.0. The source may include one or more port specifications or ICMP types. Each of them can either be a service name, a port num- ber, or a (numeric) ICMP type. In the rest of this paragraph, a port means either a port specification or an ICMP type. One of these specifications may be a range of ports, in the format port:port. Furthermore, the total number of ports specified with the source and destination addresses should not be greater than IP_FW_MAX_PORTS (currently 10). Here a port range counts as 2 ports. Packets not being the first fragment of a TCP, UDP, or ICMP packet are always accepted by the firewall. For accounting pur- poses, these second and further fragments are treated special, to be able to count them in some way. The port number 0xFFFF (65535) is used for a match with the second and further frag- ments of TCP or UDP packets. These packets will be treated for accounting purposes as if both their port numbers are 0xFFFF. The number 0xFF (255) is used for a match with the second and further fragments of ICMP packets. These packets will be treated for acounting purposes as if their ICMP types are 0xFF. Note that the specified command and protocol may imply restric- tions on the ports to be specified. Ports may only be specified in combination with the tcp, udp, or icmp protocol. When this option is omitted, the default address/mask 0.0.0.0/0 (matching with any address) is used as source address. This opich case also exactly one port has to be specified. -D address[/mask] [port ...] Destination specification (optional). See the desciption of the -S (source) flag for a detailed description of the syntax, default values, and other requirements. Note that ICMP types are not allowed in combination with the -D flag: ICMP types can only be specified after the the -S flag. -V address Optional address of an interface via which a packet is received, or via which is packet is going to be sent. Address can be either a hostname or a plain IP address. When a hostname is specified, it should resolve to exactly one IP address. When this option is omitted, the address 0.0.0.0 is assumed, which has a special meaning and will match with any interface address. For the check command, this option is mandatory. -W name Optional name of an interface via which a packet is received, or via which is packet is going to be sent. When this option is omitted, the empty string is assumed, which has a special mean- ing and will match with any interface name. For the check com- mand, this option is mandatory. OTHER OPTIONS The following additional options can be specified: | 以下続く