Preface
インターネットに接続すると、Linuxサーバにどのような危険が待っているだろうか?
以下のようなクラッカーの攻撃手順を考えてみたい。
1.調査段階
2.DoS(Denial of Service)
3.リモートからの不正ログイン
4.ローカルにおける不正権限取得
5.ソフトを最新状態に保つ
6.もし被害にあったら
ここでは、それぞれについて代表的な攻撃パターンを解説する。
1.調査段階
夕一ケットに決めたマシンに攻撃を仕掛ける場合には、通常、下調べとなる調査を行なう。その調査で見つかったセキュリティホール(脆弱性が有る部分)を突いて、攻撃が行われる。調査はポートスキャナーによるポートスキャンで行なわれることが多い。
ポート・スキャンとは、ポート番号の範囲を指定して、ターゲットのマシンで開いているポートを探し出すというものである。図1は、VineLinuxにおいて「カスタム」を選択して、PPP無し→LAN接続→インターネット・サーバ→開発ツールを選択して、named、sendmailをデーモンとして追加指定してインストールしたときのTCPポートのスキャン結果の画面である。多くのポートが開いていることが分かるだろう。自分のサーバに対してポートスキャンを行うのは、どれだけ開きポートがあるかを確認する意味も含めて効果的であり実施すべきである。
ここで分かることは、雑誌の付録のCD‐ROMから標準的なオプションでインストールした場合は、期待するサービスが使えるようになっているだけではなく、それ以外にも、初心者が意識していないサービスが有効になっているということである。自宅に専用線を引き込んでサーバーを構成する場合などは、動作させるサービスはDNS、HTTP、SMTP程度でで十分であろう。それ以外の使用しないサービスはすべて無効にする必要がある。いや、しておいた方が絶対によい。用途によってFTP、IMAP、POPなどを有効にさせる場合でも、少なくとも1週間以内にモジュールがアップしていたら最新バージョンにバージョンアップする事が大切である。SMTPでは、メールリレー対策(不正中継対策)だけでなく,EXPN、VRFY等の不要なコマンドも無効にしておいた方が良いだろう。ポートスキャンによって探り出されたポート番号から、サービスによってはそのソフトウエアのバージョン番号まで奪取されることもある。telnetを用いて接続したときに表示される文字列(バナー)の例を図2に示す。また図中でも行なわれているように、SMTP、FTP、HTTP等の多くのサービスがtelnetを通してコマンドを実行できる。バナーを抑止するには、このサイトの ここ を参考にすると良い。ポートスキャンはTCPポートだけがターゲットではない。これを忘れてはいけない。図3にUDPポートのスキャン結果を示す。
[mity@hiro ~]$ telnet 127.0.0.1 22
Trying 127.0.0.1…
Connected to hiro (127.0.0.1).
Escape character is ‘^]’.
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
Connection closed by foreign host.
[mity@hiro ~]$ telnet 127.0.0.1 25
Trying 127.0.0.1…
Connected to hiro (127.0.0.1).
Escape character is ‘^]’.
220 hiro.kozupon.com ESMTP Postfix
quit
221 Bye
Connection closed by foreign host.
図2
sub2:~# nmap -sU -O -p 1-1000 127.0.0.1
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2005-11-23 20:02 JST
Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed
TCP port
Interesting ports on localhost.localdomain (127.0.0.1):
(The 998 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
53/udp open|filtered domain
123/udp open|filtered ntp
Too many fingerprints match this host to give specific OS details
Nmap finished: 1 IP address (1 host up) scanned in 8.649 seconds
図3
2.DoS(Denital of Service)
DoSとはいわゆる使用不能攻撃とかサービス妨害攻撃などと呼ばれているものである。以下のような特徴を持つ。
■ 侵入よりも簡単な場合が多い。
■ 攻撃者のIPアドレスを偽造することが出来る場合がある。
■ スクリプトキディ(幼稚なクラッカー)が面白がって使うことが多い。
■ 攻撃された側のログに痕跡が残らないケースが多い。
■ 侵入が出来なくてもDoSか、有効なサーバーが多い。
使用不能攻撃そのものを発見(セキュリティホールとそれを攻めるツールを開発すること)するには、それなりの技術力が必要であるが、その手法を再現するツールを使うことは容易である。
図4にDoSの例を示す。このターゲットはパッチの適用されていないRedHat6.0であり、このサーバーは10分ほどでフリーズしてしまう!!通常の設定であれば、ログが残ることもない。こんな攻撃を受けていて、初心者が攻撃そのものに気付くことはあるだろうか?「最近調子が悪いなあ~!!」という程度で済ませてしまうかもしれない。攻撃の手法としては、以下のようなものが一般的である。
■ TCPやIPパケットのヘッダの各パラメータを特定の値に設定。
■ アプリケーションへのリクエストに、プログラマが予想しなかった、内容・長さの文字列を送り込む。
■ セキュリティホールのある関数に、特定の引数を与えてコールする。
そして,攻撃を受けた側の動作もおおむね以下のようになる。
■ 攻撃されたサービスが停止。
■ サーバーが停止。
■ 一時的にレスポンスが低下する。
攻撃する側にもいくつかのタイプがある。
■ 四の字固め
攻撃中は自分も痛手有。
■ 一撃必殺
1個のパケットで即死。
一番困るのは「一撃必殺」型であることは言うまでもない。
対策としては、先ほど述べたように設定した「最小限のサービス」に対して、「最新の状態を保つ」ということである(これが今のところ最大の防御である!!)。
3.リモートからの不正ログイン
これは攻撃対象サーバーヘネットワーク越しにログインを行なうことを指す。図5に、少し前のバージョンのwu-ftpdのセキュリティホールを突いて任意のコマンドを実行しているところを示す。図では/etc/shadowファイルをanonymousユーザーを用いて取り出しているが、シェルが起動されているので任意のコマンドが実行可能である。こういうセキュリティホールは、「即刻直ちに!!」対策されなければならないものの一つである。もし、このセキュリティホールが発表されたことを知らずにいれば、いずれだれかがポートスキャンによって、あなたのFTPサーバのバージョンを入手してその情報から対策が施されていないことを知ってしまう。セキュリティホールの情報をいち早く入手し対策を施すことは攻撃者との競争(正に戦い)である。それに負けた場合には、踏み台にされ、ホームページが書き換えられてしまっても、その責任は自分にある。インターネットでは、今は残念ながら「自分の身は自分で守る」のが基本だ。いずれにしても、対策はバージョンアップをすることである。1999年の2月ころにFTPのパッチがリリースされているので、それ以前のFTPサーバは、ディストリビュータのアップデート情報を入手して必要であればバージョンアップしなければならない。
4.ローカルにおける不正権限取得
これは一般ユーザーでログインした後に、さらに違う権限を不正に得る、という場合を指す。一般的には管理者権限(root)が不正に利用されてしまう。Linuxのディストリビューションの中には、デフォルトで/etc/passwdファイルがシャドウ化されていないものがある。例えば、/etc/passwdファイルの中で、
root:u5Fj.x0e3KBg.:0:0:root:/root:/bin/bash
等となっている場合は、容易にパスワードクラックのえじきになってしまう(言ってることはお解りでしょう)。デフォルトでは/etc/passwdファイルはだれでも参照出来るようになっているからである。telnetなどを許可している場合には要注意である。pwconvコマンドでシャドウ化すれば
root:x:0:0:root:/root:/bin/bash
となり、パスワードクラッキングは/etc/shadowも盗まないといけなくなる。/etc/shadowは、
-r———-1 root root 595 Aug 19 20:10 /etc/shadow
となっており、一般ユーザーは読み出すことが出来ない。一般ユーザーとしてログインされている、あるいは許可している場合には、 バッファオーバーフロー(BOF) にも注意しなければならない。この攻撃の特徴としては、ほとんどの場合ログが残らないということがある。すなわち、繰り返しrootが乗っ取られていても気が付かない(特に初心者には、全くといっていいほど気づかない)。管理者権限が不正利用されているということに気付く位の管理者であればBOFされることもないとも言えるだろう(笑)。このBOFは、発見されるセキュリティホールの中でも最も多いものである。なぜなら、発見することが比較的容易で、かつ直接root権限取得につながるからである。図6に典型的なローカルにおけるBOFの例を示す(dipにセキュリティホールが発見された)。これも1998年あたりのネタであるが、今でも有効なサーバーは多いだろう。この例でも、対策はいたって簡単である。バージョン・アップすれば良いのである。あるいは、そのバイナリそのものがいらないのであれば、削除してしまえばいい。図の例も同様である。ダイヤルアップしないユーザはdipは不要なはずである。
また、XFree86にも多くのセキュリティホールが発見されている。図7に例を示す。この場合は、直接rootを取るのではなく、root権限でしか編集できないようなファイルをだれでも読み書きできるように権限を編集してしまうものだ。この場合も、本来インターネットサーバには不要なXFree86を削除してしまえばそれでいい。
5.ソフトを最新状態に保つ
セキュリティホールに関する情報は、インストール本を見ながらインストールしただけでは入手することは出来ない。まず、そのディストリビュータのサイトを確認するべきである。そして、可能である場合にはメールによる情報配信サービスを受けたほうがいい。そして、セキュリティ・ホールに関するパッチが出たら、その内容をよく確認して適切な対策を速やかに行う。さもないと、いずれ「他のだれか」によって試されてしまうことになる。セキュリティホールに関する情報は、サーバーの管理者よりも攻撃者の方が熱心に集めている場合が多い。そして攻撃者は、怠けている,あるいは、無知な管理者によるサーバーが対策される前を狙って新しい攻撃方法を試してくる。そして、成功した場合には、管理者が対策をした場合でも後から訪問できるように、バックドアを設置してしまうのだ。
雑誌の付録などのCD-ROMには大抵の場合、その時点での最新のパッチが含まれている。少なくともそれらは適用するべきである。しかし、それだけでは不十分である。なぜなら、新しいセキュリティホールは次から次へと発見されているからである。図8にLinux関連のセキュリティ・ホールとその解説及び攻撃方法について 掲載されているサイト(SecurityFocus) を紹介する。このサイトではセキュリティホールを発見した人が、そのメカニズムと検証方法について議論するBugtraq MLがあり、その議論をアーカイブとしてまとめて掲載している。もちろん、対策についても説明されている。セキュリティ・ホールに関する正しい理解と迅速な対応を目的として運営されている。このようなセキュリティホールに関する情報は、日本においては語ること自体が暗黙のうちにタブーとされているようだ(少し、おかしい気がするが・・・・)。しかし、攻撃する者たちと同等の情報を得ることは、防御する側にとって当たり前であり、必要なことであると考えられる。少なくとも、パッチに関する情報の迅速な収集と対応は必須である(これは、ディストリビューションの義務ともいえる)。前述の対策の中で述べた「最新の対策を保つ」ということは「言うはやすし」であることは確か。基本的にはベンダーの情報をよく見ておくことである。しかし、Linuxの場合、そのディストリビューションによって、情報提供のレベルに大きく開きがあるのも事実である。 IPA(独立行政法人 情報処理推進機構)ここでは、Windows及びUnix系のアプリやモジュールのバグや脆弱性情報を日本語で情報提供している、さらに、Linux専用の日本語情報による提供サービスは、 Linux協会 等で行っている。こういったセキュリティ情報提供サービスを行う団体の選択は重要な条件にするべきだと思う、まあむしろこのような情報がどうしても我々には必要であるはずだ。 そういうことをユーザーがもっとアピールするべきであると考える。ユーザーが必要としないものは、ディストリビュータも用意しないのは当たり前のことである。セキュリティホール対策は、特殊で高度な技術ではない。もっと多くの管理者が正しい理解とモラルを持って、その対策に取り組んでほしい(高度な対策も必要だが、それはともかく初歩的な対策も行っていないユーザに問題があると考える)。
6.もし被害にあったら
セキュリティ対策の中でも、特に重点を置いて対策を施さなければならないのは、リモートからの侵入である。不幸にして、自分のマシンが踏み台になった場合には、そのサーバーだけでなく、同一セグメント上のすべてのマシンについて、身の潔白を確認しなければサーバーをインターネットに接続してはならない。おそらく、1週間近くは不眠不休の作業が続くだろう。おまけに、踏み台にされたというレッテルと噂はしばらく消えることがない。被害にあった場合には、調査・対策は当然であるが、 JPCERT(コンピュータ緊急対応センター) ヘの届け出も行なうべきでしょう。その際は適切なアドバイスをしてくれるはずです。また、その被害が広範囲に渡っていると判断した場合には、インターネット上の他の組織に対しても勧告が行なわれる。自分以外の組織を救うことにもなるので,届け出は代行してもらうべきだ。
対策は、自分自身で行なうのもよいが、自信がない場合は、専門の技術著を呼んで対策を行なうべきあると考える。もちろん、有料にはなるが自分の技術力に自信がないのに徹夜をしても、効果は期待できない(無駄なあがきである)。残念なことに、現在踏み台にされているサーバーは、直接コンテンツが書き換えられたりしていないので気付かれないことが多い。特に、”昔だれかがインストールして設置したものの、今となっては管理者が変わってしまい、今さら触れない。”といったサーバーが特に危険だ。定期的にログのチェックをしなければならないが、何よりも先に最新のパッチと対策を施していなければ、インターネットには接続してはならない(と言うか、つなげないでほしい)。
以上
コメント