2008年9月11日木曜日

hosts.allow、hosts.deny を使うサーバプログラムを見分ける

メモエントリ
 

hosts.allow、 hosts.denyはTCPラッパーの設定ファイル。サーバプログラムによってこれを使ったり使わなかったりする。
要はバイナリがTCPラッパーのライブラリにリンクしてれば使ってるだろうという見分け方をする。
 

netstat コマンドでサーバプログラムのバイナリ名を調べる


netstat はpオプションでポートをリッスンしているプログラムを表示してくれる。(Windowsのnetstatだったらbオプション)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
(中略)
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2327/vsftpd
(以下略)

丁度いいのがいた、この vsftpd はどうなのか調べる。
 
 

ldd コマンドでリンクしているライブラリを一覧表示


libwrapが居るかな?
# ldd `which vsftpd`
libssl.so.4 => /lib/libssl.so.4 (0x0088d000)
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00b60000)
(以下略)

いた。
このvsftpd は hosts.allow、 hosts.deny を使うので、hosts.deny にALL 指定とかしてるサーバでは、どこかに allow を明示する必要があると。
バイナリにパスが通ってなかったら ldd に渡す引数でフルパス指定が必要。
 

ソースからコンパイルするならコンフィグヘルプを見ると、 libwrap 使うか選べるようになってる事がある。