現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、Solaris 10で最初から使用可能となっているTCP Wrapperを使って接続ホストの制限設定を行ってみましょう。
Solaris 10で、TelnetやFTPの接続制限をかけたいのですが、TCP Wrapperをコンパイルしないといけないのでしょうか?
Solaris 10では、OSの機能としてTCP Wrapperが最初から使用可能となっています。そのため、新しくTCP WrapperをコンパイルしなくてもTelnetやFTPなどのサービスの接続制限を行えます。実際にSolaris 10でTelnetの接続ホストの制限設定を行ってみましょう。
まず、「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の機能が有効化されます。
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.