私たちはDebian Etch、Lenny、Squeezeを実行しています。なぜなら、ストアは一度もアップグレードされたことがないからです。私たちはさまざまなDebianバージョンを実行する150以上のシステムを持っています。今週の「シェルショック」を考えると、bashをアップグレードする必要があるようです。 Debianを知らないので心配です。
apt-get install bash
私のリポジトリがSqueezeエントリを指している場合、すべてのDebianシステムでこれを実行して正しいBashパッケージを入手できますか?そうでない場合、どのような他の措置を講じるべきですか?
答え1
bashのみをアップグレードすることを選択できます。これを行うには、次のapt-get
コマンドを使用します。
apt-get update
次に、更新が利用可能なすべての更新をインポートした後に実行します。
apt-get install --only-upgrade bash
以前のバージョン(Squeezeなど)のアップデートを受け取るには、Squeeze-LTSリポジトリをsource.listに追加する必要があります。
このリポジトリを追加するには、/etc/apt/sources.list
次の行を編集してファイルの末尾に追加します。
deb http://ftp.us.debian.org/debian squeeze-lts main non-free contrib
特定のシステムが脆弱であることを確認する(またはアップグレードが機能しているかどうかを確認するには)、使用しているbashのバージョンを確認して、システムが影響を受けている(おそらく影響を受けている)ことを確認してください。複数のシェルテストスクリプトオンラインで見つけることができます。
編集1
LennyまたはEtchをアップグレードするには、ソースでbash
コンパイルし、バージョンで使用されているバージョンを手動でアップグレードする方法について、以下のIlya Sheershoffの答えを確認してくださいbash
。bash
編集2
sources.list
以下は、私が正常にアップグレードしたSqueezeサーバーのサンプルファイルです。
deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main
# squeeze-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main
# Other - Adding the lsb source for security updates
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
答え2
このapt-get install
オプションが機能しない場合は、ソースからbashを再コンパイルする必要があります。答えにはLennyとEtchの例があります。押出機はありませんが、何をすべきかを簡単に把握できます。
これTaNNkoSTのソリューション私はこれをインターネットで見つけました:
利用可能なパッチの数を確認し、新しいパッチがある場合は、「(seq)」セクションで数字を変更します。
レニーのために
#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 4.1-3 The GNU Bourne Again SHell
#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
tar zxvf bash-4.1.tar.gz
cd bash-4.1
# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 14); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-4.1-patches/bash41-$i
patch -p0 < bash41-$i
done
# check if yacc is installed. if not - install yacc
apt-get install bison
# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install
# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash
# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo
#you can Delete the old one thats a problem
rm /bin/bash.old
エッチング用yacc
同じロジックに従ったがまだシステムにインストールされていないため、bison
このためにパッケージをインストールする必要があります。これが私が思いついたものです:
#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 3.2-4 The GNU Bourne Again SHell
#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
tar zxvf bash-3.2.tar.gz
cd bash-3.2
# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 54); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-$i
patch -p0 < bash32-$i
done
# check if yacc is installed. if not - install yacc
apt-get install bison
# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install
# at this point my system is not vulnerable already, test your system
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"
# if this is not the case for your system - try the following
# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash
# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo
#you can Delete the old one thats a problem
rm /bin/bash.old
答え3
このパッケージを信頼したいかどうかはわかりませんが、誰かがWoody(3.0)、sarge(3.1)、etch(4.0)、lenny(5.0)用のパッケージを構築しました。ここで見つけることができます:
http://blog.bofh.it/debian/id_451
このパッケージをインストールするためのリポジトリがないことに注意してくださいapt-get
。dpkg
独自のローカルストレージを使用または作成する必要があります。
答え4
さまざまなオペレーティングシステムでBashを更新するには、汎用スクリプトを使用できます。シェルショック。