/etc/hosts.denyへALL : ALLを追加したが、あるnetwork daemonへの接続が引き続き成功する。
firewallとは別にTCP Wrappersの適用条件を確認する。
最も重要な確認事項はどれか。
hosts.allow/denyはlibwrapを利用するdaemonまたはtcpd経由serviceだけに適用される。非対応serviceにはfirewallやservice固有policyを使う。
詳細解説
privileged portかどうかだけでlibwrap適用は決まらない。
誤り。portがprivilegedかどうかはbind権限に関係するが、hosts.allow/denyを参照するかを決めない。
対応daemonだけがhosts.allow/denyを参照する。
正しい。daemon自身がlibwrap APIを使うかtcpd経由でなければrule fileは参照されない。
SUIDとTCP Wrappers rule参照は別の仕組みである。
誤り。SUID bitの有無とnetwork connection時のwrapper checkは独立した仕組みである。
address familyだけでlibwrap対応の有無は決まらない。
誤り。IPv4/IPv6対応差はあり得るが、まずdaemonがwrapper interfaceを利用するかが適用の前提になる。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s
' 'hosts.allow/deny effective only when daemon invokes TCP Wrappers access checks'期待される結果
hosts.allow/deny effective only when daemon invokes TCP Wrappers access checks理解のポイント
- daemon側のlibwrap対応
- 全serviceへ自動適用されない
- firewallとは別layer
確認時の注意
- 確認環境: TCP Wrappers適用条件の表示のみ
基礎のおさらい
廃止傾向
現行distributionではlibwrap非対応serviceも多く、firewallやsystemd/service固有access controlへ移行している。
検証方法
link library、package build option、service documentation、実access logを使って適用有無を確認する。