システム奮闘記:その40

Windowsでのパケットフィルタリング



Tweet

(2005年6月22日に掲載)
はじめに


  初心者が自宅サーバーを構築する行為に

 危険だからサーバーを立てるな!

 という意見や議論がある。
  ワームに感染したり、踏み台にされたりして、他の人に迷惑をかけては
いけないため、無謀な事はやめましょうという趣旨だ。
  そういう意味では、私は無謀な事をやっていた事になる (^^;;

 
  だが、この議論はサーバーに限った話ではない。
  実は、一般の人が使う身近なクライアントOSにも危険が潜んでいる。

  常時接続が当り前になった時代、パソコンを長時間使う場合、
ファイヤウォールなしで使っていれば、危険にさらされる事になる。
  もちろん、ダイヤルアップだったとしても安心はできない。

  もし、ファイヤーウォールなしでインターネット接続すると・・・

  攻撃にさらされる危険がある (--;;

  そこで、今回は、クライアントでもパケットフィルタリングの必要が
出てきた話を書く事にしました。

この章について (2011/10/10)
ファイヤウォール設定に使いますnetshコマンドは
この話ではWindows2000上での設定で説明していますが
WindowsXPでも同じように使えます。


クライアントのセキュリティーを考えるキッカケ

さて、勤務先でオープンソースを推進している私だが、クライアントは Windowsを使っている。 やはり一般利用者が使う事を考えると、Windowsというのが現実的な選択となる。 サーバーは危険だが、クライアントにも危険が潜んでいるなんて 頭になかった。 ところで、2003年7月19日に、NT-Committee2のセミナーが大阪で行われた時、 講師の伊原さんは、WindowsのWebサーバーソフトであるIISは ソフトの依存性のため、危険なRPCサービスを動かすため RPCサービスが狙われないように、ポート135をWindows側のパケットフィルタで 閉じる必要性をおっしゃっていた。
IISとRPCサービスとの依存性の問題を解決する方法
Windowsのパケットフィルタリングで危険なポートを閉じる様子
Windowsについているパケットフィルタリング機能を利用して
ポート135を閉じてしまえば、RPCポートを狙った攻撃を防ぐ事ができる。

  この時は、自分自身、Windowsマシンのパケットフィルタリングの設定を
行うなんぞ全く考えてもいなかった。
  なぜなら、Windowsでサーバーなんぞ立てる事はあり得ないからだ。


パソコンを社外でネット接続したためウイルスに感染

だが、転機は訪れた。2004年の秋だった。 社内でウイルスメールが飛び交う事件が起こった。 最近のウイルスは、発信元をだますため、どこから飛んできたのか 全く見当がつかない。 メールサーバーのログを見て、ここだと思う場所のウイルスチェックを 行ったりしたのだが、ハズレだらけだった。 ウイルスメールが飛び交う中、ふと思った。 ノートパソコンが原因ではないか! ノートパソコンだと持ち帰る事ができるし、出張の多い人は ホテルなどからも接続ができる。外部で感染した可能性は高い。 そこでノートパソコンを使っている人の所へ行き、ウイルスチェックを行うと 案の定、ウイルスに感染していた。 そこで、ウイルス除去を行うと、ウイルスメールが飛び交う事がなくなった。 その後、2005年2月に、RTX1000のルーターを導入した。  RTX1000ルータについては「システム奮闘記:その37」をご覧下さい。  (ヤマハルーターRTX1000の設定入門) その時、ログを見ると目を疑う内容だった。 あるノートパソコンから、ポート135、137〜139と445へ送るパケットが まき散らされていたのだった。 まさかと思い、そのノートパソコン上でウイルスチェックを行うと、 見事に感染していたのだった (--;; そして、他のマシンへ攻撃していた感じだ。 幸いRTX1000のパケットフィルタリングで、攻撃のパケットが外部に出る事が なかったので助かったが、恐ろしい物だと思った。 なぜ、ウイルスに感染するのか考えた。答えは簡単だった。 出張先や出先などが、ファイヤウォールを導入していないと、 外部からのワームの攻撃に遭い、ワームに感染する。 恐いのは海外での感染だ。社内で海外出張する人がいる。 NATがある場合は、NATがワームを防いでくれる場合があるのだが、 DHCPで、グローバルアドレスを割り当てる場所もあるらしく、 まさにワームの格好の餌食になる。 ウイルスを取り除く作業。結構、手間だ。 今回、システムファイルらしい物が感染していないので、 感染したファイルを消して、トレンドマイクロ社にあるウイルス情報を見て、 レジストリを書き換えを行った。 だが、動作に多少の不具合が出た。困った物だと頭を抱える。 この時、思った。RRASを使ったパケットフィルタを行えば、 ワームの感染を防ぐ事ができるのでは。 何せ、RPC、NBT、SMBポートへの攻撃は凄まじい物がある。
うちの会社へ攻撃する様子
Webサーバーに SYNを送らずに、ACKだけを送る奴

2005/02/08 10:23:15: PP[01] Rejected at IN(80) filter: 
TCP AAA.BBB.CCC.DDD:52620 > XXX.YYY.ZZZ.AAA:80   

Windowsの脆弱性をついた攻撃

2005/02/08 10:14:26: PP[01] Rejected at IN(20) filter: 
TCP AAA.BBB.CCC.EEE:3178 > XXX.YYY.ZZZ.AAA:445

2005/02/08 10:14:35: PP[01] Rejected at IN(20) filter: 
TCP AAA.BBB.CCC.FFF:4327 > XXX.YYY.ZZZ.AAA:135    

  無防備のまま、攻撃にさらされていると非常に危険だ。
  そこで、RRASサービスを立ち上げ、netshをコマンドを使って
パケットフィルタリングを施す事を考えた。

  そこで、取り出しのは次の本だった。
  「WindowsXP/2000 インターネットサーバー構築ガイド」(安井健治郎:MYCOM)

  この本には、netshコマンドを使ってパケットフィルタリングを行う方法が
載っている。
  そこで、まずは見よう見真似で、自分のノートパソコン(Windows2000)に
設定を行ってみる事にした。
  だが、本の内容を、よく理解せずに丸写しに近い事をしたため・・・

  ネットにつながらへんようになった (TT)

  どうして良いのかわからず、OSを再インストールするハメになった。
  そのため、netshコマンドは難しい物だと思い込んでしまった (--;;


  対策方法がないだけに頭を抱えてしまった (--;;

  2005年6月に、私が本社のRTX1000のルーターのログを見ると、
また、ノートパソコンから攻撃のパケットがまき散らされていた。
  私は慌てて「パソコンをLANから切り離してください」と言った。
  他のパソコンへワームやウイルスの感染を防ぐためだ。

  トレンドマイクロ社のウイルスチェックを行った所、
案の定、ウイルスに感染していた (--;;

ウイルスチェックの結果
ウイルスバスターでのウイルスチェックの結果

  「こりゃ、OSごと入れ換えだ」と思った。
  単に、感染ファイルを取り除いて、レジストリを書き換えた場合、
動作に不具合が起こっても良くないからだ。
  そして、OSを入れ換えた後に、パケットフィルタリングをしようと考えた。


Windows2000のパケットフィルタリング機能

だが、netshコマンドでの設定を、ぶっつけ本番で行うのは恐い。 一度、ネットワークが使えなくなり、OSを入れ換えるという 悲惨な目にあっているだけに、慎重に行きたい所だ。 ところで、普通、Windows2000、XPのパケットフィルタリングと言えば、 TCP/IPの設定画面で設定できる物を連想してしまう。
TCP/IPの設定画面にあるパケットフィルタリングの項目
TCP/IPの設定画面にあるパケットフィルタリングの項目
赤く囲んだ部分を選択して、「プロパティ(P)」をクリックする。


TCP/IPの設定画面にあるパケットフィルタリングの項目
TCP/IPの設定画面にあるパケットフィルタリングの項目。プロトコルの選択
3つのプロトコル(TCP、UDP、IP)のフィルタリングができる。


TCP/IPの設定画面にあるパケットフィルタリングの項目
TCP/IPの設定画面にあるパケットフィルタリングの項目。ポート番号の指定
許可したいパケットの接続先ポート番号を入力する。

  比較的、簡単にパケットフィルタリングができるのだが、
あくまでも簡易的な物であって、発信元IPの制御、発信元ポートの制御や
転送の場合などは使えない。

  つまり、ほとんど役に立たないのだ!

  子供の玩具みたいな設定項目にすぎない。


  そこで、より細かい設定を行うために、netshコマンドを使う事になる。

  前回の時に読んだ本よりも、もっと強力な助っ人として次の本を使う事にした。
  「強いWindowsの基本」(伊原秀明:翔泳社)

  この本には、netshコマンドの話が、より詳しく載っている。
  「WindowsXP/2000 インターネットサーバー構築ガイド」(安井健治郎:MYCOM)
と照し合せながら、設定を行っていく事にした。


  netshコマンドを使うためには、RRASサービスを動かす必要があるという。

  ところで、RRASって何?

  そんなサービスを使う事なんぞ、今まで知らなかったのらー!!
  RRASとは「Routing and Remote Access Service」という略で
ルーティングとリモートアクセスに関するサービスになる。

  一見、パケットフィルタリングと関係なさそうな雰囲気なのだが、
パケットフィルタリング機能がついているサービスなのだ。

  そこで、まずは、RRASサービスを有効にする作業を行う。
  初期設定では立ち上がっていないからだ。

  まずは「コントロールパネル」を開ける。

設定の手順:その1
コントロールパネルを開く

  「管理ツール」を選ぶ。

設定の手順:その2
管理ツールの画面

  「サービス」を選ぶ。

設定の手順:その3
サービスの画面

  「Routing and Remoto Access」を選ぶ。

設定の手順:その4
「Routing and Remoto Access」の設定画面

  赤く囲んでいる部分(初期状態)では「無効」になっているので、
「自動」に変更する。パソコンの起動時に自動的に立ち上がるようにするためだ。
  そして、青く囲んでいる部分「開始(S)」を選ぶと、RRASが動く。

  これで、netshコマンドを使う状態が整った。


netshコマンドでフィルタリングの設定

いよいよ、netshコマンドを使う段階となる。 以前、何も考えずに本の丸写しで作業を行ったため、混乱したのだが、 今回は、その教訓(?)を生かして、じっくりと設定を進める事にした。 まずは、初期設定を保存する事を行う。 「スタート」→「プログラム」→「コマンドプロンプト」で、 コマンドプロンプト画面(DOS画面と書きたい所だが・・・)を開く。
netshを使う前に、初期状態のバックアップをとる
バックアップをとる方法
バックアップファイルから初期状態に戻す方法
復元する方法

  これで、コマンド操作を誤っても安心だ (^^)

  だが、人間、安心すると思考の停止に陥りやすくなる。
  netshコマンドの設定内容やコマンドの使い方を覚える前に・・・
  つい、本の丸写しになってしまうのらー! (--;;

  「WindowsXP/2000 インターネットサーバー構築ガイド」(安井健治郎:MYCOM)
を見ながらコマンドを打っていった。

  だが、単なる本の丸写しではない。
  iptablesの使い方や、ヤマハのルーターでフィルタリングの設定を
経験しているだけに、本の設定内容を見るだけで、なんとなく何を設定するのか、
だいたい推測できる。
  必要な物だけ読み取って以下のような設定を行おうとした。

設定する内容を図に表すと
設定する内容を図式化
TCPパケットの応答、DNSサーバーへの問い合わせの応答パケット
自分から発信したpingなどのICMPパケットの応答を受け入れる設定です。

  実際の設定内容を書きますと

私が行った設定
rem ICMPは通す
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 proto=ICMP type=0 code=0

rem 全ての接続確立したtcpパケットは通過させる
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 tcp-est 0 0

rem DNSの問い合わせの返答を受け入れる
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 53 0

rem その他のパケットは破棄する。
netsh routing ip set filter name="ローカル エリア接続" filtertype=input action=drop

rem フィルターに設定された内容を表示
netsh routing ip show filter name="ローカル エリア接続"

  ちなみに、上のコマンドで「rem」は、コメント行を書く時に使う命令です。  

  もちろん、こんな長〜いコマンドを正確に打つのは神経を使うので、
一度、firewall.batファイルに書き込んでから、実行させる。

バッチファイルを実行させる場合
単にバッチファイル名を記入してENTERキーを押すだけ
パッチファイルを実行させる方法

  拡張子の「bat」とは、バッチ処理を行うファイルの事を意味している。
  「バッチ処理」とは「複数のプログラムを処理する」事を意味している。
  Linuxでいうシェルみたいな物と考えても良いかもしれない。

  それにしても、久々にMS-DOSを触っている感じだ。

私は旧人類なのか?
  だいぶ前から、MS-DOSを知らない技術者が増えているという話が出ている。
  Windows95以降の時代にパソコンを覚えた世代だ。
  単なる時代の流れであって、決して、批判しているわけではない。

  さて、Windows3.1の時代だと、まだ、DOSの知識は必須だったし、
MS-DOSの時代は、DOSの知識がないと、ゲームすらできなかった。

  ゲームをするために、config.sysを触ってドライバなどを外し、
メモリ確保に燃えていたり、autoexec.batを書き加えて、DOS起動時に
自動的にゲームプログラムを起動させる処理を埋め込んだりしていた。
  MS-DOSは安定したシステムのため、WindowsようにOSが固まる事がなかった。
少なくとも、私は経験した事がなかったと思う。

 MS-DOS時代は、古き良き時代だと、当時を振り返るのだが、
そう思った瞬間、「俺は旧人類なのか」と思ってしまう今日この頃。

  さて、現在に戻って、netshコマンドについて見ていく事にした。
  そこで詳しい解説が載っている「強いWindowsの基本」(伊原秀明:翔泳社)
の登場となる。

netshコマンドの記述方法
netshコマンドの記述方法

  もしくは、以下の記述でも全く同じ意味になる。

netshコマンドの記述方法
netshコマンドの記述方法

  まずは「ルール」とは何か?  そこから見ていく事にする。
  ここでの「ルール」の意味は、パケットフィルタリングの「内容」を表す。

netshコマンドのルールの書き方(短縮形)
netshコマンドのルールの書き方(短縮形)

  上のnetshコマンドの「ルール」の記述は、短縮形だ。
  以下のような書き方もできる。

netshコマンドのルールの記述法
netshコマンドのルールの記述法

  上の記述方法でも、まだ省略形になっている。キチンとした書き方があるのだ
それを書き出すとキリがない上、面倒な事もあって、割愛しまーす ← おい (^^;;


  まるで、Linuxでいうiptablesのようなコマンドだ。
  だが、調べて行くと、iptablesの方が遥かに優れている事がわかる。

  まず、応答パケットについて。
  iptablesの場合、外へ出たパケットを記録して、戻ってきたパケットを認知して
応答パケットのみを受け入れる事ができる。
  だが、netshコマンドの場合、プロトコルに「tcp-est」があるが、
これは、ACKフラグを含むパケットを意味する。
  いわば、TCP通信で応答パケットという物なのだが、問題がある。

  もし、以下の図のように、悪意のあるACKフラグを含むパケットを
送り込まれたら、どうしようもない。

ACK信号のみの場合だと・・・
ACK信号を含んだ悪意のあるパケットが送られる問題
(ちょっと蛇足)

「システム奮闘記:その18」(ヤマハのRTA52iのルーター設定)でも
使っている自分で描いた画像。
どう見ても、悪魔でなく黒ネコだなぁ・・・ (^^;;

  おまけに、UDPの場合、応答パケットの受け入れの設定がないため、
必要なUDPのパケットを通過させる設定が必要になる。
  そのため、DNSサーバーからの応答パケットは必ず通過させる必要があるため
以下の設定が必要だった。

DNSの応答パケットを通過させる設定(これは絶対に必要なはず!)
rem DNSの問い合わせの返答を受け入れる
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 53 0

  さて、WindowsXPの場合、自動的にタイムサーバーへ接続する仕組みがある。
  そこで、タイムサーバーからの応答パケット(UDP)を通す必要も出てくる。

  そして、固定IPでなくDHCPサーバーからIPを割り当ててもらう際に、
それの応答パケット(UDP)も通過させる必要がある。

  そこで一般的には、以下のコマンドも追加されるのをお薦めします。

NTPとDHCPの応答パケットを受け入れる設定
rem NTPの問い合わせの返答を受け入れる
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 123 0

rem DHCPの問い合わせの返答を受け入れる
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 67 68

  さて、NTPとDHCPサーバーからの応答パケットを受け入れる設定だと
図にあわらすと以下のようになる。

設定する内容を図に表すと
応答パケットを受け入れる仕組みを図式化
TCPパケットの応答、DNSサーバーへの問い合わせの応答パケット
自分から発信したpingなどのICMPパケットの応答を受け入れる設定です。

  ところで、上の図にも載せているが、ICMPの扱いだ。
  接続テストの際に、外部へpingを飛ばす必要がある。
  だが、自分のマシンは隠しておきたい場合がある。
  その場合は、ICMPのタイプ「0」を選ぶ。
  具体的な設定は以下の通りになる。

自分が発信したpingの応答は受け入れる
rem ICMPは通す
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 proto=ICMP type=0 code=0

  さて、自分から他人のpingを飛ばすと問題なく応答が返ってきた。
  さて、外部からpingをやって、見えなくなっているかテストを行った。

外部からpingをやってみた結果
PING 192.168.1.2 (192.168.1.2) from 192.168.1.253 : 56(84) bytes of data.
^C
--- 192.168.1.2 ping statistics ---
5 packets transmitted, 0 received, 100% loss, time 3999ms

  見事に、外部からpingでは見えなくなっている。
  まるでカメレオンのように姿を隠している形になっているのだ。


  さて、これらを含めたバッチファイル(firewall.bat)を作ると以下のようになる。

私が行った設定
rem ICMPは通す
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 proto=ICMP type=0 code=0

rem 全ての接続確立したtcpパケットは通過させる
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 tcp-est 0 0

rem DNSの問い合わせの返答を受け入れる
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 53 0

rem NTPの問い合わせの返答を受け入れる
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 123 0

rem DHCPの問い合わせの返答を受け入れる
netsh routing ip add filter "ローカル エリア接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 67 68

rem その他のパケットは破棄する。
netsh routing ip set filter name="ローカル エリア接続" filtertype=input action=drop

rem フィルターに設定された内容を表示
netsh routing ip show filter name="ローカル エリア接続"

  パケットの受け入れの後に「その他のパケットは破棄する」の部分がある。
  パケットフィルタリングを行う際は、2つの考え方がある。

パケットフィルタリングを行なう際の2つの考え方
(1) 基本は全て閉じておいて、必要な部分だけ開ける
(2) 基本は全て開けておいて、必要な部分だけ閉じる

  絶対に、前者をお薦めします。後者の場合、余程の知識がない場合は
穴だらけの危険な状態になりますので。


  「ルール」について触れた後は、「インターフェイス」について
触れたいと思います。私が行った設定では
  インターフェイス名が「ローカル エリア接続」になっている。

  Linuxの場合、「eth0」とか「eth1」などを思い浮かべるため
最初、「あれっ?」と思った。
  ハッキリ言って本の丸写しだったので、戸惑った。

  だが、ふとIPアドレスの設定を行う際に「これがインターフェイス名か」と
思う物に出くわした。

Windows2000のインターフェイス名
Windows2000のインターフェイス名
まさか赤く囲んだ部分がインターフェイス名とは思っていなかっただけに
正直な所、びっくりした。
ここの名前を変更すれば、インターフェイス名も変更可能だ!

  日本語のインターフェイス名には驚いたのだが、これはnetshコマンドで
設定する場合に、ちょっと困る場合がある。 

  空白文字の場合、半角か全角か、わからへん

  デフォルトのインターフェイス名「ローカル エリア接続」は半角だった。


  しかし、この程度で驚いていてはいけない。
  もっと、驚く事がある。実は、RRASを動かす際、ソフトの依存性により

  危険なRPCサービスを動かすのらー!!

RPCサービスを動かしている様子
RRASとRPCは連動して動いている
これこそ、まさに驚き桃の木だ。
安全確保のため、危険なサービスを動かすのだから理解しがたい。

  自他共に認める反MSの私は、まさに鬼の首をとったかの如く

  いかに、Microsoftがマヌケか、実によくわかる (^^)

  と言ってみる。

  ちなみに、Windows2000でもサーバー版だと、RRASはGUIでも設定できるという。
  普通なら、一般の人が普段使うクライアントにも入れるべきだと思うのだが、
この部分も、Microsoftのトンチンカンぶりが、実によくわかる (^^)


  ちょこちょことiptablesとnetshを比較した内容を書いていますが、
ここで最後に2点、2つの違いを挙げてみます。

iptablesとnetshの違い
(1) netshだとログがとれない
(2) netshだと、ftpでPASVモードの場合のフィルタリングができない

  さてさて、netshコマンドの事がわかった所で、海外出張の多い次長の
パソコンにパケットフィルタリングを行った。
  完全に大丈夫という保証は全くないが、ある程度の安全は確保できる (^^)


  しかし、油断は禁物だ。
  なぜなら、パソコンの起動時に、攻撃されたら、どうしようもないからだ。
  外部からのpingは受け付けない設定にしているが、実験で
パソコンの起動時は、どうなのか確かめてみた。すると

起動時は一時的だがフィルターの効果はない!
[suga@linux]$ ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) from 192.168.1.A : 56(84) bytes of data.
>From 192.168.1.A icmp_seq=12 Destination Host Unreachable
>From 192.168.1.A icmp_seq=13 Destination Host Unreachable
>From 192.168.1.A icmp_seq=14 Destination Host Unreachable
>From 192.168.1.A icmp_seq=15 Destination Host Unreachable
>From 192.168.1.A icmp_seq=16 Destination Host Unreachable
>From 192.168.1.A icmp_seq=17 Destination Host Unreachable
>From 192.168.1.A icmp_seq=18 Destination Host Unreachable
>From 192.168.1.A icmp_seq=19 Destination Host Unreachable
>From 192.168.1.A icmp_seq=20 Destination Host Unreachable
64 bytes from 192.168.1.2: icmp_seq=21 ttl=128 time=192 ms
64 bytes from 192.168.1.2: icmp_seq=22 ttl=128 time=0.279 ms
(途中省略)
64 bytes from 192.168.1.2: icmp_seq=88 ttl=128 time=0.268 ms
64 bytes from 192.168.1.2: icmp_seq=89 ttl=128 time=0.273 ms
(ここまでpingが反応。RRASが動いていない)

--- 192.168.1.2 ping statistics ---
201 packets transmitted, 69 received, +9 errors, 65% loss, time 200025ms
rtt min/avg/max/mdev = 0.247/3.065/192.656/22.991 ms, pipe 3

  パソコンの起動時に、pingを201回飛ばしているうち、69回は応答している。
  すなわち、応答している間は、パケットフィルタリングがない状態を意味する。

  そのため、極端な話、起動時はLANケーブルを抜くなどの対策が必要になる (--;;

  netshコマンドについては、以下がURLが参考になります。
  Routing and Remote Accessサービスのパケット・フィルタリング機能


WindowsXP付属のファイヤウォール(ICF)

ところで、GUIでのパケットフィルタリングだが、WindowsXPには存在する。 ICF(Internet Connect Firewall:インターネット接続ファイヤウォール)だ。 ipchainsとiptablesが共存できないのと同様に、RRASとICFは共存できないという。 WindowsXPでパケットフィルタリングする場合、どちらか一方を選ぶ必要がある。 だが、ここでは詳しい事は割愛したいと思います。 「説明せんかい!」と言われそうなのだが、次のような反論をします。 だって、普段、WindowsXPなんて使わへんもん (^^) 会社と自宅のデスクトップは、Windows98を使っているし、 自分のノートはWindows2000なので、ホント、WindowsXPなんて使わない。 Windows2000は安定しているし、XPみたいに重たくないので、 乗り換える気は全くない (^^) だが、GUI操作ができるICFがどんな物か、ちょっと興味があったので、 少しだけICFについて触れたいと思います。 うちの親のパソコンが、WindowsXP(Home版)なのだが、下手に設定して グチャグチャになったら、文句を言われるので無難な範囲で紹介します。
ローカルエリアネットワークのプロパティ画面
ローカルエリアネットワークのプロパティ画面
赤く囲んだ部分を押す。


設定画面
Windowsファイヤウォール設定画面
赤く囲んだ部分を押す。
もちろん、設定は有効にしておく。青く囲んだ部分。


設定画面
ファイヤウォール設定画面
赤く囲んだ部分を押す。


設定画面
パケットフィルタリングを行いたいサービスの選択画面
この時、パケットフィルタリングを行いたいサービスを選ぶ


設定画面
IPアドレスとポート番号の入力画面
IPアドレスは、サービスを提供するサーバーのIPを入力。
だが、どういうわけか入力部分がIP以外触れない。

もしかして、XPproでないとダメなのかなぁと思ったりするが
なぜ、そんな事になっているのかはわからない (--;;

  ついでにICMPについても紹介します。

設定画面
ICMPのパケットの扱いの設定
ICMPのパケットの扱いの設定もボタン選択できる。

  えらい駆け足で紹介しましたが、こんな感じです。
  詳しくは以下のURLをご覧になってください。

  イントラネットでファイアウォールを使う(Windows XP編)
  http://www.atmarkit.co.jp/fwin2k/win2ktips/345xpicf/xpicf.html

  
  手抜きそのものなので「真面目にやれ!」という声があるかもしれません。
  それには反論します。

  だって、親のパソコンだもーん (--;;

  自分のパソコンなら、実験で設定がメチャクチャになっても良いのだが、
親のパソコンをメチャクチャにしたら、100%、文句を言われるのだ。
  ただでさえ親に「はよ独立せんかい」と、うるさく言われる
パラサイトシングルで立場が弱いのに、設定をメチャクチャにしたために、
家を追い出されたとなれば、生活ができないのらー (TT)

  というわけで、家を追い出されたために、炊事・洗濯等の家事に追われて
システム奮闘記が書けなくなるのを防ぐために、敢えて、ICFについては
手抜きする事にしまーす (^^)V

CUIとGUIについて
Windows派の中には「UNIX系なんてCUIだから古い」という人が
いるかと思いますが、そんな事を言っては、ニセWindows派だと思われますよ〜♪

「Windows2000/XPコマンドプロンプト」(毎日コミュニケーションズ)を
しっかり読みましょうね!
「強いWindowsの基本」(伊原秀明:翔泳社)にも
「システム管理にGUIは不要。コマンドプロンプトを使いこなすこと」
と書いていますよ〜♪

確かに、GUIの便利さは否定しないし、手軽さも否定しない。
むしろ、横着な私はLinuxのGUI化した部分を使っていたりしている。

だけど、Windowsであっても、CUIでないとできない事だってあるし、
慣れれば、CUIの方が楽な場合もある。
要は、どっちが良いかでなく、ご都合主義で便利だと思った方を使うのが
賢い選択だと思う。


ウイルス対策ソフトでネット攻撃を見てみる

さて、Windows98などの古いOSの場合、ファイヤウォール機能がない。 その場合は、ウイルスソフトのパケットフィルタリングを使う手がある。 よく考えると、自宅ではケーブルテレビの回線を使っていて ファイヤウォール機能付きのルーターを導入していない。 しかも私が使っているのは、Windows98だ。ファイヤウォール機能がない。 凄く無防備な状態だ (--;; だが、言葉で「無防備だ」と書いても説得力がないので、 論より証拠という事で、自宅での「恐〜い結果」を紹介します。 さてさて、正直な所、ウイルス対策ソフトにファイヤウォール機能が 付いていた事は全く知らなかった。 だが、今年の3月、パソコン好きの部長が「菅ちゃん、このソフト知っている?」と メールを送ってきたのでメールの内容を見ると、F-Secure社のソフトだった。 部長はお試し版を入れて自分のパソコンに入れていたが、その翌日に、 「なんか接続しようとすると、メッセージが出てきたで」と言ってきたので、 部長のパソコンを見ると、F-Secure社のソフトのパケットフィルタリングが 働いていたからだった。 この時は「へぇ〜、そんな機能があるのか」の程度にしか思わなかった。 だが、今回のパケットフィルタリングで、自宅も危険だと感じた上、 話のネタにも使えると思った。 そこで自宅で F-Secure社からお試し版をダウンロードしてインストールした。 私のパソコンはPentiumII 450MHzのRAM64Mなので、ウイルスソフトは 結構、重いのだが、まぁ、使えない事はない。
F-Secure社のウイルス対策ソフト
F-Secure社のウイルス対策ソフトの画面
ピンクの部分の設定で「ブロックしてログ」にしておく。
どんな攻撃がきてもブロックして記録はとっておく。

そして、どんな攻撃がきているのか見るため、赤く囲んだ部分を見る。

  すると驚くべき結果が出てきた。


F-Secure社のウイルス対策ソフトで検出された攻撃
F-Secure社のウイルス対策ソフトで検出された攻撃
3時間ぐらいなのに、52回もの攻撃がきている。
赤く塗った部分は最新の攻撃元IPで、青い部分は攻撃元IPの上位5位だ。

  パケットの統計を見てみる事にした。

パケットの統計画面
通過したパケット、拒否パケットの表示画面
統計を見てみると、通過パケットや拒否パケットの数がわかる。

  次に、攻撃一覧表を見てみる事にする。

インターネット防御画面
インターネット防御画面
赤く囲んだ部分をクリックすると見る事ができます。


攻撃内容の一覧
ネット経由での攻撃内容の一覧
赤く囲んだ部分は、攻撃元のIPです。
凄い攻撃がやってきてるのが、実感できる表です。

  個々の具体的な攻撃内容も見る事ができます。

個々の具体的な攻撃内容
個々の具体的な攻撃内容
リモートアドレで赤く囲んだ部分は、攻撃元のIPです。
ローカルアドで赤く囲んだ部分は、私のパソコンのIPです

ポート139を狙った攻撃だ。絶対に、無防備な状態で
NBTを使ってはいけない事を意味している。

他にも、私のパソコンがWebサーバーかもしれない事で、
ポート80に攻撃がやってきたり、WINSかもしれない事で、
ポート42に攻撃がきていたりしていた。

  今まで、相当、無防備な状態だった事がわかる。

  思わず凍りついてしまった (--;;


  ところで、このF-Secureの便利なのは、フィルタリングを
自分で設定できる部分にある。

フィルタリングの設定
フィルタリングの設定

 フィルタリングの設定画面だ。
 ここで変更や追加などができる。

フィルタリングの設定
フィルタリングの追加

  そして上図の「追加」を選びます。

追加するフィルタリングの設定
追加するフィルタリングの設定

  上図で「ルール名」を決めて、パケット通過の許可 or 拒否を決めます。

制御するIPアドレスの範囲を設定
制御するIPアドレスの範囲を設定

  上図でパケットの通信の相手先IPを決める。
  全てのIPを選ぶ事もできるし、特定のネットワークアドレスを選ぶ事もできる。

制御するパケットの方向を決める
制御するパケットの方向を決める

  上図でフィルタリングの方向(パケットの行く方向)を決める。
  自分から発信するパケットのフィルタリング、自分にやってくるパケット、
双方向のパケットの3種類を選ぶ事ができる。

ログや警告の有無の設定
ログや警告の有無の設定

  上図でログをとるかどうか決める。

フィルタリングの設定完了
フィルタリングの設定完了


  上図は今回、テキトーに作ってみました結果です (^^;;
  デモとして作ったので、意味のないフィルタリングの設定です。

  こんな感じで、ある程度、オリジナルな設定も可能です。

  でも、初期設定の状態でも使い物にはなると思うので、一般の人の場合、
下手に設定してメチャクチャになるよりかは、初期設定のままで
良いと思ったりもする (^^)

  それにしても、私の家のパソコンだと重い・・・ (--;;


最後に、ここでは詳しい事は割愛しますが、Windowsのクライアント版で サーバー利用する事もできる。 ライセンス的にはWindows9X系は制限なし、Windows2000/XPはEULAを 読んでくださいね。 Windows2000/XPの場合、IPスプーフィング対策、SYNフラッド攻撃対策もできる。 詳しい事は以下の本をご覧になってみてください。 「WindowsXP/2000 インターネットサーバー構築ガイド」(安井健治郎:MYCOM)
まとめ サーバーの場合、「初心者は危険だからサーバーを立てるな」の議論があるが 一般の人が使うクライアントの場合も例外ではなくなっている気がする。 今回の経験からクライアントにパケットフィルタリングやウイルスソフトを 入れたりする必要性を感じた。 「強いWindowsの基本」(伊原秀明:翔泳社)に触れられているが、 「Windowsはそもそも脆弱である。パッチを適用しない限り安全にならない」が 書かれている。 だが、WindowsUpdateは信用し過ぎると問題が起こったりする。 Hotfixは質が悪い場合があるため、下手にやると、ソフトの依存性や その他の原因でアプリケーションに不具合が生じたりする。 そのため「パッチはテストしてから適用すること。適用したら再起動すること」 と本には書かれている。 現に、WindowsXPのSP2が出た時、不具合があるため、使うと問題ありと言われた。 私自身、Windows2000はSP2のままだ。SP4を入れたために不具合が生じて OSごと再インストールした経験がある。 とても一般の人がソフトの依存性を考慮したり、パケットフィルタリングを 設定する事なんぞ無理な話だ。 高いお金を出して、F-Secure社のようなパケットフィルター付きの ウイルスソフトを購入する以外、方法はないと思う。 もちろん、財布の事情もあり、私もすぐには対応はできない。 本来ならOSの製造元のMicrosoftが責任を負うべきはずなのだが、 PL法対象外をいい事に、欠陥品を平気で販売している。無責任極まりない! Microsoftよ! 一般向けにOSを販売するなら、ソフトの依存性や 不具合などを出すな! セキュアーなOSを作れ!

次章:「シリアルコンソール(RS232C)でLinuxにログイン」を読む
前章:「SSHによるリモートコントロール」を読む
目次:システム奮闘記に戻る

Tweet