作業環境
- Red Hat Enterprise Linux 7.3
Red Hat におけるアクセス制御機能について
Red Hat Enterprise Linux では、以下の3つのアクセス制御機能があります。
- Firewall
- TCP Wrapper
- xinetd
アクセス制御の適用順は以下画像の通りで、TCP Wrapper については Firewall が適用された後の通信について制御を行います。
TCP Wrapper での制御対象
- TCP Wrapper が制御対象とするサービスは「TCP でラップしたサービス」
- 「TCP でラップしたサービス」とは、
libwrap.so
ライブラリにリンクされたもの libwrap.so
ライブラリにリンクされているかどうかを確認するためには以下コマンドを実行するldd binary-name | grep libwrap
binary-name
の部分をネットワークサービスのバイナリの名前で置き換えて実行する
- sshd サービスについて確認する場合は以下の通り
# ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f45f52ea000)
libwrap.so
ライブラリにリンクされている場合は上のように出力があり、リンクされていない場合は何も出力されない
TCP Wrapper のパッケージ
TCP Wrapper のパッケージは以下の2つ。
- tcp_wrappers
- tcp_wrappers-libs
Red Hat Enterprise Linux 7 ではデフォルトでインストールされています。
インストールされていない場合、インストールコマンドは以下の通りです。
yum -y install tcp_wrappers tcp_wrappers-libs
TCP Wrapper の設定ファイルと処理順序
TCP Wrapper の設定ファイルは以下の2つ。
/etc/hosts.allow
/etc/hosts.deny
TCP Wrapper の処理順序は以下の通りです。
/etc/hosts.allow
を参照し、制御対象の通信にマッチするルールが存在する場合は対象サービスへのアクセスを許可し、存在しない場合は次のステップに進む/etc/hosts.deny
を参照し、制御対象の通信にマッチするルールが存在する場合はアクセスを拒否し、存在しない場合は対象サービスへのアクセスを許可する
設定ファイルの記載方法
各設定ファイルの記載フォーマットは以下の通りです。
<daemon list> : <client list> [<option>]
<daemon list>
の部分では、対象プロセス名(サービス名ではない)のリストをコンマ区切りで指定、またはALL
(すべて) を指定<client list>
の部分では、対象となるホストを特定するためのホスト名、ホスト IP アドレス、特別なパターン、またはワイルドカードのリストをコンマ区切りで指定、またはALL
(すべて) を指定
設定ファイル表記例
- ALL : .example.com
- example.com ドメイン内のすべてのホスト
- ALL : 192.168.
- 192.168.x.x ネットワーク内のすべてのホスト
- 192.168.0.0/16 のようなプレフィックス表記はできないため注意
- sshd : 192.168.0.0/255.255.254.0
- 192.168.0.0 から 192.168.1.255 までのアドレス範囲を持つすべてのホストの ssh 接続
- ALL : ALL
- すべての通信
例えば、特定の通信のみ許可したい場合は以下のように設定します。
/etc/hosts.allow
の内容- 許可したい通信のルールのリストを記載
/etc/hosts.deny
の内容- ALL : ALL と記載(すべて拒否する)
設定変更の反映
/etc/hosts.allow
および /etc/hosts.deny
の設定を変更すると、即座に反映されるため、何かを再起動したりする必要はありません。
参考資料

2.6. TCP Wrapper および xinetd Red Hat Enterprise Linux 6 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.
―――――――――――――