tcp wrapper で/etc/hosts.allow を使って特定のhost/networkを拒否する

hosts.deny で任意のipを拒否したいと思っても、hosts.allow でallで許可設定を書くと、公開サーバなどで以下のような設定は出来ないと思っていた。

例えば公開FTPサーバを用意するとして、セキュリティ対策のためにhosts.deny でまず全てを拒否する。その後、proftpd は外部からアクセスを許可するのでhosts.allow でallで許可をしているとする。

  • /etc/hosts.deny
all: all

  • /etc/hosts.allow
proftpd: all


この時に、悪さをしてくるhostがいたとしても、hosts.allow で全て許可してしまっているので、tcp wrapperだけではどうしようもなくて、iptables 等で対策が必要だと思っていた。
が、hosts.allow 内でdeny する設定ができた。知らなかった。

設定

  • /etc/hosts.allow
proftpd: 192.168.0. : deny
proftpd: all : allow

という風に3つ目の項目にdenyと書けば、/etc/hosts.allow だけで拒否設定も出来るのだった。ちなみに2行目のallow は別に書かなくてもproftpd: all だけでも良い。(deny と対比してわかりやすいように書いただけ)