最新更新日 '99.06.06.


3.2-RELEASE の TCP Wrappers。
 今までは tcp_wrappers を自分でインストールしていたのですが、3.2-RELEASE では OS に組み込まれました。packages で tcp_wrappers をインストールしていた時代は /usr/local/libexec/tcpd がインストールされていたのですが、今回からはそれがなくなりました。sendmail、inetd 等に最初から
----------------
pochi# ldd /usr/sbin/sendmail 
/usr/sbin/sendmail:
        libutil.so.2 => /usr/lib/libutil.so.2 (0x280a6000)
        libwrap.so.2 => /usr/lib/libwrap.so.2 (0x280ae000)
        libc.so.3 => /usr/lib/libc.so.3 (0x280b5000)
----------------
と、言う様な感じで /usr/lib/libwrap.so.2 と言うライブラリが組み込ま れる様になりました。特に inetd に ライブラリが組み込まれる様になった ので inetd.conf で tcpd を指定する必要がなくなりました。

 昔は、ここを参照 してもらえれば解りますが必要なサービスの所に tcpd を指定していました。それが必要なくなり inetd 経由なプログラムは全て最初から tcp_wrappers が有効になりました。

 3.2-RELEASE の変更点に付いては リリースノート和訳 を参考にしてください。今回の tcp_wrappers に付いても載っています。

 さて、それでは設定をして行きましょう。ほとんど全部新たに書き直しですね。ふみふみ。必要なのは、

   /etc/hosts.allow   (デェフォルトが存在する)
   /etc/hosts.equiv   (中身無しのデェフォルトが存在する)
   /etc/hosts.deny    (デェフォルトが存在しない)

 と、言う事で自分の環境に合わせて設定を見直していきましょう。今回は、hosts.allow のみを修正する事にします。他のファイルには手を触れません。

 尚、hosts.allow を修正して inetd をリスタートする時、inetd を一旦完全に終らせないと正しい情報が反映されません。HUP シグナルを送ってから再テスト。なんて事をしても全然ダメです。kill -9 か kill -TERM してから再起動してください。

 では、今回の設定の為のポリシです。

 1. telnet は特定の IP からしか許さない。
 2. ftp はどこからでも許す。
 3. sendmail は自分の使うドメインからしか受け付けない。
 4. portmap は自分の LAN からし受け付けない。

 と、言う事で設定を見てみましょう。  →  こちら。

 まず、最初から存在している hosts.allow の一番最初の設定の

----------------
ALL : ALL : allow
----------------
は、全てのサービスを全てのドメインからアクセスを許す設定ですのでこれをコメントアウトする必要があります。これを残しておいても全然価値は無いです。

 続いて、特定のマシンからのアクセスを全てのサービスにおいて許可する設定をします。

----------------
ALL : localhost : allow
ALL : .running-dog.net : allow
----------------
 localhost と、running-dog.net ドメインの全てのマシンは全てのサービスにアクセスが可能になります。あ、ドメインで書いているので DNS に正しく設定してないとアクセスが許されません。DNS を持っていない人は、
----------------
ALL : 192.168.1.0/255.255.255.0 : allow
----------------
等と指定してください。それと、portmap を利用して NFS とか SAMBA、amd を利用する人は、IP アドレスの設定も書いてください。

1. telnet は特定の IP からしか許さない。
 以下の要領て特定の IP アドレスから telnet を許す設定です。

----------------
telnetd : 100.100.100.1,200.200.200.1 : allow
telnetd : 100.200.1.0/255.255.255.0 : allow
shell :   100.100.100.1,200.200.200.1 : allow
shell :   100.200.1.0/255.255.255.0 : allow
login :   100.100.100.1,200.200.200.1 : allow
login :   100.200.1.0/255.255.255.0 : allow
----------------
 特定の IP アドレスである、100.100.100.1 と 200.200.200.1 から、そして、100.200.1.0/24 の class C からのアクセスを可能とします。当然、localhost と running-dog.net の全てのマシンからはアクセスが可能です。

2. ftp はどこからでも許す。
 ftp は anonymous が動いている為、どこからでも許す様に設定します。

----------------
# Provide a small amount of protection for ftpd
ftpd : ALL : allow
----------------
3. sendmail は自分の使うドメインからしか受け付けない。
 これに付いてはいろいろ試してみたのですが、標準添付の sendmail と sendmail.cf は、どうも localhost からの SMTP 要求しか受け付けないみたいです。他のマシンから SMTP サーバとして利用した場合、利用したマシンに存在するユーザ宛にしかメールが送れません。これは、sendmail を自分で make して、sendmail.cf を書き直す必要が有りそうですね。
----------------
# Sendmail can help protect you against spammers and relay-rapers
sendmail : running-dog.net : allow
----------------
4. portmap は自分の LAN からし受け付けない。
 portmap は NFS とか amd とかに必要なモノですね。 Solaris とか Linux ではバッファオーバフローのターゲットにされたりしていましたが(^^;;。
----------------
# Portmapper is used for all RPC services; protect your NFS!
#portmap : localhost : allow
#portmap : .nice.guy.example.com : allow
#portmap : .evil.cracker.example.com : deny
#portmap : ALL : allow
----------------
 全然書いて無い。と、言う事は上の行の
----------------
ALL : localhost : allow
ALL : .running-dog.net : allow
ALL : 192.168.1.0/255.255.255.0 : allow
----------------
 が有効になっている。と、言う事です。本当はドメイン名が書かれていても価値ないです。IP の方の設定が有効になるみたいです。これは仕様の様です。

 後は、fingerd 、その他で不正なアクセスがあった場合に mail を送信する仕掛けです。userID が載らないので私は消しました;-)。

----------------
fingerd : ALL \
        : spawn (echo Finger. | \
         /usr/bin/mail -s "tcpd\: %h[%a] fingered me!" root) & \
        : deny

# The rest of the daemons are protected. Backfinger and log by email.
ALL : ALL \
        : severity auth.info : spawn (/usr/bin/finger -l @%h | \
         /usr/bin/mail -s "tcpd\: %h[%a] tried to use (denied)" root) & \
        : twist /bin/echo "You are not welcome to use from %h."
----------------
 起動した時、解ると思いますがたぶん一番下の行がエラーになると思います。しかし・・。

 それにしても、こんな感じでしょうか。設定が終ったらテストします。何度も言いますが、inetd は確実に kill -9 なり -TERM して確実に再起動してください。そしてテストの為に怪しい所から アクセスすると見事に root 宛にメールが届くと思います。 OKOK;-)。

 sendmail.cf はどうしようかなぁ・・。困ったなぁ・・。

 と、言う事で 3.2-RELEASE から tcp_wrappers が組み込まれて、サテ、どうしよう・・。と思ったりもしましたが割と簡単に設定できました。ふぅぅ。と、言いつつ本当は日曜日の半日を潰したりしています。いろいろテストしてみると楽しいです;-)。

 皆さんも自分のマシンは自分で守りましょうね。そー言えばモノの本によると、アメリカでのお話しですが、 Linux をインストールしてそのままインターネットに接続したら 5 分と経たずにクラックされた・・(g_g)。なんて事があるみたいです。恐いですねぇぇ。


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