運用
常時接続時代のパーソナル・セキュリティ対策(第2回)

10.パケット・フィルタの設定(6)

デジタルアドバンテージ
2001/01/17


無用なアウトバウンド・パケットの抑制

 以上の設定で、インターネット側から入ってくるほとんどの無用なパケットを阻止することができたが、パケット・フィルタを使ったセキュリティ対策としては、これだけではまだ十分ではない。内部のネットワークから、インターネット側へ出て行くパケットに対して、何も対策していないからだ。特にWindows系ネットワークでは、ブロードキャスト・メッセージに載せてさまざまな情報(マシン名やユーザー名、サービス名など)をほかのマシンに通知するサービスが多いので、そのようなパケットがインターネット側へ流れいる可能性もある。もちろんNBT(NetBIOS over TCP)をきちんと無効化していればその危険性も少なくなるのだが、なんらかの操作・設定ミスなどで無効化するのを忘れていたり、インストールしているアプリケーションが、(バグか、故意か、仕様か)知らないうちになんらかのパケットを送信してしまっているかもしれない。このようなミスを防ぐためにも、パケット・フィルタで可能な対策は施しておくべきであろう。

 知らず知らずのうちに外部へ情報を流出させてしまう可能性のあるパケットとしては、たとえばプライベートIPアドレスを持つパケットや、Windows系ネットワークでよく使われるサービスに基づくパケットがある。

 前者は、ネットワークのLAN内でのみ有効なパケットであり、インターネット側へ送信されたとしても(ルーティングされないため)途中で破棄されるが、不要な情報を少しでも流出させないという点からみると、インターネット側へ送信する前ににブロックすべきである。また、ある種のクラッキングでは、このようなIPアドレスを持つパケットを使うので、ブロックしておくほうが望ましいだろう。この場合、インターネット側から内部へ送られてくるパケットでも(プライベートIPアドレスになっていないかどうかの)チェックを行うのが望ましい(今回のフィルタ設定例では、インターネット側からのポートをほとんど空けていないので、特に必要はないが、万全を期すならそのようなフィルタも設定したほうがよいだろう)。

 後者のWindows系ネットワーク・サービスに固有のパケットも、情報漏洩やセキュリティ・ホールになりやすので、外部へそのようなパケットが流れないようにフィルタリングを行うのがよい。Windows系ネットワークでよく使われるポートについては、やや古いが、マイクロソフトのサポート技術情報で提供されている「[NT]TCP/IP ポートの使用について」などを参考にして、最低限のフィルタはセットしておきたい(もちろん、それらのポートを使うサービスを使わないというのが一番の解決法であるが、NetBIOS関連はどうしても避けることができないので、これらについてはぜひともフィルタしておくべきであろう)。

 以上のようなことを考慮して、ここでは、プライベートIPアドレスを持つパケットと、Windows系OSでよく使われるポートを持つパケットについて、パケット・フィルタの設定を行ってみよう。最初のフィルタ設定とまとめて、以下に掲載しておく。これをファイルに保存し、コマンド プロンプト上で“netsh -f setup-filter.cnf”などとすれば簡単にフィルタ設定を行うことができる。フィルタ設定をクリアするには、“add filter”を“del filter”に変更して実行すればよい(入力フィルタのデフォルト設定をforwardにするのも忘れないように)。

#file:setup-filter.cnf

#内向きフィルタの設定(デフォルトはすべてブロック)
routing ip set filter "インターネット 接続" input drop
#TCPはftpのデータポート以外をブロック
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
routing ip add filter "インターネット 接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 tcp 20 0
#UDPはDNS/BOOTP/DHCP/NTPのみを通過させる
routing ip add filter "インターネット 接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 53 0
routing ip add filter "インターネット 接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 67 68
routing ip add filter "インターネット 接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 123 0
#pingのみをサポート
routing ip add filter "インターネット 接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 icmp type=0 code=0
routing ip add filter "インターネット 接続" input 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 icmp type=8 code=0

#外向きフィルタの設定(デフォルトはすべて通過)
routing ip set filter "インターネット 接続" output forward
#プライベートIPアドレスを持つパケットをブロック
routing ip add filter "インターネット 接続" output 0.0.0.0 0.0.0.0 192.168.0.0 255.255.0.0 any
routing ip add filter "インターネット 接続" output 0.0.0.0 0.0.0.0 172.16.0.0 255.240.0.0 any
routing ip add filter "インターネット 接続" output 0.0.0.0 0.0.0.0 10.0.0.0 255.0.0.0 any
routing ip add filter "インターネット 接続" output 192.168.0.0 255.255.0.0 0.0.0.0 0.0.0.0 any
routing ip add filter "インターネット 接続" output 172.16.0.0 255.240.0.0 0.0.0.0 0.0.0.0 any
routing ip add filter "インターネット 接続" output 10.0.0.0 255.0.0.0 0.0.0.0 0.0.0.0 any
#Windows系OSでよく使われるパケットをブロック
#必要ならsrcportが135/137-139/445もフィルタすること
routing ip add filter "インターネット 接続" output 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 tcp 0 135
routing ip add filter "インターネット 接続" output 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 0 137
routing ip add filter "インターネット 接続" output 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 udp 0 138
routing ip add filter "インターネット 接続" output 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 tcp 0 139
routing ip add filter "インターネット 接続" output 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 tcp 0 445
※以上のコマンド列を ここ に用意した。これを setup-filter.cnf というファイル名で保存して、実行していただきたい。

最後に

 以上で、RRASを用いたパケット・フィルタリングの設定は完了である。前回の設定と比べると、より高度なフィルタ設定が可能なこととがお分かりいただけたであろう。ただし、今回紹介した設定方法はあくまでも一例であるので、ユーザーの環境に合わせて適宜ルールの追加や削除などを行っていただきたい。

 例えば、今回のセキュリティ・ポリシーでは、「(インバウンドのTCP/UDP通信は)デフォルトでほとんどクローズしておくが、最低限必要なものだけは通す」というふうに設定している。このようなセキュリティ・ポリシーは、セキュリティ的には非常に望ましいのだが、一方で、アプリケーションによっては(必要な通信までもがブロックされてしまって)動かなくなる可能性がある。そのような場合の対策としては、さらに必要な通信を通すようにルールを追加するという方法がある。アプリケーションが稼動中に「netstat -an」コマンドなどを実行すればどのポートを待ち受けしているかが分かるので、そのポートを通すようにルールを追加するのである。しかしこの方法では、いちいちルールを追加しなければならないし、場合によっては(アプリケーションが動的なポート番号の使用をしている場合など)ルールとして設定することが不可能な場合もある。

 そこでもうひとつのセキュリティ・ポリシーとして、「デフォルトではポートをすべてオープンしておき、危険なポートだけをブロックする」という方法も考えられる。つまり、パケットのデフォルト・ルールを「FORWARD」にしておいて、ポート135/137〜139/445番などをブロックするように例外ルールを追加するのである(「netstat -an」コマンドなどで他にも使われているポートがないかどうか調べ、それらに対するフィルタも追加するほうがよいだろう)。この方法は、セキュリティ的には今回紹介した方法よりもやや劣るが、利用できるアプリケーションなどに制約が少なくなるので、ユーザーとしてはこちらの方が使いやすいかもしれない。ユーザーの環境や用途に応じて設定を行っていただきたい。

 次回は、市販のファイアウォール・ソフトウェアを使ったセキュリティ対策について解説する。End of Article

関連リンク
[NT]TCP/IP ポートの使用について
 
 

 INDEX
  [運用]常時接続時代のパーソナル・セキュリティ対策(第2回)
    1.Routing and Remote Accessサービスとその使い方(1)
    2.Routing and Remote Accessサービスとその使い方(2)
    3.Routing and Remote Accessサービスとその使い方(3)
    4.Routing and Remote Accessサービスとその使い方(4)
    5.パケット・フィルタの設定(1)
    6.パケット・フィルタの設定(2)
    7.パケット・フィルタの設定(3)
    8.パケット・フィルタの設定(4)
    9.パケット・フィルタの設定(5)
 10.パケット・フィルタの設定(6)
 
 運用


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間