アクセス可能と言う事は、クラッキングの可能性を秘めているのです。事実私自身もたまに telnet コマンドなんか叩いたりして login: プロンプト出したりしています(^^;;。
これではちょっと恐いですよね。たとえダイアルアップ PPP でも自分の FreeBSD がインターネットに接続していると言う事を実感します。にんにん。
と、言う事で自分の PC は自分で守りましょう。今回は tcp_wrappers をインストールしてみましょう。tcp_wrappers の機能は簡単に言うと、ある指定された所以外からの不当なアクセスを排除する事にあります。
インストールと設定は非常に簡単です。りくつも簡単かな・・(^^)。ではインストールです。
FreeBSD の CD-ROM 用意して、パッケージの中に含まれている tcp_wrappers-7.6.tgz を pkg_add するだけです。これで一応インストールは完了。続いて設定ファイルですが、/usr/local/etc の下に以下の二つのファイルを用意します。
・hosts.deny
・hosts.allow
そんでもってこれらのファイルを /etc に symlink してあげます。これで環境は整いました。では次に二つのファイルの中身を見てみのしょう。
・hosts.deny ---------------- ALL: ALL ----------------まぁ、こういうもんだと思ってください(^^;;。
・hosts.allow ---------------- #telnetd: 202.230.133.xxx,202.230.133.yyy # LTD IP ADDR #telnetd: aaa.bbb.ccc.ddd/255.255.255.0 # ISP IP ADDR #telnetd: 192.168.1.0/255.255.255.0 # LOCAL LAN ALL: 202.230.133.xxx,202.230.133.yyy # LTD IP ADDR ALL: aaa.bbb.ccc.ddd/255.255.255.0 # ISP IP ADDR ALL: 192.168.1.0/255.255.255.0 # LOCAL LAN ----------------"#" はコメント行です。まず上の三行ですが、今はコメントになっていますが、それぞれの行を説明すると、
・一行目
telnetd に対して、会社の二つの IP アドレスからのみ telnet login が出来る。
・二行目
telnetd に対して、自分が PPP により接続した(する)IPアドレスのクラス C から telnet login が出来る。
ほとんどの プロバイダは動的にクラス C の IP アドレスのどれかを割り当てるのでこういう設定になります。接続の多いプロバイダではちょっとセキュリティホールになるかも。そーいう時は IIJ-PPP の ppp.conf で固定 IP をつかめる様に設定してあげましょう。
・三行目
ローカル LAN 内のクラス C から telnet login が出来る。
ただ、この設定は telnet によるアクセスのみを制限している事になり、rlogin すればやはり login プロンプトが出ててしまい、なんの問題解決にもなて居なかったりします。それで次の下の三行に書き換えます。 ALL: と言う事で設定しました。全てと言う事ですね。
では、何が全てで、その中には一体どういうサービスがあるのでしょうか。 tcp_wrappers の環境設定は出来ました。続いて設定するのは /etc/inetd.conf になります。ちょっと見て見ると
---------------- telnet stream tcp nowait root /usr/libexec/telnetd telnetd finger stream tcp nowait nobody /usr/libexec/fingerd fingerd -s exec stream tcp nowait root /usr/libexec/rexecd rexecd shell stream tcp nowait root /usr/libexec/rshd rshd login stream tcp nowait root /usr/libexec/rlogind rlogind ----------------等言う様に 個別のデーモンによりそれぞれが動く様になっています。これを tcp_wrappers を使う事によスーパーデーモンである inetd の管理下に置き、それぞれのアクセス制限を行います。
---------------- telnet stream tcp nowait root /usr/local/libexec/tcpd telnetd finger stream tcp nowait nobody /usr/local/libexec/tcpd fingerd -s exec stream tcp nowait root /usr/local/libexec/tcpd rexecd shell stream tcp nowait root /usr/local/libexec/tcpd rshd login stream tcp nowait root /usr/local/libexec/tcpd rlogind ----------------と、言う感じに書き換えます。上記のアクセスは全て一旦、inetd で受けて、/usr/local/libexec/tcpd に食わせます。 tcpd は 先程設定した二つのファイルを見てアクセス制限をかけます。この時、hostsn.allow に telnetd の制限しか買いてない場合は他のサービスに付いては tcp_wrappers の管理下に置かれない事になってしまいます。
では、inetd を kill -HUP してみましょう。これで tcp_wrappers が有効にになります。後は、hosts.allow をいろいろ変更して、本当にアクセス制限が掛かったかどうか確認してみてください。
と、もぁ、こんな感じで PPP 対応のセキュリティをある程度強化していきます。MS/OS と違って PC で動いていても一応は UNIX ですからね;-)。