3-2. セキュリティへの対策 (1) パケットの流れ '96〜'97 * 一般の内部、外部ユ−ザのアクセス HTTP SMTP -------- A1 注.DNS のパケットは要注意。UDP, IDENT | TCP と分けずに、一緒に扱った DNS/UDP | A_net た方が簡単で無難かも。"13-1. | (1) DNS設定の基本" を参照 named ------- sendmail -------- A2 のこと。 httpd |hostA| resolv.conf |Router| ------- -------- B2 | | -------*-------*---------------*---- B_net | HTTP | SMTP, IDENT | B3 hostC,D DNS/UDP ------- ------- IDENT |hostG| |hostB| sendmail ------- ------- | | | | ---------------*------------*------- C_net プライベ−トアドレス | | ------- ------- SMTP |hostC| |hostD| ------- ------- sendmail 一般ユ−ザ resolv.conf A1 = 200.100.11.1 A2 = 200.100.11.2 B2 = 202.241.128.1 B3 = 202.241.128.2 A_net = 200.100.11.0 /netmask ffffff00 MASK = 0xffffff00 B_net = 202.241.128.0 /netmask ffffff00 -------------------------------------------------------------------------------- 文中矢印しあり hostA <--- 任意IP: HTTP hostA <--> 任意IP: DNS/UDP,IDENT,SMTP hostC,D <--> hostA : DNS/UDP,IDENT hostC,D <--> hostB : SMTP hostC,D ---> 任意IP: HTTP -------------------------------------------------------------------------------- * 管理者と特別ユ−ザのアクセス ------- プロバイダによるル−タ |hostZ| のメンテナンス ゾ−ン転送 ------- | DNS/TCP -------------- | TELNET,TFTP | named ------- -------- ------- インタ−ネット接続 |hostA| |Router| |hostX| している出張所など、 ------- -------- ------- ダイアルアップでは | | ないところが対象。 -------*-------*------------*----- | TELNET | ------- ------- FTP 任意のサイトにアクセス |hostG| |hostC| TELNET ------- ------- | | -----------*------------*---------- ゾ−ン転送の DNS/TCP は、 DNS の2次サ−バからゾ−ンデ−タのコピ−の要求に答える ためのものである。DNS の2次サ−バは、専用線接続したプロバイダになってもらってい るはずである。ここではそのホストを hostZ としている。 ホストの管理的なこととして、 hostA でのWWWサ−バのログやロッグインのログなどを取ることがある。そしてそのロ グ情報を内部ネットのホストで見るようにしたい。 その場合 hostA と、内部のホストと して hostC とすれば、両者で syslogd デ−モンを稼働させ、 ログを hostA から hostC へ転送することができる。 また作業的なこととして、hostA のWWWサ−バのデ−タを更新する。このためには FTP を hostA と内部ホストの間で張ることになる。この場合は安全性を考えて、 内部ホスト から hostA へとアクセスするのがいいのでないか。hostA ではその時だけ inetd デ−モ ンを稼働させ、FTP アクセスしたら直ぐに inetd は kill するのである。 これは、内部 ホストから hostA に telnet アクセスし、sendmail をバ−ジョンアップするような時に もいえる。FTP や Telnet の外部から内部への方向はできるだけ止めておきたい。 -------------------------------------------------------------------------------- hostZ ---> hostA : DNS/TCP hostZ ---> Router : TELNET,TFTP hostX ---> hostB : TELNET hostC ---> 任意IP: FTP または NcFTP -------------------------------------------------------------------------------- * Proxy の利用とファイアウォ−ル `21/03 追加 hostG の FireWall-1 では、一般ユ−ザのホスト hostC,Dのパケットを通過させるル−ル 設定を行う。HTTP と DNS/UDP パケットなどの通過である。しかし実際、一般ユ−ザのホ ストはこの2台だけではない。50台、百台となってきた時、いちいち全部のホストのル −ル設定を FireWall-1 にするのだろうか。これはかなり繁雑な手間となる。そのため例 えば Apache を HTTP の Proxyサ−バとして、どこかのホストで稼働させるのである。こ のホストでは DNS クライアントの設定もしておく。一般ホストの Netscape Navigatorな どでは、Proxy 利用の設定をする。Proxy 利用にすると、 Windows 98 で確認したところ DNS の設定はしても、しなくても関係なくなる。これで一般ホストの外部WWWへのアク セスは、この Proxy サ−バのホストからのアクセスとなる。つまり Proxy にしたホスト のIPアドレスだけ FireWall-1 を通せば済むことになる。 この手法を用いれば、FireWall-1 のライセンス数を無視できてしまう。 もちろん紳士読 者はそのようなことはないと思う。それなりのライセンス数の FireWall-1 を購入しての ことだと思う。しかし、実際は FireWall-1 はそんな甘くはない。 FireWall-1 は通過す るIPパケットの中の何かを見ている。でも発信元のMACアドレスは、Proxy サ−バの マシンのになっているはずである。一体何を見てカウントしているのか?。ともかくライ センス数がオ−バすると root 宛に警告のメ−ルを頻繁に出すようになる。FireWall-1の マシンにロッグインして # mail コマンドを打ってみると分かる。あるいはディスプレイ 一杯に警告メッセ−ジが出る。かつては警告メッセ−ジだけでなくマシンをクラッシュさ せたとか。それは噂だけだったのかも知れない。その後ライセンス数アップの手続きをし た。それまでの間にマシンがクラッシュするようなことはなかったが。 (2) WANル−タの設定 '96〜'97 * フィルタリングのル−ル a. hostB へのみ外部IPアドレスの特定ホスト hostX から telnet を許す。 b. ソ−スル−ティング・オプションのついたパケットは内部に通さない。 c. spoofing attack の疑似パケットは内部に通さない。 d. 内部の経路情報で B_net 以外の情報は外部に流さない。 * ル−タのフィルタリング・ル−ルの一覧 PP out PP in ※ここではル−タの PP in と PP out で ↑ | ↓ インタ−ネット側 フィルタをかけることにする。Yamaha の -------------- ル−タは図のように、 4ヵ所でフィタリ | RT100i | ングを設定できる。 -------------- ↑ | ↓ 内部ネット−ク側 Lan in Lan out [ PP in でのル−ル ] 動作 |Protcol|Packet|始点アドレス| ポ−ト|終点アドレス| ポ−ト ------|-------|------|------------|-------|------------|------- | TELNET| TCP | hostX | * | hostC | 23 | ICMP | ICMP | * | * | B_net | * | DNS | UDP | * | 53 | hostA | 53 | IDENT | TCP | * | * | hostA | 113 通過 | SMTP | TCP | * | * | hostA | 25 | HTTP | TCP | * | * | hostA | 80 |-------|------|------------|-------|------------|------- | DNS | TCP | hostZ | * | hostA | 53 1) | TELNET| TCP | hostZ | * | A2 | 23 2) | TFTP | UDP | hostZ | * | A2 | 69 3) ------|-------|------|------------|-------|------------|------- 遮断 | * | * | B_net | * | * | * 4) ※この他 TCP パケットで ACK=1 フラッグの立っているものは通すようにする。これは内 部のホストが外部へアクセスした時の応答パケットである。これを設定しないと内部ホ ストで例えば Netscape Navigator を使うような場合、アクセス先から戻って来る TCP パケットを受け取れなくなってしまう。 [ PP out でのル−ル ] 動作 |Protcol|Packet|始点アドレス| ポ−ト|終点アドレス| ポ−ト ------|-------|------|------------|-------|------------|------- 通過 | * | * | B_net | * | * | * 5) ------|-------|------|------------|-------|------------|------- 遮断 | * | * | * | * | * | * 6) 注.1) プロバイダで DNS のセカンダリになってもらうための、ゾ−ン転送に使う。 2) プロバイダがル−タのメンテナンスをするために telnet アクセスする。実際のと ころ内ではこの設定はしなかった。他所でもやられる所はほとんど無いのでないか。 3) プロバイダがル−タのソフトをバ−ジョンアップするためのファイル転送用。ル− タに tftp する。Yamaha RT100i は外から tftp を許すホストを指定できる。ここ の設定は、実際はプロバイダの指示に従うこと。 4) 入って来るパケットに内部ネットのアドレスが発信元であるはずがない。疑似パケ ットの spoofing attack への対策。 5) 一応内部からのパケットは全て通すようにした。より厳しいフィルタリングはファ イアウォ−ルの所で制御する。NcFTP パケットはこのル−ルで通っていく。プロパ イダがル−タへの telnet、tftp アクセスの戻りパケットも通す設定がいるかも。 6) 内部からのパケットは B_net からの発信に全てなるはずである。 B_net 以外の発 信パケットがあるとすればそれは偽造パケットである。 * Yamaha RT100i ル−タの設定 # pp line l64 << 128 Kbps の場合は l128 とする。 # save # restart | # ル−タ LAN 側(バリアネット) ip lan address B2 << バリアネット側IPアドレス。 ip lan netmask 0xffffff00 << ネットマスクの値。 ip lan broadcast 1 << デフォルト値、これでいいみたい。 ip lan route add net B_net/MASK B2 0 << バリアネットへの経路情報。 # ソ−スル−トが指定されたパケットは通さない。 ip filter source-route on # ル−タのパケットの出口でのフィルタリング ip filter 1 pass B_net/MASK * * * * ip filter 2 reject * * * * * # 偽装パケットを通さない ip filter 10 reject B_net/MASK * * * * << spoofing attack。 # 外部からバリアネットまで通過を許可するパケット ip filter 11 pass * B_net/MASK icmp * * << ICMP の ping など。 ip filter 12 pass * B_net/MASK established * * << ACK=1 のパケットを通す。 ip filter 13 pass hostZ hostA/MASK tcp * 53 << DNS/TCP。 ip filter 14 pass * hostA/MASK udp 53 53 << DNS/UDP。 ip filter 15 pass * hostA/MASK tcp * 113 << IDENT。 ip filter 16 pass * hostA/MASK tcp * 25 << SMTP。 ip filter 17 pass * hostA/MASK tcp * 80 << HTTP。 ip filter 18 pass hostX hostC/MASK tcp * 23 << TELNET。 # ル−タ PP 側 pp select leased << 専用線を使う。 leased# ip pp local adress A2 << 自分側ホストIPアドレス。 leased# ip pp remote adress A1 << 相手側ホストIPアドレス。 leased# ip pp netmask 0xffffff00 << ネットマスクの値。 leased# ip pp route add host A1 A2 0 << 専用線の相手ホストとの経路。 leased# ip pp route add net default 1 << デフォルト経路を専用線に向ける。 leased# ip pp routing protocol none << 動的経路制御は用いない。 leased# ip pp rip listen off << 外からの経路情報は無視する。 << フィルタを 10 から 18 と順番にかける。 leased# ip pp secure filter in 10 11 12 13 14 15 16 17 18 leased# ip pp secure filter out 1 2 << 出口でのフィルタリング。 leased# pp enable leased << 上記設定を有効にする。 leased# save << 上記設定をセ−ブする。 (3) ファイアウォ−ルの設定 '96〜'97 * IPアドレス変換ル−ルのセット | ------- WWW,DNS -------- |hostA| |Router| ------- 202.241.128.3 -------- 202.241.128.1 | | -------*--------*-------------*----------------------------- 202.241.128.0 | |le0 2O2.241.128.2 ------- 192.168.1.1 192.168.1.3 192.168.1.4 |hostG| ------- ------- ------- 192.168.1.2 ------- |hostB| |hostC| |hostD| |hme0 ------- ------- ------- | | | | -----------------*---------*-------------*-------------*----- 192.168.1.0 メ−ルサ−バ << FireWall-1 Address Translation Rules >> From Original To Original Method First Translated Address Adress Adress -------------------------------------------------------------- 192.168.1.3 192.168.1.4 FWXT_HIDE 202.241.128.2 hostC,D は一般ユ−ザのマシン。これらのホストからインタ−ネットにアクセスするのは、 hostG からのアクセスとみなす。FireWall-1 のIPアドレス変換ル−ルによりFWXT_HIDE 指定し、192.168.1.3〜4 からのアクセスは 202.241.128.2 とする。 hostG の 192.168.1.2 ホストのIPアドレスは、FireWall-1 のIPアドレス変換ル−ル には入れてはいけない。またその必要もない。 hostB と hostA の間はメ−ルの SMTP パケットをやりとりする。 hostB はプライベ−ト IPアドレス 192.168.1.1 のままで、202.241.128.3 の hostA とアクセスして構わない。 この場合の設定を下記に書いておいた。 * フィルタリング・ル−ルのセット Network Object を定義する。これは hostG での設定。 ----------------------------------------------------------------------------- | Host Properties | |---------------------------------------------------------------------------| | Name: hostG << 管理下におくホスト名。 | | IP Address: 2O2.241.128.2 << hostG の外向きのIPアドレス | | Location : [Internal] External | | Type: Host [Gateway] << 文字通りゲ−トウェイ。 | | FireWall-1: [Installed] Not Installed << FireWall-1 をこのホストに | | | インスト−ルした。 | | (Apply) (Reset) | | ------------------------------------------------------------------------- | | Network Interfaces | | Spoof Valid | | Name Net Address Net Mask Track Address | | | | 1. le0 2O2.241.128.0 255.255.255.0 ▽ L ▽ Others << 外側ネット | | 2. hme0 192.168.1.0 255.255.255.0 ▽ L ▽ localnet << 内側ネット | ----------------------------------------------------------------------------- フィルタリング・ル−ルを設定する。 ----------------------------------------------------------------------------- | Rule Base Editor : /etc/fw/conf/default.W | |---------------------------------------------------------------------------| | File Rule Policy Routers Utilities Properties | | | |Windows: □Network Objects □Users □Services □System View □Log Viewer | | | |-------------------------------------------------------------------------- | ||No.| Source | Destination | Services | Action | Track | Install On | | ||---|---------|-------------|--------------|--------|-------|------------| | || 1 | hostA | hostB | smtp ident | accept | | gate | | 1) || 2 | hostB | hostA | smtp ident | accept | | gate | | 1) || 3 | Group1 | Any | http dns(udp)| accept | | gate | | 2) || 4 | hostC | Any | telnet ftp | accept | | gate | | 3) || 5 | hostX | hostC | telnet | accept | | gate | | 4) || 6 | Any | gate | Any | drop | short | gate | | 5) || 7 | Any | Any | Any | drop | short | gate | | 6) |-------------------------------------------------------------------------- | ----------------------------------------------------------------------------- 注.1) hostA と hostB 間でメ−ルをりレ−するためのル−ル。sendmail-8.8.5 は ident を使うらしいから、一応通すようにしておく。 2) Group1 オブジェクトは hostC と hostD をまとめたグル−プである。先ず HTTPと DNS(UDP) アクセスをどこにでも通すようにする。 3) hostC だけ telnet と ftp がどこにでもできるようにル−ルの追加をする。 4) 外部の hostX だけ hostC に telnet ができるようにする。 5) どこからもこのファイアウォ−ルのホストに、アクセスできないようにする。何か アクセスがあったら、短い記録 short を残す。 6) 明示されていないル−ルのパケットは全て遮断する。5) 同様、記録を残す。 * 利便性アップのためのル−ルの追加 `24/03 上記の設定のままだと FireWall-1 を越えて、内から外に ping も traceroute コマンド も効かない。使えるようにするには、先ずル−ルの一番初めに内(Anyでも)から外(Any)で [icmp-proto] を accept で追加、 それに内(Anyでも)から外(Any) で [udp-high-ports] accept で追加すること。これで UDP の 1024 番以上のパケットを通すようになる。 外部にレンタルサ−バなどを借りて、安全にアクセスするため Secure Shell が用意され たような場合のこと。telnet の暗号化版の slogin、ftp の暗号化版の sftp コマンドを、 内側から外へ使うには、TCP/22 をファイアウォ−ルで通すようにする。FireWall-1 には 標準でこの "サ−ビス" はないので、自分で "サ−ビス" を定義してル−ルに追加する。 * メ−ルストアの FireWall-1 の別な設定 実は、先に設定したメ−ルストアのホストは、IPアドレスの変換には含めていなかった。 外部へ出ていくメ−ルは hostB から hostA に行き、hostA のIPアドレスからの発信と いうことになる。つまり一時的にせよ、202.241.128.0 というパブリックアドレスのネッ トワ−クの領域に、プライベ−トアドレスのパケットを流してしまう。そこで、ここでは メ−ルサ−バのホストもIPアドレス変換対象に含めるようにしてみる。しかし実際はこ こまでシビアになる必要はない。パケットがル−タを越えて行く訳でないので問題はない。 この構成は、DMZ にする場合の基本的なテクニックでもある。 ------- ………… |hostA| |hostB'|仮想的にここ置く ------- ………… | | .4 -------*--------*---------------------------- 202.241.128.0 | .2 ------- arp -s .. ------- hostG は hostB' のIPアドレスを |hostG| |hostB| 答えるように、Proxy ARP の設定を ------- ------- しておく。 | .2 | .1 -----------------*---------------------------- 192.168.1.0 << FireWall-1 Address Translation Rules >> From Original To Original Method First Translated Address Adress Adress ------------------------------------------------------------------- 192.168.1.3 192.168.1.4 FWXT_HIDE 202.241.128.2 ------------------------------------------------------------------- 192.168.1.1 192.168.1.1 FWXT_SRC_STATIC 202.241.128.4 << 追加。 202.241.128.4 202.241.128.4 FWXT_DST_STATIC 192.168.1.1 << ------------------------------------------------------------------- hostA と hostB は双方向にパケットのやりとりをできるようにする。 Ident という認証 プロトコルも sendmail-8.8.5 にはあることだし。そしてメ−ルストアのホスト hostBは 仮想的に 202.241.128.0 に置かれているようにする。hostB から hostA へのパケットの 送信はいい。その反対の hostA から hostB への場合、少々困ったことになる。hostB は 202.241.128.4 アドレスで、実際には存在しないからだ。 そこで hostG が代理応答をす るように設定する。 TCP/IP では最終的にマシン固有の番号(MACアドレス)で通信する。 hostG の le0 インタ−フェ−スのMACアドレスが 00:05:04:a2:00:00 だとしよう。次 のように hostG で設定する。hostG # arp -s 202.241.128.4 00:05:04:a2:00:00 pub。 (4) 各ホストの初期設定 '96〜'97 * hostA の設定 [ 起動デ−モンの制限 ] 動的経路制御の routed デ−モンはこのホストでは、絶対稼働させてはいけない。 # cd /etc/rc2.d << マシン起動時に稼働させないデ−モンを指定する。 # mv S71rpc .S71rpc << RPC サ−ビス。portmapper 相当。 # mv S73nfs.client .S73nfs.client << NFS クライアント。 # mv S74autofs .S74autofs << NFS サ−バ。 # mv S80lp .S80lp << プリンタデ−モン。 # mv S90loc.ja.cssd .S90loc.ja.cssd << かな漢字変換サ−バ。 # mv S85lmgrd .S85lmgrd << ライセンスマネ−ジャ。もしあれば。 /etc/rc2.d/S72inetsvc ---------------------------------------------------------- |#!/bin/sh |sleep 5 |/usr/sbin/ifconfig -au netmask + broadcast + |if [ -f /usr/sbin/in.named -a -f /etc/named.boot ]; then | /usr/sbin/in.named; |fi | | |#/usr/sbin/route add "224.0.0.0" "`uname -n`" 0 |#/usr/sbin/inetd -s << inetd を稼働させないようにする。 /etc/init.d/cern << このようにファイルを作成する。 ----------------------------- |#! /bin/sh |case $1 in | 'start') | /usr/local/bin/httpd << httpd.conf はデフォルトの /etc におく場合。 | ;; | 'stop') | ;; 停止するための手続きを記述。別にこれはなくても構わない。 |esac # cd /etc/rc2.d # ln -s /etc/init.d/cern S81cern << シンボリックリンクを張る。/etc/rc2.d ディ レクトリは S81 が空いていたとする。 # ps -e PID TTY TIME CMD 0 ? 0:00 sched << 多分ここから nscd までは最低限必要。 1 ? 0:00 init 2 ? 0:00 pageout 3 ? 0:00 fsflush 191 ? 0:00 ttymon 187 ? 0:00 sac 147 ? 0:00 utmpd 163 ? 0:01 vold 124 ? 0:00 nscd 102 ? 0:00 in.named << この3つ、このホストでは絶対必要である。 137 ? 0:00 sendmail 138 ? 0:00 cern 108 ? 0:00 syslogd << ホストの監視等で使う場合に必要。 118 ? 0:00 cron 注.このホストでも Netscape Navigator を使うことはできる。 ただし OpenWindows を 立ち上げてでないとダメである。いやらしいことに OpenWindows は RPC 制御下にお かれている。 即ち portmapper デ−モンである rpcbind も起動するように初期設定 しておかなければならない。止めた方が無難である。 [ ホスト自身の安全対策 ] バリアネット上においたWWWホストは、インタ−ネットにそのまま晒していることにな る。ファイアウォ−ルなしで、ホスト単体で安全対策を施さなければならない。それには 必要最小限のサ−ビスをするようにOSを構成する。そのめには、訳が分からないデ−モ ンだとか、不明なプログラムだとかを取り除き、不用意にアクセスを許さないよう設定す る必要がある。このため以下のような事柄を実施し、システム・ログも取り、できればホ ストの監視ツ−ルの Tripwire やアカウント監視ツ−ルも稼働させたい。 ・ロッグインユ−ザは基本的に root とWWWサ−バの管理者用だけにする。 ・不用意に root に SetUID したファイルがないこと。 ・NFS、NIS、Cコンパイラなど使わないデ−モンやプログラムをとり除く。 ・/etc/hosts.equiv、/.rhosts ファイルがないこと。 ・外から rlogin が効かないように ~./rhosts ファイルがないこと。 ・/etc/passwd に +::0:0::: などと NIS 使用のフィ−ルドがないこと。 ・NFS が使用する /etc/exports ファイルがないこと。 ・使わないアカウントはロックするか削除すること。 ・ホストのログをとるため syslog デ−モンを稼働させる。必須ではない。 ・inetd デ−モンは基本的には稼働させないようにする。 TCP/IP ネットワ−クの肝は inetd デ−モンである。WWWホストで、これを稼働させて おくのは非常に危険である。 パスワ−ドが甘いと、第三者に ftp や telnet アクセスを 容易に許す結果になる。どうしても inetd を稼働させる必要があるのなら、 不要なサ− ビスは使えないようにする。inetd.conf の不要部分をコメントにする、 あるいは記述そ のものを削除してしまう。internal の箇所はそのままでも概ね安全ではある。 /etc/inetd.conf -------------------------------------------------------------------------------- |#ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd |telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd |#name dgram udp wait root /usr/sbin/in.tnamed in.tnamed |#shell stream tcp nowait root /usr/sbin/in.rshd in.rshd |#login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind |#exec stream tcp nowait root /usr/sbin/in.rexecd in.rexecd |#comsat dgram udp wait root /usr/sbin/in.comsat in.comsat |#talk dgram udp wait root /usr/sbin/in.talkd in.talkd |#uucp stream tcp nowait root /usr/sbin/in.uucpd in.uucpd |#tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s .. |#finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd |#systat stream tcp nowait root /usr/bin/ps ps -ef |#netstat stream tcp nowait root /usr/bin/netstat netstat -f inet |time stream tcp nowait root internal |time dgram udp wait root internal |echo stream tcp nowait root internal |echo dgram udp wait root internal ※ telnet だけ他のマシンから |discard stream tcp nowait root internal アクセスできるようにした。 |discard dgram udp wait root internal |daytime stream tcp nowait root internal |daytime dgram udp wait root internal |chargen stream tcp nowait root internal |chargen dgram udp wait root internal | |# RPC services syntax: ここから下は、全部コメントにする。 | | [ Solaris 2.6 での設定 ] 2005年頃に確認したところ /etc/rc2.d/K20spc, K60nfs.server, K71rpc, K74autofs, K73nfs.client, K76snmpdx, K77dmi, K80lp, K90loc.ja.cssd, K94Wnn6になっていた。こ れでずっと運用稼働してきた。/etc/rc3.d/S15nfs.server, K76snmpdx, K77dmi。rc3.dは こうなっていた。K15nfs.server にした方がいいだろう。/etc/rc3.d/S76snmpdx, S77dmi にすると、マシン起動後の画面に"snmpXdmid: svc_tp_create: Could not register prog 100249 vers 1 on udp" とワ−ニングが出てくる。K71rpc はより安全のため rpcbind を 起動させないようにした。 起動時の画面でメニュ−を選択して "コマンド行ロッグイン" すること。普通にロッグイン入力のところからアカウントを入れると、画面が固まってし まって、Stop+A キ−を押さないとどうしようもなくなる。 * hostG の設定 [ 起動デ−モンの制限 ] 動的経路制御の routed はこのホストでは、絶対稼働させてはいけない。 FireWall-1 が 停止してもセキュリティに穴が開かないように、inetd も稼働させないようにする。 # cd /etc/rc2.d << マシン起動時に稼働させないデ−モンを指定する。 # mv S73nfs.client .S73nfs.client # mv S74autofs .S74autofs # mv S90loc.ja.cssd .S90loc.ja.cssd # mv S80lp .S80lp # mv S85lmgrd .S85lmgrd # cd /etc/rc2.d;ls K20lp S01MOUNTFSYS S72autoinstall S90loc.ja.cssd K60nfs.server S05RMTMPFILES S72inetsvc S90loc.ja.kmod K73nfs.client S20sysetup S74syslog S92volmgt K74autofs S30sysid.net S75cron S93cacheos.finish K80lp S69inet S76nscd S99audit K88sendmail S71rpc S80PRESERVE README S71sysid.sys S88utmpd S72inetsvc ---------------------------------------------------------- |sleep 5 |/usr/sbin/ifconfig -au netmask + broadcast + |if [ -f /usr/sbin/in.named -a -f /etc/named.boot ]; then | /usr/sbin/in.named; |fi |#/usr/sbin/route add "224.0.0.0" "`uname -n`" 0 |#/usr/sbin/inetd -s << inetd を稼働させないようにする。 [ パケットの転送禁止 ] 更に安全を期すために、マシンのIPパケットの転送を禁止にしておく。 FireWall-1 が 起動すると FireWall-1 の管理下のもとでパケットを転送する。 FireWall-1 が停止する と再び転送されなくなる。 # cd /etc/fw/bin # fw ctl ip_forwarding default << これはやらなくてもデフォルトだからいいかも。 /etc/rc2.d/S69inet ---------------------------------------------- | | |if [ -z "$defrouters" ]; then | defrouters="`netstat -rn | grep default`" << default route をこのホストで |fi はすでに定義した。ル−タに向 | いている。 |ndd -set /dev/ip ip_forwarding 0 << この2つ |ndd -set /dev/ip ip_ip_forward_src_routed 0 << 追加する。 | |if [ -z "$defrouters" ]; then | numifs=`ifconfig -au | grep inet | wc -l` | numptptifs=`ifconfig -au | grep inet | egrep -e '-->' | wc -l` | if [ ! -f /etc/notrouter -a \ | \( $numifs -gt 2 -o $numptptifs -gt 0 -o -f /etc/gateways \) ] | then | echo "machine is a router." |# ndd -set /dev/ip ip_forwarding 1 << 念のためここもコメントにする。 | 注.if [ -z "$defrouters" ]; then の意味は、変数 defrouters が定義されていないな ら以下へ行けということである。defrouters は定義されているので、 これ以下は素 通りしてしまう。おかしなスクリプトだと思う。ndd -set /dev/ip ip_forwarding 1 が結局実行されないのだ。ゲ−トウェイ構成の場合、どこかでIPパケットを転送し ますよという指示がなされないけないのに。それともデフォルトで通すからいいやと いうことなのだろうか。 * こんな設定もやっておくとよい Solaris 2.5.1, 2.6 のマシンは、 地震なんかでモニタやキ−ボ−ドのケ−ブルが外れた りすると、パニックを起こしそれだけでマシンが止まってしまう。どうも3分間、ケ−ブ ルが外れていると停止するようである。それを回避させることが次のようにやればできる。 /etc/default/kbd ファイルに1行追加し # kbd -i コマンドを叩いておく。SunOS 4.1.x ではどうか。この制御ファイルはないが、ケ−ブルが外れてもマシンは止まらない。INDY IRIX 5.3 でもやってた。ディスプレイが壊れたのでマシン動かしたまま、他の INDYのデ ィスプレイと交換したが、全然問題なかった。 /etc/default/kbd ------------------------ |KEYBOARD_ABORT=disable (5) プロキシ・サ−バの導入 `21〜`22 * ファイアウォ−ルの内側に設置する構成 hostG の FireWall-1 ではプロキシ・サ−バの 192.168.1.5 から外への HTTPパケットと、 DNS UDP:53、FTP パケットの通過を許可しておく。HTTP パケットは80番 と 443番、必要 に応じて 8080 番等を通す。そして 192.168.1.7 の Windows パソコンからプロキシ・サ −バ経由で外部にアクセスする。プロキシ・サ−バは NetCache をここでは使う。Apache の Proxy でも機能としては同じと見ていい。 / ̄ ̄ ̄ ̄\ hostA \____/…□ www.xxx.com □ DNS : |.3 : 202.241.128.0 --------------------------- | NetCache Windows INDY hostG □ □ □ □社内WWW |.2 |.5 |.7 |.3 ------------------------------------ Proxy 192.168.1.0 [ Netscape Navigator の設定 ] ここで用いたパソコンは Windows 98。Netscape Navigator(NN) のバ−ジョンは 4.75 で ある。この Netscape では下図のように HTTP(H), Security(S), FTPプロキシを利用する よう設定する。HTTP(H)というのは、HTTP パケットの80番でも8080番でも8888 番でも何でもいい。Security(S) は443番限定である。 プロキシ・サ−バの NetCache は通常の HTTP パケット、暗号化の HTTPS パケットを、 中味を見て認識しているようで ある。NetCache には HTTP のポ−ト番号を指定するような設定はない。さて HTTP(H) の とこを空欄にするとどうなるか。この Netscape はWWWサ−バにアクセスできなくなる のでなく、直接WWWサ−バにアクセスしに行く。注意されたい。 ------------------------------------ [編集]→[設定]→[詳細]→[プロキシ]→ | ○インタ−ネットに直接接続する | ●手動でプロキシを設定する [表示] | ○自動プロキシ設定 ------------------------------------ 設定の場所(URL): [ ] |手動でプロキシを設定する |---------------------------------------- | | -- サ−バ -------------------------------------------- | | | タイプ 使用するプロキシ サ−バのアドレス ポ−ト | | | | HTTP(H) : [ 192.168.1.5 ] :[ 80 ] | | | | Security(S): [ 192.168.1.5 ] :[ 80 ] | << HTTPS パケットのこと。 | | FTP : [ 192.168.1.5 ] :[ 80 ] | | | | | | | | ------------------------------------------------------ | | -- 例外 ---------------------------------------------- | | | 次ではじまるドメインにはプロキシ サ−バを使用しない| | | | -------------------------------------------------- | | | | |www.yahoo.co.jp,192.168.1.3 | | << 直接アクセスしたいサ | | -------------------------------------------------- | | イトがあれば指定する。 | | 項目の間にはコンマ (,) を入れて下さい | | | ------------------------------------------------------ | | [ OK ] [キャンセル] | ---------------------------------------------------------- これでパケットの流れを、INDY で tcpdump を使って見てみた。パケットの流れを分かり 易くするため、Netscape のキャッシュは効かないようにする。 キャッシュが絡むと、ど こからパケットが来ているか分からなくなる。[編集]→[設定]→[詳細]→[キャッシュ]の 所で、メモリキャッシュ、ディスクキャッシュ共 [0] Kバイトとする。 それに NetCache も、ここではプロキシ・サ−バとしての働きにのみ注目する。 NetCache のキャッシュ機 能については "7-1. イ−サネットLAN、(5) キャッシュサ−バの利用" を見られたい。 * HTTP アクセスの場合 [ HTTP 80/TCP アクセス ] ※ 1285,1315 というのはクライアントのポ−ト番号の例。 1285 80 Proxy 無し |-------------> 1315 80 1285 80 |-----------> |-------------------------> Proxy [ HTTPS 443/TCP アクセス ] 1285 80 Proxy 無し |-------------> 1315 443 1285 443 |-----------> |-------------------------> Proxy * FTP アクセスの場合 [ Netscape Navigator からの FTP ] ブラウザから Proxy サ−バへは、HTTP でアクセ 1285 80 する。Proxy サ−バは ftp サ−バへは FTP パケ |-------------> ットでアクセスする。 ftpd デ−モンはUNIX 1315 25 マシンでは /etc/inetd.conf から起動する。 |-----------> Proxy ftpd [ DOS 画面からの FTP ] この場合は Proxyサ−バは関係ない。Windows パ 1285 25 ソコンの DOS 画面から ftp コマンドをたたくと、 |-------------------------> 直接 ftp サ−バへアクセスしに行く。 * DNS:53/UDP のアクセス 1285 80 Proxy 無し |-------------> 1315 53 DNS 1285 53 DNS |-----------> hostA |-------------------------> Proxy |-----------> www.xxx.com 1320 80 Netscape Proxy 192.168.1.7 192.168.1.5 Windows パソコンの Netscape から www.xxx.com へアクセスする。 どうも 192.168.1.7 から 192.168.1.5 へは http://www.xxx.com/ アクセスをそのままスル−させているだけ のようである。これは Netscape で Proxy 設定を 192.168.1.5 にしたため、 HTTP パケ ットをそのまま 192.168.1.5 に渡すのである。 HTTP パケットが 192.168.1.5 に来ると www.xxx.com ドメイン名を解決するため hostA で稼働している DNS 1次ネ−ムサ−バに 問い合わせる。つまり 192.168.1.5/UDP 1024〜 のパケットが hostA/UDP 53 番ポ−トに 送られるのである。そうしてドメイン名が解決されたら、プロキシ・サ−バのマシンから www.xxx.com のIPアドレスに向けて TCP 80 番ポ−トに HTTP アクセスがなされる。 * Netscape Navigator からの FTP アクセスのログ □ □ □ INDY INDY の /etc/inetd.conf (inetd 稼働のこと) |.7 |.5 |.3 ------------------------------ --------------------- 192.168.1.0 |ftp stream tcp ... ftpd -d Windows NetCache | | ↑ /var/adm/SYSLOG に詳細ログが残る [ Windows の NN から NetCache を通さず、直接 INDY に FTP アクセス ] Netscape Navigator INDY の /etc/passwd << anonymous FTP アクセ ------------------------------- --------------- スできるようしておく。 |ftp://192.168.1.3 | | |------------------------------ |ftp:*:200:12::/usr/people/jiro:/dev/null |カレント ディレクトリは /です。 |.Sgiresources ※ "6-4. ネットワ−クコマンドの仕組み" の所 | | に anonymous FTP について書いた。 Netscape は自身が持っている FTP アクセスのデフォルトのユ−ザ名とパスワ−ドを送出 していることが、以下で分かる。それにより、マシン INDY の /usr/people/jiro ディレ クトリにアクセスした。ディレクトリがリスティングされ、ファイルのダウンロ−ドがで きる。通常の FTP コマンドのようにファイルのアップロ−ド、それに消去はできない。 % kill -HUP syslogdのID /var/adm/SYSLOG を一旦消去して syslogd を初期化する。 % cat /var/adm/SYSLOG Nov 29 15:54:32 6F:indy syslogd: restart Nov 29 15:54:58 7D:indy ftpd[3699]: <--- 220 Nov 29 15:54:58 7D:indy ftpd[3699]: indy FTP server ready. Nov 29 15:54:58 7D:indy ftpd[3699]: command: USER anonymous Nov 29 15:54:58 7D:indy ftpd[3699]: <--- 331 Nov 29 15:54:58 7D:indy ftpd[3699]: Guest login ok, type your name as password. Nov 29 15:54:58 7D:indy ftpd[3699]: command: PASS mozilla@ Nov 29 15:54:58 7D:indy ftpd[3699]: <--- 230 Nov 29 15:54:58 7D:indy ftpd[3699]: Guest login ok, access restrictions apply. Nov 29 15:54:58 7D:indy ftpd[3699]: command: REST 0 | [ Windows の NN から NetCache を通して INDY に ftp アクセス ] % telnet 192.168.1.5 << NetCache の主要なパラメ−タの設定状態 >> cache> show config.* config.ftp.pass = netcache@ : anonymous ftp アクセスのデフォルトのユ−ザ名 config.ftp.user = anonymous とパスワ−ド。次は FTPをパッシブ・モ−ドにす config.ftp.no_pasv = off る。相手 ftpd が対応しない場合は通常モ−ドに。 config.ftp.transparency = off : FTP パケットのアクセスを透過モ−ドにしない。 config.http.transparency = off : HTTP パケットのアクセスを透過モ−ドにしない。 config.http.enable = on : HTTP パケットのプロキシを有効にする。 config.http.ports = 80 : HTTP プロキシのポ−ト番号を80番にする。 % cat /var/adm/SYSLOG Nov 29 15:58:31 7D:indy ftpd[3720]: <--- 220 Nov 29 15:58:31 7D:indy ftpd[3720]: indy FTP server ready. Nov 29 15:58:31 7D:indy ftpd[3720]: command: USER anonymous Nov 29 15:58:31 7D:indy ftpd[3720]: <--- 331 Nov 29 15:58:31 7D:indy ftpd[3720]: Guest login ok, type your name as password. Nov 29 15:58:31 7D:indy ftpd[3720]: command: PASS netcache@ Nov 29 15:58:32 7D:indy ftpd[3720]: <--- 230 Nov 29 15:58:32 7D:indy ftpd[3720]: Guest login ok, access restrictions apply. Nov 29 15:58:32 7D:indy ftpd[3720]: command: PWD Nov 29 15:58:32 7D:indy ftpd[3720]: <--- 257 Nov 29 15:58:32 7D:indy ftpd[3720]: "/" is current directory. Nov 29 15:58:32 7D:indy ftpd[3720]: command: TYPE A Nov 29 15:58:32 7D:indy ftpd[3720]: <--- 200 Nov 29 15:58:32 7D:indy ftpd[3720]: Type set to A. Nov 29 15:58:32 7D:indy ftpd[3720]: command: PASV Nov 29 15:58:32 7D:indy ftpd[3720]: <--- 227 Nov 29 15:58:32 7D:indy ftpd[3720]: Entering Passive Mode (192,168,1,5,95,70) | これは注意しなければならない。WWWブラウザの FTP アクセスでは、 プロキシ利用に していると、NetCache の config.ftp.user = anonymous、config.ftp.pass = netcache@ を送り出してしまう。小生のプロバイダのホ−ムペ−ジに、FTP アクセスしたら [ユ−ザ 名とパスワ−ドの入力] の画面が出て、指定のを入れるのだが "認証に失敗しました" と なってしまった。どうも入力したのを無視し、NetCache からユ−ザ名 anonymous を勝手 に送り出してしまうようなのである。cache> set config.ftp.user "" とかやって、ユ− ザ名を無しにできないかやってみたが、文字列を何かどうしても入れなければならないよ うになっていた。NetCache をプロキシにするWWWブラウザの FTP は、anonymous 専用 にするしかないないようである。 * NetCache の DNS 機能について 上記での、WWWブラウザでプロキシを使う設定をやめて、直接インタ−ネットにアクセ スするようにする。さらに、パソコンの TCP/IP ネットワ−クの設定でも、DNS のIPア ドレスを、202.241.128.3 から NetCache のIPアドレス 192.168.1.5 にする。 これで 直接 nix.co.jj ドメイン用に設けた DNS サ−バを指定しなくても、ブラウザ利用におい て Proxy の DNS として NetCache を用いることができるようになる。 cache> show config.* config.dns.enable = on NetCache の DNSを動かすにはconfig.dns.enable config.dns.transparency = off を on にすること。透過モ−ドは off でいい。 config.system.dns.search = on config.system.dns.nameservers = 202.241.128.3 config.system.dns.domain_tree_search_enable = off config.system.dns.domainname = nix.co.jj cache> set config.dns.enable off off にしたり on したりして、DNS の働きを見て cache> set config.dns.enable on みよう。 Mon Nov 11 17:06:12 JST [rc:info]: Listening for DNS requests on 0.0.0.0:53