Servicios en Linux
Profa. Hazem Álvarez Rodríguez
Diseño de título y contenido con lista
1. ¿Qué es un Servicio de Linux? 7. ¿Cómo listar servicios en Linux?
2. Init 8. Estados de los servicios en
3. Niveles de ejecución-INIT Linux
4. Systemd 9. Gestión de servicios
5. Instalación y utilidades de
Systemd [Link]
6. Systemctl & Systemd
11. Verificar el puerto de un servicio
HAR -AdmonSegSO 2022A 2
HAR -AdmonSegSO 2022A 3
Es un programa que se ejecuta en segundo plano, fuera
del control interactivo de los usuarios del sistema, ya
que carecen de una interfaz.
Esto con el fin de proporcionar aún más seguridad, pues
algunos de estos servicios son cruciales para el
funcionamiento del sistema operativo.
En sistemas como Unix o Linux, los servicios también se
conocen como daemons. A veces el nombre de estos
servicios, o daemons, terminan con la letra d.
Por ejemplo, sshd es el nombre del servicio que maneja
SSH. HAR -AdmonSegSO 2022A 4
Init
Init es el padre de todos los procesos de Linux. Es el primer
proceso que se inicia cuando un ordenador se inicia y se ejecuta
hasta que el sistema se apaga.
Es el antepasado de todos los demás procesos.
Su función principal es crear procesos a partir de un script
almacenado en el fichero /etc/inittab.
Tal archivo usualmente almacena entradas que causan que Init
genere gettys en cada línea en la que los usuarios pueden ingresar.
También controla los procesos autónomos requeridos por
cualquier sistema en particular.
HAR -AdmonSegSO 2022A 5
Recuperado de [Link]
Niveles de ejecución-INIT
O runlevel es la configuración de sw del sistema que permite ejecutar sólo un grupo seleccionado
de procesos. Los procesos generados por Init para cada uno de estos niveles de ejecución se
definen en el fichero /etc/inittab. Init puede estar en uno de los ocho niveles de ejecución (0 a 6 y S o
s).
El nivel de ejecución se cambia haciendo que un usuario privilegiado ejecute Telinit, ya que envía
las señales apropiadas a Init, indicando a qué nivel de ejecución cambiar.
Los niveles de ejecución 0, 1 y 6 están reservados.
El nivel de ejecución 0 se utiliza para detener el sistema, el nivel de ejecución 6 se utiliza para reiniciar
el sistema y el nivel de ejecución 1 se utiliza para poner el sistema en modo monousuario.
El nivel de ejecución S no está destinado a ser utilizado directamente sino por los scripts que se
ejecutan al entrar en el nivel de ejecución 1.
Los niveles de ejecución 7 a 9 también son válidos, aunque no están bien documentados porque las
variantes «tradicionales» de Unix no los utilizan. Los niveles S y s son los mismos. Internamente, son
alias para el mismo nivel de ejecución.
HAR -AdmonSegSO 2022A 6
Recuperado de [Link]
Systemd
✓ Es un conjunto de demonios o daemons de administración de sistema, bibliotecas y
herramientas diseñados como una plataforma de administración y configuración central
para interactuar con el núcleo del Sistema operativo GNU/Linux.
✓ Descrito como un "bloque de construcción básico" para un sistema operativo.
✓ Se puede utilizar como un sistema de inicio de Linux (init llamado por el núcleo o kernel de
Linux para inicializar el espacio de usuario durante el proceso de arranque de Linux y
gestionar posteriormente todos los demás procesos).
✓ El nombre systemd se adhiere a la convención Unix de distinguir los
demonios fácilmente por tener la letra d como la última letra del nombre
de archivo
✓ Es un administrador de sistemas y servicios diseñado específicamente
para el kernel de Linux.
✓ Reemplaza el proceso de inicio para convertirse en el primer proceso
✓ PID = 1, ´init’ se refiere a ‘sysvinit’.
✓ Este se ejecuta en el espacio del usuario durante el proceso de inicio de
Linux.
HAR -AdmonSegSO 2022A
Recuperado de [Link]
7
Durante años, init siguió siendo un
sistema perfecto para activar y desactivar
sistemas basados en Linux. Pero a
medida que pasaba el tiempo, el sistema
se volvió lento e inflexible para los
nuevos equipos.
Por lo tanto, se propuso upstart en 2006 y systemd en 2010 para reemplazar el
sistema init existente y ampliamente utilizado. Ambos sistemas tenían sus
propios partidarios, y después de un largo conflicto systemd fue elegido como
el nuevo sistema para reemplazar init.
Systemd vs Init Cheatsheet muestra una comparación entre los comandos en
dos sistemas.
HAR -AdmonSegSO 2022A 8
Recuperado de [Link]
HAR -AdmonSegSO 2022A 9
Recuperado de [Link]
HAR -AdmonSegSO 2022A Recuperado de [Link] 10
Instalación y utilidades de Systemd
Las utilidades con las que cuenta systemd, son:
Ahora systemd viene
habilitado de forma
predeterminada en varios 1. Systemctl, controla el sistema y los servicios de
sistemas basados en Linux systemd.
como Arch, Debian, Fedora 2. Journalctl, administra el diario del propio sistema
y Ubuntu. de registro de systemd
Se puede 3. Hostnamectl, Controla el nombre de host.
instalar systemd
manualmente si 4. Localectl, configura la distribución local y del
busca una teclado del sistema.
versión 5. Timedatectl, establece la hora y la fecha.
específica. 6. Systemd-cgls, muestra el contenido de cgroup.
7. Systemadm, front-end para el comando systemctl.
HAR -AdmonSegSO 2022A Recuperado de [Link] 11
Systemctl & Systemd
Systemctl es una utilidad utilizada por systemd para
administrar el sistema y el administrador de servicios.
Muchas distribuciones de Linux como Ubuntu, Debian,
Fedora, Linux Mint, OpenSuSE, Redhat han adoptado
systemd como su sistema de inicio predeterminado.
Systemctl puede iniciar, detener, recargar, reiniciar el
servicio, enumerar unidades, verificar el estado del servicio,
habilitar / deshabilitar el servicio, administrar objetivos
(niveles de ejecución) y administración de energía.
HAR -AdmonSegSO 2022A 12
¿Cómo listar servicios en Linux?
Para listar los servicios se debe emplear el usuario root,
su
1. Ejecutaremos el comando para mostrar todos los servicios
systemctl list-unit-files --type service --all
2. A continuación se mostraran todos los servicios con un estado
especifico como:
• Enabled,
• Static,
• Disabled,
• Etc.
Recuperado de [Link]
HAR -AdmonSegSO 2022A 13
Los datos que se pueden consultar en el listado son:
✓ La columna LOAD, muestra información sobre si los servicios están cargados o
no. El valor loaded indica que el archivo de configuración del servicio ha sido
procesado. El valor not-found indica lo contrario.
✓ Columna ACTIVE podremos ver si un servicio está activo o inactivo.
✓ Columna SUB complementa la información de la columna ACTIVE detallando
con más precisión el estado de cada servicio. En esta columna se encuentran
los siguientes valores:
a. Running. El servicio se está activo y ejecutándose en estos momentos.
b. Exited, El servicio se ha ejecutado en algún momento, pero en estos
momentos systemd no es capaz de detectar si el servicio está
corriendo. Este caso se acostumbra a dar cuando por ejemplo se carga
el fichero de configuración del servicio y a posteriori el servicio pasa a
ser controlado por el kernel sin la necesidad que ningún demonio esté
corriendo.
c. Dead. El servicio está completamente inactivo.
HAR -AdmonSegSO 2022A Recuperado de [Link] 14
Estados de los servicios en Linux
•Servicios habilitados (Enabled) son los que se están ejecutando
actualmente y generalmente estos no tienen problemas.
•Servicios deshabilitados (Disabled) son los que no están activos,
pero se pueden activar en cualquier momento sin ningún
problema.
•Servicios enmascarados (Masked) no se ejecutarán a menos que les
quite esa propiedad.
•Servicios estáticos (Static) solo se utilizarán en caso de que otro
servicio o unidad los necesite.
•Servicios generados (generated) a través de un initscript SysV o LSB
con el generador systemd.
HAR -AdmonSegSO 2022A 15
sudo systemctl | grep running
Revisar e iniciar servicios
En el caso que encuentren estados no mencionados, pueden obtener
información en la terminal y ejecutando el siguiente comando:
man systemctl
REVISAR LOS SERVICIOS ACTIVOS
Para saber cuáles son los servicios que están activos, se puede usar el
comando,
sudo systemctl | grep running
INICIAR UN SERVICIO
sudo systemctl star [nombre_servicio]
HAR -AdmonSegSO 2022A 16
sudo systemctl | grep running
Detener, verificar, habilitar y
deshabilitar servicios
DETENER UN SERVICIO
sudo systemctl stop [nombre-_servcio]
VERIFICAR EL ESTADO DE UN SERVICIO
sudo systemctl status [nombre_servicio]
HABILITAR UN SERVICIO
sudo systemctl enable [nombre_servicio]
DESHABILITAR UN SERVICIO
sudo systemctl disable [nombre-_servcio]
HAR -AdmonSegSO 2022A 17
Servicios fallidos
Para obtener un listado de la totalidad de servicios que fallan al
iniciar el sistema operativo hay que ejecutar el siguiente
comando,
systemctl list-unit-files --state=failed
Apagar o reiniciar el sistema
systemctl halt
systemctl poweroff
HAR -AdmonSegSO 2022A systemctl reboot 18
CGroups
Systemd organiza y administra procesos con cgroups, un
mecanismo para limitar, contabilizar y aislar el uso de recursos
del Kernel. Es una colección de procesos que están sujetos a un
criterio común. Estos pueden ser jerárquicos y cada grupo hereda
límites de su padre. A medida que se generan nuevos procesos, se
convierten en miembros del cgroup del padre.
Cgroup recibe el nombre del servicio al que pertenece, y en
caso de que necesite eliminar un servicio, puede simplemente
eliminar su cgroup, eliminando todos sus procesos de una sola
vez.
HAR -AdmonSegSO 2022A 19
CGroups
El kernel de Linux proporciona acceso al CPU, memoria, entrada / salida
de disco, ancho de banda que se denomina subsistema o controlador de
recursos a través de estos cgroups.
El servicio cgconfig se utiliza para administrar jerarquías y cgroups en su
sistema. Para habilitar el servicio cgconfig con systemd, se ejecuta el
comando
systemctl enable [Link]
Y para verificar el estado o rastrear cualquier error, se ejecuta el comando
systemctl status [Link]
Nota: Para instalar las utilidades para administrar cgroups, necesita instalar el paquete libcgroup.
HAR -AdmonSegSO 2022A 20
Verificar el puerto de un servicio
El comando netstat muestra el estado de la red y las estadísticas del
protocolo.. Lo cual es muy útil para solucionar problemas y configurar la
red. Identificación de aplicaciones usando puertos en un sistema.
Los últimos sistemas operativos Linux tienen esta herramienta instalada
por defecto. Pero algunas de las instalaciones mínimas pueden no contener
esta herramienta. El paquete net-tolos proporciona el comando netstat para
las distribuciones de Linux más populares.
Instalar netstat → sudo apt update
sudo apt install net-tools/netstat –nat
HAR -AdmonSegSO 2022A 21
Ejecutar netsat
sudo netstat –tulpn
El comando anterior ayuda a encontrar servicios que se ejecutan
en varios puertos. Con esto es más fácil identificar si un servicio
está listado en un puerto o no. Los parámetros del comando son:
-t - Se utiliza para imprimir conexiones TCP.
-u - Se utiliza para imprimir conexiones UDP.
-l - Imprimir todos los sockets del servidor de escucha
-p - Imprime todos los nombres de PID / programa para
sockets
-n - No resuelve nombres de direcciones IP
HAR -AdmonSegSO 2022A 22
Gracias
Fuentes de información
1. Cómo instalar el comando netstat en Linux recuperado de [Link]
comando-netstat-en-linux/
2. ¿Qué es Linux Systemd y sus componentes? Recuperado de [Link]
y-sus-componentes/
3. Cómo administrar y listar servicios en Linux, recuperado de [Link]
4. Conocer el estado de un servicio o unidad con systemd en Linux, recuperado de
[Link]
5. Comandos Systemctl para administrar el servicio Systemd, recuperado de [Link]
6. Cómo habilitar o deshabilitar servicios al inicio de sesión, recuperado de
[Link]
HAR -AdmonSegSO 2022A 23