TCP wrappers were developed when there were no real packet filters available and access control was needed. Nevertheless, they're still very interesting and useful. The TCP wrappers allow you to allow or deny a service for a host or a domain and define a default allow or deny rule (all performed on the application level). If you want more information take a look at hosts_access(5) manual page.
Debian でインストールされるサービスの多くは:
On the one hand, for services configured in /etc/inetd.conf
(this includes telnet
, ftp
, netbios
, swat
and finger
) you will see that the configuration file executes /usr/sbin/tcpd
first. On the other hand, even if a service is not launched by the inetd
superdaemon, support for the tcp wrappers rules can be compiled into it. Services compiled with tcp wrappers in Debian include ssh
, portmap
, in.talk
, rpc.statd
, rpc.mountd
, gdm
, oaf
(the GNOME activator daemon), nessus
and many others.
To see which packages use tcpwrappers
try:
$ apt-cache rdepends libwrap0
tcpchk
を走らせるときはこのことを考慮してください。wrapper ライブラリにリンクされているサービスを host.deny
や hosts.allow
ファイルに追加することができますが、 tcpchk
はこれらのサービスを発見できないと警告するでしょう。 というのも tcpchk
は /etc/inetd.conf
を見て これらのサービスをさがすからです (マニュアルページはここでは完全に正確と いうわけではありません)。
ここで、小さなトリックがあります。たぶん利用可能なもののうち最小の侵入検知 システムでしょう。一般に、最初の抵抗線としてよいファイアウォールポリシーを、 2 番目の抵抗線として TCP wrapper を持つべきです。小さなトリックとは 拒否されているサービスが wrapper を呼ぶたびに root にメールを送る SPAWN
コマンドを /etc/hosts.deny に設定することです。
ALL: ALL: SPAWN ( \
echo -e "\n\
TCP Wrappers\: Connection refused\n\
By\: $(uname -n)\n\
Process\: %d (pid %p)\n\
User\: %u\n\
Host\: %c\n\
Date\: $(date)\n\
" | /usr/bin/mail -s "Connection to %d blocked" root) &
注意: 上記の例は短時間に大量の接続を行うことによって簡単に DoS されます。大量の電子メールが送られるということはわずか数パケットを 送ることによって大量のファイル入出力を発生させられるということです。