2026年11月6日
2026年11月6日
TCP Wrappers(hosts.allow/hosts.deny)の設定方法
はじめに
本記事では、Linuxサーバーのセキュリティ強化のために有効なアクセス制御を行うためのTCP Wrappersを使用し、hosts.allowとhosts.denyファイルの設定方法について説明します。TCP Wrappersは、ネットワークサービスに対する接続要求を許可または拒否するためのユーティリティで、サーバーのセキュリティレベルを上げるのに役立ちます。
症状・背景
1. 不要なアクセスが頻発している場合
2. セキュリティポリシーを明確化する必要がある場合
3. 設定可能なセキュリティレベルを増やしたい場合
4. ネットワークサービスに対する攻撃を防ぐため
手順・設定方法
ステップ1: hosts.allowとhosts.denyファイルの存在確認
# /etc/hosts.allowと/etc/hosts.denyが存在するか確認
ls -l /etc/hosts.{allow,deny}
ステップ2: hosts.allowファイルの基本設定
# デフォルトでは空または存在しない場合、エイリアスやサービス名を指定して許可するIPアドレスを追加します
echo "sshd: 192.168.1.0/24" > /etc/hosts.allow
# コメントアウトは#
# 複数行にまたがる場合は\nで改行
ステップ3: hosts.denyファイルの主要オプション設定
# すべてのサービスに対するアクセスを拒否します
echo "ALL: ALL" > /etc/hosts.deny
# 特定のサービスのみ許可します
echo "sshd: ALL" >> /etc/hosts.deny
# 多数のサービスに対しても一括で設定できます
echo "ssh,ftp: 192.168.0.0/16" >> /etc/hosts.deny
ステップ4: hosts.allowとhosts.denyの組み合わせ
# 具体的な例を追加します
echo "httpd: 192.168.2.3,192.168.2.4" >> /etc/hosts.allow
# ファイルに複数行を追加する場合は\nで改行
echo "mysql: !192.168.0.0/255.255.0.0,192.168.3.4" >> /etc/hosts.deny
ステップ5: 有効性を確認
# hosts.allowとhosts.denyの内容を再読み込みします
sudo service xinetd restart # xinetdを使用している場合
sudo systemctl reload sshd # OpenSSHを使用している場合
注意事項
hosts.denyはすべてのアクセスを拒否するため、hosts.allowで許可したIPアドレス以外は全て拒否されます。- 複数のサービスやIPアドレスを指定する場合は、ファイルに正確な記述を行ってください。
- セキュリティポリシーを適切に設定し、不必要なアクセスはすべて拒否することを確認してください。
まとめ
1. hosts.allow: 指定されたIPアドレスからの接続を許可します。
2. hosts.deny: デフォルトでは全ての接続を拒否しますが、特定のサービスに対するアクセスを制限できます。
3. セキュリティポリシー: 設定するべきは明確で具体的なIPアドレスやネットワークです。
4. パフォーマンス: TCP Wrappersは効果的なセキュリティツールですが、過度な設定はサーバーのパフォーマンスに影響を与える可能性があります。
関連記事: