Heredé un servidor peligrosamente desactualizado. ¿Cómo planeo actualizarlo de manera segura?

11

Apticron se ejecuta todas las noches en la caja y me dice que tengo alrededor de 150 actualizaciones que deben hacerse. El servidor está ejecutando bastantes servicios importantes sin una copia de seguridad real, por lo que tengo miedo de comenzar a actualizar. ¿Cómo debo planear esto?

Editar: lsb_release:
ID de distribuidor: Ubuntu
Descripción: Ubuntu 8.04.3 LTS
Release: 8.04
Nombre en clave: 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
fuente
1
¿Qué versión de Ubuntu está ejecutando?
Tarun
Descripción: Ubuntu 8.04.3 LTS
jon_brockman
8
¿Realmente esperas una respuesta donde no se te diga que hagas una copia de seguridad? :-)
Andrea Corbellini
Creo que necesita una respuesta más a nivel de gestión aquí. Sin copias de seguridad y sin información sobre los servicios y datos, no hay realmente una respuesta específica para proporcionar que no sea "debería poder actualizar de LTS (8.04) a LTS (10.04) a LTS (12.04)". Y sí, solo arregla la parte de copias de seguridad. Personalmente, preferiría una instalación nueva, copié los datos en la nueva instalación.
gertvdijk
1
Andrea: Por supuesto, esperaba que hacer una copia de seguridad fuera parte de cada respuesta. Eso, sin embargo, es la parte fácil.
jon_brockman

Respuestas:

16

Según las versiones de esos paquetes, parece ser Ubuntu Hardy 8.04 LTS. Eso tiene más de cinco años. A pesar de su antigüedad, el soporte oficial solo finalizó en mayo de 2013, pero ya nunca recibirá actualizaciones de seguridad y eso es un problema.

Las versiones enumeradas anteriormente se publicaron en 2010 y eso debería resaltar la urgencia de la tarea en cuestión. Este servidor es probablemente vulnerable a múltiples exploits remotos.

Usted podría intentar actualizaciones locales de distribución a 12.04 (que se apoya hasta 2017), pero esta interrupción del servicio inmediatamente y medios podría significar romper cosas. También podría tomar un par de iteraciones para llegar a 12.04. Es solo una idea desordenada.

Empezaría de nuevo. Nuevo servidor, nueva instalación de Ubuntu.

  1. Realice una copia de seguridad en caso de que explote, pero deje el servidor antiguo como está. Quien esté utilizando este servidor actualmente no apreciará ningún tiempo de inactividad, por lo que dejar el viejo en funcionamiento es su ruta hacia compañeros de trabajo felices y un jefe feliz.

  2. Instale Ubuntu 12.04 (o lo que sea el último LTS en el momento de la lectura) en un nuevo servidor (o máquina virtual, sin embargo, tiene las cosas configuradas). Si este es uno de los muchos servidores de la compañía, podría valer la pena mirar las técnicas de consolidación / redundancia de hardware con las que la virtualización funciona bien.

  3. Cree una lista de cosas que necesita para trabajar desde el servidor anterior. ¿Qué sitios web se ejecutan en él? ¿Qué servicios dependen las personas de que brinde? ¿Qué IP usa? ¿Se puede cambiar la IP? ¿Cómo? ¿Dónde? ¿Quién interrumpirá eso?

    Al final de esta etapa, debe tener un documento que le diga lo que debe hacer.

  4. Instale los paquetes desde el n. ° 3 pero no simplemente copie la configuración anterior.

    Es realmente tentador portar / etc / over desde el servidor anterior, pero he hecho cosas similares con PHP antes y me retrasó días. Use sus observaciones del n. ° 3 y de jugar con el servidor anterior para construir una nueva configuración nueva basada en las mejores prácticas modernas.

  5. Copie sus sitios web y bases de datos.

  6. Prueba y arreglo. No tengo idea de cuánto tiempo tomará esto porque nunca antes he actualizado un sitio web de Tomcat, pero al menos debes asegurarte de que todavía haga todo lo que se supone que debe hacer.

  7. Cuando esté contento de que funcione, deberá volver a copiar los datos del servidor anterior (suponiendo que las personas lo hayan estado usando mientras tanto).

  8. Desenchufe el servidor antiguo y tírelo al mar. O reutilizarlo. Probablemente sea antiguo e ineficiente, por lo que podría no ser una mala idea

Como Brendan menciona en los comentarios, deberías generar una tonelada de documentación entre los pasos 3 y 6. Si sigues escribiendo lo que estás haciendo y por qué a medida que haces las cosas, te llevará 30 minutos más pero ' Te dejaré con un plan sólido para la próxima vez. Cuando haya terminado, puede haber pasos innecesarios que puede omitir la próxima vez, así que asegúrese de agregar una conclusión.

También estaría tentado a dejarle una nota al propietario anterior y a su jefe sobre el estado del servidor y cuán peligrosamente negligentes son las actualizaciones de seguridad caducadas. Puede hacerlo sin sonar como una herramienta que interfiere, pero eso es opcional.

Oli
fuente
8
"
tíralo
Bueno, parece que voy a morder la bala y construir un nuevo servidor. Gracias por el aporte.
jon_brockman
2
También examinaría la virtualización: virtualice el servidor como está, luego haga una instantánea y ahora tiene una copia de seguridad y un patio de juegos. Probar cosas, ¿éxito? instantánea, de lo contrario, retroceda e intente nuevamente. Lo mismo para comenzar desde cero. Probar, Instantánea o revertir.
WernerCD
44
Esta es una gran información. Lo único que agregaría es que en el paso 4, documente lo que hizo para que sea más fácil para la siguiente persona.
Brendan Long