rootのパスワードが盗まれた時やパスワード忘れた時などの対処方法

rootでパスワード入れてもログインできない!
急にrootのパスワード入れてもログインできないなんて、おかしいぞ!そんなことがあるわけないぞなんて思うなのだが、でも誰かがrootのパスワードを変更したということで、rootのパスワードを盗聴されて解読されてからパスワードを変更されたことになります。あとあまり複雑なパスワードにしすぎてあれ何だっけなんてことありませんでしたか?でも、実は私も複雑にしてそんな経験がありました。(お恥ずかしいね。)

そこでrootのパスワードを変更する作業をします。rootでログインができないと、一からLinuxをインストールして設定するのも大変ですから。 ランレベルの1(シングルモード)で起動し、メンテナンスモードに入ります。ランレベルの1は、rootのパスワードを忘れてしまった時などにも利用できるのです。(rootのパスワードがなくてもrootの権限があります) 本来、起動するランレベルを変更するには /etc/inittab を編集しますが、このファイルの編集はrootしか行なえません。そこで、PCが起動する時に利用しているブートローダのGRUBで作業をすることができます。

ここでRedHatLinux9.0で起動するとGRUBの画面が表示されます。どのOSを起動するかリストが表示されていると思いますので、起動するOSを選択して、「e」を押します。

* Red Hat Linux (2.4.20-6)
すると、以下のような引数が表示されます。

root (hd0,1)
* kernel /vmlinuz-2.4.20-6 ro root=LABEL=/ ←ここにカーソルを持ってくる。
initrd /initrd-2.4.20-6.img

バーをkernelではじまる行へ移動し、「e」を押します。
grub edit > kernel /vmlinuz-2.4.20-6 ro root=LABEL=/
選択した行の最後にカーソルがありますので、「single」または1を追加し、enterを押します。
grub edit> kernel /vmlinuz-2.4.20-6 ro root=LABEL=/ singleまたは ←追加

前の画面に戻ったら、「b」を押します。
これで、RedHatLinux9.0はランレベルの1で起動し以下のようなプロンプトが表示されます。
sh-2.05b#

これでroot権限でパスワードの変更ができるようになります。passwdコマンドで変更してあげましょう。
sh-2.05b# passwd ←入力してEnter

2回パスワードを入力します。

パスワードの変更ができたら、Linuxマシンを再起動します。
sh-2.05a# exit ←入力してEnter

シングルモードにパスワードを設定する方法
やはりシングルモードでログインする場合パスワードなしでroot権限を手に入れることができますのでセキュリティ上危険をはらみますのであらかじめパスワードを設定する必要があると思います。GRUBに設定する方法は2つあります。インストール時に設定する方法ですがここでは割愛します。もう一つは、/boot/grub/grub.confファイルにパスワードのための記述を追加します。
例、ここではパスワードを「xsysmngboost」とします。」 とします。
# vi /boot/grub/grub.conf

default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
password xsysmngboost ←ここに追加します。

次回からGRUB画面にパスワード入力する必要がありますので、システム起動してGRUB画面が表示したら、p を押します。すると画面下にパスワードプロンプトが表示されますのでパスワードを入力してEnterを押します。
後は、通常と同じ方法でシングルモードで入ることができます。


chkrootkit
chkrootkitというツールを利用して、Linuxマシンに、入り込めるソフトが仕込まれているのかを調査します。
ツールの入手はこちら
http://www.chkrootkit.org/
# tar -xzvf /usr/local/chkrootkit.tar.gz ←解凍します
# cd /usr/local/chkrootkit-0.35/ ←ディレクトリの移動
ファイルの確認
# ls
COPYRIGHT README.chklastlog chklastlog.c chkrootkit.lsm strings.c
Makefile README.chkwtmp chkproc.c chkwtmp.c
README check_wtmpx.c chkrootkit ifpromisc.c
コンパイルします。
# make sense
gcc -DHAVE_LASTLOG_H -o chklastlog chklastlog.c
gcc -DHAVE_LASTLOG_H -o chkwtmp chkwtmp.c
gcc -DHAVE_LASTLOG_H -o ifpromisc ifpromisc.c
gcc -o chkproc chkproc.c
gcc -o check_wtmpx check_wtmpx.c
gcc -static -o strings strings.c
これでインストールはこれで完了です
チェックします。
# ./chkrootkit
ROOTDIR is `/'
Checking `amd'... not infected
Checking `basename'... not infected
Checking `biff'... not infected
さらに続く…
Searching for sniffer's logs, it may take a while... nothing found
Searching for HiDrootkit's default dir... nothing found
Searching for t0rn's default files and dirs... nothing found
さらに続く…
Checking `asp'... not infected
Checking `bindshell'... not infected
Checking `lkm'... nothing detected
eth0 is not promisc
Checking `wted'... nothing deleted
Checking `z2'...
nothing deleted
「not infected」の場合は問題ないです。しかし、「INFECTED」という表示が1つでも存在する場合は、処置が必要です。

chkrootkitを毎日実行し、その結果をroot宛てにメールを送信するには、
# cat /etc/cron.daily/chkrootkit
#!/bin/sh
cd /usr/local/chkrootkit-0.35/;
./chkrootkit 2>&1 | mail -s "chkrootkit output" root;


ログからハッカーを探します。
パスワードの変更を済ませ、chkrootkitを利用しハッキングソフトが存在していないことが確認できたならば、ハッキング情報をできる限り収集します。例えば、AperutoWebの「Machin」というホストにハッカーさんが、「telnet」でアクセスして来た時は、以下のようなログが残ります。

---- /var/log/secure ----
Jun 12 10:23:53 Machin xinetd[689]: START: telnet pid=6756 from=[ハッキング情報]

webmasterユーザでログインに成功すると以下のようなログが残ります。

---- /var/log/messages ----
Jun 12 10:31:46 Machin login(pam_unix)[6884]: session opened for user webmaster by (uid=0) Jun 12 10:31:46 Machin -- webmaster[6884]: LOGIN ON pts/2 BY webmaster FROM ハッキング情報

webmasterユーザでパスワードを間違えると以下のようなログが残ります。
---- /var/log/messages ----

Jun 12 11:10:51 Machin login(pam_unix)[2879]: authentication failure;logname=uid=0 euid=0 tty=pts/4 ruser= rhost=(ハッキング情報) user=webmaster

Jun 12 11:10:54 Machin login[2879]: FAILED LOGIN 1 FROM (ハッキング情報) FOR webmaster, Authentication failure

このようにログを見ると大抵のことはわかりますが、RedHatLinux9.0の場合、ログは/var/log/ディレクトリの中に保存されています。最初に/var/log/messagesと、/var/log/secureに目を通して痕跡があるかどうか探してみましょう。

それらしいものが見つかったら、そのIPアドレスを元にハッカーの特定を行ないます。ところが、スキルが高いハッカーなどは、ログをどこにも残しませんし、rootのパスワードをクラックしても何も危害を加えずに立ち去っていたなんて事もありますが、でも、ハッキングされるということは、特に踏み台にされて他人のサーバーにも迷惑をかけることになりますのでくれぐれもログを見ることは大切な事だと思います。


戻る