hosts.denyとhosts.allowを編集するには?

Ubuntuでいくつかのホストをブロックしたいのですが、どうやってhosts.denyファイルを編集してexample.comのようなホストをブロックできますか?

そしてもう一つ、Ubuntuにdnsmasqをインストールしたのですが、dnsmasqによってキャッシュされたdns'sのエントリをチェックできますか?もし可能なら、どのようにすればいいですか?

よろしくお願いします。

ソリューション

hosts.deny`の例:

ALL: 192.168.1.2
ALL: example.org

これは192.168.1.2とexample.orgへの全てのサービスを拒否します。詳しくは、http://linux.about.com/od/commands/l/blcmdl5_hostsde.htm を参照してください。

dnsmasq -d` でキャッシュされたエントリーが得られるはずだが、それについてはあまり自信がない。

---UPDATE---

iptablesでIPアドレスをブロックするには:

iptables -A INPUT -s 11.22.33.44 -j DROP

でブロックを解除します:

iptables -D INPUT -s 11.22.33.44 -j DROP
解説 (6)

hosts.allowhosts.deny`は非推奨である。これらはTCPラッパー、ホストベースのアクセス制御、http://en.wikipedia.org/wiki/TCP_Wrapperで使用される。

あるサービスへのアクセスをブロックしたい場合、そのサービスがTCP Wrappersでコンパイルされているかどうかを調べる必要がある。UbuntuのサービスがまだTCP Wrappersを使っているかどうかは、かなり疑わしいです。

TCPラッパー・ライブラリは /lib/libwrap.so.0 にある。 lighttpd`(ウェブサーバー)がTCP Wrappersをサポートしているか調べたい場合は、以下を実行する。

> ldd /usr/sbin/lighttpd
    linux-vdso.so.1 =>  (0x00007fff2a5ff000)
    libpcre.so.3 => /lib/libpcre.so.3 (0x00007f69af837000)
    libdl.so.2 => /lib/libdl.so.2 (0x00007f69af633000)
    libattr.so.1 => /lib/libattr.so.1 (0x00007f69af42d000)
    libssl.so.0.9.8 => /lib/libssl.so.0.9.8 (0x00007f69af1db000)
    libcrypto.so.0.9.8 => /lib/libcrypto.so.0.9.8 (0x00007f69aee4b000)
    libfam.so.0 => /usr/lib/libfam.so.0 (0x00007f69aec42000)
    libc.so.6 => /lib/libc.so.6 (0x00007f69ae8bf000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f69afa90000)
    libz.so.1 => /lib/libz.so.1 (0x00007f69ae6a8000)
> _

libwrapについては言及していないので、少なくともこのサービスはTCP Wrappersをサポートしておらず、/etc/hosts.{allow, deny}`を無視する。

解説 (1)

ファイアウォールを使って他のサイトへのアクセスをブロックしたい。 ufwはデフォルトでインストールされていると思います。 man ufw`というコマンドを実行すれば、使い方がわかるはずです。 192.0.2.15をブロックしたいアドレスに置き換えてください。

コマンド sudo ufw enable sudo ufw deny to 192.0.2.15

解説 (0)