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
(以下略)
(中略)
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)
(以下略)
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 使うか選べるようになってる事がある。