¿De qué sirve saber algo, si usted no comparte lo que sabe?
Rubén Blades

Después de 211 visitas al post y 46 descargas de la imagen KVM (Gracias a todos los que participaron!), les comparto la solución, con su debida explicación al #SysArmyMx Challenge:

  • Configuramos nuestra VM con la imagen del disco descargada y la arrancamos; tecleamos F2 o Esc para ver los mensajes de arranque (durante la carga de plymouth). Un par de segundos después, empezaremos a ver los errores en la carga del SO
  • Al terminar, parece mostrarnos el login correctamente, pero al tratar de acceder, nos muestra el mensaje de error que nos proporciona una pista de lo que sucede
  • Al tratar de montar la partición linux, el modo de rescate nos indica que no lo encuentra, por lo que procedemos a montarlo manualmente
  • Al ejecutar chroot sobre la partición de rescate montada, observamos claramente el error

    • Entonces, como podemos observar, el comportamiento al arranque se debía a que la shell (intérprete de comandos) con la que debía levantar el sistema (/bin/bash) no se encontraba disponible. Esto mismo se nos mostraba al inicio de la carga de la VM, cuando, después del intento de login, el sistema nos mandaba el mensaje de error:
--- root: no shell: No such file or directory

Uno de los conceptos principales y básicos como SysAdmin, y que nos ayuda a comprender mejor este comportamiento, es el arranque del sistema. Tradicionalmente, las versiones basadas en System V, realizaban el arranque siguiendo el flujo mostrado hasta que el kernel ejecuta el proceso init, con el que se inicializan todos los procesos del sistema:

Actualmente, los sistemas basados en Systemd, realizan el arranque de manera similar, pero el primer proceso que ejecuta el kernel es systemd, quién se encarga de arrancar todos los procesos y servicios de forma simultánea:

El intéprete de comandos (bash) es el medio que utiliza el kernel para continuar el flujo del arranque, por lo que, como lo mencionamos anteriormente, los mensajes de error relacionados con la carga de unit files de systemd, más el mensaje de error en el login nos daban el indicio de la falla, la cual comprobamos con el proceso de rescate.

  • Para solucionar esta falla, simplemente restauramos el archivo y validamos que podamos ejecutar chroot:
  • Con la partición montada y enjaulada, configuramos la contraseña de root:

  • Al reiniciar, conforme nos mando mensaje de error originalmente, el sistema realizará el re-etiquetado de SELinux:

  • Después de este proceso, el arranque es correcto y podemos hacer login en el sistema:

  • Con el sistema funcionando, podemos realizar la configuración que nos han solicitado:

hostname

# hostnamectl set-hostname host01.sysarmy.mx

kernel

Para actualizar el kernel a la versión solicitada, había que actualizar el SO; éste, es uno de los pasos más recomendados, pero a veces (debido a alguna aplicación hecha en casa o restricciones en las políticas de seguridad para la aplicación de patches) no se aplica. Lo mejor, conforme a las mejores prácticas, es hacerlo al menos dos veces por año en la medida de lo posible. Para esto ejecutamos:

# yum update

network

Para realizar la configuración de la red, conforme un post de hace algunos años, modificamos el archivo de configuración de la nic (/etc/sysconfig/network-scripts/ifcfg-eth0):

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
PREFIX=24
IPADDR=192.168.122.10
DNS1=192.168.122.1
GATEWAY=192.168.122.1

webpage

Esta parte del reto, tiene dos partes en la solución: la más obvia y sencilla (instalar el servidor web [apache]), y, si queremos hacerlo más pro: configurar el firewall del sistema, para que sólo permita conexiones por el puerto de servicio del servidor web:

* apache*

Para instalar el servidor web apache, simplemente se ejecuta:

# yum install httpd

Para posteriormente crear la página de inicio del servicio:

# echo "Hola Mundo" > /var/www/html/index.html

Habilitamos y arrancamos el servicio y validamos que la página de inicio sea visible:

# systemctl enable httpd; systemctl start httpd
# curl http://127.0.0.1
Hola Mundo

firewall*

Para instalar el firewall, se ejecuta:

# yum install firewalld

Después de habilitar y arrancar el servicio, configuramos los servicios y puertos de acceso que deseamos:

# systemctl enable firewalld; systemctl start firewalld
# firewall-cmd --permanent --add-port={22/tcp,80/tcp,443/tcp}
# firewall-cmd --permanent --add-service={http,https,ssh}
# systemctl restart firewalld.service

# firewall-cmd --list-ports
22/tcp 80/tcp 443/tcp

Y validamos nuevamente que la página de inicio sea visible:

# curl http://127.0.0.1 
Hola Mundo

  • Al finalizar la configuración, reiniciamos el sistema y comprobamos que ésta perduren:

 

Además de la complejidad observada, la imagen KVM está configurada con el teclado en “Español Latinoamericano” lo cual, al conectarse por la consola, ocasionaba un pequeño inconveniente al teclear algunos comandos; se podía cambiar el teclado, pero no sentí que fuera un gran obstáculo 😉

Les comparto las evidencias de quienes terminaron el reto y mandaron su captura de pantalla:

Nuevamente, muchas gracias por participar, espero les haya gustado 🙂

P.D.: Que les pareció la lista de Blades en Spotify? 😉