Skip to content

Optimizar los servicios en Linux

13/marzo/2009

pingouin-linux-213x300Este es otro artículo que desempolve del antiguo sitio web (que ya no existe) y que he decidido republicar para beneficio de todos.

Según qué distribución tengamos, habrá varios servicios (programas que corren en segundo plano para realizar distintos tipos de tareas) que se ejecutarán al inicio del sistema. Muchos de ellos no serán de uso cotidiano, y además de consumir recursos, pueden afectar su estabilidad y seguridad. Lo mejor será, entonces, dejar sólo aquellos servicios que usemos habitualmente. Por ejemplo, si no estamos en una red o no compartimos nuestros archivos con una red Windows, podemos desactivar el servidor Samba; luego, si llegamos a necesitarlo, lo único que deberemos hacer será iniciarlo.

Miren bien la lista de servicios que se ejecutan al inicio y detengan aquellos que no suelen usar. Algunos servicios pueden ser daemons HTTP (servidor web), POP3/IMAP (e-mail), un servidor de bases de datos (MySQL), etc. Algunos de estos son innecesarios para muchos usuarios y pueden ofrecer rutas por las que puede infiltrarse un atacante potencial. Deberás examinarlos uno por uno y luego detener y deshabilitar todos aquellos que no necesites.

Recuerden que los servicios son programas que se ejecutan en segundo plano, por lo que consumen tiempo de procesador y parte de la memoria, además de que pueden hacer vulnerable nuestro computador a ataques o cuelgues.

Utilizando sólo los servicios que necesitamos, ahorraremos recursos del sistema y estaremos más seguros. Cuando queramos iniciar algún servicio especial, podremos usar alguna de las herramientas que nos proporciona el sistema o, simplemente, recurrir a la línea de comandos.

PARAR Y DESHABILITAR LOS SERVICIOS INNECESARIOS

Las distribuciones mas comunes y populares probablemente contarán con una aplicación gráfica para configurar estos servicios; prueba a buscar en los menús Configuración o Sistema de tu aplicación de escritorio. En Suse lo puedes encontrar en el Centro de Control (YaST), Sistema y luego Editor de niveles de ejecución. En Mandriva Linux podemos hacerlo desde DrakXServices, una utilidad del paquete DrakConf. En RedHat o Fedora podemos utilizar a linuxconf.

También puedes utilizar services-admin de Gnome. Los servicios que tienen un tilde a su izquierda son los que se inician por defecto. Para iniciar un servicio, hacemos clic en el botón Propiedades del servicio y elegimos la opción Iniciar; para pararlo, hacemos lo mismo pero escogemos Detener.

O puedes utilizar chkconfig, una herramienta de la consola que encontrarás en todos las distros y que puedes usar para configurar los servicios de forma rápida. Para obtener una lista del estado actual de todos los servicios instalados, ejecuta (como root):

chkconfig --list

Aparecerá algo parecido al siguiente listado:

Makefile                  0:off  1:off  2:off  3:off  4:off  5:off  6:off
SuSEfirewall2_init        0:off  1:off  2:off  3:off  4:off  5:off  6:off
SuSEfirewall2_setup       0:off  1:off  2:off  3:off  4:off  5:off  6:off
acpid                     0:off  1:off  2:on   3:on   4:off  5:on   6:off
... (abreviado)
syslog                    0:off  1:off  2:on   3:on   4:off  5:on   6:off
sysstat                   0:off  1:off  2:off  3:off  4:off  5:off  6:off
vmware                    0:off  1:off  2:on   3:on   4:off  5:on   6:off
xdm                       0:off  1:off  2:off  3:off  4:off  5:on   6:off
xfs                       0:off  1:off  2:off  3:off  4:off  5:off  6:off
xinetd                    0:off  1:off  2:off  3:off  4:off  5:off  6:off
ypbind                    0:off  1:off  2:off  3:off  4:off  5:off  6:off
xinetd based services:
        chargen:            off
        chargen-udp:        off
        cups-lpd:           off
        cvs:                off
        daytime:            off
        daytime-udp:        off
        echo:               off
        echo-udp:           off
        fam:                off
        netstat:            off
        rsync:              off
        sane-port:          off
        servers:            off
        services:           off
        swat:               off
        systat:             off
        time:               off
        time-udp:           off
        vnc:                off

Los números (0 a 6) que preceden a los dos puntos representan el “nivel de ejecución” del sistema. Los niveles de nuestro interés son 3 y 5; si tu sistema arranca en consola (sin interfaz gráfica) entonces se ejecuta en nivel 3 y si arranca con una interfaz gráfica se ejecuta en nivel 5.

Para activar un servicio (por ejemplo squid) en los niveles de ejecución 2, 3, 4 y 5 debes digitar (como root):

chkconfig --level 2345 squid on

Para deshabilitar un servicio (por ejemplo sshd) en los niveles 3 y 5 debemos digitar (como root):

chkconfig --level 35 sshd off

Si no sabes qué hace alguno de los servicios que tengas activados, intenta buscar información en internet o usar el comando man con el nombre del servicio como palabra clave (por ejemplo: man -k sshd).

El comando chkconfig activará/desactivará los servicios la próxima vez que arranques tu equipo, pero no tendrá ningun efecto sobre los servicios que se esten ejecutando actualmente. Los cambios tendrán efecto cuando reinicies el sistema.

Bajo RedHat/Fedora, se utiliza el comando service para iniciar/detener/reiniciar/consultar  los servicios de la siguiente forma:

service nombre_servicio start
service nombre_servicio stop
service nombre_servicio restart
service nombre_servicio status

Donde nombre_servicio será el que nos indique chkconfig –list.

También puedes utilizar el metodo más tradicional para iniciar/detener/reiniciar/consultar los servicios en forma manual, escribimos en la línea de comandos lo siguiente:

/etc/initd/nombre_servicio start

Para detenerlos:

/etc/initd/nombre_servicio stop

Para reiniciarlos:

/etc/initd/nombre_servicio restart

Y para consultar el estado:

/etc/initd/nombre_servicio status

Ademas puedes ejecutar netstat -l después de deshabilitar todos los servicios innecesarios para asegurarte de que has acabado con todos (este comando comprueba qué sockets están escuchando esperando conexiones). Para cada uno de los servicios que aún estén ejecutándose, asegurate de que están configurados correctamente (y de la forma más restrictiva posible).

netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:msnp                  *:*                     LISTEN
tcp        0      0 *:mysql                 *:*                     LISTEN
tcp        0      0 *:netbios-ssn           *:*                     LISTEN
tcp        0      0 *:sunrpc                *:*                     LISTEN
tcp        0      0 *:ndmp                  *:*                     LISTEN
tcp        0      0 *:ipp                   *:*                     LISTEN
tcp        0      0 *:socks                 *:*                     LISTEN
tcp        0      0 *:ndl-aas               *:*                     LISTEN
tcp        0      0 localhost:smtp          *:*                     LISTEN
tcp        0      0 *:52380                 *:*                     LISTEN
tcp        0      0 *:6588                  *:*                     LISTEN
tcp        0      0 *:microsoft-ds          *:*                     LISTEN
tcp        0      0 *:www-http              *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost:smtp          *:*                     LISTEN
udp        0      0 *:filenet-tms           *:*
udp        0      0 *:filenet-rpc           *:*
udp        0      0 localhost:filenet-nch   *:*
udp        0      0 *:filenet-rmi           *:*
udp        0      0 192.168.2.1:netbios-ns  *:*
udp        0      0 192.168.124.:netbios-ns *:*
udp        0      0 supermicrote:netbios-ns *:*
udp        0      0 192.168.0.10:netbios-ns *:*
udp        0      0 *:netbios-ns            *:*
udp        0      0 192.168.2.1:netbios-dgm *:*
udp        0      0 192.168.124:netbios-dgm *:*
udp        0      0 supermicrot:netbios-dgm *:*
udp        0      0 192.168.0.1:netbios-dgm *:*
udp        0      0 *:netbios-dgm           *:*
udp        0      0 *:52380                 *:*
udp        0      0 localhost:35370         *:*
udp        0      0 localhost:35255         *:*
udp        0      0 *:icpv2                 *:*
udp    37040      0 *:bootpc                *:*
udp        0      0 *:filecast              *:*
udp        0      0 localhost:35280         *:*
udp        0      0 localhost:35298         *:*
udp        0      0 localhost:35302         *:*
udp        0      0 *:mdns                  *:*
udp        0      0 *:mdns                  *:*
udp        0      0 *:mdns                  *:*
udp        0      0 *:mdns                  *:*
udp        0      0 *:sunrpc                *:*
udp        0      0 localhost:35312         *:*
udp        0      0 localhost:35313         *:*
udp        0      0 *:ipp                   *:*
raw        0      0 *:icmp                  *:*                     7
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     13682  /var/run/xdmctl/dmctl/socket
unix  2      [ ACC ]     STREAM     LISTENING     13727  /tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     11397  /var/run/mdnsd
unix  2      [ ACC ]     STREAM     LISTENING     13736  /var/run/xdmctl/dmctl-:0/socket
unix  2      [ ACC ]     STREAM     LISTENING     157589 @/tmp/fam-alex-
unix  2      [ ACC ]     STREAM     LISTENING     12170  public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     12177  private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     12181  private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     12185  private/defer
unix  2      [ ACC ]     STREAM     LISTENING     12189  private/trace
unix  2      [ ACC ]     STREAM     LISTENING     12193  private/verify
unix  2      [ ACC ]     STREAM     LISTENING     15683  /tmp/ksocket-alex/kdeinit__0
unix  2      [ ACC ]     STREAM     LISTENING     15685  /tmp/ksocket-alex/kdeinit-:0
unix  2      [ ACC ]     STREAM     LISTENING     12197  public/flush
unix  2      [ ACC ]     STREAM     LISTENING     12201  private/proxymap
.... (abreviado)
unix  2      [ ACC ]     STREAM     LISTENING     12261  private/bsmtp
unix  2      [ ACC ]     STREAM     LISTENING     10289  /var/run/.resmgr_socket
unix  2      [ ACC ]     STREAM     LISTENING     12341  /var/lib/mysql/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     10078  /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     11660  /var/run/nscd/socket

Recuerda, que si deshabilitas un servicio estás también deshabilitando esa función. Por ejemplo, si detienes el servicio “apache2” tu sistema ya no ofrecerá páginas web.

Anuncios
One Comment

Trackbacks

  1. Optimizar los servicios en Linux (Parte 2) « MicroTeknologias

Los comentarios están cerrados.

A %d blogueros les gusta esto: