TCP Wrapperによるアクセス制御
目次
概要
専用のライブラリ(libwrap.a)を組み込んでコンパイルされたアプリケーションに対して、 IPベースのアクセス制御を行うことができます。 全てのアプリケーションで設定できるわけではないのでご注意下さい。 利用できるものの代表例としてはSSH接続(OpenSSH)やFTP接続(vsftpd)などがあります。
この設定でアクセス制御できるのは接続元ホストのIPアドレスだけ、と機能が中途半端なので、 通常はあまり利用しません。 通常はホストベースのファイアウォール(iptables)を利用することが多いかと思います。 ただ、iptablesと比較して設定がとても簡単なので、ご紹介しておきます。
構成
サーバ構成
OSバージョン
Red Hat Enterprise Linux 5.9
パッケージ一覧
tcp_wrappers-7.6-40.7.el5
クライアント構成
OSバージョン
Windows 7 Service Pack 1
ソフトウェア一覧
Tera Term Version 4.74
環境構築
インストール
必要なパッケージはLinuxのインストール時に標準でインストールされるため、 追加のインストールは必要ありません。
設定
RHEL5.9の初期設定では、hosts.allow も hosts.deny も何も定義されていません。 何も定義されていない場合は、全ての通信が許可されます。
先に hosts.allow が評価され、ここに定義された設定は hosts.deny の設定に 関係なく許可されます。hosts.allow に定義されていないパターンの接続の場合は、 hosts.deny が評価されます。ここに定義されている接続は拒否されます。 どちらにもマッチしない接続の場合は許可されます。
設定を変更する際には、先に hosts.allow で許可する設定を行い、 次に hosts.deny で拒否の設定を入れます。 許可の設定が間違っており、拒否の設定だけが正しい場合、 リモートからのSSHやFTPの接続を行えなくなり、設定を変更することが できなくなる可能性があるためです。 これらファイルを変更する際には、保険としてTeraTermでの接続だけでなく、 ローカルコンソールからも操作できる状態で設定変更するようにしてください。
下記 hosts.allow の設定例では、ローカルホスト(同一サーバ上)からの 接続は全て許可します。 また、SSH接続は 192.168.0.0/24 セグメント内のホストからの接続と 172.16.3.101 ホストからの接続を許可します。
# cd /etc/ # vi hosts.allow
# # hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # ALL : 127.0.0.1 ←追記 sshd : 192.168.0.0/255.255.255.0 , 172.16.3.101 ←追記
hosts.allow に定義されていない接続に関しては全て拒否します。
# vi hosts.deny
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
ALL : ALL ←追記
設定変更後、特に特定サービスの再起動等は必要ありません。 上記設定ファイルを保存した時点で有効になります。 ただし、設定変更前に既に接続が確立していたSSH接続やFTP接続に関しては そのまま接続されたままになります。 あくまで新規接続から設定が適用されます。
動作テスト
TeraTermを利用してSSH接続に関する動作確認を行います。 接続を許可されている場合は通常通りログインでき、 接続を拒否されている場合は、ユーザ名とパスフレーズを入力して [OK]ボタンをクリックしたところでサーバからの応答がなくなります。
許可される接続パターン
- 127.0.0.1からのSSH接続(同一サーバから自分自身に対するSSH接続)
- 192.168.0.11からのSSH接続
- 172.16.3.101からのSSH接続
拒否される接続パターン
- 192.168.10.11からのSSH接続
- 172.16.3.102からのSSH接続
- 10.20.30.40からのSSH接続