TCP Wrapper は、hosts.allow と hosts.deny によって、対応サービスへのアクセスを制御する古い仕組みです。CentOS 5 世代では、sshd や xinetd 経由のサービスで使われることがありました。
現在の新規設計では Firewall やサービス側のアクセス制御を優先することが多いですが、古い CentOS 5 サーバーを読む場合、TCP Wrapper の設定が通信可否に影響していることがあります。
設定ファイルの役割
/etc/hosts.allow: 許可する接続元を記述する/etc/hosts.deny: 拒否する接続元を記述する- 対応していないサービスには効かない
- Firewall とは別の層で判定される
現在の設定を確認する
cat /etc/hosts.allow
cat /etc/hosts.deny基本方針
古い環境では、hosts.deny で全拒否し、hosts.allow で必要な接続元だけを許可する構成が使われることがあります。
sudo tee /etc/hosts.deny >/dev/null <<'EOF'
ALL: ALL
EOF
sudo tee /etc/hosts.allow >/dev/null <<'EOF'
sshd: 192.0.2.0/255.255.255.0
EOFこの例では、SSH への接続を特定ネットワークからだけ許可しています。実環境では、管理端末や踏み台のアドレスを正確に指定します。
注意点
TCP Wrapper は、すべてのサービスに効くわけではありません。サービスが libwrap に対応していない場合、設定しても効果がありません。
ldd /usr/sbin/sshd | grep libwrapFirewall と TCP Wrapper の両方で制御している場合、どちらで落ちているのか分かりにくくなることがあります。古いサーバーを調査する時は、Firewall、TCP Wrapper、サービス自身の設定を分けて確認します。
TCP Wrapper とファイアウォールの役割分担
TCP Wrapper は、対応しているデーモンに対して hosts.allow と hosts.deny でアクセス制御を行う仕組みです。ただし、すべての通信を制御できるわけではありません。iptables のようなファイアウォールとは、制御する階層と対象が違います。
- iptables はカーネル側でパケットを制御する
- TCP Wrapper は対応アプリケーションが参照するアクセス制御である
- TCP Wrapper 非対応のサービスには効かない
- ネットワーク境界の防御を TCP Wrapper だけに任せない
CentOS 5 の古い環境では TCP Wrapper が現役で使われていることがありますが、これをファイアウォールの代替として見るのは危険です。基本はネットワーク制御で絞り、対応サービスの追加制御として TCP Wrapper を読むのが自然です。
確認時の切り分け
接続できない場合は、TCP Wrapper、iptables、サービス待ち受け、名前解決を分けて確認します。
cat /etc/hosts.allow
cat /etc/hosts.deny
iptables -L -n
netstat -lntp
getent hosts client.example.local
tail -f /var/log/secureまとめ
CentOS 5 の TCP Wrapper は、古いアクセス制御の仕組みとして理解しておく価値があります。ただし、現在の設計では万能な防御策ではありません。既存環境で使われている場合は、どのサービスに効いているのか、Firewall とどう役割分担しているのかを確認することが重要です。
関連する記事
- CentOS 5 サーバー管理ガイド
CentOS 5 系記事のハブです。 - CentOS 5 不要サービスの停止 – chkconfig で起動状態を確認する
サービスの起動状態を確認する記事です。 - CentOS 5 ネットワーク設定 – ifcfg と network サービスの基本
ネットワーク設定の基本記事です。
参考書籍
古い Linux サーバーの操作や設定ファイルを読む前提として、CLI の考え方を確認したい場合の参考書籍です。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

