telnet stream tcp nowait root /usr/libexec/telnetd telnetdの行を
telnet stream tcp nowait root /usr/local/libexec/tcpd telnetdと変更する。
ネットワークプロセスデーモン名: 範囲指定 [, 範囲指定...]という形でネットワークプロセスデーモン別にアクセス制限を記述する。 以下、アクセス制限をかけるネットワークデーモンとして telnetd を指定することにする。 範囲指定の部分をIPアドレスで指定する場合は、ネットアドレス/ネットマスクという組合せで指定する。
telnetd: 10.0.0.0/255.255.255.0上のように設定した場合、10.0.0.0 〜 10.0.0.255 までの IPアドレスからの telnet は許可する。 tcpdの判定方法は、アクセス元のIPアドレス に ネットマスクの値を AND して、その結果がネットアドレスに等しければアクセスを許可するというものだ。 (実際には、10.0.0.0 から telnet されることは無いだろーけど。)
telnetd: 10.0.0.のように、ピリオド(.)で数字を終らせておくと、IPアドレスの上位3バイトが10.0.0のホストからアクセスは許可するようになる。 私の場合は、
telnetd: LOCAL, 10.0.0.0/255.255.255.0と記述しておいた。 「LOCAL」という指定で、ローカルホストからのtelnetも許可する設定にしている。
ALL: ALL上の例では、/usr/local/etc/hosts.allowファイルでアクセス許可した以外のIPアドレスからのtelnetを許可しないので、全部禁止という指定をしている。 ALL という指定をすると、「全部」と解釈される。
client: address 10.0.0.1 server: process telnetd matched: /usr/local/etc/hosts.allow line 1 access: grantedのように、access が granted(許可)されているのが表示される。
/usr/local/sbin/tcpdmatch telnetd 192.23.12.33 とすると、
client: address 192.23.12.33 server: process telnetd matched: /usr/local/etc/hosts.deny line 1 access: deniedと表示され、access が denied(拒否)されているのが表示される。
他にアクセス制限が必要なものとして、ftpやfingerなどが考えられる。 上の記述の応用例として、ftpやfingerにもアクセス制限する設定を行ってみる。
finger stream tcp nowait nobody /usr/libexec/fingerd fingerd -sを
finger stream tcp nowait nobody /usr/local/libexec/tcpd fingerd -sに変更。 続いて
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -lを
ftp stream tcp nowait root /usr/local/libexec/tcpd ftpd -lと変更。
telnetd: LOCAL, 10.0.0.0/255.255.255.0 ftpd: LOCAL, 10.0.0. fingerd: LOCAL, 10.0.0.としてみた。
ALL: LOCAL, 10.0.0.でもオッケーかもしれない。