アクセス制御をする方法として、ここではTCP Wrapperを使います。
TCP Wrapperは、inetdから各種サービスを起動する際にアクセス制御をします。
その際に、hosts.allowとhosts.denyの2つのファイルを参照します。
まずhosts.allowに書かれているサービスは許可します。
次にhosts.denyに書かれているサービスは拒否します。
どちらにも書かれていないサービスは許可します。
ここでは,次のようなアクセス制御をします。
・telnetは、指定したアドレス群からしか受け付けない
・telnet以外のサービスは普通に運用する
作業の前に、tcp_wrappers-7.6.tgzをインストールしておいて下さい。
-----/etc/inetd.conf----
telnet stream tcp nowait root /usr/local/libexec/tcpd telnetd
telnetのみを上記のように変更します。
-----/usr/local/etc/hosts.allow-----
telnetd: 111.111.111.0/255.255.255.0, \
222.222.222.0/255.255.255.0
左にIPアドレス、右にネットマスクを書きます。
-----/usr/local/etc/hosts.deny-----
ALL: ALL
書き方はhosts.allowと同様です。これは、全てのアドレスから全てのサービスへのアクセスを拒否する設定です。
tcpdchkを実行して、設定ファイルのエラーをチェックします。
% /usr/local/sbin/tcpdchk
エラーメッセージを修正したら、tcpdmatchで実際にアクセス制御出来ているかどうかチェックします。
% /usr/local/sbin/tcpdmatch telnetd 111.111.112.111
client: address 111.111.112.111
server: process telnetd
matched: /usr/local/etc/hosts.deny line 1
access: denied
この場合は、アクセスが拒否されました。
% /usr/local/sbin/tcpdmatch telnetd 111.111.111.111
client: address 111.111.111.111
server: process telnetd
access: granted
この場合はアクセスが許可されました。
上のように、自分が設定したように出来ていれば成功です。