• ベストアンサー

ファイアウォールは必要?hosts.allow と hosts.deny だけではダメ?

ネットで調べたところ、次のことが分かりました。 ●TCP Wrappers (/etc/hosts.{allow,deny} で設定)は inetd または xinetdで制御されていないプロセスへのアクセスをブロックできない。 ●とはいえ、sshd, sendmail は inetd/xinetdで制御されていないものの、/etc/hosts.{allow,deny}を自ら読みに行って、ここで許可されてないアクセスは拒否することができる。 sshd や sendmail も hosts.allow と hosts.deny で守ることができるとすると、Firewall(iptables)は、なぜ必要なのでしょうか?hosts.allow と hosts.deny で守ることができないデーモンがあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.3

#2です。 >勘違いしていたらすみません。 >そもそも、IPレベル(hosts.*が防御)を突破できないとアプリケーションレベル(iptablesが防御?)に到達できないと思うのですが、どうでしょうか? 勘違いです。 iptablesは、カーネルの持つIP通信機能の設定を変更して、IP通信のレベルでガードします。 /etc/hosts.{allow,deny} というのは、アプリケーションが、通信相手のIPアドレスを取得して、hosts.*ファイルを読んで、通信していいかどうかを判断するものです。判断はすべて、xinetdやsendmail,sshdといったアプリケーション(カーネルではないという意味)で行っています。 iptablesの設定で蹴った場合は、アプリケーションにパケットが届きません。

white-tiger
質問者

補足

> iptablesは、カーネルの持つIP通信機能の設定を変更して、IP通信のレベルでガードします。 ありがとうございます。ものすごくよくわかりました! #1さんが書いていることの意味もわかりました。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

アプリケーションレベルのガードと、IPレベルのガードなので、階層が違います。 例えば、sendmailの/etc/hosts.*を見に行く前の部分に脆弱性があって、そのセキュリティホールをつく攻撃を受けると、/etc/hosts.* にどう書いてあろうが意味がありません。

white-tiger
質問者

補足

勘違いしていたらすみません。 そもそも、IPレベル(hosts.*が防御)を突破できないとアプリケーションレベル(iptablesが防御?)に到達できないと思うのですが、どうでしょうか?

回答No.1

iptablesで守れるものは、TCP Wrapperで守れると思いますが、 1枚の壁より2枚の壁の方が侵入が難しい、 つまりセキュリティが高いのではないでしょうか。 とある本に、 絶対ガードできるという手段は存在しないので、同種類のガードを 幾重にも重ねるのがセキュリティの鉄則! みたいなことが書いてありました。 万が一TCPWrapperを無効にされても、まだiptablesが生き残っている、 という感じでしょうか。

white-tiger
質問者

お礼

ありがとうございます。

関連するQ&A

専門家に質問してみよう