Bienvenidos a este capítulo del Curso de Linux para Hackers – Gestión de Servicios desde la Shell. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Conceptos que aprenderás en esta sección:

  1. Administración de servicios con systemctl: cómo iniciar, detener, habilitar y deshabilitar servicios del sistema.
  2. Verificación del estado de servicios: comprobar el estado de los servicios para asegurarse de que estén activos o detenidos.
  3. Configuración de firewall para servicios específicos: cómo permitir la comunicación a través de puertos específicos (como el puerto 80 para Apache).
  4. Ejercicio práctico con MariaDB: pasos para instalar, configurar y habilitar el servicio MariaDB y abrir el puerto de firewall para el acceso remoto.

Administración de Servicios

El proceso con PID 1 llamado systemd, dijimos que este proceso arranca una serie de servicios del sistema operativo de los cuales hacemos uso normalmente, tanto como usuarios comunes o como administradores del sistema. Además de iniciar los servicios al arranque del sistema, ―systemd nos permite administrarlos de una forma muy conveniente y sencilla.

systemd es el sistema de inicio y gestor de servicios predeterminado en la mayoría de distribuciones modernas de Linux, como Ubuntu, Debian, CentOS y Fedora. Su propósito principal es administrar el arranque del sistema, manejar procesos y servicios, y también gestionar recursos y dependencias de una manera centralizada.

Comandos Básicos de systemd

La herramienta principal para trabajar con systemd en la terminal es systemctl, que permite administrar servicios y obtener información sobre el sistema y el estado de los procesos.

Aquí tienes los usos más comunes de systemd y ejemplos de cómo utilizar systemctl.

Administración de Servicios

  1. Iniciar un servicio: Para iniciar un servicio específico, usa el siguiente comando. Por ejemplo, para iniciar nginx:
    • sudo systemctl start nginx
  2. Detener un servicio: Esto detendrá el servicio de inmediato. Siguiendo con el ejemplo de nginx:
    • sudo systemctl stop nginx
  3. Reiniciar un servicio: Útil cuando necesitas reiniciar un servicio después de cambios en su configuración:
    • sudo systemctl restart nginx
  4. Recargar la configuración de un servicio sin interrumpirlo: Si el servicio permite la recarga de configuración sin necesidad de reiniciarse, puedes utilizar:
    • sudo systemctl reload nginx
  5. Habilitar un servicio para que inicie al arranque: Este comando asegura que el servicio esté activo cada vez que el sistema arranque:
    • sudo systemctl enable nginx
  6. Deshabilitar un servicio para que no inicie al arranque: Esto detiene el servicio de iniciar automáticamente al arrancar:
    • sudo systemctl disable nginx
  7. Reiniciar el servicio solo si está activo: Para evitar interrupciones en servicios que no están en ejecución, usa:
    • sudo systemctl try-restart nginx
  8. Iniciar un servicio solo si está detenido: Este comando inicia el servicio solo si no está en ejecución actualmente:
    • sudo systemctl start nginx || echo "Nginx ya está en ejecución"

Verificar el Estado de Servicios y Unidades

  1. Comprobar el estado de un servicio: Esto muestra información detallada sobre el estado del servicio, incluyendo errores recientes y registros:
    • systemctl status nginx
  2. Ver el estado de todos los servicios: Para obtener una lista de todos los servicios, su estado y si están activados para iniciar al arranque:
    • systemctl list-units --type=service
  3. Ver dependencias de un servicio: Para conocer las dependencias de un servicio y cómo se relaciona con otros procesos:
    • systemctl list-dependencies nginx
  4. Monitorear servicios fallidos: Esto muestra todos los servicios que han fallado desde el último arranque:
    • systemctl --failed

3. Gestión de Unidades de systemd

  1. Recargar systemd para aplicar cambios: Después de editar o crear archivos de unidad, recarga systemd para aplicar los cambios:
    • sudo systemctl daemon-reload
  2. Verificar y depurar dependencias de una unidad: El siguiente comando muestra las dependencias de una unidad y puede ayudarte a identificar posibles problemas en el arranque:
    • systemctl show -p After <unidad>

4. Control de la Secuencia de Inicio

  1. Reiniciar el sistema: Para reiniciar el sistema operativo completo con systemd:
    • sudo systemctl reboot
  2. Apagar el sistema: Este comando apaga el sistema usando systemd:
    • sudo systemctl poweroff
  3. Cambiar a un «target» específico: Los «targets» en systemd son como los «runlevels» en sistemas SysV, definiendo estados específicos del sistema (como graphical.target o multi-user.target). Para cambiar al modo multiusuario (sin interfaz gráfica):
    • sudo systemctl isolate multi-user.target
  4. Ver y cambiar el nivel de ejecución o «target» predeterminado: Puedes verificar cuál es el «target» actual con:
    • systemctl get-default
    • Y cambiar el «target» predeterminado para que el sistema arranque en modo gráfico (o en otro target):
      • sudo systemctl set-default graphical.target

5. Monitoreo de Logs del Sistema

  1. Ver logs del sistema en tiempo real: journalctl es la herramienta de systemd para acceder a los registros de logs. Para ver los logs en tiempo real, usa:
    • journalctl -f
  2. Ver logs específicos de un servicio: Esto es útil para verificar errores y mensajes específicos de un servicio, como nginx:
    • journalctl -u nginx
  3. Limitar los logs a una fecha específica: Si deseas ver los logs de una fecha o tiempo específico, puedes usar opciones de filtrado:
    • journalctl --since "2023-01-01" --until "2023-01-02"

6. Resumir: Comandos de Gestión Básica

ComandoDescripción
systemctl start <servicio>Iniciar un servicio.
systemctl stop <servicio>Detener un servicio.
systemctl restart <servicio>Reiniciar un servicio.
systemctl enable <servicio>Habilitar un servicio al arranque.
systemctl disable <servicio>Deshabilitar un servicio al arranque.
systemctl status <servicio>Ver el estado de un servicio.
systemctl daemon-reloadRecargar la configuración de systemd.
systemctl list-unitsListar unidades activas (servicios, sockets).
journalctl -u <servicio>Ver logs específicos de un servicio.

Con estos comandos y técnicas, puedes administrar efectivamente los servicios, procesos y el estado general del sistema usando systemd.

El comando systemd tiene más opciones que puedes explorar

systemd --help

También  te recomendamos consultar las páginas man para este comando:

 man systemd

Inicio y Detención de Servicios

Para la manipulación de los servicios utilizaremos el comando ―systemctl seguido de algunas opciones muy sencillas. Con ―start seguido del nombre del servicio lo iniciamos y con ―stop lo detenemos. Pero como sabemos si realmente está funcionando? Para eso existe la opción ―status.

Como era de esperarse el sistema me indica que el servicio se encuentra detenido. Una opción muy importante es la de habilitar un servicio, esto se hace mediante la opción ―enable y significa que el servicio arrancará automáticamente una vez que reiniciemos el sistema. Por el contrario la opción ―disable elimina del ―listado de arranque al servicio para que no se inicie cada vez que reiniciamos el sistema por lo cual deberemos hacerlo manualmente en caso de

desearlo. Por último, para poder ver la lista de servicios disponibles se ejecuta el comando ―systemctl―, dado que la lista es largo pueden combinarlo con el comando ―grep utilizando | como hemos visto anteriormente.

Volviendo a nuestro caso de estudio, vamos a dejarlo habilitado para poder utilizarlo sin tener que estar iniciándolo cada vez que reiniciemos el sistema

Vamos nuevamente a iniciarlo para poder comprobar que nuestro Apache se encuentra funcionando correctamente. Lo que haremos ahora es probar si podemos acceder con nuestro navegador web, ya sea Internet Explorer, Firefox o Chrome. Para ello deben abrirlo y en la barra de navegación poner la IP que tienen en su instancia de máquina virtual con Linux, la misma que pusieron en putty para poder acceder a la misma vía ssh.

Si no aparece esto implica que debemos habilitar el puerto donde está escuchando el servidor apache (puerto 80) , para ello vamos a ejecutar el siguiente comando: ―firewall-cmd –zone=public –add-port=80/tcp –permanent

Con esto le decimos al firewall que queremos recibir comunicaciones en el puerto indicado y que sea persistente , es decir que sobreviva a un reboot. Luego tenemos que reiniciar el firewall con el siguiente comando:

―firewall-cmd –reload

Este comando tiene más opciones que puedes explorar

systemctl --help

También  te recomendamos consultar las páginas man para este comando:

 man systemctl

Hagamos un Ejercicio

1) Instalar el paquete MaríaDB utilizando el comando apt

2) Configurar MariaDB como servicio habilitado (que se inicie automáticamente luego de un reboot) e iniciar el servicio.

3) Verificar que el servicio esté ejecutándose, ya sea mediante la utilidad provista por ―systemd o listando los procesos.

4) Abrir el puerto de firewall necesario para poder acceder a la base de datos MariaDB remotamente.

Resumen de los puntos clave:

  1. Administración de servicios con systemd y systemctl
    El proceso systemd (PID 1) administra los servicios que inician automáticamente con el sistema operativo. systemctl permite controlar estos servicios:
    • systemctl start <servicio>: inicia un servicio.
    • systemctl stop <servicio>: detiene un servicio.
    • systemctl status <servicio>: verifica si el servicio está activo o detenido.
    • systemctl enable <servicio>: configura el servicio para que arranque automáticamente al iniciar el sistema.
    • systemctl disable <servicio>: deshabilita el inicio automático del servicio.
  2. Listado de servicios
    Para ver una lista de todos los servicios del sistema, utiliza systemctl. La salida puede ser larga, por lo que puedes filtrar los resultados con grep (por ejemplo, systemctl | grep apache).
  3. Acceso y configuración de Apache
    Una vez que se inicie el servicio Apache, accede a él a través de la IP de la instancia de Linux en un navegador. Si Apache no se carga, es posible que sea necesario abrir el puerto 80 con:
    • códigofirewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
      Esto permite que el firewall acepte conexiones en el puerto 80 y se mantiene activo tras reiniciar.
  4. Ejercicio con MariaDB
    • Instalar MariaDB: con sudo apt install mariadb-server.
    • Habilitar MariaDB: usa systemctl enable mariadb para configurarlo como un servicio que arranque automáticamente.
    • Iniciar MariaDB: ejecuta systemctl start mariadb.
    • Verificar estado: utiliza systemctl status mariadb o ps aux | grep mariadb para comprobar si está activo.
    • Abrir puerto para MariaDB: el puerto predeterminado de MariaDB es el 3306. Para permitir conexiones remotas, abre este puerto con:
      • firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload

Con estos pasos, puedes administrar servicios de sistema y configurar el firewall para aceptar conexiones de servicios específicos en Linux.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

Preguntas

  1. ¿Cuál es la función del proceso systemd y qué papel tiene en la administración de servicios en Linux?
  2. ¿Para qué se usa el comando systemctl y cuáles son sus opciones principales?
  3. ¿Cómo se inicia y detiene un servicio usando systemctl?
  4. ¿Cómo verificar si un servicio está funcionando mediante systemctl?
  5. ¿Qué implica habilitar un servicio con systemctl enable y en qué caso se usa?
  6. ¿Cómo se deshabilita un servicio para que no se ejecute al iniciar el sistema?
  7. ¿Cómo se listan los servicios disponibles en el sistema usando systemctl y grep?
  8. ¿Para qué se utiliza el comando firewall-cmd en relación con los servicios?
  9. ¿Qué significa hacer persistente la apertura de un puerto en el firewall?
  10. ¿Cómo se reinicia el firewall después de realizar cambios con firewall-cmd?

Ejercicios

  1. Inicie un servicio utilizando systemctl y verifique su estado.
  2. Detenga un servicio con systemctl y luego verifique que el estado cambió.
  3. Habilite un servicio para que inicie automáticamente en el arranque y verifique que esté habilitado.
  4. Deshabilite un servicio para que no inicie automáticamente y confirme su estado con systemctl.
  5. Utilice systemctl para listar todos los servicios activos y filtre la lista con grep para buscar un servicio específico.
  6. Ejecute systemctl status <nombre del servicio> para verificar si un servicio está activo, y explique la salida obtenida.
  7. Instale el paquete MariaDB usando apt y luego configúrelo para iniciar automáticamente con systemctl enable.
  8. Abra el puerto 3306 en el firewall para MariaDB usando firewall-cmd y confirme que esté abierto.
  9. Reinicie el firewall con firewall-cmd --reload y verifique que el puerto configurado siga abierto.
  10. Consulte systemctl --help y mencione tres opciones adicionales que pueden ser útiles en la administración de servicios.

Respuestas a las Preguntas

  1. Función de systemd: Es el primer proceso iniciado en Linux (PID 1) y administra el arranque de servicios del sistema, facilitando su inicio, detención, y supervisión.
  2. Uso de systemctl: Administra servicios en Linux; las opciones principales son start, stop, enable, disable, y status.
  3. Iniciar y detener servicio con systemctl: Usar systemctl start <nombre del servicio> para iniciar y systemctl stop <nombre del servicio> para detener.
  4. Verificar estado de un servicio: Usar systemctl status <nombre del servicio> para comprobar si está activo o detenido.
  5. systemctl enable: Habilita un servicio para que arranque automáticamente tras reiniciar el sistema.
  6. Deshabilitar servicio: systemctl disable <nombre del servicio> evita que el servicio se inicie al arrancar.
  7. Listar servicios y filtrar con grep: systemctl | grep <nombre> lista todos los servicios y filtra según el nombre o criterio indicado.
  8. Uso de firewall-cmd: Permite abrir puertos en el firewall para que los servicios puedan recibir conexiones externas.
  9. Persistencia en firewall: Indica que el cambio (como abrir un puerto) permanece después de reiniciar el sistema.
  10. Reiniciar el firewall: firewall-cmd --reload aplica cambios de configuración sin reiniciar todo el sistema.

Respuestas a los Ejercicios

  1. Iniciar un servicio y verificar su estado: systemctl start apache2 y verificar con systemctl status apache2.
  2. Detener servicio y verificar estado: systemctl stop apache2, y luego comprobar con systemctl status apache2 para ver que esté detenido.
  3. Habilitar servicio en el arranque: systemctl enable apache2 asegura que el servicio inicie al reiniciar. Verificar con systemctl is-enabled apache2.
  4. Deshabilitar servicio en el arranque: systemctl disable apache2 desactiva el arranque automático; verificar con systemctl is-enabled apache2.
  5. Listar servicios activos y filtrar con grep: systemctl | grep apache2 lista solo servicios que coinciden con “apache2”.
  6. Verificar estado de un servicio con systemctl status: systemctl status apache2 muestra si está activo, su PID, y los registros recientes.
  7. Instalar MariaDB y configurarlo para arranque automático: sudo apt install mariadb-server seguido de systemctl enable mariadb.
  8. Abrir el puerto 3306 para MariaDB: firewall-cmd --zone=public --add-port=3306/tcp --permanent y confirmar con firewall-cmd --list-ports.
  9. Reiniciar firewall y verificar puerto abierto: firewall-cmd --reload y confirmar con firewall-cmd --list-ports.
  10. Opciones adicionales de systemctl:
    • restart: Reinicia un servicio.
    • reload: Recarga la configuración sin detener el servicio.
    • list-units: Muestra todos los servicios, tanto activos como inactivos.

No te detengas, sigue avanzando

Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

Hacker de 0 a 100 desde las bases hasta conseguir empleo

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

Saludos amigos y happy hacking!!!