|
|
|
|
|
|
|
TCP_Wapperとxinetdによるサービスとアクセス制御 |
|
|
旧来からよく使用されているインターネットスーパーサーバにinetdがあります。
inetdは、設定されたあるサービスへの要求があった場合に、そのデーモンを起動する役割を担います。
(スタンドアローンデーモンの場合は、inetdは経由せず、デーモンそのものが要求を直接処理します。)
例えばftpなどの要求がクライアントから来たとします。
inetd経由では、クライアントの要求をinetdが受け付け、その次に、inetdがftpデーモンを起動します。
この時inetd経由でftpサービスを受け付ける場合は、/etc/inetd.confにftpの定義を記述しておきます。
アクセス制御を行いたい場合は、TCP_Wappersを使用し、特定のIPアドレスからのみ要求を受け付ける用にできます。
しかし、inetdは今程セキュリティーに気をつかう必要の無い時代に考えられた代物です。
*私がUNIX系OSをインストールすると、まずinetdを確認、いらないものはできるだけ止めていますし、そもそもFreeBSDなどでは、
inetd自体を停止して使用するようにしています。
そこで登場したのが、xinetdです。xinetdでは、TCP_Wappersで行っていたアクセス制御や、サービスに対する接続数の制限など
inetdより細かい制御が可能になります。もちろんTCP_Wappersと併用することも可能です。
xinetd自体は、RedHatLinuxの7.*あたりから標準になってきましたし、最近のLinuxディストリビューションはxinetdを使用し
ているでしょう。もちろんFreeBSDやSolarisでも使用することができます。
TCP_Wappers,xinetdの設定をするのに把握しておく必要があるのは、以下の設定ファイルです。
/etc/xinetd.conf--
----xinetdの設定ファイル。
/etc/hosts.allow--
---TCP_Wappersアクセス制御用(許可)ファイル。
/etc/hosts.deny--
----TCP_Wappersアクセス制御用(拒否)ファイル。
/etc/service-----
----ネットワークサーバの種類とポートの定義ファイル。
TCP_Wappers
TCP_Wappersは以下のファイルでアクセス制御します。
hosts.deny------
アクセス拒否用
hosts.allow-----
アクセス許可用
評価する順番は、
1.アクセス拒否ファイルに記述してある物は拒否
2.アクセス許可ファイルに記述してあるものは許可
3.記述の無いものは許可
*"1."に該当し、"2."に該当する場合は、"2."が優先されます。
設定は、"1."で全て拒否し、必要なものだけ"2."で定義する形になります。
各ファイルの記述方法は、
<service> : <host> : <command>
<service>=inetdやxinetdに記述してある<argument>を指定します。
<host>=ホスト名をFQDNで記述したり、IPアドレスなどで指定します。
<command>=特定のコマンドを発行できます、例えば、拒否したときにmailを送信するとか、、。
Tips.1
<host>の設定例。
<host>はいろいろな設
定方法があります。代表的なのは以下のとおり。
.domainNmae--------
このドメインに属するホストを対称にします。
hostname-----------
ホスト名を指定します。DNSや/etc/hostsで名前引きができる必要があります・
192.168.0.10-------IP
アドレスを指定します。
192.168.0.0/24------
192.168.0.0/255.255.255.0に属するホストが対象になります。
ALL----------------
全てのホストを対称にします。
127.0.0.1----------
ローカルホストを対称にします。
userName@192.168.0.15
--192.168.0.15ホストのユーザー:userNameのみ対称になります。
ほかにもありますが、このあたりを覚えて
おけば、さしあたって困らない、かな?
では、実際の設定例です。
今回は、ProFTPDを対称に説明します。
1.まずは/etc/hosts.denyから。これは全て
拒否としておきます。
ALL: ALL
2./etc/hosts.allowで許可の設定をしま
す。
*ローカルホストは全て許可、ProFTPDをIPアドレス空間で指定。
ALL: 127.0.0.1
in.proftpd:
192.168.0.0/24
Tips.2
<service>の記述
<service>は、
/etc/servicesの記述では無く、inetdやxinetdの<argument>を指定します。
xinetdなら、設定ファイルに
server
= /usr/sbin/in.proftpd
の記述がされていることになります。
xined
xinetdはinetdの代替として生まれて来ました。xinetdでは、以下のような機能を持っています。
IPによるアクセス制御
ドメインによるアクセス制御
サービスの提供時間
接続数の制限
ログ出力
従来のTCP_Wappers+inetdより、サービスの提供時間や接続数の制限など機能は豊富と言えます。
もちろん、TCP_Wappersと併用することも可能です。
xinetdの設定では、/etc/xinetd.confを
編集することで可能ですが、多くの場合、/etc/xinetd.d/以
下にサービスごとの設定ファイルを置くことが多いようです。
その場合、xinetd.confは、最小限の設定にとどめ、細かい制御は各サービスの設定ファイルに任せるといいでしょう。
では実際の設定例で。
今回もTCP_Wappers同様ProFTPDを例に説明します。
まずは、xinetdデーモンの設定ファイル、/etc/xinetd.confの設定例です。
/etc/xinetd.conf
defaults
{
instances = 100
log_type = SYSLOG authpriv
log_on_success =HOST PID
log_on_failure =HOST
}
includedir
/etc/xinetd.d
instances : 最大接続数を設定
log_type :
ログの出力方法を指定、authpriv=認証(private)
例えば、/var/log/xinetdlogにすると、独自にログを取れます。
log_on_success : サーバプログラム開始時のログ出力要素を指定
log_on_failure : サーバプログラム開始失敗時のログ出力要素を指定
includedir :
サービスの設定ファイルを格納している場所を指定しています。
*指定できるロギングパラメータは、最後の'ロギングパラメータの値'を参照
次に、/etc/xinetd.d/にProFTPD用の設定ファイルを作成します。
今回は、わかりやすく'proftpd'というファイルを作成しました。
/etc/xinetd.d/proftpd
# default: on
# description: The
Proftpd FTP Server
service ftp
{
disable
= no
socket_type =stream
wait
=no
user
=root
server
=/usr/sbin/proftpd
log_on_success +=DURATION USERID
log_on_failure +=USERID
only_from
=192.168.0.0/24
nice
=10
}
*代表的なパラメータ
service :
サービス名,/etc/serviceと同一名を使用すると、基本設定を引き継げます。
disable :
サービスのon/off,no=サービスon、yes=サービスoff
socket_type : 通常はstreamで、
wait
: ウェイト状態
user
: サービスの実行ユーザー
server :
サービス起動コマンドやスクリプト
server_args : サービスの起動パラメータ
log_on_success : ログイン成立時、ログファイルの記録する方法。
log_on_failure : ログイン拒否(未成立)時に、ログファイルの記録する方法。
nice
: 実行時のプロセス優先度
only_from :
アクセス許可のルールを指定。IPやドメインでの指定が可
no_access :
アクセス拒否のルールを指定。IPやドメインでの指定が可
access_time : <=10:00-18:00>
と指定すれば、10時-18時のみアクセス可
*ロギングパラメータの値
(/etc/inetd.confと共通)
log_on_success
DURATION : リモートシステムがサービスを使用した時間の長さを記録します
EXIT : サービスの終了ステータスか停止シグナルを記録します
PID : リクエストを受信したサーバーのプロセスIDを記録します
log_on_failure
ATTEMPT : 接続の失敗を記録します
RECORD : サービスを開始できなかった場合にリモートシステムに関する情報を記録します。
このオプションを使用できるのは、loginやfingerなど、特定のサービスだけです
log_on_success & log_on_failure
HOST : リモートホストのIPアドレスを記録します
USERID : RFC1413で定義されている方法を使用したリモートユーザーを記録します
パラメータ値、記入の注意点)
パラメータ値を複数指定する場合は、スペースで区切って記入。
|
|
|
|
|
|
|
Producted by Tomoya Sakurai
|
|
|