우리는 Debian Etch, Lenny 및 Squeeze를 실행하고 있습니다. 왜냐하면 스토어는 한 번도 업그레이드된 적이 없기 때문입니다. 우리는 다양한 Debian 버전을 실행하는 150개 이상의 시스템을 보유하고 있습니다. 이번 주의 "쉘 쇼크"를 고려하면 bash를 업그레이드해야 할 것 같습니다. 데비안을 몰라서 걱정되네요.
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를 업데이트하려면 범용 스크립트를 사용할 수 있습니다.쉘 쇼크.