2013-06-21

iptables にて OS ごとに異なるルールを適用

iptables は, Linux でのルールベースのパケットフィルタツールである. パケット毎にTCPヘッダやペイロードにおいて条件を検査し, 条件にマッチするものに操作 (破棄, 拒否, 許可など) を加えることができる. ポート番号や送信元・送信先IPアドレスによる条件を作成することが多いが, ここでは, OS毎に条件を変える方法を紹介したい. 例えば, 以下のような使用方法が考えられる.
  • ウイルス感染が多いと言われる Windows からのパケットのみを除去する.
  • Linux 上でのみ動作するソフトが使用するポートを開ける.
  • Windows へは DHCP にてプロキシを通知できるので80番ポートは塞ぎ, その他のOSには80番ポートを開ける.

今回使用するOSの判別方法は, TTL によるものである. ユーザやソフトウェアが細工をすることでこの判別を回避することは可能であることには注意していただきたい. TTL による OS 判別はこのページに記されている; ping(2)――設定や構成確認にも使える. 以下の表の様にして判別できる.

1-64Linux
65-128Windows
129-255Mac OS X, Solaris, BSD など (iPhone はここに含まれる)

iptables には, ttl と呼ばれるモジュールがあり, 例えば FORWARD を OS 毎に分ける場合は, 以下のように設定する.

-A FORWARD -m ttl --ttl-lt  65 -g FORWARD-linux
-A FORWARD -m ttl --ttl-lt 129 -g FORWARD-windows
-A FORWARD                     -g FORWARD-mac

0 件のコメント:

コメントを投稿