Я унаследовал опасно устаревший сервер. Как я планирую безопасно обновить его?

11

Apticron работает на коробке каждый вечер и сообщает мне, что у меня есть около 150 обновлений, которые нужно сделать. На сервере запущено немало важных сервисов без истинного резервного копирования, поэтому я боюсь просто начать обновление. Как мне спланировать игру?

Изменить: lsb_release:
ID распространителя: Ubuntu
Описание: Ubuntu 8.04.3 LTS
Выпуск: 8.04
Кодовое имя: Hardy

The following packages are currently pending an upgrade:

apache2 2.2.8-1ubuntu0.25
apache2.2-common 2.2.8-1ubuntu0.25
apache2-mpm-prefork 2.2.8-1ubuntu0.25
apache2-utils 2.2.8-1ubuntu0.25
apparmor 2.1+1075-0ubuntu9.3
apparmor-utils 2.1+1075-0ubuntu9.3
apt 0.7.9ubuntu17.6
apt-utils 0.7.9ubuntu17.6
base-files 4.0.1ubuntu5.8.04.8
bind9-host 1:9.4.2.dfsg.P2-2ubuntu0.12
bsdutils 1:2.13.1-5ubuntu3.1
bzip2 1.0.4-2ubuntu4.2
clamav 0.97.8+dfsg-1ubuntu1.08.04.1
clamav-base 0.97.8+dfsg-1ubuntu1.08.04.1
clamav-freshclam 0.97.8+dfsg-1ubuntu1.08.04.1
curl 7.18.0-1ubuntu2.4
dhcp3-common 3.0.6.dfsg-1ubuntu9.3
dnsutils 1:9.4.2.dfsg.P2-2ubuntu0.12
dpkg 1.14.16.6ubuntu4.2
dpkg-dev 1.14.16.6ubuntu4.2
fuse-utils 2.7.2-1ubuntu2.3
gnupg 1.4.6-2ubuntu5.2
gpgv 1.4.6-2ubuntu5.2
grub 0.97-29ubuntu21.2
gzip 1.3.12-3.2ubuntu0.1
klibc-utils 1.5.7-4ubuntu5
krb5-user 1.6.dfsg.3~beta1-2ubuntu1.8
ldap-utils 2.4.9-0ubuntu0.8.04.5
libapache2-mod-fcgid 1:2.2-1ubuntu0.8.04.1
libapache2-mod-php5 5.2.4-2ubuntu5.27
libapache2-svn 1.5.1dfsg1-1ubuntu2~hardy3
libapr1 1.2.11-1ubuntu0.2
libaprutil1 1.2.12+dfsg-3ubuntu0.3
libbind9-30 1:9.4.2.dfsg.P2-2ubuntu0.12
libbz2-1.0 1.0.4-2ubuntu4.2
libc6 2.7-10ubuntu8.3
libc6-dev 2.7-10ubuntu8.3
libc6-i686 2.7-10ubuntu8.3
libclamav6 0.97.8+dfsg-1ubuntu1.08.04.1
libcupsys2 1.3.7-1ubuntu3.16
libcurl3 7.18.0-1ubuntu2.4
libcurl3-gnutls 7.18.0-1ubuntu2.4
libdbus-1-3 1.1.20-1ubuntu3.9
libdns35 1:9.4.2.dfsg.P2-2ubuntu0.12
libdns36 1:9.4.2.dfsg.P2-2ubuntu0.12
libexpat1 2.0.1-0ubuntu1.2
libexpat1-dev 2.0.1-0ubuntu1.2
libfreetype6 2.3.5-1ubuntu4.8.04.10
libfreetype6-dev 2.3.5-1ubuntu4.8.04.10
libfuse2 2.7.2-1ubuntu2.3
libgc1c2 1:6.8-1.1ubuntu0.1
libgd2-xpm 2.0.35.dfsg-3ubuntu2.1
libgd2-xpm-dev 2.0.35.dfsg-3ubuntu2.1
libgnutls13 2.0.4-1ubuntu2.9
libhtml-parser-perl 3.56-1ubuntu0.1
libisc35 1:9.4.2.dfsg.P2-2ubuntu0.12
libisccc30 1:9.4.2.dfsg.P2-2ubuntu0.12
libisccfg30 1:9.4.2.dfsg.P2-2ubuntu0.12
libkadm55 1.6.dfsg.3~beta1-2ubuntu1.8
libklibc 1.5.7-4ubuntu5
libkrb53 1.6.dfsg.3~beta1-2ubuntu1.8
libkrb5-dev 1.6.dfsg.3~beta1-2ubuntu1.8
liblcms1 1.16-7ubuntu1.3
libldap-2.4-2 2.4.9-0ubuntu0.8.04.5
liblwres30 1:9.4.2.dfsg.P2-2ubuntu0.12
libmysqlclient15off 5.0.96-0ubuntu3
libpam0g 0.99.7.1-5ubuntu6.5
libpam-modules 0.99.7.1-5ubuntu6.5
libpam-runtime 0.99.7.1-5ubuntu6.5
libpango1.0-0 1.20.5-0ubuntu1.2
libpango1.0-common 1.20.5-0ubuntu1.2
libperl5.8 5.8.8-12ubuntu0.8
libpng12-0 1.2.15~beta5-3ubuntu0.7
libpng12-dev 1.2.15~beta5-3ubuntu0.7
libpq5 8.3.23-0ubuntu8.04.1
libsnmp15 5.4.1~dfsg-4ubuntu4.4
libsnmp-base 5.4.1~dfsg-4ubuntu4.4
libssl0.9.8 0.9.8g-4ubuntu3.20
libssl-dev 0.9.8g-4ubuntu3.20
libsvn1 1.5.1dfsg1-1ubuntu2~hardy3
libsvn-perl 1.5.1dfsg1-1ubuntu2~hardy3
libtasn1-3 1.1-1ubuntu0.1
libthai0 0.1.9-1ubuntu0.2
libthai-data 0.1.9-1ubuntu0.2
libtiff4 3.8.2-7ubuntu3.16
libtomcat5.5-java 5.5.25-5ubuntu1.3
libwww-perl 5.808-1ubuntu0.1
libxml2 2.6.31.dfsg-2ubuntu1.12
libxml2-dev 2.6.31.dfsg-2ubuntu1.12
libxslt1.1 1.1.22-1ubuntu1.4
libxslt1-dev 1.1.22-1ubuntu1.4
linux-image-2.6.24-32-server 2.6.24-32.107
linux-image-server 2.6.24.32.34
linux-libc-dev 2.6.24-32.107
linux-server 2.6.24.32.34
linux-ubuntu-modules-2.6.24-32-server 2.6.24-32.52
logrotate 3.7.1-3ubuntu0.8.04.1
mount 2.13.1-5ubuntu3.1
mysql-client-5.0 5.0.96-0ubuntu3
mysql-common 5.0.96-0ubuntu3
mysql-server 5.0.96-0ubuntu3
mysql-server-5.0 5.0.96-0ubuntu3
nagios-plugins 1.4.11-1ubuntu5.1
nagios-plugins-basic 1.4.11-1ubuntu5.1
nagios-plugins-extra 1.4.11-1ubuntu5.1
nagios-plugins-standard 1.4.11-1ubuntu5.1
nfs-common 1:1.1.2-2ubuntu2.4
nscd 2.7-10ubuntu8.3
ntp 1:4.2.4p4+dfsg-3ubuntu2.3
ntpdate 1:4.2.4p4+dfsg-3ubuntu2.3
openssh-client 1:4.7p1-8ubuntu3
openssh-server 1:4.7p1-8ubuntu3
openssl 0.9.8g-4ubuntu3.20
perl 5.8.8-12ubuntu0.8
perl-base 5.8.8-12ubuntu0.8
perl-doc 5.8.8-12ubuntu0.8
perl-modules 5.8.8-12ubuntu0.8
php5 5.2.4-2ubuntu5.27
php5-cli 5.2.4-2ubuntu5.27
php5-common 5.2.4-2ubuntu5.27
php5-curl 5.2.4-2ubuntu5.27
php5-dev 5.2.4-2ubuntu5.27
php5-gd 5.2.4-2ubuntu5.27
php5-ldap 5.2.4-2ubuntu5.27
php5-mysql 5.2.4-2ubuntu5.27
php5-sybase 5.2.4-2ubuntu5.27
php5-tidy 5.2.4-2ubuntu5.27
phpmyadmin 4:2.11.3-1ubuntu1.3
postfix 2.5.1-2ubuntu1.4
python2.5 2.5.2-2ubuntu6.2
python2.5-dev 2.5.2-2ubuntu6.2
python2.5-minimal 2.5.2-2ubuntu6.2
python-apt 0.7.4ubuntu7.7
python-libxml2 2.6.31.dfsg-2ubuntu1.12
python-subversion 1.5.1dfsg1-1ubuntu2~hardy3
samba-doc 3.0.28a-1ubuntu4.18
snmp 5.4.1~dfsg-4ubuntu4.4
ssh 1:4.7p1-8ubuntu3
subversion 1.5.1dfsg1-1ubuntu2~hardy3
subversion-tools 1.5.1dfsg1-1ubuntu2~hardy3
sudo 1.6.9p10-1ubuntu3.10
sun-java5-bin 1.5.0-22-0ubuntu0.8.04
sun-java5-demo 1.5.0-22-0ubuntu0.8.04
sun-java5-jdk 1.5.0-22-0ubuntu0.8.04
sun-java5-jre 1.5.0-22-0ubuntu0.8.04
tomcat5.5 5.5.25-5ubuntu1.3
tomcat5.5-admin 5.5.25-5ubuntu1.3
tomcat5.5-webapps 5.5.25-5ubuntu1.3
tzdata 2012e~repack-0ubuntu0.8.04
update-manager-core 1:0.87.33
util-linux 2.13.1-5ubuntu3.1
util-linux-locales 2.13.1-5ubuntu3.1
w3m 0.5.1-5.1ubuntu1.1
wget 1.10.2-3ubuntu1.2
x11-xserver-utils 7.3+2ubuntu0.1
jon_brockman
источник
1
какая версия Ubuntu работает?
Тарун
Описание: Ubuntu 8.04.3 LTS
jon_brockman
8
Вы действительно ожидаете ответа, в котором вам не скажут сделать резервную копию? :-)
Андреа Корбеллини
Я считаю, что вам нужен ответ больше на уровне управления здесь. Без резервных копий и отсутствия информации об услугах и данных на самом деле нет конкретного ответа, который можно было бы дать, кроме «вы должны иметь возможность перейти с LTS (8.04) на LTS (10.04) до LTS (12.04)». И да, просто исправьте часть резервных копий. Лично я бы предпочел новую установку, скопировав данные на новую установку.
gertvdijk
1
Андреа: Конечно, я ожидал, что создание резервной копии будет частью каждого ответа. Это, однако, самая легкая часть.
jon_brockman

Ответы:

16

Судя по версиям этих пакетов, это Ubuntu Hardy 8.04 LTS. Это более пяти лет. Несмотря на возраст, официальная поддержка прекратилась только в мае 2013 года, но она больше не будет получать обновления безопасности, и это проблема.

Перечисленные выше версии были опубликованы в 2010 году, и это должно подчеркнуть срочность поставленной задачи. Этот сервер, вероятно, уязвим для нескольких удаленных эксплойтов.

Вы можете попытаться обновить дистрибутив на месте до 12.04 (который поддерживается до 2017 года), но это означает немедленное прерывание обслуживания и может привести к поломке. Также может потребоваться пара итераций, чтобы добраться до 12.04. Это просто грязная идея.

Я бы начал заново. Новый сервер, новая установка Ubuntu.

  1. Сделайте резервную копию на случай, если она просто взорвется, но в противном случае оставьте старый сервер без изменений. Тот, кто в данный момент использует этот сервер, не оценит простои, поэтому отказ от старого - ваш путь к счастливым коллегам и счастливому начальнику.

  2. Установите Ubuntu 12.04 (или какой-либо другой LTS на момент чтения) на новый сервер (или виртуальную машину, однако у вас все настроено). Если это один из многих серверов в компании, возможно, стоит обратить внимание на методы консолидации / избыточности оборудования, с которыми хорошо работает виртуализация.

  3. Составьте список вещей, которые вам нужны для работы со старого сервера. Какие сайты работают на нем? От каких услуг зависят люди? Какие IP-адреса он использует? Можно ли изменить IP? Как? Куда? Кто это нарушит?

    К концу этого этапа у вас должен быть документ, сообщающий вам, что вам нужно сделать.

  4. Установите пакеты из # 3, но не просто копируйте старую конфигурацию.

    Это действительно заманчиво портировать / etc / over со старого сервера, но я уже делал подобные вещи с PHP раньше, и это отодвинуло меня на несколько дней. Используйте свои наблюдения из # 3 и из игры со старым сервером, чтобы построить новую новую конфигурацию, основанную на современных лучших практиках.

  5. Скопируйте ваши сайты и базы данных.

  6. Проверьте и исправьте. Я понятия не имею, сколько времени это займет, потому что я никогда не обновлял веб-сайт Tomcat, но, по крайней мере, вам нужно убедиться, что он все еще делает все, что должен.

  7. Когда вы довольны тем, что это работает, вам нужно будет снова скопировать данные со старого сервера (при условии, что люди уже использовали его).

  8. Отключите старый сервер и выбросьте его в море. Или переделать это. Это, вероятно, древний и неэффективный, так что это не может быть плохой идеей

Как Брендан упоминает в комментариях, вы должны генерировать тонну документации между шагами 3 и 6. Если вы просто продолжаете записывать, что вы делаете и почему, когда вы делаете что-то, это займет у вас 30 минут дольше, но это ' оставлю вас с твердым планом на следующий раз. Когда вы закончите, могут быть ненужные шаги, которые вы можете пропустить в следующий раз, поэтому обязательно добавьте заключение.

Я также хотел бы оставить предыдущему владельцу и его боссу заметку о состоянии сервера и о том, насколько опасно небрежны обновления безопасности. Вы можете сделать это, не походя на мешающий инструмент, но это необязательно.

Оли
источник
8
"выбросить его в море" :)
don.joey
Похоже, я буду кусать пулю и строить новый сервер. Спасибо за вклад.
jon_brockman
2
Я бы также посмотрел на виртуализацию - виртуализируйте сервер как есть, затем снимок, и теперь у вас есть резервная копия и игровая площадка. Попробуйте вещи, успех? снимок, еще откат и попробуйте еще раз. То же самое для начала с нуля. Попробуйте, снимок или отменить.
WernerCD
4
Это отличная информация. Единственное, что я хотел бы добавить, это то, что на шаге 4 документируйте то , что вы сделали, чтобы следующему человеку было легче.
Брендан Лонг,