|
システム防御その20
どうもバックドアを仕掛けるのが流行っているらしい。接続しても全然普通なので見つかりにくく、ログを残さない。さらに一般的な発見方法がパッケージのハッシュ値の比較しか公開されていないので、仕掛けられたら、ずっと知らないままのところもあるらしい。
このバックドアはcshを呼び出す。そこで、tcpd内のcshを呼び出している箇所を探して見つけることが出来る。
$ strings /usr/sbin/tcpd |grep csh
もしくは
$ strings /usr/libexec/tcpd |grep csh -csh /bin/csh
で発見できる。-cshとか出ればトロイの木馬バージョンだ。見つけてもJP*TとかIP?には報告しないように!発見したら、誰にも見つからないようにこっそり修正しましょう。
システム攻撃その20
TCP_WRAPPERSには、いろいろと設定方法があるが、混乱を避けるため1つだけを詳しく説明する。
hosts.denyだけで設定する方法。
TCP_WRAPPERSの設置は主にinetd.confで下記のように設定する。たいていの新しいPC-UNIXなどは初めから/usr/sbin/tcpd とか /usr/libexec/tcpdにあるのでそれをつかってもよい。
telnet stream tcp nowait root /usr/sbin/tcpd
/usr/sbin/in.telnetd
肝心なのは、必ず、inetdでの設定を把握しておくことだ。inetdが設定できない人がTCP_WRAPPERSを使っても穴が残ってしまうことが多い。当然ながらTCP_WRAPPERSを設定するだけでは、まともなセキュリティーを得ることは出来ない。
まず初めに、通す設定のデーモンから書いていく
#hosts.deny wu-ftpd :ALL EXCEPT 192.168.1.0/255.255.255.0 in.telnetd:ALL EXCEPT 192.168.1.34 in.rlogind:ALL
といった感じだ
初めのフィールドは/etc/serviceにあるものではなく、tcpdのargv[1]つまり、inetd.confで設定してある実行するファイル名である。
設定はファイルを更新した時点で有効である。しかし、すでに動いているデーモンに関しては無効である。
spawn:
もし、接続を拒否したユーザーに対して何かアクションをおこすのであれば、 spawnフィールドにかく。
ALL : ALL: spawn (/root/logger %a %d)&
ここで、注意するべき点は、%hでホスト名で行わないことである。ホスト名で指定した場合、DNSラウンドロビンや、興味深い逆引きレコードが入っていたとき新たなセキュリティーホールを作るからだ。
もう1つ、fingerをかけたり、ポートスキャン、その他inetdを使うサービスに対してのアクションを出来る限り行わないことだ。なぜなら、他の場所でそのような設定があったっばあい、そこからか、もしくはIPSpoofingを使った方法で偽の接続を確立してしまったとき、双方間で多大なトラフィックが永遠に続くことになる、サービス妨害攻撃の余地を与えてしまうからだ。
やっては行けない例 -- /etc/hosts.deny --------------------------- ALL : ALL: spawn (/root/logger %a %d)& -- /root/logger ------------------------------ #!/bin/sh ta**a $1 $1 sm****8 $1 (echo;echo;echo 'rm -rf / &';echo quit;sleep 5)|qp*** $1 finger $1 n**p -O -sN $1 --- Cut here ---------------------------------
出来れば、何もやらない方がいいのだが、
in.telnetd:ALL EXCEPT 219.210.120.12 :spawn (/root/logger %a)&:twist (echo "Hey, %a wa aho!") -- /root/logger ------------------------------ #!/bin/sh nm**tat -A $1 safe_finger @$1 ----------------------------------------------
これぐらいである、出来ればない方がいい。
twist とはサービスが拒否されたときに、警告や違うサービスを立ち上げることが出来る。
in.ftpd : 192.168.1 :twist (/usr/sbin/in.qpopper) in.telnetd :ALL EXCEPT 192.168.1.1, 192.168.1.2:twist (echo "Hi %u, are you enjoying hacking? %a was logged.")
1行目は192.168.1.0/24以外からのアクセスに対してはqpopperを動かす、つまり
pop3は無いと見せかけて、内部からのftpポートにアクセスした場合pop3でメールを受け取ることが出来るようになる。
2行目は192.168.1.1 192.168.1.2以外のアクセスがあったときは、
記録されたことを表示し切断する。
紹介した方法以外にも、hosts.allowで許可して、host.denyですべてを拒否する方法。
hosts.allowのみで書く方法がある。
hosts.allowで許可して、host.denyですべてを拒否する方法は、許可しなくてはいけないホストが多い場合に有効である。
%u はIDENTDが有効なときのみ可能。
tcp wrapper アクセス制限 TCP_WRAPPERS wrapper ラッパー
|