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または1 ←追加 前の画面に戻ったら、「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ユーザでパスワードを間違えると以下のようなログが残ります。 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 |