自宅サーバ死す
朝から気合を入れて、衣替え準備→衣替え→洗車とこなして、一日も終わろうとした23:50、自宅サーバの異常に気が付きました。とんでもなくサーバが重いです。
管理用アカウントでloginして、rootへsu…。できません。おかしい。rootのpasswordなんぞ変えとらんぞ?
/etc/shadowのtimestampを見ると11:47、外出していた時間に変更されています。くうぅ、誰か他人にroot権限を奪われたようです。どうしてかはさておき。LANケーブルを引っこ抜きます。
psで見ても怪しいprocessは一目ではわかりません。どうやらKernel moduleを使った偽装が仕込まれているようです。
netstat -anでみると、undernetのIRC serverに10本ほどconnectionが張られています。おそらく、IRCの踏み台サーバになっている模様。
/var/log/secureによると、外部からsshでrootに対してbrute force attackが行われていました。fedoraのsshd_configではdefaultでPermitRootLogin=yesとなっています。これが狙われたようです。
findで最近変更されたtimestampを持つfileを検索し、個人データの領域が変更されていない事を確認した後、これらのbackupをあるpartitionにまとめておきました。
rebootしたら、起動すらできなくなりました。kernel imageにも細工をされてしまったようです。
さて、腹を決めてOSをすべて廃棄し、入れ替える事とします。
が、しかし、うちの自宅サーバにはCD-ROMは付いていないのです。FDDで起動するしかありません。ここにFedora Core 3を復活させるのはかなり大変です。
まず、Fedora Coreは、CD-ROM起動が原則です。FDD起動はできません。そこで、別のDistributionを入れることからはじめます。
Vine Linux 2.6r4のinstall
手元にVine Linux 2.6r4のNetwork(PCMCIA) boot image disk*1を用意していたので、これを使うことにします。
- FDDからNetwork bootで起動
- HTTP installを選択
- Serverは、www.ring.gr.jp
- Directoryは、pub/linux/Vine/Vine-2.6/i386
- Xや不要なserverは省いて、とにかく小さめにpackageを選択
- install開始
HTTPでdownloadしつつ、installを開始したのですが、途中でstallしてしまいます。
Alt+F4でlogを見てみたところ、どうやらPCMCIAのNIC driverがpanicってます。
どうも粗悪品の古いNIC*2のため、あまり早い回線だと処理が追いつかないようです。
回線速度を下げる手段も無いので、warningがconsoleに出た時点で、LANケーブルを抜き差しして、driverを初期化することで回避しました。TCP retransmit timerが何度か動いてしまうと、server側がconnectionを切断してしまうようで、warningが出てから数秒以内に抜き差ししなければ、installを最初からやり直すハメに…。寝ずの番をする事になりました。
その後、どうにかinstallが終了し、Vine LinuxでHDD起動することができました。
以前は、Vineで運用していたのですが、Cyrus IMAPやPHPのpackage管理が大変なので、Fedoraに切り替えていました。ということで続けて、
Fedora Core 3のinstall
- pxeboot imageの取得
http://www.ring.gr.jp/pub/linux/fedora/linux/core/3/i386/os/images/pxeboot/ で配布されているpxeboot用のvmlinuzとinitrd.imgをdownloadします。
- pxeboot imageでのboot準備
pxeboot imageでbootできるように/etc/lilo.confにentryを追加しておきます。
- DVD imageの取得
http://www.ring.gr.jp/pub/linux/fedora/linux/core/3/i386/iso/ で配布されているDVD imageをinstall先ではないpartitionにdownloadします。
例えば、うちの場合は以下のpartition構成でした。
| Partition | Size |
| /boot | 100MB |
| / | 2GB |
| /work | 5.9GB |
なので、/workにDVD imageをdownloadしました。install先にDVD imageがあるpartitionは含められないので、backupなんかもここにおいておきます。
- boot
pxeboot imageで起動すると、Fedoraのinstall画面になります。
- install
後は、いつもどおりのinstall作業です。
installが終わったら、backupを復活させて、partition構成を以下の状態に戻しておきました。
| Partition | Size |
| /boot | 100MB |
| / | 2GB |
| /var | 5.9GB |
その後は、気を抜かずにyum updateです。
が、しかし、RAMが少ないためTransaction TestがOom Killが多発し異常終了してしまいます。仕方が無いのでyumで取得したrpmを手動で入れていきました。
Cyrus IMAP、postfix、dhcp daemon、ddclient、php-mbstringのpackageを追加して、設定が復活した頃には夜が明けてしまいました。
もちろんsshd_configでは、PermitRootLogin=noで、AllowedUser=管理アカウントのみとしておきました。
教訓
- rootでremoteから直接loginは、ありえない設定
- OS領域とData領域は分けといて正解
- もう少し早いPCだと、寝れたかも