• Top
  • What's New
  • Command
  • Basic
  • Server
  • Security
  • Conf
  • tools
  • etc
  • blog
  • Link
  • サイトについて
  • Mail
INDEX /  TCPWrapper /  xinetd /  ssh / 
最終更新日 2005/04/08  

TCPWrapper


TCPWrapperとは
TCPWrapperの設定ファイル
TCPWrapperの設定ファイルの書式
TCPWrapperの設定ファイルの記述例
TCPWrapperのアクセス制御の流れ

TCPWrapperとは

TCPWrapperとは、「postfix」の開発者であるWietse Venema氏によって書かれたアクセス制御のプログラムです。
TCPWrapperの機能を提供しているデーモンはtcpdになります。 tcpデーモン(TCPWrapper)のライブラリ「libwrap」を使用するプログラムの一元管理(アクセス制御)が可能になります。
スーパーサーバの「xinetd」が普及する以前は、「inetd」が使用されてきました。しかし、inetd単体ではアクセス制限ができなかったため、 アクセス制御のプログラムである「TCPWrapper」と組み合わせる形(inetd + TCPWrapper)で利用されてきました。
現在は、xinetdの普及によりxinetd単体でアクセス制限が可能となっています。 ただし、アクセス制御のライブラリ「libwrap」は、いまでも様々なデーモンで使用されています。 代用的なものとして、sshd, vsftpd, telnetd, portmapd, popdなどがあります。
xinetdとTcpWrapperを組み合わせることにより二重のアクセス制限ができ、セキュリティが強化されます。
ページトップへTop

TCPWrapperの設定ファイル

TCPWrapperの設定ファイルは、「/etc/hosts.allow」「/etc/hosts.deny」の2つになります。
「/etc/hosts.allow」には許可するリストを記述します。「/etc/hosts.deny」には拒否するリストを記述します。

設定ファイル 説明
/etc/hosts.allow接続を許可をするデーモン・クライアントリストを記述
/etc/hosts.deny接続を拒否をするデーモン・クライアントリストを記述

ページトップへTop

TCPWrapperの設定ファイル(書式)

TCPWrapperの設定ファイルに記述する書式は、「hosts.allow」「hosts.deny」とも同じになります。

書式  <サービスリスト> : <クライアントリスト> [: コマンド]

  • <サービスリスト>と<クライアントリスト>の間は、:(コロン)で区切ります。
  • <サービスリスト>には、デーモン名またはプログラム名を記述します。
  • <クライントリスト>には、IPアドレス・ネットワーク名などを記述します。
  • <サービスリスト>と<クライアントリスト>両方とも複数してすることも可能です。複数指定する場合は、,(カンマ)で区切ります。
  • [: コマンド]は、TCPWrapperが実際にアクセス制御をおこなった場合に実行するコマンドを指定します。(メールを出すなど)
書式には定められたワイルドカードも使用できます。また、コマンドフィールドは変数を使用することもできます。

ワイルドカード
ワイルドカード 説明
ALLすべてのサービスリスト・クライアントリスト
A EXCEPT BB以外のA
LOCAL「.」(ドット)を含まないすべてのクライアントリスト(LAN)
PARANOIDホスト名からDNS検索したアドレスとサービス要求元アドレスが不一致

コマンドフィールドに指定できる変数
変数 説明
%aクライアントのIPアドレス
%AサーバのIPアドレス
%hクライアントのホスト名(不明な場合はIPアドレス)
%Hサーバのホスト名(不明な場合はIPアドレス)
%uクライアントのユーザ名(不明な場合は"unknown"表示)

ページトップへTop

TCPWrapperの設定ファイル(記述例)

「/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.
#
sshd : 192.168.0.1
in.telnetd : 192.168.0.

#(シャープ)から始まる行はコメントアウト行になります。
1行目: 「sshd : 192.168.0.1」・・・・・・IPアドレス192.168.0.1からのSSH接続は許可します。
2行目: 「in.telnetd : 192.168.0.」・・・ネットワーク192.168.0.0/24からのTELNET接続は許可します。

「/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.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!
ALL : all

#(シャープ)から始まる行はコメントアウト行になります。
1行目: 「ALL : all」・・・・・すべてのサーバの接続に対して、すべてのクライアントからの接続を拒否する。

※通常は「/etc/hosts.deny」ファイルには「ALL : all」を記述し、一旦接続をすべて拒否し、その後で「/etc/hosts.allow」ファイルに許可するリストを追加する形を取ります。

セキュリティの基本は、ALLDENY(すべて拒否)で行います。

ページトップへTop

TCPWrapperのアクセス制御の流れ

  1. 「/etc/hosts.allow」の記述と一致する接続を許可する
  2. 上記1とは一致せず、「/etc/hosts.deny」の記述と一致する接続を拒否する
  3. 「/etc/hosts.allow」と「/etc/hosts.deny」の記述と一致しないものはすべて許可する
注意しなければならないのは、3番目の動きです。TCPWrapperでは、「hosts.allow」「hosts.deny」両ファイルに記述が なかった場合はすべて許可をする形をとります。ですので、必ず「hosts.deny」ファイルはすべて拒否を設定しなければなりません。
ページトップへTop

 
Copyright (c) 2005 Mukuan All Rights Reserved.