knockd
面白い。
要は、
というものなんですが(汗)。
コンパイルにはlibpcapが必要。あと、ソースコードを見るとLinuxに依存しまくってる(改修はラクそうですが)。
で、以下使い方。
アーカイブ展開、configure + make でコンパイルが正常に終了したら、/tmp/knockd.conf に以下のような内容を設定して、knockd -d -c /tmp/knockd.conf などとして実行する。
/tmp/mogeは
[options]
LogFile = /var/log/knockd.log[openSSH]
sequence = 7000,8000,9000
protocol = tcp
timeout = 15
command = /tmp/moge %IP%[closeSSH]
sequence = 9000,8000,7000
protocol = tcp
timeout = 15
command = /tmp/hoge %IP%
/tmp/hogeは、
echo $1 > /tmp/mogelog
という内容で、実行権限を与えておく。
echo $1 > /tmp/hogelog
knockdは、デフォルトではeth0をlistenするので、自分以外のホストからとりあえずknockしてみる。
knockコマンドは、単にSYNフラグが立ったパケットを指定したホストの指定したポートに送るだけなので、別にtelnetを順序よくかけてもいい。なお、knockdはL2レベルの監視をしている(だからlibpcapが必要)ので、別にそこで接続を云々ということはない。
とか
telnet targethost 7000
telnet targethost 8000
telnet targethost 9000
いうコマンドでも、knockコマンドのかわりにはなる。
telnet targethost 9000
telnet targethost 8000
telnet targethost 7000
叩いたら、knockdを動かしてるマシン上の /var/log/knockd.log にログが記録されるのでチェックしてみよう。あと、/tmp/hogelogと/tmp/mogelogもチェックして、IPアドレスが記録されてるかどうかをチェックしてみょう。