Ubuntu 9.04、Jauntyを実行するリモートで管理するシステム(2つのタイムゾーン)があります。さまざまな理由で、主に私はこれまでのところディストリビューションをアップグレードしようとするのが本当に嫌なので、より新しいバージョンにアップグレードすることはできません。明らかに、もはやサポートされておらず、公式パッチもありません。コードにパッチを適用し、bashを自分で再コンパイルしてshellshockの脆弱性を削除する方法に関する指示はありますか?
Ubuntu 9.04、Jauntyを実行するリモートで管理するシステム(2つのタイムゾーン)があります。さまざまな理由で、主に私はこれまでのところディストリビューションをアップグレードしようとするのが本当に嫌なので、より新しいバージョンにアップグレードすることはできません。明らかに、もはやサポートされておらず、公式パッチもありません。コードにパッチを適用し、bashを自分で再コンパイルしてshellshockの脆弱性を削除する方法に関する指示はありますか?
回答:
これをHacker Newsから盗んだ誰かからAskUbuntuから盗みました。私のために2つの古いサーバーで働いた
mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 1 28); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 1 28);do patch -p0 < ../bash43-$i; done
#build and install
./configure --prefix=/ && make && make install
cd ..
cd ..
rm -r src
更新:--prefix=/
configureコマンドに追加しないと、/usr/local/bin/bash
最新のものになり、/bin/bash
脆弱性が残ることに気付きました。
./configure --prefix=/ && make
順調に走行している間、make install
必要なようですsudo
sources.listを最新のものに更新し、apt-getを使用してbashのみをアップグレードするソリューションもあります。それは本当に迅速であり、私はそれについての記事を書きました。基本的な操作は次のとおりです。
最新のUbuntu 'trusty' apt-getリポジトリーにアップグレードします(使用する場合はold-repositories.ubuntu.comのURLも変更する必要があります。リンクされた記事を確認してください)。
sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list
bashのアップグレード/修正の適用:
sudo apt-get update
sudo apt-get install --only-upgrade bash
そして、おそらくapt-getリポジトリを元に戻します。
コマンドは
sudo apt-get update && sudo apt-get install --only-upgrade bash
1つの簡単なオプションは、bashを使用しないことです。確認してくださいdash
インストールされており、それは/bin/sh
へのシンボリックリンクであるdash
、ではありませんbash
。(これはDebianの一部のバージョンではデフォルトですが、Ubuntuについてはわかりません。)強制コマンドを使用してsshアクセス用のユーザーアカウントを持っている場合は、ログインシェルも変更する必要があります。また、bashを使用して明示的にスクリプトを確認する必要がある場合があります。greppingは#!/bin/bash
それらを見つけるはずです。