Last update: Oct 12, 2002
Copyright (C) 2000-2002 Hideaki Goto
チェックリスト (Level 3)
ここでは、セキュリティを向上させるために検討した方がよいことや、
導入した方がよいソフトウェアを紹介します。 ソフトウェアの
導入方法や具体的な設定については、ソフトウェアに付属の
ドキュメントを読んでください。
- 1. プライベートアドレスの勧め (グローバルアドレスは必要か?)
- Level 1,2 の後に書くのもなんですが、そもそも
そのWSで次の事をする予定がありますか?
- サイト外(研究室外や学外)の計算機にリモートログインするか、
反対にサイト外からリモートログインを受け付ける。例えば
プロバイダ経由でWSにログインするなど。
- サイト外のWSから X Window System 用のアプリケーションの
画面を表示させる。
- Webサーバなどのネットワークサービスを立ち上げる。
もし上記のいずれも行う予定がなくて、メールの送受信と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から切り離しておくことを強く勧めます。
例えば次のような対策があります。
- NISは使わない。Webサーバには root のパスワードだけを
設定し、一般ユーザのパスワードは置かない。 root の
パスワードは他のWSと同じにしない。
- 周囲のWSでは Webサーバから認証なしに rlogin, rsh など
がかからないようにしておく。
- Webサーバはできれば研究室のサブネットの外に追い出す。
乗っ取られた時にサブネット内のネットワークが盗聴されにくくなる。
(サブネット内に置く場合は Dumb HUB ではなく Switching HUB を使う。)
- 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も残しておきたいのであれば、
プライベートアドレスを割り当てて、サブネット内だけ
で使えるようにしましょう。
← 戻る