この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
以前、誰かが「Linux2.6系の脆弱性でroot権限奪ってみた」
という記事を書いていましたが、最近CentOSをインストール
したところ、見事にこの脆弱性に引っかかったので、カーネル
を再構築するハメになりました。
というわけで、以下、カーネルの再構築について簡単に
手順を記したいと思います。
作業環境
OS:CentOS5
現行カーネルバージョン:2.6.18-8.el5
カーネルの再構築
1.以下のサイトからカーネルの最新ソースファイルを取得# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2
2.root権限で/usr/srcへ移動。# su –
# cd /usr/src
3.1のファイルを展開し、シンボリックリンクを作成# tar jxvf linux-2.6.26.tar.bz2
# ln -s linux-2.6.26 linux
# ln -s linux-2.6.26 linux-2.6
4.configファイルをコピー# cp /usr/src/kernels/2.6.18-8.e15-x86_64/.config /usr/src/linux/.config
5.configファイルを更新する# cd linux
# make oldconfig
※ ここから先は対話形式で進む。デフォルト設定でよければ[Enter]で先へ進もう。
y = カーネルに静的に組み込まれる。
m = カーネルモジュールとして組み込まれる。(使用時のみ動作する)
n = 設定を無効化。
? = ヘルプを参照。
6.余計なファイルの削除# make clean
7.Kernel を構築します# make bzImage
8.モジュールのコンパイル# make modules
9.モジュールのインストール# make modules_install
10.全体のインストール# make install
11.動作確認
サーバ起動時に、方向キー上下でKernelを選択することが出来るので、
最新カーネルを選択し、問題がないかを確認する。
(失敗の場合は各種デバイスが認識されなかったりする)
ブートローダの設定
デフォルトで最新カーネルで起動するように設定。# vi /etc/grub.conf
「title CentOS (******)」がカーネルの情報で、
上から順に0,1…となる。
最新のカーネルは0(一番上)になっているので、
defaultの設定を0に変更すれば、最新バージョンで
起動する。default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.26)
root (hd0,0)
kernel /vmlinuz-2.6.26 ro root=LABEL=/
initrd /initrd-2.6.26.img
title CentOS (2.6.18-8.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/
initrd /initrd-2.6.18-8.el5.img