Я поддерживаю Ubuntu 12.10 из поддержки (Кетцаль Quantal), сервер (не спрашивайте меня, почему), и мы должны исправить ошибку безопасности Bash Контузии. Поскольку обновления больше не доступны, что рекомендуемый путь состоит в том, чтобы исправить Bash?
Я нашел этот ответ (он рекомендует получить пакеты от Debian и не установить двоичные пакеты, но пакеты установки из источника). Это кажется OK мне, но каков некоторый другой совет?
Эта статья была полезна и сработала для нескольких экземпляров Ubuntu 12.10 (Quantal), которые мне все еще нужно поддерживать.
Исправить эксплойт Bash в новых и старых версиях Ubuntu
В итоге, шаги следующие:
Получите кодовое имя вашего текущего выпуска (например, Quantal) и сохраните его в переменной:
lsb_release -a
DISTRIB_CODENAME = количественный
Измените источник на надежный в /etc/apt/sources.list
. Например,
sudo sed -i "s / $ DISTRIB_CODENAME / trusty / g" /etc/apt/sources.list
Обновление и обновление bash
sudo apt-get update
sudo apt-get install --only-upgrade bash
Убедитесь, что последняя версия не прошла следующий тест (т.е. вы не должны видеть "busted")
env X = "() {:;}; echo busted" `which bash` -c" echo completed "
Восстановите /etc/apt/sources.list, чтобы использовать текущее кодовое имя. Например,
sudo sed -i "s / trusty / $ DISTRIB_CODENAME / g" /etc/apt/sources.list
https://shellshocker.net/#fix содержит несколько хороших инструментов для обновления bash вручную.
curl https://shellshocker.net/fixbash | sh
Вы также можете проверить, уязвима ли ваша система:
curl https://shellshocker.net/shellshock_test.sh | bash
Запускайте ее на свой страх и риск. Вот сценарий, который он запускает, если срок действия указанной выше ссылки истекает или вы не хотите ей доверять:
cd ~/
mkdir bash-shellshocker
cd bash-shellshocker
echo "Downloading Bash..."
wget https://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
echo "Downloading Bash patches..."
i=0
rtn=0
while [ $rtn -eq 0 ]; do
i=`expr $i + 1`
wget https://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$(printf '%03g' $i)
rtn=$?
done
i=`expr $i - 1`
echo "Extracting bash from tar.gz..."
tar zxvf bash-4.3.tar.gz
cd bash-4.3
echo "Applying Patches..."
for j in $(seq -f "%03g" 1 $i);do patch -p0 < ../bash43-$j; done
echo "Ready to install. Configuring..."
./configure --prefix=/
echo "Running make"
make
if [[ "$USER" == "root" ]]
then
echo "Running make install"
make install
cp /bin/bash /usr/local/bin/bash
else
echo "Running make install (You may need to type your sudo password here)"
sudo make install
sudo cp /bin/bash /usr/local/bin/bash
fi
https://github.com/wreiske/shellshocker/blob/master/fixbash - это место, где можно найти сценарий
удачи
Поскольку вы должны устанавливать этот вид обновления безопасности только от признанного поставщика, решение о компиляции из источников - единственное, что вы есть.
Ответ от lumpygator мне помог, но я думаю, что это слишком сложно. Если вы хотите установить только один пакет из более новой версии ubuntu, нет необходимости редактировать sources.list
, вы можете просто загрузить пакет и установить его. Так что в случае ошибки bash shellshock перейдите по адресу http://packages.ubuntu.com/trusty/amd64/bash/download , щелкните ссылку «* security.ubuntu.com/ubuntu», это загрузит файл bash_4.3-7ubuntu1.5_amd64.deb
. В качестве альтернативы вы можете запустить команду:
wget http://security.ubuntu.com/ubuntu/pool/main/b/bash/bash_4.3-7ubuntu1.5_amd64.deb
После того, как вы получили новый пакет, вы можете установить его напрямую с помощью:
dpkg -i bash_4.3-7ubuntu1.5_amd64.deb
Это сработало для меня на Saucy (13.10).
(Замените amd64 на i386, если у вас 32-битная система .)
Да, сценарий, предоставленный shellshocker.net, работает.
Но для Ubuntu 11.04 (Natty Narwhal), 11.10 (Oneiric Ocelot), 12.04 LTS (Precise Pangolin), 12.10 (Quantal Quetzal), 13.04 (Raring Ringtail) и 13.10 (Saucy Salamander), по крайней мере, версия пакета Bash - 4.2, поэтому сценарий требует некоторых изменений:
cd ~/
mkdir bash
cd bash
wget https://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz
for i in $(seq -f "%03g" 0 49); do wget https://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-$i; done
tar zxvf bash-4.2.tar.gz
cd bash-4.2
for i in $(seq -f "%03g" 0 49); do patch -p0 < ../bash42-$i; done
./configure && make
sudo make install
И вам необходимо установить Bison чтобы команда make работала:
sudo apt-get install bison
Есть другой подход, который вы могли бы рассмотреть.
На вашем устаревшем сервере Quantal вы действительно используете bash?
Если вам не нужен bash, тогда, если вы еще не заменили ссылку / bin / sh на / bin / bash ссылкой на / bin / dash, установите dash и используйте ее в качестве замены оболочки Bourne.
Это иллюстрирует почему для переносимости рекомендуется не использовать "bashisms" в сценариях оболочки, чтобы можно было использовать более простую, менее накладную и более безопасную оболочку dash.