2013/03/22

iptablesによるicmpパケットのフィルタリング

監視ツールによるping(いわゆる死活監視です)は通したので単純にicmpパケット全てをDROPという分けにはいきません。そこでicmpパケットに対するフィルタリング設定についてちょっと纏めてみたいと思います。

ICMP-TYPE

icmpにはICMP-TYPEといったものがあります。icmpはTCP/IPネットワークにおいて機器がお互いの状態(間のネットワークの状態といった方がいいかもしれませんが)を確認するためにpingのような診断プログラムによって利用されるプロトコルです。従ってネットワーク的に診断をするためのいろいろな通信ができる必要があるわけで、このいろいろな通信を実現しているのがICMP-TYPEというわけです。
ICMP-TYPEには以下のようなものがあり、iptablesの--icmp-typeオプションを利用することによりicmpパケットに対する細かなフィルタリング設定を実現できます。

type表示内容
0Echo Replyエコー応答Echo Reply(エコー応答)(pingなど)
3Destination Unreachable宛先到達不可(宛先の相手が存在しなかった、もしくは障害中)
4Source Quench発信制御(受信元のパソコンが送信元に、処理が追いつかないので転送を止めてほしいとリクエスト、など)
5Redirectルート変更(ルーター増設時などに最適経路を発見したときに利用)。表示されると一瞬びっくりします
8Echo Requestエコー要求(pingなど)
11Time Exceeded for a Datagram時間超過
12Parameter Problem on a Datagramパラメーター問題(IPヘッダに問題があったとき、受信側が送信側に送る)
13Timestamp Requestタイムスタンプ要求
14Timestamp Replyタイムスタンプ応答
15Information Request情報要求
16Information Reply情報応答
17Address Mask Requestアドレスマスク要求(自分が所属しているサブネットのサブネットマスクを知ろうとしたパソコンが送信する)
18Address Mask Replyアドレスマスク応答

pingを通す

pingによる死活監視を有効にするために、Echo RequestとEcho Replyを通します。
設定は以下の通りです。

iptables -A INPUT -m icmp -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -m icmp -p icmp --icmp-type 0 -j ACCEPT

icmp-host-prohibited

よく以下の設定を見かけますがどういう意味だかご存知ですか?
--reject-withオプションに続いてicmp-host-prohibitedが指定されています。これはパケットを拒否した際に返すエラーメッセージを指定するオプションみたいです。この例の場合は、icmp-host-prohibitedというエラーが応答として返されます。意味的には接続を拒否したよってことが伝えられるみたいです。

iptables -A INPUT -m icmp -p icmp -j REJECT --reject-with icmp-host-prohibited

なお、icmp-host-unreachableを指定するとホストまで届かなかったよって意味の応答が返されます。

参考

  • http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/index.html

0 件のコメント:

コメントを投稿