セキュリティの事考えて見よう。
 最近は FreeBSD2.2.5-RELEASE ででも日本語対応が一応完了して、Netscape で Web ちゃっとなんかにアクセスしたりして居ませんか?ほとんどの Web ちゃっとではリモートドメインが表示されます。と、言う事は、そこに表示されたドメインまたは IP アドレスにアクセスすれば、自分の、そして、人のマシンにもアクセス可能となってしまうのです。

 アクセス可能と言う事は、クラッキングの可能性を秘めているのです。事実私自身もたまに 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 ですからね;-)。


Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.