ip-sentinelりょうわあきら2004/8/4不正な持ち込みPCを何とかして、検出や排除をできないか。LANのデファクトとなったイーサネットは、基本的に接続時の認証やアクセス制限ができないネットワークである。物理的な差込口にアクセスすれば、誰でも自由に通信できてしまう。DHCPなどで自動的なIPアドレス割り当てをしている場合はなおさらである。LANへの無断接続をなんとかブロックしたいという場合に、役に立つかもしれないツールがip-sentinelである。ip-sentinelは、MACアドレスをIPアドレスと対応させるプロトコルであるARPを巧みに用いることで、MACアドレスベースでネットワークにつながる機器の通信を制限するツールである。ip-sentinelがハブにつながる機器の通信を制限する仕組みは次のとおりである。(1)不正ホストMがip-sentinelによって制限対象となっているIPアドレス「192.168.0.1」を使って、ネットワークに参加しようとする。192.168.0.1”を送出する。...”というARP応答を送出し、自身のMACアドレスをAに通知する。aa:aa:aa:aa:aa:aa”を数回送出する。ip-sentinelにより生成されるでたらめなMACアドレスは、既存アドレスと重複しないものが生成される。floodingにならないよう32個程度に抑えられるようになっている(5)ホストAは両方の応答を受信し、そして最後に受信した応答を格納することになる。(6)ip-sentinelのARP応答は不正ホストMの応答より遅れることになるので、ホストAはMのMACアドレスを「aa:aa:aa:aa:aa:aa」だと認識してしまう。このため不正ホストMは既存のホストAと通信を開始することができなくなる。実際には、最近のWindowsなどでは(6)の段階でアドレスの衝突を検出して、そのアドレスが利用できなくなるだろう。ip-sentinelの仕組みではip-sentinelの使い方を解説したい。ip-sentinelは次のサイトから入手できる。【ip-sentinel】http://www-user.tu-chemnitz.de/~ensc/ip-sentinel/ソースを展開してコンパイルする。checkでテストが正常に終わればコンパイルはうまくいっているはずだ。installしてもよいが、checkinstallを使用してRPMパッケージ化してインストールすることもできる。同梱されているSPECファイルを使用してもいいだろう。installした場合、実行ファイルは/usr/local/sbin/ip-sentinelとしてインストールされる。ip-sentinelはchrootに対応しているので、実行前に適当なユーザー/グループとディレクトリを作成し、その中に設定ファイルを作成しておく。ユーザー:ip-sentinal、グループ:ip-sentinel、ディレクトリ:/usr/local/ip-sentinalなどだ。特定のIP/MACアドレスを持つ機器以外からの接続を拒否する設定は次のようになる。設定ファイルの記述方法の詳細は、ip-sentinalのmanページを参照してほしい。設定ファイルを作成後、次のようにip-sentinelを起動する。eth0#正常に起動していれば、未登録端末のブロックが開始される。動作状況については、-lオプションで指定したログファイルに次のように記録される。[de:ad:be:ef:0:ad]ブロック動作が確認でき、登録済み機器の通信状況に影響が出ていないことが確認できたら、起動スクリプトに登録するなどしておけばいい。ソースにはsysv-init用の起動スクリプトサンプルが付属しているので、それらを用いてもいい。ip-sentinelはその性質上、誤った設定でネットワークに接続すると同一ブロードキャストセグメントにおいて大規模なネットワーク障害を発生させてしまう。実際に使用する前には入念なテストが必要なことはいうまでもない。ついてまでは対応できない。