Cómo detener y deshabilitar servicios no deseados del sistema Linux


Construimos un servidor de acuerdo con nuestro plan y requisitos, pero ¿cuáles son las funciones previstas mientras construimos un servidor para que funcione de manera rápida y eficiente? Todos sabemos que al instalar un sistema operativo Linux, algunos paquetes y aplicaciones no deseados se instalan automáticamente sin el conocimiento del usuario.

Al construir un servidor, debemos preguntarnos qué necesitamos realmente de la caja. ¿Necesito un servidor web o un servidor FTP, un servidor NFS o un servidor DNS, un servidor de base de datos o algo más?

Aquí, en este artículo, discutiremos algunas de estas aplicaciones y servicios no deseados que quizás no necesite, pero que se instalan de forma predeterminada durante la instalación del sistema operativo y, sin saberlo, comienzan a consumir los recursos de su sistema.

Primero, sepamos qué tipo de servicios se están ejecutando en el sistema mediante los siguientes comandos.

[[email protected]]# ps ax
  PID TTY      STAT   TIME COMMAND
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:00  \_ [migration/0]
    4 ?        S      0:09  \_ [ksoftirqd/0]
    5 ?        S      0:00  \_ [migration/0]
    6 ?        S      0:24  \_ [watchdog/0]
    7 ?        S      2:20  \_ [events/0]
    8 ?        S      0:00  \_ [cgroup]
    9 ?        S      0:00  \_ [khelper]
   10 ?        S      0:00  \_ [netns]
   11 ?        S      0:00  \_ [async/mgr]
   12 ?        S      0:00  \_ [pm]
   13 ?        S      0:16  \_ [sync_supers]
   14 ?        S      0:15  \_ [bdi-default]
   15 ?        S      0:00  \_ [kintegrityd/0]
   16 ?        S      0:49  \_ [kblockd/0]
   17 ?        S      0:00  \_ [kacpid]
   18 ?        S      0:00  \_ [kacpi_notify]
   19 ?        S      0:00  \_ [kacpi_hotplug]
   20 ?        S      0:00  \_ [ata_aux]
   21 ?        S     58:46  \_ [ata_sff/0]
   22 ?        S      0:00  \_ [ksuspend_usbd]
   23 ?        S      0:00  \_ [khubd]
   24 ?        S      0:00  \_ [kseriod]
   .....

Ahora, echemos un vistazo rápido a los procesos que aceptan conexiones (puertos) usando el comando netstat como se muestra a continuación.

[[email protected]]# netstat -lp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 *:31138                     *:*                         LISTEN      1485/rpc.statd      
tcp        0      0 *:mysql                     *:*                         LISTEN      1882/mysqld         
tcp        0      0 *:sunrpc                    *:*                         LISTEN      1276/rpcbind        
tcp        0      0 *:ndmp                      *:*                         LISTEN      2375/perl           
tcp        0      0 *:webcache                  *:*                         LISTEN      2312/monitorix-http 
tcp        0      0 *:ftp                       *:*                         LISTEN      2174/vsftpd         
tcp        0      0 *:ssh                       *:*                         LISTEN      1623/sshd           
tcp        0      0 localhost:ipp               *:*                         LISTEN      1511/cupsd          
tcp        0      0 localhost:smtp              *:*                         LISTEN      2189/sendmail       
tcp        0      0 *:cbt                       *:*                         LISTEN      2243/java           
tcp        0      0 *:websm                     *:*                         LISTEN      2243/java           
tcp        0      0 *:nrpe                      *:*                         LISTEN      1631/xinetd         
tcp        0      0 *:xmltec-xmlmail            *:*                         LISTEN      2243/java           
tcp        0      0 *:xmpp-client               *:*                         LISTEN      2243/java           
tcp        0      0 *:hpvirtgrp                 *:*                         LISTEN      2243/java           
tcp        0      0 *:5229                      *:*                         LISTEN      2243/java           
tcp        0      0 *:sunrpc                    *:*                         LISTEN      1276/rpcbind        
tcp        0      0 *:http                      *:*                         LISTEN      6439/httpd          
tcp        0      0 *:oracleas-https            *:*                         LISTEN      2243/java         
....

En el resultado anterior, observa que es posible que algunas de las aplicaciones no las necesite en su servidor, pero aún se están ejecutando de la siguiente manera:

smbd y nmbd son demonios del proceso Samba. ¿Realmente necesita exportar smb share en Windows u otra máquina? ¡Si no! ¿Por qué se están ejecutando estos procesos? Puede eliminar estos procesos de forma segura y evitar que se inicien automáticamente cuando la máquina se inicie la próxima vez.

¿Necesita una comunicación bidireccional interactiva orientada a texto a través de Internet o una red de área local? ¡Si no! elimine este proceso y apáguelo para que no se inicie en el arranque.

¿Necesita iniciar sesión en otro host a través de la red? ¡Si no! Elimine este proceso y desactívelo para que no se inicie automáticamente en el arranque.

La ejecución de proceso remoto, también conocida como rexec, le permite ejecutar comandos de shell en una computadora remota. Si no necesita ejecutar un comando de shell en una máquina remota, simplemente finalice el proceso.

¿Necesita transferir archivos de un host a otro host a través de Internet? Si no, puede detener el servicio de forma segura.

¿Necesita montar diferentes sistemas de archivos automáticamente para abrir el sistema de archivos de red? ¡Si no! ¿Por qué se está ejecutando este proceso? ¿Por qué dejas que esta aplicación utilice tu recurso? Mata el proceso y deshabilita que se inicie automáticamente.

¿Necesita ejecutar NameServer (DNS)? Si no, ¿qué diablos te está obligando a ejecutar este proceso y permitir que consumas tus recursos? Primero elimine el proceso en ejecución y luego apáguelo para que no se ejecute en el arranque.

lpd es el demonio de la impresora que hace posible imprimir en ese servidor. Si no necesita imprimir desde el servidor, es probable que los recursos de su sistema se estén consumiendo.

¿Está ejecutando algún servicio inetd? Si está ejecutando una aplicación independiente como ssh que usa otra aplicación independiente como Mysql, Apache, etc., entonces no necesita inetd. mejor matar el proceso y deshabilitarlo comenzando la próxima vez automáticamente.

Portmap, que es una llamada a procedimiento remoto de computación en red abierta (ONC RPC) y utiliza el demonio rpc.portmap y rpcbind. Si estos procesos se están ejecutando, significa que está ejecutando el servidor NFS. Si el servidor NFS se ejecuta desapercibido, significa que los recursos del sistema se están agotando innecesariamente.

Cómo matar un proceso en Linux

Para matar un proceso en ejecución en Linux, use el comando "Kill PID". Pero, antes de ejecutar el comando Kill, debemos conocer el PID del proceso. Por ejemplo, aquí quiero encontrar un PID del proceso "cupsd".

[[email protected]]# ps ax | grep cupsd

1511 ?        Ss     0:00 cupsd -C /etc/cups/cupsd.conf

Por lo tanto, el PID del proceso "cupsd" es "1511". Para eliminar ese PID, ejecute el siguiente comando.

[[email protected]]# kill -9 1511

Para obtener más información sobre el comando kill con sus ejemplos, lea el artículo Una guía para eliminar el comando para finalizar un proceso en Linux

Cómo deshabilitar un servicio en Linux

En distribuciones basadas en Red Hat como Fedora y CentOS, utilice un script llamado "chkconfig" para habilitar y deshabilitar los servicios en ejecución en Linux.

Por ejemplo, desactivemos el servidor web Apache al iniciar el sistema.

[[email protected]]# chkconfig httpd off
[[email protected]]# chkconfig httpd --del

En las distribuciones basadas en Debian como Ubuntu, Linux Mint y otras distribuciones basadas en Debian, use un script llamado update-rc.d.

Por ejemplo, para deshabilitar el servicio Apache al inicio del sistema, ejecute el siguiente comando. Aquí la opción "-f" significa que la fuerza es obligatoria.

[[email protected]]# update-rc.d -f apache2 remove

Después de realizar estos cambios, el sistema se iniciará la próxima vez sin estos procesos UN-necesarios que, de hecho, estarán ahorrando recursos de nuestro sistema y el servidor será más práctico, rápido, seguro y protegido.

Eso es todo por ahora. Estaré aquí nuevamente con otro artículo interesante. Hasta entonces, estad atentos y conectados a Tecmint. No olvide enviarnos sus valiosos comentarios en la sección de comentarios.