Я поддерживаю неподдерживаемый сервер Ubuntu 12.10 (Quantal Quetzal) (пожалуйста, не спрашивайте почему), и нам нужно исправить Shellshock Ошибка безопасности Bash. Поскольку обновления больше не доступны, каков рекомендуемый способ исправления Bash?
я нашел этот ответ (он рекомендует получать пакеты из Debian и не устанавливать бинарные пакеты, но установить пакеты из источника). Мне это кажется нормальным, но какой еще совет?
Эта статья была полезной и сработала для нескольких экземпляров Ubuntu 12.10 (Quantal), которые мне все еще нужно поддерживать.
Исправить эксплойт Bash в новых и старых версиях Ubuntu
Вкратце, шаги следующие:
Получите кодовое имя вашего текущего выпуска (например, Quantal) и сохраните его в переменной:
lsb_release -a
DISTRIB_CODENAME=quantal
Измените источник на надежный в /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
Убедитесь, что последняя версия не прошла следующий тест (т. Е. Вы не должны видеть "закрыто")
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
И вам нужно установить Бизон чтобы команда "make" работала:
sudo apt-get install bison
Вы могли бы рассмотреть еще один подход.
На вашем устаревшем сервере Quantal вы действительно используете bash?
Если вам не нужен bash, тогда, если вы еще не заменили ссылку / bin / sh на / bin / bash ссылкой на / bin / dash, установите dash и используйте ее в качестве замены оболочки Bourne.
Это иллюстрирует, почему для переносимости рекомендуется не использовать «bashisms» в сценариях оболочки, чтобы можно было использовать более простую, менее накладную и более безопасную оболочку dash.