OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2013/08/13

OSSでLinuxサーバ構築

TCP Wrapperによるアクセス制御

トップページOSSでLinuxサーバ構築 > 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
ファイル名:/etc/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
ファイル名:/etc/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接続

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会

■■■ 当サイトは Internet Explorer 11 と Mozilla Firefox 43 で動作確認済みです。 ■■■