ネットワークベースの侵入検知システムはホストベースのIDSとは異なった動作をします。 ネットワークベースのIDSの設計原理は、パケット情報の監査し、拡張情報付きで 特別ログファイルへログされている不審なパケットすべての記録をとることにより、 ルーターまたはホストレベルでのネットワークパケットをスキャンすることです。 これら不審なパケットに基づいて、ネットワークベースの IDS は自身が持つ既知のネットワーク攻撃署名のデータベースをスキャンして、各パケットに 重大度レベルを振り当てます。重大度のレベルが高い場合には、警告電子メールか ポケベル通知がセキュリティチームのメンバーに出されるので、その異常の種類を さらに調査することができます。
ネットワークベースの IDS はインターネットの拡大に伴い一般に普及してきました。 膨大な量となるネットワーク活動をスキャンして不審な通信にタグ付けできるIDSは セキュリティ業界内で広く受け入れられます。TCP/IP プロトコールが持つ固有の不安定さのため、 次のような悪意あるネットワーク活動などセキュリティ侵害を防止するためにスキャナー、 sniffer、その他ネットワーク監査・検知ツールを開発することは避けられない事態となって きました。
IP スプーフィング
サービス停止攻撃
arp cache poisoning
DNS name corruption
Man-in-the-middle attacks
ほとんどのネットワークベースの IDS はホストシステムネットワークデバイスがpromiscuousモードに設定される必要があり、これにより そのデバイスがネットワーク上で渡されるすべてのパケットを 取りこむことができるようになります。Promiscuous モードはifconfig コマンドで次のように設定することができます。
ifconfig eth0 promisc |
オプションなしでifconfigを実行すると、 現在、eth0 は promiscuous (PROMISC) モードになっていることが わかります。
eth0 Link encap:Ethernet HWaddr 00:00:D0:0D:00:01 inet addr:192.168.1.50 Bcast:192.168.1.255 Mask:255.255.252.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:6222015 errors:0 dropped:0 overruns:138 frame:0 TX packets:5370458 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:2505498554 (2389.4 Mb) TX bytes:1521375170 (1450.8 Mb) Interrupt:9 Base address:0xec80 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:21621 errors:0 dropped:0 overruns:0 frame:0 TX packets:21621 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1070918 (1.0 Mb) TX bytes:1070918 (1.0 Mb) |
tcpdump(Red Hat Enterprise Linuxに含まれている)などのツールを使用すると、 ネットワークを介して流れている多量の通信を見ることができます。
tcpdump: listening on eth0 02:05:53.702142 pinky.example.com.ha-cluster > \ heavenly.example.com.860: udp 92 (DF) 02:05:53.702294 heavenly.example.com.860 > \ pinky.example.com.ha-cluster: udp 32 (DF) 02:05:53.702360 pinky.example.com.55828 > dns1.example.com.domain: \ PTR? 192.35.168.192.in-addr.arpa. (45) (DF) 02:05:53.702706 ns1.example.com.domain > pinky.example.com.55828: \ 6077 NXDomain* 0/1/0 (103) (DF) 02:05:53.886395 shadowman.example.com.netbios-ns > \ 172.16.59.255.netbios-ns: NBT UDP PACKET(137): QUERY; BROADCAST 02:05:54.103355 802.1d config c000.00:05:74:8c:a1:2b.8043 root \ 0001.00:d0:01:23:a5:2b pathcost 3004 age 1 max 20 hello 2 fdelay 15 02:05:54.636436 konsole.example.com.netbios-ns > 172.16.59.255.netbios-ns:\ NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST 02:05:56.323715 pinky.example.com.1013 > heavenly.example.com.860:\ udp 56 (DF) 02:05:56.323882 heavenly.example.com.860 > pinky.example.com.1013:\ udp 28 (DF) |
このマシン(pinky.example.com)宛てではなかった パケットもtcpdumpによってスキャンされ、記録されるのがわかります。
tcpdump が便利な監査ツールであるとはいえ、 異常なパケットを解析しフラグを立てることはしないため、正確には IDS とはみなされません。tcpdumpは、なにも解析をせずに すべてのパケット情報をスクリーンまたはログファイルへ出力します。 本来のIDSは、そのパケットを解析し、悪意がありそうなパケット通信をタグ付けし、 フォーマット化されたログに保存します。
Snort は総合的に正確に、悪意あるネットワーク活動を正しく記録し、不審な侵入が 発生したときには管理者へ通知することを目的とする総合的で正確なIDSとして設計されています。 Snort はパケットのロギングバックエンドとして標準のlibcap ライブラリとtcpdumpを使用します。
その機能に加え最も優れた Snort の特徴とは、柔軟な攻撃署名サブシステムです。 Snort はインターネットから追加、更新することができる攻撃データベースを常に 更新しています。ユーザーは、新しいネットワーク攻撃に基づいて署名を作成し、 Snort 署名メーリングリスト( http://www.snort.org/lists.htmlを参照)に提出することができるので、 すべての Snort ユーザーがその恩恵を受けることができるようになります。 このコミュニティ共有理念が Snort を最新で強力なネットワークベースIDSに発展させてきたのです。
![]() | 注記 |
---|---|
Snort は Red Hat Enterprise Linux には含まれないのでサポートされません。 Snort に関心があるユーザーへの参考としてここで説明のみしています。 |
Snort の使用方法についての詳細は公式ウェブサイト、 http://www.snort.org/ を参照してください。