Last update: Oct 12, 2002
Copyright (C) 2000-2002 Hideaki Goto


チェックリスト (Level 3)

ここでは、セキュリティを向上させるために検討した方がよいことや、 導入した方がよいソフトウェアを紹介します。 ソフトウェアの 導入方法や具体的な設定については、ソフトウェアに付属の ドキュメントを読んでください。


1. プライベートアドレスの勧め (グローバルアドレスは必要か?)
Level 1,2 の後に書くのもなんですが、そもそも そのWSで次の事をする予定がありますか?


もし上記のいずれも行う予定がなくて、メールの送受信とWWWの 閲覧(HTTPによる通信)ができれば十分というのであれば、そのWSは グローバルアドレスを持ってインターネットに接続する 必要はありません。 メールは最寄りのメールサーバを経由すれば よく、WWW は最寄りのプロキシサーバを使えばよいです。 (例えば RealPlayer による音声・動画データの再生など、 HTTP以外の通信を使うような場合は少し困るかもしれません。)

グローバルアドレスを使うと、特にネットワークに制限をかけない 限り世界中の計算機と通信できてしまいます。 プライベート アドレスを使うと、サイト内でしか通信ができなくなるので、 サイト外からの直接攻撃が不可能になります。 また、そのWSの正規の 利用者がサイト外にいたずらするのを防ぐこともできます。 ネットワークのセキュリティを向上させるために、 インターネットに常時、直接に接続する必要がないWSは、 プライベートアドレスで使うことを勧めます。 WSの管理に不安がある場合は、プライベートアドレスを使えないか どうか、ネットワークの管理者と相談してみるとよいでしょう。

学校でも、本当に学外の計算機と直接通信を行う必要があるWSは それほど多くないはずです。 ただし、学内では各所から 相互にリモートログインができた方が便利です。このような 構成にするために、例えば東北大学では「学内用プライベートアドレス」 を割り当てて使用しています。

2. telnet, ftp, rlogin は必要か?
もしそのWSをコンソールからだけ利用し、他からリモートログインを する必要がないのであれば、telnet や ftp, rlogin の機能を止めることを強くお勧めします。

これらの機能ではログインの際にパスワードが暗号化されない データ(平文; ひらぶん)としてネットワークを流れる*ので、 盗聴により パスワードが盗まれる危険性があります。 また、ユーザID.とパスワードが 流出すれば、どこの計算機からでもリモートログインができることになります。 パスワードの流出を防ぐことも重要ですが、いざという時のための 対策も行っておくのが安全です。

* ネットワークに暗号化用のハードウェアを使っていない場合です。

telnet, ftp, rlogin の機能を止めるには、Level 2 で幾つかの サービスを止めたのと同様に、/etc/inet/inetd.conf を書き換えます。 行頭の telnet や ftp, login の前に # を挿入してから、 inetd に HUP シグナルを送ります。

3. tcp_wrappers などを導入
リモートログインがどうしても必要で、telnet や ftp, rlogin が 止められない場合は、ぜひ tcp_wrappers などのセキュリティツールを 導入しましょう。

telnet などでは、ユーザID.とパスワードさえ知っていれば、 インターネット上のどの計算機からでもリモートログインができます。 もしリモートログインに使われる計算機が限られているのであれば、 それらの計算機に対してのみリモートログインの機能を提供して、 他の計算機からはログインさせないようにすれば、大幅な セキュリティ向上が望めます。 tcp_wrappers を使うとこのようなアクセス制限ができます。

tcp_wrappers は、インストールもそれほど難しくなく、Web上に 幾つもの紹介例があります。 Webの検索エンジンで ``tcp_wrappers'' と ``Solaris'' をキーワードにして探すと、すぐに有用な 説明が得られるでしょう。

Solaris8の場合は注意が必要です。 tcp_wrappers_7.6(2000年4月現在)ではIPv6が使えないので、 IPv6に対応させたものを入手して使う必要があります。

もしIPv6に対応していないtcp_wrappers_7.6を使う場合、 /etc/inet/inetd.conf の中で
    #
    # Ftp and telnet are standard Internet services.
    #
    ftp    stream  tcp6    nowait  root    /usr/sbin/in.ftpd       in.ftpd
    telnet stream  tcp6    nowait  root    /usr/sbin/in.telnetd    in.telnetd
となっている所に tcpd を仕掛ける場合は、
    #
    # Ftp and telnet are standard Internet services.
    #
    #ftp    stream  tcp6    nowait  root    /usr/sbin/in.ftpd       in.ftpd
    #telnet stream  tcp6    nowait  root    /usr/sbin/in.telnetd    in.telnetd
    ftp    stream  tcp    nowait  root    /usr/sbin/tcpd     in.ftpd
    telnet stream  tcp    nowait  root    /usr/sbin/tcpd     in.telnetd
のようにします。 さもないと、どこからもログインできなくなります!!

login や shell などは IPv4用と IPv6用の行が存在します。 tcp6 と udp6 が 指定されている行は頭に # を付けて無効にしておくと良いでしょう。

# tcp_wrappers のログを監視していると、結構不正アクセス
# らしきものが多いのに驚きます。

4. Secure Shell (SSH) を導入
先にも書いたように、telnet や ftp, rlogin などでは ログインの際にパスワードが平文(ひらぶん)としてネットワークを 流れるので、パスワードが盗まれる危険性があります。 通信中に流れるデータも盗聴される危険性があります。 rsh や X Window System のアプリケーションなど、 パスワードによる認証を行わない場合でも、流れるデータ は保護できません。

Secure Shell (SSH) を使うと、データを暗号化してネットワークに 流すことができるので、盗聴されても元のデータを取り出すこと が困難になります。 インストールもそれほど難しくなく、Web上 にもインストール手順を詳細に記したサイトがあるので、ぜひ SSHを導入しましょう。 SSHを導入したら、/etc/inet/inetd.conf の中で telnet, ftp, login, shell といったサービスを止めてしまうのが効果的です。 うっかり telnet で接続中に su root などを実行して平文の パスワードを流してしまう危険性が無くなります。

プロバイダなどからインターネットを経由してWSにリモートログイン をする時は、必ず暗号による通信を使うように心がけましょう。

5. Webサーバは安易に立ち上げない
Webサーバのソフトウェアは一般ユーザでも簡単に導入でき、 簡単にWebサーバを立ち上げることができます。 一般ユーザが おもしろがって自前でWebサーバを勝手に立ち上げて しまうことがよくありますが、これには十分に注意する 必要があります。

特にCGIが有効になっているWebサーバは、せっかくセキュリティ 対策でぶ厚い壁を構築したのに、それを障子に置き換えるほどに セキュリティレベルを下げる危険性があります。 セキュリティに詳しくない人や、関心がない人が、セキュリティ ホールになるようなCGIを作ってしまうことがしばしばあります。 ろくな認証機能も付けないで WS のshellを使うようなCGI を作るかもしれません。 ディスク上で一般ユーザがアクセスできる 全てのファイルを、誰でも持ち出せるようなCGIを作るかもしれません。 このようなセキュリティホールを、全てのWSについていちいち調べて 廻る気がありますか?

また、WebサーバになっているWSはインターネット上で有名になる ので、攻撃の対象になりやすいことも注意すべきです。 ごく小数の限られたWSだけでWebサーバを運用し、Webサーバの ソフトウェアは安易に立ち上げないようにしましょう。 これは、一般ユーザにも厳しく守らせるべきです。

さらに、WebサーバになるWSはセキュリティに十分に配慮して設定 することはもちろんですが、万一不正に侵入された場合も想定して、 できるだけ他のWSから切り離しておくことを強く勧めます。 例えば次のような対策があります。

  1. NISは使わない。Webサーバには root のパスワードだけを 設定し、一般ユーザのパスワードは置かない。 root の パスワードは他のWSと同じにしない。
  2. 周囲のWSでは Webサーバから認証なしに rlogin, rsh など がかからないようにしておく。
  3. Webサーバはできれば研究室のサブネットの外に追い出す。 乗っ取られた時にサブネット内のネットワークが盗聴されにくくなる。 (サブネット内に置く場合は Dumb HUB ではなく Switching HUB を使う。)
  4. Webサーバに対してディスクをexport(share)しない。 WebサーバのディスクをNFSマウントしている場合は、 そこからプログラムを実行しない。 できればNFSは使わない。


6. 使わない時間帯は電源OFF!!
攻撃者は、不正アクセスに気付かれにくいように、 WSの利用者がいないか、あるいはログインしていても長時間 アイドルになっている時間を好んで、攻撃を仕掛けてくるでしょう。 あるWSに不正にアクセスしようと思っても、電源が切れていれば 何もできません。また、システムが停止している時間が長ければ、 セキュリティホールを自動的に探し回る「スキャン」からも 逃れられる確率が高くなります。

長時間使わないことが分かっているWSは、 電源をOFFにしておきましょう。 電気代も節約できるし、地球環境への負担も小さくなります :)

最近のSunのWSには、毎日の決められた時間に自動的に電源をOFF(サスペンド)に して、決められた時間に再起動(レジューム)できるものがあります。 OSと一緒に電源管理ソフトウェアが導入されていれば、この機能が 利用できます。 root でログインしてCDEの画面で以下のコマンドを 実行すれば、設定画面が現れます。
    # dtpower
自動立ち上がりを無効にしていても、WSを使いたい時に電源ボタン (キーボードの右上)を押せば、それほど待たなくても使い始められる ようになります。

7. あまり使わないWSは思い切って停止する
新しいマシンを買って、ほとんど使われなくなった古いWSを、 もったいないなどと言っていつまでも立ち上げておくことは やめましょう。 日常的に使わないということは、そのWSに 不正アクセスがあっても気付きにくく、次の攻撃のための 足場を築かれる危険があります。

もしどうしても古いWSも残しておきたいのであれば、 プライベートアドレスを割り当てて、サブネット内だけ で使えるようにしましょう。


← 戻る