Reducir tiempo de arranque CentOS

Inicialmente cuando instalamos un CentOS, se instalan por defecto una serie de programas de propósito general que hacen a la distribución ajustarse a un mayor número de necesidades.

Después de haber leido la sección sobre RPC en el libro
Building Internet Firewalls 2da edición, donde recomiendan eliminar estos servicios si no van ha ser usados, decidí desactivar varios programas del arranque del sistema.

Antes de realizar ningún cambio, y como sugieren en el libro, fui
averiguando que cosa era cada programa. Aquí utilicé el comando man para ver la página del manual de cada uno de los programas, antes de desactivarlo.

Asumimos que está utilizando el runlevel 3 al inicio del sistema. En
caso que utilice otro, los filtrados y cambios deben ser orientado al
runlevel con el cual inicia la computadora. Lea el fichero /etc/inittab para ver en que nivel levanta su sistema.

Antes de hacer los cambios, el resultado del comando

chkconfig --list | grep 3:on

devolvía:

haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off kudzu 0:off 1:off 2:off 3:on 4:on 5:on 6:off cups 0:off 1:off 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off xfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off isdn 0:off 1:off 2:on 3:on 4:on 5:on 6:off gpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off microcode_ctl 0:off 1:off 2:on 3:on 4:on 5:on 6:off rawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:off messagebus 0:off 1:off 2:off 3:on 4:on 5:on 6:off autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off rpcidmapd 0:off 1:off 2:off 3:on 4:on 5:on 6:off pcmcia 0:off 1:off 2:on 3:on 4:on 5:on 6:off mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off lm_sensors 0:off 1:off 2:on 3:on 4:on 5:on 6:off irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off apmd 0:off 1:off 2:on 3:on 4:on 5:on 6:off nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off smartd 0:off 1:off 2:on 3:on 4:on 5:on 6:off acpid 0:off 1:off 2:off 3:on 4:on 5:on 6:off cpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:off xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off

Luego de haber corrido los comandos:

chkconfig --level 2345 cups off
chkconfig --level 2345 autofs off
chkconfig --level 2345 portmap off
chkconfig --level 2345 rpcidmapd off
chkconfig --level 2345 irqbalance off
chkconfig --level 2345 nfslock off
chkconfig --level 2345 sshd off
chkconfig --level 2345 netfs off
chkconfig --level 2345 sendmail off
chkconfig --level 2345 rpcgssd off

el resultado del comando

chkconfig --list | grep 3:on

devolvía:

haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off kudzu 0:off 1:off 2:off 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off xfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off isdn 0:off 1:off 2:on 3:on 4:on 5:on 6:off gpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off microcode_ctl 0:off 1:off 2:on 3:on 4:on 5:on 6:off rawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:off messagebus 0:off 1:off 2:off 3:on 4:on 5:on 6:off pcmcia 0:off 1:off 2:on 3:on 4:on 5:on 6:off mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off lm_sensors 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off apmd 0:off 1:off 2:on 3:on 4:on 5:on 6:off smartd 0:off 1:off 2:on 3:on 4:on 5:on 6:off acpid 0:off 1:off 2:off 3:on 4:on 5:on 6:off cpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:off xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off

En este punto eliminé los servicios relacionados con RPC y otros como sendmail y sshd, estos dos últimos innecesarios en el sistema actual debido a que está desconectado de la red y no necesita un transporte de correo ni tampoco será accedido remotamente de otra computadora.

Otro detalle son los puertos abiertos, antes y después. Inicialmente, antes de desactivar estos programas habían varios puertos abiertos que no necesitaba y que se prestaban para posibles ataques, en este caso es irrelevante porque estoy desconectado de la red pero en una estación de trabajo conectada a la red la cuestión es bien diferente y cualquier servicio que este de más es una posibilidad para dejar el sistema vulnerable.

Nota: Los puertos pueden que estén abiertos pero ello no significa que estén accesibles desde el exterior. Es necesario mirar un nivel más abajo, en las reglas de iptables (/etc/sysconfig/iptables). Si estas reglas impiden el acceso a estos puertos, incialmente abiertos, puede que estén abiertos internamente en el sistema pero no accesibles desde el exterior.

Antes de desactivar los programas el resultado de

netstat -taulp

era:

Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 *:673 *:* LISTEN 2187/rpc.statd tcp 0 0 *:sunrpc *:* LISTEN 2167/portmap tcp 0 0 *:ipp *:* LISTEN 2312/cupsd tcp 0 0 wrk.reguera.cu:smtp *:* LISTEN 2408/sendmail: acce tcp 0 0 *:ssh *:* LISTEN 2350/sshd udp 0 0 *:667 *:* 2187/rpc.statd udp 0 0 *:670 *:* 2187/rpc.statd udp 0 0 *:sunrpc *:* 2167/portmap udp 0 0 *:ipp *:* 2312/cupsd

9 puertos abiertos.

Luego para poder ver el resultado de lo que hemos hecho, es necesario
reiniciar la computadora. Recordemos que los servicios aun están
levantados y es necesario reiniciar la computadora para que el script
de inicio de sistema vuelva a cargar. De esta forma comprobaremos si
los cambios funcionan correctamente.

Después de reiniciar el sistema y comprobar que no hubo errores, el
resultado del comando

netstat -taulp

era:

Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

0 puerto abierto.

Luego de haber reiniciado y comprobado que no hubo errores, podemos proceder a desintalar los programas que previamente desactivamos. Ya no es necesario que estén en el sistema.

Ha la hora de desinstalar debemos tener en cuenta aquellos paquetes
que son dependencias de otros. Ejemplo de ello tenemos a el paquete
cups, que es dependencia de gnome. Estos detalles lo podemos comprobar utilizando la herramienta yum para desinstalar. De esta forma podremos ver si el programa que vamos a desintalar tiene dependencias y si nos conviene o no que estas dependencias sean eliminadas.

Utilicemos el comando:

yum remove nombre-del-paquete

para comprobar las dependencias.

Es recomendable hacer una lista de los programas antes y después, así
como del resultado devuelto por chkconfig --list antes y después de los cambios. Esto nos ayudara a retornar a la configuración anterior en caso que sea necesario utilizar alguno de los servicios que
inicialmente desactivamos y luego desintalamos.

Para regresar a la configuración inicial, basta con instalar primero
los programas desinstaldos (auxiliandonos de la lista creada) y luego
habilitarlos con el comando chkconfig. Básicamente es hacer el proceso inverso de lo que hemos hecho hasta ahora.

Resumen

Para desactivar programas en el sistema
1. Crear lista de configuración actual, auxiliandonos del comandos
chkconfig.
2. Entender para que es cada uno de los programas que se ejecutan al
inicio del sistema.
3. Desactivar comandos innecesarios a nuestras necesidades del inicio
del sistema. Nos auxiliamos del comando chkconfig.
4. Reiniciar y comprobar que los cambios no generan errores.
5. Desinstalar los programas desactivados.
6. Reiniciar y comprobar que no se generan errores.

Para volver a la configuración anterior
1. Instalar programas desactivados. Auxiliandonos de la lista creada
inicialmente.
2. Activar programas desactivados. Auxiliandonos de la lista creada
inicialmente y el comando chkconfig.

La lista viene siendo como un punto de chequeo donde se tienen una
noción de los programas actuales y los que quedaron luego de haber
hecho los cambios. Esto nos ayuda a determinar posibles errores y
retornar en cualquier momento a la configuración actual.

Es posible también crear un script de bash que automatice esto, tanto
para desactivar como para activar. Cuestión que solo sea ejecutar un
script de bash para ir a una configuración o retornar a ella más
adelante.

Una respuesta a Reducir tiempo de arranque CentOS

  1. No conocía esta sitio, gracias por la información.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: