ネットワークセキュリティ入門

攻撃方法から学ぶ、自己防衛の方針

last update 2000/9/3

簡易的な攻撃方法の分類

設定ミス

 さて、ここではコンピュータ(ネットワーク)の設定ミスについて説明したい。(これは私の想像だが)実際問題として、この攻撃方法が最もよく使われているのではないだろうか。

 巷で良く聞く、「攻撃された」「改竄された」というニュースでは、具体的な攻撃手法について書かれたものは少ないが、報道内容を良く調べていると、セキュリティに甘いなぁ、という印象を持つ。甘いということはつまり、まともに設定できていない(=たまたまきちんと動いているからいいや)という状態になっているのではないだろうか。

 余談だが、その様なユーザがいくらファイアウォールを設置したとしても、問題は解決できない。ファイアウォールはセキュリティ確保の最終手段にはなり得ない。あくまでセキュリティ確保の1手段でしかない、と言うことをここで断言しておきたい。

 この設定ミスであるが、先に示したmountd攻撃デフォルトパスワード攻撃、これらも設定ミスを突いた攻撃であるが、ここでは他の攻撃について見てみたい。

 取り上げるものとして、tftpを標的にした攻撃と、X-windowを標的とした攻撃、r系コマンドを利用した攻撃を考えてみたい。

 まず、tftpについて。まず、世の中にはX端末と呼ばれる、ハードディスクを持たないコンピュータ(実際にはCPUもないのでコンピュータ以下)というものがある。ハードディスクを持たないため、電源を入れてもきちんと起動しない。そのため、他のコンピュータから起動時に必要なファイルを(ネットワーク経由で)入手する。この時使われるのがtftpである。

 さて、このtftp、実はユーザ認証をしない。(動いており、ネットワークが繋がっていれば)誰でも使用可能である。と言うことは、ファイルを取り放題となってしまう。また、公開するディレクトリをきちんと設定せず、”/”を公開してしまったら、どうだろうか。もう、何でもありである。設定がいい加減な場合、非常に簡単な攻撃である。

 そもそも、ネットワーク内にtftpを使う機器がないのなら、必要性の全くない機能である。つまり、このサービスを止めてしまうのが一番である。また、百歩譲ってこのサービスが必要な場合、公開するディレクトリを制限し、その中に公開したくない情報はおかない、と言う事を徹底せねばならない。さらにファイアウォールでUDP69番の通信をできないようにすべきだろう。そう、tftpはUDPを使うのである。3way-handshakeを使用するTCPではないのだ。

 次に示すのはX-windowである。UNIXのGUIであるX-windowは、クライアントサーバ方式を取っている。つまり、あるコンピュータに別のコンピュータの画面を出力することなどが可能となっている。

 ただ、問題がある。このシステムは、セキュリティが1か0、つまりセキュリティがあるかないかの二通りしかなく、ない場合、事実上なんでもあり、の状態になってしまうのだ。

 xscanというコマンドがある。これはX-windowのセキュリティがなしの状態になっているマシンに接続し、キー入力をすべてファイルに落とすことができるものだ。そのコンピュータはrootになれるユーザが使用していて、急にrootでないとできない作業をしなくてはならない、とする。そうすると彼はsuと言うコマンドを使い、rootになるのだが、ここで必ずパスワードを入力しなければならない。キー入力がすべて盗聴されているのも知らずに・・・・。

 また、画面のキャプチャ(画面を画像ファイルに変換する)が簡単に行え、攻撃者が攻撃対象のX-windowにあたかも自分が使っているかのようにキー入力が可能である、という非常に怖い側面をX-windowは持っているのだ。

 さて、防御をしなければならない。しかし、この防御はユーザ一人一人が実行する必要があるだろう。まずはこんなコマンドを入力して欲しい。”xhost”と。

 ”access control enabled, only authorized clients can connect”と一行出力されたら安心できる。どのコンピュータも接続できない。

 ”access control enabled, only authorized clients can connect”に続けて、例えば”INET:ponta”と出力されたら、pontaというコンピュータは信頼して接続してよいが、他はだめ、と言う設定になっている。

 問題は、”access control disabled, clients can connect from any host”となっていた場合だ。どんなコンピュータも自由に接続してください、と言う設定になっている。

 こんなときは”xhost -”と入力すれば、最初に示した設定結果となる。そして、その後で”xhost + hoge”と入力するとコンピュータhogeだけ接続できるようになる。

 管理者は、そもそも外部からの接続ができないように設定すべきだろう。そのためにはファイアウォールでTCP6000〜6003を通信不可とするとよい。

 では、最後に、r系コマンドを利用した攻撃を示そう。

 r系コマンドとは、rlogin、rcp、rsh等を言い、リモートで「認証なしに」ログインやコマンド実行できるようにする機能である。ただし、認証なしと言っても制限がある。まず、こちらのコンピュータ(コマンドを入力するコンピュータ)を相手のコンピュータ(実際にコマンドを受けるコンピュータ)が信頼しており、なおかつこちらのコンピュータのユーザと同じユーザが相手のコンピュータに存在し、さらにそのユーザが信頼できるユーザとして登録されている、と言う、それなりに厳しい条件が課されているのだ。

 このため、きちんと設定してあれば、工夫を凝らさない限り、そうそう悪用できるものではない。

 ところが、r系コマンドは非常に便利であるため(いちいちパスワードを入力しなくてよいのだ!),きちんとしたアクセスコントロールがおざなりになってしまう。この設定ファイルは/etc/hosts.equivなどやユーザホームディレクトリの.rhostsであるが、このファイルを適切に書かない場合もある。極端なものは+ +とかかれている場合である。これは、どんなコンピュータのどんなユーザでも信頼する、という設定である。いくらでも(認証なしで)ログインしたり、コマンドを実行したりできる。これは明らかに設定ミスである。

 では、設定がしっかりしていればいいか、と言うとそうでもない。先にも触れたとおり、工夫を凝らすことで可能である。

 工夫を凝らす、と言ったが、これは次のような方法である。具体例で示そう。コンピュータmonk(192.168.0.10とする)は、コンピュータdavis(192.168.0.11とする)だけを信頼し、他のコンピュータを信頼していないとする。この時、攻撃者のコンピュータであるevans(192.168.0.100とする)がコンピュータmonkに対し、r系コマンドを実行してもうまくいかない。

 なんとかできないだろうか。まず、davisのユーザと同じ名前(=monkにもその名前のユーザはいるだろう)のユーザをevansに作成し、そのユーザ名でログインしておく。次に、evansのIPアドレスを192.168.0.100から192.168.0.11に変更する。それとともに、後述するDoS攻撃を使って、コンピュータdavisを使用不能にしてしまう。davisが使用不能の内に、evansはdavisに「なりすまして」、monkにr系コマンドを送ればよい。monkはdavisだと「信じて」受け入れてくれる。

 また、後述するバッファオーバーフローなどを利用して、信頼するリストに自分のマシン(+ユーザ)を登録してもよい。どちらにせよ、r系コマンドを悪用した攻略は簡単な部類に入る。

 防御対策であるが、まずベストな方法は、r系コマンドをいっさい使わないようにシステムを設定し、ファイアウォールで512〜514番ポートを使用した通信を禁止するなどの処置を講じる必要があるだろう。

 もし、r系コマンドを使うとしても(ほめた設定とは言えないが)最低限ファイアウォールは設置し、アクセスコントロールをできるだけ厳密にすること。さらに、上記のとおり、ユーザ名がばれると危険性が高まるので、ユーザ名を攻撃者に知られないよう、努力が必要となるだろう。

 ここでは、UNIXの設定ミスを突いた攻撃についてメインに説明した。もちろんWindowsの設定ミス、MacOSの設定ミス、ルータやファイアウォールなどの設定ミスを突かれる可能性だってある。クライアントPC(Windows9*やMacOSなど)やr系コマンドは管理者は元よりユーザ一人一人が気をつけなければならないのは言うまでもないが、UNIXなどのサーバ系コンピュータやネットワーク機器の設定は管理者の肩にかかっているわけだから、その責任を全うすることが必要である。

 
前に戻る目次に戻る次に進む