/var/log/maillogに
sendmail[XXXXX]: NOQUEUE: tcpwrappers (XXXXXX, XX.XXX.XX.X) rejection
のようなアラートがでる。
tcpwrappersの設定
/etc/hosts.allow
→自分自身も設定すること
sendmail:127.0.0.1
/etc/hosts.deny
【参考】
sendmail でメール送信時に tcpwrappers rejection と出る | Lonely Mobiler
【AIによる回答】
Rocky Linuxでは、TCP Wrapperはデフォルトでは非推奨となっており、標準のインストールでは含まれていません。現代のLinux環境では、ファイアウォール (firewalldやiptables/nftables) を使用したネットワークレベルでのアクセス制御が推奨されています。ただし、特定のレガシーアプリケーションなどでTCP Wrapperが必要な場合は、EPELリポジトリからインストールして設定することが可能です。Rocky LinuxにおけるTCP Wrapperの設定手順(非推奨)1. インストールと有効化まず、TCP Wrapperパッケージがインストールされているか確認し、必要であればEPELリポジトリを有効にしてインストールします。bash# インストールされているか確認 rpm -q tcp_wrappers # EPELリポジトリをインストール sudo dnf install epel-release # TCP Wrapperをインストール sudo dnf install tcp_wrappers注意点: Rocky Linux 8以降では、OpenSSHなど主要なサービスがlibwrap(TCP Wrapperのライブラリ) のサポートをデフォルトで終了している場合があります。そのため、TCP Wrapperで制御したいサービスによっては、サービスの設定ファイルを変更してtcpdデーモン経由で実行させる追加の手順が必要です。2. 設定ファイルの編集TCP Wrapperの設定は、主に2つのファイルで行います。これらのファイルは最初に一致したルールが適用されるという重要な動作原則があります。
/etc/hosts.allow: アクセスを許可するルールを記述します。/etc/hosts.deny: アクセスを拒否するルールを記述します。/etc/hosts.allowの設定例特定のIPアドレスからのSSH接続を許可する例です。ローカルホストからのアクセスは常に許可するように設定することが重要です。bash# /etc/hosts.allow ファイルを開く sudo vi /etc/hosts.allowファイルに以下を追記します:# ローカルホストからの全アクセスを許可 ALL: 127.0.0.1, [::1] # 特定のIPアドレスからのsshd接続を許可 (例: 192.168.1.100) sshd: 192.168.1.100 # ネットワーク全体からのsshd接続を許可 (例: 192.168.1.0/24) sshd: 192.168.1.0/24/etc/hosts.denyの設定例上記以外のすべてのSSH接続を拒否する例です。bash# /etc/hosts.deny ファイルを開く sudo vi /etc/hosts.denyファイルに以下を追記します:# sshdへの全てのアクセスを拒否 sshd: ALL重要: SSHで作業している場合、設定を誤るとサーバーに再接続できなくなる危険性があります。設定変更前に、現在の接続が維持されていることを確認し、物理的なアクセスや別の緊急アクセス手段を確保しておくことを強く推奨します。3. 設定のテスト設定ファイルは変更後すぐに有効になります。tcpdmatchやtcpdchkといったコマンドを使用して、ルールが正しく機能するかテストできますが、これらのツールはすべてのシナリオをカバーできるわけではありません。推奨される代替手段前述の通り、Rocky Linuxを含む現代的なディストリビューションでは、TCP Wrapperではなくファイアウォールの使用が標準的です。
firewalld: Rocky Linuxのデフォルトファイアウォール管理ツールです。サービス名やポート番号、送信元IPアドレスに基づいて柔軟なルールを設定できます。iptables/nftables: より低レベルで詳細なパケットフィルタリングが可能です。セキュリティ設定を検討する際は、Rocky Linuxの公式ドキュメントやRed Hat Enterprise Linux (RHEL) のドキュメント(Rocky LinuxはRHELのアップストリーム)を参照し、最新かつ推奨されるセキュリティプラクティスに従うことをお勧めします。
Rocky LinuxでTCP Wrapperをインストールする基本的な手順は、dnf(またはyum)でtcpdumpなどの関連パッケージをインストールし、/etc/hosts.allowと/etc/hosts.denyファイルでアクセス制御ルールを設定します。ただし、現代のRocky Linuxではfirewalldが標準のファイアウォールであり、より高度な制御はfirewalld(ゾーン設定など)で行うことが推奨されますが、従来のTCP WrapperもRHEL系互換のため利用可能です。インストール手順(コマンド例)
- パッケージの確認とインストール:
- ほとんどの場合、基本的なパッケージはすでにインストールされていますが、念のため確認・インストールします。
bashsudo dnf install tcpdump # TCP Wrapperのデーモンや関連ツールが含まれる場合があります- 設定ファイルの編集:
/etc/hosts.allow: 許可する接続元とサービスを定義します。/etc/hosts.deny: 拒否する接続元とサービスを定義します。- 例: SSH(sshd)へのアクセスを特定のIPアドレス(例: 192.168.1.100)からのみ許可し、他は拒否する場合。
/etc/hosts.allowに追加:bashsshd: 192.168.1.100/etc/hosts.denyに追加:bashsshd: ALL- サービスの再起動(必要な場合):
sshdなど、TCP Wrapperで制御するサービス(inetd経由で動作するサービスも含む)を再起動します。bashsudo systemctl restart sshd
Rocky Linuxでの注意点(firewalldとの関係)
- Rocky Linux(RHELクローン)では
firewalldがデフォルトで有効です。firewalldはポートレベルでの制御を行いますが、TCP Wrapperはサービスレベル(デーモン単位)での制御を提供します。- 両方を併用することも可能ですが、基本的には
firewalldで不要なポートを閉じ、特定のサービスへのアクセスをより詳細に制御したい場合にTCP Wrapper(hosts.allow/deny)を使用します。
