Odziedziczyłem niebezpiecznie przestarzały serwer. Jak mam go bezpiecznie uaktualnić?

11

Apticron działa co noc na pudełku i mówi mi, że mam około 150 aktualizacji, które należy wprowadzić. Serwer obsługuje kilka ważnych usług bez prawdziwej kopii zapasowej, więc boję się, że zacznę aktualizację. Jak powinienem to zaplanować?

Edycja: lsb_release:
Identyfikator dystrybutora: Ubuntu
Opis: Ubuntu 8.04.3 LTS
Wydanie: 8.04
Nazwa kodowa : 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
źródło
1
jaka wersja Ubuntu jest uruchomiona?
Tarun
Opis: Ubuntu 8.04.3 LTS
jon_brockman
8
Czy naprawdę oczekujesz odpowiedzi, w której nie zostaniesz poproszony o wykonanie kopii zapasowej? :-)
Andrea Corbellini
Uważam, że potrzebujesz więcej odpowiedzi na poziomie zarządzania tutaj. Bez kopii zapasowych i bez informacji o usługach i danych, tak naprawdę nie ma konkretnej odpowiedzi do udzielenia oprócz „powinieneś być w stanie uaktualnić z LTS (8.04) do LTS (10.04) do LTS (12.04)”. I tak, po prostu napraw część kopii zapasowych. Osobiście wolałbym świeżą instalację, skopiowałem dane do nowej instalacji.
gertvdijk
1
Andrea: Oczywiście spodziewałem się, że tworzenie kopii zapasowej będzie częścią każdej odpowiedzi. To jednak jest łatwa część.
jon_brockman

Odpowiedzi:

16

W oparciu o wersje tych pakietów wydaje się, że jest to Ubuntu Hardy 8.04 LTS. To ma ponad pięć lat. Mimo swojego wieku oficjalne wsparcie zakończyło się dopiero w maju 2013 r., Ale już nigdy nie będzie otrzymywać aktualizacji zabezpieczeń i to jest problem.

Wersje wymienione powyżej zostały opublikowane w 2010 r., Co powinno podkreślić pilność wykonywanego zadania. Ten serwer jest prawdopodobnie podatny na wiele zdalnych exploitów.

Państwo mogli natychmiast próba uaktualnienia w miejscu dystrybucji do 12,04 (co jest wspierane do 2017 roku), ale to przerwanie usług oznacza i może oznaczać rzeczy przerwę. Przejście do 12.04 może zająć kilka iteracji. To tylko niechlujny pomysł.

Zaczynam od nowa. Nowy serwer, nowa instalacja Ubuntu.

  1. Wykonaj kopię zapasową na wypadek, gdyby wybuchła, ale w przeciwnym razie pozostaw stary serwer bez zmian. Kto obecnie korzysta z tego serwera, nie doceni żadnego przestoju, więc pozostawienie starego jest Twoją drogą do szczęśliwych współpracowników i szczęśliwego szefa.

  2. Zainstaluj Ubuntu 12.04 (lub jakikolwiek najnowszy LTS w momencie czytania) na nowym serwerze (lub maszynie wirtualnej, jakkolwiek masz skonfigurowane ustawienia). Jeśli jest to jeden z wielu serwerów w firmie, warto przyjrzeć się technikom konsolidacji / redundancji sprzętowej, z którymi wirtualizacja działa dobrze.

  3. Zbuduj listę rzeczy, które potrzebujesz do pracy ze starego serwera. Jakie strony są na nim uruchomione? Z jakich usług korzystają ludzie? Jakie adresy IP używa? Czy można zmienić adres IP? W jaki sposób? Gdzie? Kto to zakłóci?

    Pod koniec tego etapu powinieneś mieć dokument informujący o tym, co musisz zrobić.

  4. Zainstaluj pakiety od nr 3, ale nie kopiuj po prostu starej konfiguracji.

    To naprawdę kusi do portu / etc / ze starego serwera, ale robiłem podobne rzeczy z PHP wcześniej i ustawić mnie z powrotem dni. Skorzystaj z obserwacji z punktu 3 i zabawy ze starym serwerem, aby zbudować nową konfigurację w oparciu o nowoczesne najlepsze praktyki.

  5. Skopiuj swoje witryny i bazy danych.

  6. Przetestuj i napraw. Nie mam pojęcia, jak długo to potrwa, ponieważ nigdy wcześniej nie uaktualniłem strony internetowej Tomcat, ale przynajmniej musisz upewnić się, że nadal robi wszystko, co powinien.

  7. Gdy będziesz zadowolony, że to działa, musisz ponownie skopiować dane ze starego serwera (zakładając, że w międzyczasie ludzie z nich korzystają).

  8. Odłącz stary serwer i wrzuć go do morza. Lub zmień przeznaczenie. Jest to prawdopodobnie starożytne i nieefektywne, więc może nie być złym pomysłem

Jak wspomina Brendan w komentarzach, powinieneś wygenerować masę dokumentacji między krokami 3 i 6. Jeśli po prostu zapisujesz, co robisz i dlaczego to robisz, zajmie ci to 30 minut dłużej, ale to „ Zostawię ci solidny plan na następny raz. Po zakończeniu mogą być niepotrzebne kroki, które możesz pominąć następnym razem, więc upewnij się, że dodałeś wniosek.

Kusiłoby mnie również, by upuścić poprzedniego właściciela i ich szefa notatkę o stanie serwera oraz o tym, jak niebezpiecznie zaniedbane są wygaśnięcia aktualizacji zabezpieczeń. Możesz to zrobić, nie brzmiąc jak narzędzie zakłócające, ale jest to opcjonalne.

Oli
źródło
8
„wrzuć to do morza” :)
don.joey
Wygląda na to, że ugryzę pocisk i zbuduję nowy serwer. Dzięki za wkład.
jon_brockman
2
Chciałbym również przyjrzeć się wirtualizacji - zwirtualizuj serwer w obecnej postaci, następnie zrób migawkę, a teraz masz kopię zapasową i plac zabaw. Spróbuj rzeczy, sukces? migawka, w przeciwnym razie wycofaj i spróbuj ponownie. To samo dotyczy rozpoczynania od zera. Spróbuj, Zrób migawkę lub przywróć.
WernerCD
4
To świetna informacja. Dodam tylko, że w kroku 4 udokumentuj to, co zrobiłeś, aby łatwiej było dla następnej osoby.
Brendan Long