Solaris 10でTelnetやFTPの接続制限をかけるUNIX処方箋

現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、Solaris 10で最初から使用可能となっているTCP Wrapperを使って接続ホストの制限設定を行ってみましょう。

» 2009年02月02日 07時00分 公開
[ITmedia]

Solaris 10で、TelnetやFTPの接続制限をかけたいのですが、TCP Wrapperをコンパイルしないといけないのでしょうか?


Solaris 10では、OSの機能としてTCP Wrapperが最初から使用可能となっています。そのため、新しくTCP WrapperをコンパイルしなくてもTelnetやFTPなどのサービスの接続制限を行えます。実際にSolaris 10でTelnetの接続ホストの制限設定を行ってみましょう。

TCP Wrapperの有効化

 まず、「inetadm -p」コマンドで現状のTCP Wrapperの状態を確認します。


# inetadm -p
NAME=VALUE
bind_addr=""
bind_fail_max=-1
bind_fail_interval=-1
max_con_rate=-1
max_copies=-1
con_rate_offline=-1
failrate_cnt=40
failrate_interval=60
inherit_env=TRUE
tcp_trace=FALSE
tcp_wrappers=FALSE

 上記例では、tcp_wappersの値がFALSEとなっており、TCP Wrapperは機能していません。TCP Wrapperを有効化するには、inetadmコマンドを次のように実行します。


# inetadm -M tcp_wrappers=true

 前記コマンドを実行した後に再度「inetadm -p」を実行して確認します。


# inetadm -p
...
tcp_wrappers=TRUE

 すると、tcp_wrappersの値がFALSEからTRUEに変化しているのが分かります。このように、tcp_wrappersの値がTRUEになった場合に、TCP Wrapperの機能が有効化されます。

/etc/hosts.allow、/etc/hosts.denyを作成

 inetadmによるTCP Wrapperの有効化後、従来のTCP Wrapperと同じように/etcにhosts.allowおよびhosts.denyを作成し、設定を行います。

 例えば、Telnetのみ、172.17.0.0のネットワークから許可したい場合は次のように設定します。

</etc/hosts.allow>

in.telnetd: 172.17.0.0/255.255.0.0 127.0.0.1

</etc/hosts.deny>

ALL: ALL


 hosts.allow、hosts.denyを編集したときから設定が有効になるため、inetdを再起動する必要はありません。実際に、172.17.0.0のネットワークにあるホストからtelnetを実行すると以下のようになります。


# telnet 172.30.30.12
Trying 172.30.30.12...
Connected to 172.30.30.12.
Escape character is '^]'.
login:

 ここで、172.17.0.0のネットワーク以外のホストからtelnetを実行すると以下のようになり、Telnetできなくなることが分かります。


# telnet 172.30.30.12
Trying 172.30.30.12...
Connected to 172.30.30.12.
Escape character is '^]'.
Connection to 172.30.30.12 closed by foreign host.

 また、アクセスできない場合、/var/log/messagesファイルに以下のようなlogを残しますので、どこからアクセスしてきたのか参照できます。

Jul 16 10:35:47 test in.telnetd[2101]: [ID 808958 daemon.warning]

refused connect from 172.30.40.12 (access denied)


 同様の手順で、Telnet以外にもFTPやrloginなどもアクセス制限をかけられます。

UNIX関連の悩みなら、「UNIX処方箋」にどうぞ


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ