Professional Documents
Culture Documents
TRAINING
The contents of this course and all its modules and related materials, including handouts
to audience members, are Copyright © 2016 Red Hat, Inc.
This instructional program, including all material provided herein, is supplied without
any guarantees from Red Hat, Inc. Red Hat, Inc. assumes no liability for damages or legal
action arising from the use or misuse of contents or details contained herein.
If you believe Red Hat training materials are being used, copied, or otherwise improperly
distributed please e-mail training@redhat.com or phone toll-free (USA) +1 (866) 626-2994
or +1 (919) 754-3700.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, Hibernate, Fedora, the
Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States
and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other
countries.
The OpenStack® Word Mark and OpenStack Logo are either registered trademarks/
service marks or trademarks/service marks of the OpenStack Foundation, in the United
States and other countries and are used with the OpenStack Foundation's permission.
We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the
OpenStack community.
Introducción xi
Red Hat Enterprise Linux Diagnostics and Troubleshooting ....................................... xi
Orientación sobre el entorno del trabajo de laboratorio en el aula ............................ xii
Internacionalización .............................................................................................. xiv
RH342-RHEL7.2-es-1-20160321 v
Red Hat Enterprise Linux Diagnostics and Troubleshooting
vi RH342-RHEL7.2-es-1-20160321
Resumen ............................................................................................................. 327
10. Solución de problemas de kernel 329
Volcados de error de kernel ................................................................................. 330
Ejercicio guiado: Creación de volcados de error de kernel ...................................... 340
Depuración de kernel con SystemTap ................................................................... 344
Ejercicio guiado: Depuración de kernel con SystemTap .......................................... 350
Trabajo de laboratorio: Solución de problemas de kernel ....................................... 354
Resumen ............................................................................................................. 361
11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting 363
Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting ....... 364
Trabajos de laboratorio de revisión integral .......................................................... 367
Trabajo de laboratorio: Ámsterdam — La aplicación personalizada no funciona ....... 368
Trabajo de laboratorio: Tokio — Problemas para registrarse en la consola ............... 373
Trabajo de laboratorio: París — Problemas de autenticación .................................. 376
Trabajo de laboratorio: Londres — Problema en el servidor web ............................ 381
Trabajo de laboratorio: Nueva York — Demoras en la red ...................................... 389
RH342-RHEL7.2-es-1-20160321 vii
viii
Convenciones del documento
Notas y advertencias
Nota
Las "notas" son consejos, atajos o enfoques alternativos para una tarea
determinada. Omitir una nota no debería tener consecuencias negativas, pero
quizás se pase por alto algún truco que puede simplificar una tarea.
Importante
En los cuadros "importantes", se detallan cosas que se olvidan con facilidad:
cambios de configuración que solo se aplican a la sesión actual o servicios que
se deben reiniciar para poder aplicar una actualización. Omitir un cuadro con la
etiqueta "Importante" no provocará pérdida de datos, pero puede causar irritación y
frustración.
Advertencia
No se deben omitir las "advertencias". Es muy probable que omitir las advertencias
provoque la pérdida de datos.
Referencias
En las "referencias", se describe el lugar donde se puede encontrar documentación
externa relevante para un tema.
RH342-RHEL7.2-es-1-20160321 ix
x
Introducción
Red Hat Enterprise Linux Diagnostics and
Troubleshooting
En Red Hat Enterprise Linux Diagnostics and Troubleshooting (RH342) los administradores
de sistemas podrán encontrar herramientas y técnicas que necesitan para diagnosticar y
solucionar correctamente una variedad de problemas que puedan surgir. Los estudiantes
examinarán problemas de varios subsistemas para diagnosticar y solucionar problemas
comunes. Este enfoque luego se utiliza para solucionar varios tipos de problemas, incluidos
problemas de arranque, problemas de hardware, problemas de almacenamiento, problemas
de RPM, problemas de red, problemas con aplicaciones de terceros, problemas de
seguridad y problemas de kernel. Al final del curso, los estudiantes pueden completar varios
laboratorios de revisión integrales para evaluar sus conocimientos.
Objetivos
• Diagnosticar problemas en varios subsistemas en sistemas RHEL7 mediante herramientas
proporcionadas con la distribución.
• Solucionar problemas en una máquina de Red Hat Enterprise Linux mediante las
herramientas proporcionadas por la distribución.
• Preparar a los estudiantes para el Examen de certificación de Red Hat Enterprise Linux
Diagnostics and Troubleshooting (EX342).
Destinatarios
• El curso Red Hat Enterprise Linux Diagnostics and Troubleshooting está diseñado para
los administradores de sistemas sénior que desean aprender más sobre la solución de
problemas.
Requisitos previos
• Se requiere una certificación RHCSA, o conocimientos equivalentes, para asistir a este
curso.
RH342-RHEL7.2-es-1-20160321 xi
Introducción
Los sistemas que utilizan los estudiantes emplean una subred IPv4 privada. Para cada
estudiante, su red IPv4 es 172.25.250.0/24.
Estados de la máquina
Estado Descripción
none (ninguno) Todavía no se ha iniciado su máquina. Cuando se inicie, su máquina
arrancará en un estado recientemente inicializado (el disco se habrá
reiniciado).
starting (en inicio) Su máquina está por arrancar.
running (en Su máquina se está ejecutando y está disponible (o bien, cuando
ejecución) arranque, pronto lo estará).
stopping (en Su máquina está por apagarse.
detención)
stopped (detenida) Su máquina se ha apagado completamente. Al iniciarse, su máquina
arrancará en el mismo estado en el que estaba cuando se apagó (el
disco se habrá preservado).
impaired (afectada) No se puede realizar una conexión de red en su máquina. En
general, este estado se logra cuando un estudiante ha corrompido
las reglas de conexión de la red o del cortafuegos. Si se restablece la
xii RH342-RHEL7.2-es-1-20160321
Orientación sobre el entorno del trabajo de laboratorio en el aula
Estado Descripción
máquina y el estado permanece, o si es intermitente, deberá abrir
un caso de soporte.
Según el estado de su máquina, tendrá disponibles una selección de las siguientes acciones.
Acciones de la máquina
Acción Descripción
Start Station (Iniciar Iniciar ("encender") la máquina.
estación)
Stop Station Detener ("apagar") la máquina y preservar el contenido del disco.
(Detener estación)
Reset Station Detener ("apagar") la máquina y restablecer el disco de modo que
(Restablecer vuelva a su estado original. Precaución: Se perderá cualquier
estación) trabajo generado en el disco.
Actualización Si se actualiza la página, se volverá a realizar un sondeo del estado
de la máquina.
Increase Timer Agrega 15 minutos al temporizador para cada clic.
(Aumentar
temporizador)
Temporizador de la estación
Su inscripción al aprendizaje en línea de Red Hat le da derecho a una cierta cantidad de
tiempo de uso del equipo. Para ayudarlo a conservar su tiempo, las máquinas tienen un
temporizador asociado, que se inicializa en 60 minutos cuando se inicia su máquina.
RH342-RHEL7.2-es-1-20160321 xiii
Introducción
Internacionalización
Compatibilidad de idioma
Red Hat Enterprise Linux 7 admite oficialmente 22 idiomas: inglés, asamés, bengalí, chino
(simplificado), chino (tradicional), francés, alemán, guyaratí, hindi, italiano, japonés, canarés,
coreano, malayalam, maratí, oriya, portugués (brasileño), panyabí, ruso, español, tamil y
telugú.
Configuración de idioma
En el entorno de escritorio GNOME, posiblemente el usuario deba definir el idioma de su
preferencia y el método de entrada la primera vez que inicie sesión. Si no es así, la manera
más simple para un usuario individual de definir el idioma de su preferencia y el método de
entrada es usando la aplicación Region & Language (Región e idioma). Ejecute el comando
gnome-control-center region o en la barra superior, seleccione (User) (Usuario) >
Settings (Parámetros). En la ventana que se abre, seleccione Region & Language (Región e
idioma). El usuario puede hacer clic en la casilla Language (Idioma) y seleccionar el idioma
de su preferencia de la lista que aparece. Esto también actualizará la configuración Formats
(Formatos) mediante la adopción del valor predeterminado para ese idioma. La próxima vez
que el usuario inicie sesión, se efectuarán los cambios.
nota
Un usuario puede hacer que su entorno de shell use la misma configuración de
LANG que su entorno gráfico, incluso cuando inician sesión mediante una consola
de texto o mediante ssh. Una manera de hacer esto es colocar un código similar al
siguiente en el archivo ~/.bashrc del usuario. Este código de ejemplo definirá el
idioma empleado en un inicio de sesión en interfaz de texto, de modo que coincida
con el idioma actualmente definido en el entorno de escritorio GNOME del usuario.
Es posible que algunos idiomas, como el japonés, coreano, chino y otros con un
conjunto de caracteres no latinos, no se vean correctamente en consolas de texto
locales.
xiv RH342-RHEL7.2-es-1-20160321
Selección de idioma por usuario
Se pueden crear comandos individuales para utilizar otro idioma mediante la configuración
de la variable LANG en la línea de comandos:
La aplicación Region & Language (Región e idioma) también se puede usar para habilitar
métodos de entrada alternativos. En la ventana de la aplicación Region & Language (Región
e idioma), la casilla Input Sources (Fuentes de entrada) muestra los métodos de entrada
disponibles en este momento. De forma predeterminada, es posible que English (US) (Inglés
[EE. UU.]) sea el único método disponible. Resalte English (US) (Inglés [EE. UU.]) y haga clic en
el ícono de keyboard (teclado) para ver la distribución actual del teclado.
Para agregar otro método de entrada, haga clic en el botón +, en la parte inferior izquierda
de la ventana Input Sources (Fuentes de entrada). Se abrirá la ventana Add an Input Source
(Añadir una fuente de entrada). Seleccione su idioma y, luego, el método de entrada o la
distribución del teclado de su preferencia.
Una vez que haya más de un método de entrada configurado, el usuario puede alternar entre
ellos rápidamente escribiendo Super+Space (en ocasiones denominado Windows+Space).
Un indicador de estado en la barra superior de GNOME con dos funciones: por un lado, indica
el método de entrada activo; por el otro lado, funciona como un menú que puede usarse
para cambiar de un método de entrada a otro o para seleccionar funciones avanzadas de
métodos de entrada más complejos.
Algunos de los métodos están marcados con engranajes, que indican que tienen opciones de
configuración y capacidades avanzadas. Por ejemplo, el método de entrada japonés Japanese
(Kana Kanji) (japonés [Kana Kanji]) le permite al usuario editar previamente texto en latín
y usar las teclas de Down Arrow (flecha hacia abajo) y Up Arrow (flecha hacia arriba) para
seleccionar los caracteres correctos que se usarán.
El indicador también puede ser de utilidad para los hablantes de inglés de Estados Unidos.
Por ejemplo, dentro de English (United States) (Inglés [Estados Unidos]) está la configuración
del teclado English (international AltGr dead keys), que trata AltGr (o la tecla Alt derecha)
en un teclado de 104/105 teclas de una PC como una tecla "Bloq Mayús secundaria" y tecla
de activación de teclas muertas para escribir caracteres adicionales. Hay otras distribuciones
alternativas disponibles, como Dvorak.
RH342-RHEL7.2-es-1-20160321 xv
Introducción
nota
Cualquier carácter Unicode puede ingresarse en el entorno de escritorio GNOME,
si el usuario conoce el código Unicode del carácter, escribiendo Ctrl+Shift+U,
seguido por el código. Después de ingresar Ctrl+Shift+U, aparecerá una u
subrayada que indicará que el sistema espera la entrada del código Unicode.
Por ejemplo, la letra del alfabeto griego en minúscula lambda tiene el código U
+03BB y puede ingresarse escribiendo Ctrl+Shift+U, luego 03bb y, por último,
Enter.
Desde la línea de comandos, root puede cambiar la configuración local de todo el sistema con
el comando localectl. Si localectl se ejecuta sin argumentos, mostrará la configuración
local de todo el sistema actual.
xvi RH342-RHEL7.2-es-1-20160321
Paquetes de idiomas
Importante
Las consolas de texto locales como tty2 están más limitadas en las fuentes
que pueden mostrar que las sesiones gnome-terminal y ssh. Por ejemplo, los
caracteres del japonés, coreano y chino posiblemente no se visualicen como se
espera en una consola de texto local. Por este motivo, es posible que tenga sentido
usar el inglés u otro idioma con un conjunto de caracteres latinos para la consola de
texto del sistema.
De manera similar, las consolas de texto locales admiten una cantidad de métodos
de entrada también más limitada y esto se administra de manera separada desde
el entorno de escritorio gráfico. La configuración de entrada global disponible se
puede configurar mediante localectl tanto para consolas virtuales de texto
locales como para el entorno gráfico X11. Para obtener más información, consulte
las páginas del manual localectl(1), kbd(4) y vconsole.conf(5).
Paquetes de idiomas
Si utiliza un idioma diferente al inglés, posiblemente desee instalar "paquetes de idiomas"
adicionales para disponer de traducciones adicionales, diccionarios, etcétera. Para ver la
lista de paquetes de idiomas disponibles, ejecute yum langavailable. Para ver la lista de
paquetes de idiomas actualmente instalados en el sistema, ejecute yum langlist. Para
agregar un paquete de idioma adicional al sistema, ejecute yum langinstall code, donde
code (código) es el código en corchetes después del nombre del idioma en el resultado de
yum langavailable.
Referencias
Páginas del manual: locale(7), localectl(1), kbd(4), locale.conf(5),
vconsole.conf(5), unicode(7), utf-8(7) y yum-langpacks(8).
Las conversiones entre los nombres de las configuraciones X11 del entorno de
escritorio gráfico y sus nombres en localectl se pueden encontrar en el archivo /
usr/share/X11/xkb/rules/base.lst.
RH342-RHEL7.2-es-1-20160321 xvii
Introducción
xviii RH342-RHEL7.2-es-1-20160321
TRAINING
CAPÍTULO 1
¿QUÉ ES LA SOLUCIÓN DE
PROBLEMAS?
Visión general
Meta Describa una estrategia generalizada para la solución de
problemas.
Objetivos • Identificar un enfoque sistemático para resolver
problemas mediante el método científico.
RH342-RHEL7.2-es-1-20160321 1
Capítulo 1. ¿Qué es la solución de problemas?
Objetivos
Después de completar esta sección, los estudiantes podrán utilizar un enfoque sistemático a
la solución de problemas mediante el método científico.
El uso de un enfoque fijo garantiza que no se olviden los pasos importantes y que la solución
de problemas se vuelva un proceso repetible.
Aléjese un paso y vea el panorama completo; luego, defina el problema real con claridad.
La mayoría de los problemas que se informan son síntomas de otro problema, no el
problema real.
Por ejemplo, un usuario puede llamar porque no puede iniciar sesión en una máquina.
Aunque es un problema para el usuario, el problema real puede ser una contraseña
olvidada, una máquina configurada de manera incorrecta, un problema de red, etc. Se
necesita realizar una investigación para determinar la causa de este síntoma.
Una acción típica durante este proceso es intentar recrear el problema u observar el
problema cuando sucede.
2. Recopilar información
2 RH342-RHEL7.2-es-1-20160321
Uso del método científico
Por otro lado, recopilar demasiada información también es innecesario y puede resultar
contraproducente, ya que se deberá ver, evaluar e interpretar toda la información.
A veces puede ser fácil; por ejemplo, cuando un usuario olvida su contraseña. Otras
veces puede ser más difícil; por ejemplo, cuando un único servicio en un clúster de alta
disponibilidad tiene fallas en el arranque los lunes durante los meses que contienen
una "e" en su nombre. La clave que debe recordar durante este paso es que la hipótesis
es solo eso, una hipótesis: una conjetura con respecto a cuál puede ser la causa del
problema. Durante los siguientes pasos, se evaluará esta hipótesis. Si resulta que la
hipótesis era incorrecta, se puede formular una nueva.
4. Probar la hipótesis
Cuando formula una hipótesis inicial, se puede probar su validez. La manera en que se
realizan las pruebas depende del problema y de la hipótesis.
Por ejemplo, cuando la hipótesis para un problema de inicio de sesión indica que “la
conexión de red entre la estación de trabajo y el KDC se interrumpe por un firewall,”
las pruebas serán diferentes a las de una hipótesis para un servidor que se reinicia
espontáneamente y que incluye un UPS con fallas.
Si, después de las pruebas, la hipótesis parece ser verdadera, se realizará un intento
para solucionar el problema. Si se llega a la conclusión de que la hipótesis no es válida,
deberá formular una nueva hipótesis, posiblemente mediante el uso de información
adicional encontrada durante la prueba de la hipótesis anterior.
5. Solucionar el problema
6. Limpiar y repetir
RH342-RHEL7.2-es-1-20160321 3
Capítulo 1. ¿Qué es la solución de problemas?
4 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Uso del método científico
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder resolver un problema de inicio de sesión mediante el método científico.
Andes de comenzar
En su sistema workstation, ejecute el comando lab scientificmethod setup para
preparar sus sistemas para este ejercicio.
Durante el fin de semana, algunos de sus colegas han estado realizando mantenimiento
de usuarios. Esta mañana, uno de sus usuarios, student, llama al centro de ayuda para
reclamar que su inicio de sesión ya no está funcionando en servera.
Por lo general, el usuario inicia sesión con el nombre de cuenta student y, en contra de
todos los protocolos de seguridad, el usuario le informó que su contraseña también es
student.
Además, el usuario también le informó que el inicio de sesión sin contraseña en ssh
normalmente funciona desde la cuenta student en workstation.
Buscando los ajustes predeterminados para los usuarios de esta clase, descubre que el
directorio de inicio de este usuario debería estar configurado en /home/student, la UID y
GID deberían estar en 1000, y que el usuario prefiere la shell bash.
1.1. Desde un prompt de comando en workstation, intente utilizar ssh para iniciar
sesión en la cuenta student en servera. ¿Qué observa, y qué le indica esto?
1.2. Abra una ventana de la consola de servera e intente iniciar sesión como student
con la contraseña student. ¿Qué ocurre?
RH342-RHEL7.2-es-1-20160321 5
Capítulo 1. ¿Qué es la solución de problemas?
2. Ahora que sabemos que student puede autenticarse correctamente, pero la sesión
resultante se cierra de inmediato, es hora de recopilar más información sobre el sistema
servera.
2.1. Intente aplicar ssh en la cuenta root en el sistema servera desde workstation. Si
se necesita una contraseña, debería ser redhat.
2.2. Como root en servera, intente utilizar su - para cambiar a la cuenta student.
2.3. Dado que la cuenta root aún funciona, puede usar eso para recopilar información
adicional sobre la cuenta student. Compruebe la última vez que student inició
sesión correctamente.
2.4. Como root en servera, utilice la herramienta getent para inspeccionar los ajustes
del usuario student.
3.1. Observando el resultado getent, se da cuenta de que la shell del usuario está
configurada en /bin/false. Esta no es una shell válida, ni tampoco la shell que el
usuario prefiere.
6 RH342-RHEL7.2-es-1-20160321
5. Verifique su trabajo ejecutando el comando lab scientificmethod grade en
workstation.
RH342-RHEL7.2-es-1-20160321 7
Capítulo 1. ¿Qué es la solución de problemas?
Recopilación de información
Objetivos
Después de completar esta sección, los estudiantes podrán recopilar varios fragmentos de
información del sistema para ayudar en la solución de problemas.
Puede recopilar otra información de primera mano; por ejemplo, cuando recrea el problema,
cuando consulta la base de datos de RPM, cuando lee archivos de registro, etc. No toda
esta información estará disponible prontamente; a menudo, deberá configurar un servicio
para aumentar la cantidad de registros que realiza, o necesitará configurar el sistema para
almacenar información que normalmente se descartaría en un reinicio.
Para ver los mensajes del diario (journal) del sistema, puede usar una herramienta llamada
journalctl. Si se utiliza sin parámetros, mostrará todo el contenido del diario (journal) del
sistema, presentado en un paginador (por defecto, se utiliza less).
Puede usar los filtros para modificar para qué servicios y unidades se muestra la información,
para qué ejecutables se muestra información, etc.
Ejemplos de journalctl
journalctl -ef
Salta al final del diario (journal) (-e, y habilita el modo de seguimiento -f). Esto
mantendrá al diario (journal) abierto en la pantalla, mostrando nuevos mensajes a
medida que llegan.
journalctl _SYSTEMD_UNIT=sshd.service
Esto mostrará todos los mensajes generados por la unidad de systemd sshd.service.
journalctl -u sshd.service
Esto mostrará todos los mensajes generados por, y acerca de, la unidad de systemd
sshd.service.
8 RH342-RHEL7.2-es-1-20160321
Preservación del diario (journal)
journalctl -p emerg..err
Muestra todos los mensajes en el diario (journal) con una prioridad en el rango de emerg
hasta, e incluido, err.
Si se especifica una única prioridad, por ejemplo, -p err, se mostrarán todos los
mensajes hasta, e incluido, ese nivel.
journalctl -b -1
Solo muestra los mensajes del último arranque del sistema. Esto es útil para buscar
información acerca de un fallo en el sistema.
journalctl -o verbose
Utiliza el modo de resultado detallado (-o verbose). Esto mostrará todos los campos
almacenados en el diario (journal) con su nombre de campo y contenido.
Todos los nombres de campo pueden utilizarse como filtros en la línea de comandos
journalctl.
Para ver una lista completa de opciones y filtros, consulte la página del manual
journalctl(1).
RH342-RHEL7.2-es-1-20160321 9
Capítulo 1. ¿Qué es la solución de problemas?
Por lo general, las opciones de la línea de comandos incluyen -v, que a menudo puede
especificarse varias veces, para aumentar los detalles, o incluir una opción --debug que
puede utilizarse.
Consulte los documentos de estos servicios individuales para aumentar los niveles de
detalles y registros.
Advertencia
Cuando utiliza la opción de depuración para un servicio en /etc/
sysconfig/SERVICENAME, a menudo esa opción también evitará que el daemon
se desconecte de la terminal. Cuando se inicia dicho servicio mediante systemctl,
y el tipo de servicio se configura en forking, no se devolverá el comando
systemctl hasta que se borre el servicio al presionar Ctrl+C. En estos casos,
ejecutar un servicio manualmente desde la línea de comandos también puede ser
una opción.
Referencias
Páginas del manual journalctl(1), systemd.journal-fields(7) y systemd-
journald.service(8).
10 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Recopilación de información
En este trabajo de laboratorio, utilizará archivos de registro para resolver un problema con un
servidor web.
Recursos
Archivos /var/www/html/test.html
Máquinas • workstation
• servera
Resultados
Deberá poder utilizar archivos de registro para resolver un problema con un servidor web.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab logread setup en su
máquina workstation.
Su máquina servera está ejecutando un servidor web, que sirve al archivo http://
servera.lab.example.com/test.html. Recibió un ticket de su gerente de pruebas
en el que indicó que no se puede acceder a este archivo desde un explorador web. No se
proporcionó información adicional en el ticket.
1.2. Piense en las posibles causas del error de prohibición HTTP 403 que encontró.
Este error puede tener varias razones: permisos de archivos, tipos de SELinux,
configuraciones httpd internas, etc.
Sabe que el servidor web está ejecutándose, recibió una respuesta, y que el firewall
está abierto.
2. Recopile información de los registros del servidor web en servera. Los registros
principales para httpd son /var/log/httpd/access_log para todos los intentos de
acceso, y /var/log/httpd/error_log para todos los errores.
RH342-RHEL7.2-es-1-20160321 11
Capítulo 1. ¿Qué es la solución de problemas?
El 403 en el resultado es el código de estado HTTP. Aparte de eso, puede ver la URL
solicitada, la fecha y hora de la solicitud y el agente usuario utilizado, pero esta
información no lo ayuda con el problema.
Este mensaje le indica que httpd está bloqueado por los permisos del archivo y no
puede leer el archivo test.html. Esto descarta un error de configuración interno
para httpd, pero deja a los permisos del archivo y a SELinux como los posibles
acusados.
3.2. Esos permisos no parecen ser correctos. Permita que todos puedan leer el archivo.
3.4. Los permisos del archivo eran un problema, pero el problema aún no está resuelto.
Esto deja solo un posible acusado: SELinux.
12 RH342-RHEL7.2-es-1-20160321
...
type=AVC msg=audit(12/10/2015 10:41:19.890:3045) : avc: denied {open} for
pid=32712 comm=httpd path=/var/www/html/test.html dev="vda1" ino=25245202
scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:tmp_t:s0
tclass=file
...
Esto muestra que el archivo test.html tiene un tipo SELinux de tmp_t, que httpd
no tiene permitido abrir.
5. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
RH342-RHEL7.2-es-1-20160321 13
Capítulo 1. ¿Qué es la solución de problemas?
Objetivos
Después de completar esta sección, los estudiantes podrán utilizar los recursos de Red Hat
para solucionar problemas.
Los clientes pueden trabajar con el portal de clientes de Red Hat a través de un navegador
web. En esta sección se presentará una herramienta de línea de comandos que también
puede utilizarse para obtener acceso a los servicios del portal de clientes de Red Hat,
redhat-support-tool.
Los administradores de sistema también pueden usar esta herramienta para recopilar
rápidamente información sobre sus propios sistemas.
Cuando se queda sin opciones, sosreport le pedirá al usuario sus iniciales, un número
de caso y, luego, recopilará un conjunto predeterminado de archivos y ajustes en un
tarball. Las opciones de la línea de comandos pueden utilizarse para habilitar o deshabilitar
complementos (plug-ins), configurar opciones de complementos (plug-ins) y hacer que el
proceso no sea interactivo.
Con sosreport -l puede solicitar una descripción completa de todos los complementos
(plug-ins), y si están habilitados o deshabilitados actualmente, junto con las opciones de
complementos (plug-ins). Cuando ejecuta un informe, puede usar la opción -e PLUGINS
para habilitar complementos adicionales, y puede usar la opción -k PLUGOPTS para
14 RH342-RHEL7.2-es-1-20160321
Uso de redhat-support-tool para realizar búsquedas en la base de conocimientos
Type the number of the solution to view or 'e' to return to the previous menu.
RH342-RHEL7.2-es-1-20160321 15
Capítulo 1. ¿Qué es la solución de problemas?
Select a Solution: 1
Type the number of the section to view or 'e' to return to the previous menu.
1 Title
2 Issue
3 Environment
4 Resolution
5 Display all sections
End of options.
Section: 1
Title
===============================================================================
How to register and subscribe a system to Red Hat Network (RHN) using Red Hat
Subscription Manager (RHSM)?
URL: https://access.redhat.com/site/solutions/253273
(END) q
Title: How to register and subscribe a system to Red Hat Network (RHN) using Red Hat
Subscription Manager (RHSM)?
ID: 253273
State: Verified: This solution has been verified to work by Red Hat Customers and
Support Engineers for the specified product version(s).
URL: https://access.redhat.com/site/solutions/253273
: q
Los documentos arrojados en formato sin paginar pueden enviarse fácilmente a una
impresora, convertirse a PDF o a otro formato de documento, o redirigirse a un programa de
entrada de datos para seguimiento de incidentes o sistema de administración de cambios,
mediante el uso de otras utilidades instaladas y disponibles en Red Hat Enterprise Linux.
16 RH342-RHEL7.2-es-1-20160321
Uso de redhat-support-tool para administrar casos de asistencia
Defina el problema. Indique el problema y los síntomas con claridad. Sea lo más específico
posible. Detalle los pasos que reproducirían el problema.
Reúna información básica. ¿Qué producto y versión se ven afectados? Esté preparado para
brindar información de diagnóstico relevante. Esto puede incluir el resultado de sosreport,
que se abordó anteriormente en esta sección. En el caso de problemas del kernel, dicha
información podría incluir un vuelco de errores de kdump del sistema o una fotografía digital
del seguimiento de kernel mostrado en el monitor de un sistema bloqueado.
Determine el nivel de gravedad. Red Hat utiliza cuatro niveles de gravedad para clasificar
los problemas. Después de los informes de problemas con gravedad urgente y alta, debe
realizarse una llamada telefónica al centro de asistencia local pertinente (visite https://
access.redhat.com/site/support/contact/technicalSupport).
Gravedad Descripción
Urgente (Gravedad 1) Un problema que afecta gravemente al uso del software en un
entorno de producción (como la pérdida de datos de producción o
la parada de los sistemas de producción). La situación interrumpe
las operaciones empresariales y no existe un procedimiento de
resolución.
Alta (Gravedad 2) Un problema donde el software funciona, pero el uso en un entorno
de producción se ve gravemente reducido. La situación tiene un
gran impacto en parte de las operaciones empresariales y no existe
un procedimiento de resolución.
Media (Gravedad 3) Un problema que implica una pérdida parcial no fundamental de
la capacidad de uso del software en un entorno de producción o
desarrollo. Para los entornos de producción, hay un impacto de
mediano a bajo en el negocio, pero el negocio sigue funcionando,
incluso mediante el uso de una solución de proceso. Para entornos
de desarrollo, donde la situación está causando que el proyecto
continúe o no migre a la producción.
Baja (Gravedad 4) Un asunto de uso general, la comunicación de un error de
documentación o una recomendación para una mejora o
modificación futura del producto. Para entornos de producción,
el impacto en su negocio, en el rendimiento o en la funcionalidad
del sistema es de bajo a cero. Para los entornos de desarrollo, hay
un impacto de mediano a bajo en el negocio, pero el negocio sigue
funcionando, incluso mediante el uso de una solución de proceso.
RH342-RHEL7.2-es-1-20160321 17
Capítulo 1. ¿Qué es la solución de problemas?
detalles del caso, como producto, versión, resumen, descripción, gravedad y grupo de caso,
pueden asignarse con opciones de comandos o si se deja la solicitud de la herramienta de
información necesaria. En el siguiente ejemplo, se especifican las opciones --product y
--version, pero redhat-support-tool proporcionará una lista de elecciones para esas
opciones si el comando opencase no las especificó.
Please attach a SoS report to support case 01034421. Create a SoS report as
the root user and execute the following command to attach the SoS report
directly to the case:
redhat-support-tool addattachment -c 01034421 path to sosreport
Usted puede ver, modificar y cerrar los casos de asistencia como suscriptor:
Type the number of the case to view or 'e' to return to the previous menu.
1 [Waiting on Red Hat] System fails to run without power
No more cases to display
Select a Case: 1
Type the number of the section to view or 'e' to return to the previous menu.
1 Case Details
2 Modify Case
3 Description
4 Recommendations
5 Get Attachment
6 Add Attachment
18 RH342-RHEL7.2-es-1-20160321
Trabajos de laboratorio
7 Add Comment
End of options.
Option: q
Select a Case: q
La herramienta Red Hat Support cuenta con capacidades avanzadas de análisis y diagnóstico
de aplicaciones. Mediante el uso de los archivos principales del vuelco de errores de kernel,
redhat-support-tool puede crear y extraer un seguimiento, un informe de tramas de pila
activas en el momento en que se realiza un vuelco de errores, para proporcionar diagnóstico
in situ y abrir un caso de asistencia.
Trabajos de laboratorio
Los trabajos de laboratorio de Red Hat Access, que se pueden encontrar en https://
access.redhat.com/labs, proporcionan varias herramientas basadas en la Web para
ayudar en la configuración, las implementaciones, la seguridad y la solución de problemas.
Esto incluye scripts de prueba para vulnerabilidades de seguridad como Shellshock y
Heartbleed, pero también scripts de configuración para clientes y servidores de NFS,
analizadores de archivos de registro, una herramienta para ayudar a enviar una revisión de
arquitectura para clústeres de alta disponibilidad, y mucho más.
RH342-RHEL7.2-es-1-20160321 19
Capítulo 1. ¿Qué es la solución de problemas?
20 RH342-RHEL7.2-es-1-20160321
Red Hat Insights
Referencias
Página del manual (1)sosreport
RH342-RHEL7.2-es-1-20160321 21
Capítulo 1. ¿Qué es la solución de problemas?
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder generar un sosreport para ayudar al Soporte de Red Hat a resolver un
problema.
Mientras resolvía un problema en su sistema servera, contactó al Soporte de Red Hat para
obtener ayuda. El soporte ha solicitado que genere un sosreport con el módulo xfs activo y
la opción xfs.logprint habilitada.
1.2. Si el comando anterior devolvió package sos is not installed (el paquete sos
no está instalado), instale el paquete sos.
2. Vea las opciones, los complementos y las opciones de complementos disponibles para
sosreport.
22 RH342-RHEL7.2-es-1-20160321
3.1. Ejecute la herramienta sosreport con la opción -k xfs.logprint. Use los avisos
interactivos para ingresar toda la información requerida. Este proceso puede tardar
un tiempo en completarse.
https://access.redhat.com/support/
The generated archive may contain data considered sensitive and its
content should be reviewed by the originating organization before being
passed to any third party.
4.2. Extraiga el archivo generado. Puede ignorar de manera segura los errores
relacionados a la creación de los nodos del dispositivo.
RH342-RHEL7.2-es-1-20160321 23
Capítulo 1. ¿Qué es la solución de problemas?
• etc/
• sos_commands/
• sos_reports/sos.html
• sos_commands/xfs/xfs_logprint_-c.dev.vda1
24 RH342-RHEL7.2-es-1-20160321
Trabajo de laboratorio: ¿Qué es la solución de problemas?
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder resolver un problema de transferencia de archivos y conectividad de FTP
mediante el método científico.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab
troubleshootingintro setup en su máquina workstation.
Uno de sus usuarios informó un problema con el servidor FTP que se ejecuta en servera. El
usuario experimenta los siguientes síntomas:
• El usuario puede conectarse a localhost a través de lftp cuando se registra en una shell
en servera.
Para realizar sus pruebas, se ha instalado lftp en workstation y servera. Recuerde que
lftp no intentará conectarse hasta que se emita el primer comando.
El daemon del FTP (vsftpd.service) en servera registra todas las transferencias de archivos
en /var/log/xferlog. Si el último carácter en una línea de ese archivo es c, la transferencia
se completó correctamente; si el último carácter es i, la transferencia no se completó.
2. Recopile información acerca del servicio de FTP que se ejecuta en servera. Incluya
puertos de red, información de firewall, raíz de documentos, permisos de archivos,
denegaciones de SELinux, etc.
3. Formule una hipótesis con respecto a cuáles podrían ser los problemas.
RH342-RHEL7.2-es-1-20160321 25
Capítulo 1. ¿Qué es la solución de problemas?
7. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
26 RH342-RHEL7.2-es-1-20160321
Solución
Solución
En este trabajo de laboratorio, resolverá un problema con transferencias de FTP en servera.
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder resolver un problema de transferencia de archivos y conectividad de FTP
mediante el método científico.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab
troubleshootingintro setup en su máquina workstation.
Uno de sus usuarios informó un problema con el servidor FTP que se ejecuta en servera. El
usuario experimenta los siguientes síntomas:
• El usuario puede conectarse a localhost a través de lftp cuando se registra en una shell
en servera.
Para realizar sus pruebas, se ha instalado lftp en workstation y servera. Recuerde que
lftp no intentará conectarse hasta que se emita el primer comando.
El daemon del FTP (vsftpd.service) en servera registra todas las transferencias de archivos
en /var/log/xferlog. Si el último carácter en una línea de ese archivo es c, la transferencia
se completó correctamente; si el último carácter es i, la transferencia no se completó.
1.1. Intente utilizar lftp desde workstation para conectarse al servicio de FTP que se
ejecuta en servera.
1.2. Intente utilizar lftp desde workstation para conectarse al servicio de FTP que se
ejecuta en servera/localhost.
RH342-RHEL7.2-es-1-20160321 27
Capítulo 1. ¿Qué es la solución de problemas?
lftp servera:~>
2. Recopile información acerca del servicio de FTP que se ejecuta en servera. Incluya
puertos de red, información de firewall, raíz de documentos, permisos de archivos,
denegaciones de SELinux, etc.
Esto muestra que el servicio ftp no se abre en el firewall. Esto explica por qué
fallaron las conexiones remotas pero funcionaron las conexiones locales. Tome nota
de esto.
/var/ftp/pub:
total 8
28 RH342-RHEL7.2-es-1-20160321
Solución
2.4. Inspeccione en busca de denegaciones de SELinux que hayan ocurrido el último día.
3. Formule una hipótesis con respecto a cuáles podrían ser los problemas.
3.1. El firewall no se abre para el servicio de FTP, lo que resulta en conexiones fallidas
desde máquinas remotas.
5.1. Intente utilizar lftp desde workstation para conectarse al servicio de FTP que se
ejecuta en servera/localhost.
RH342-RHEL7.2-es-1-20160321 29
Capítulo 1. ¿Qué es la solución de problemas?
7. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
30 RH342-RHEL7.2-es-1-20160321
Resumen
Resumen
En este capítulo, aprendió lo siguiente:
RH342-RHEL7.2-es-1-20160321 31
32
TRAINING
CAPÍTULO 2
SER PROACTIVO
Visión general
Meta Evitar que los pequeños problemas se conviertan en
grandes problemas al emplear técnicas proactivas de
administración de sistemas.
Objetivos • Monitorear las características vitales de los sistemas.
RH342-RHEL7.2-es-1-20160321 33
Capítulo 2. Ser proactivo
Monitoreo de sistemas
Objetivos
Después de completar esta sección, los estudiantes podrán monitorear sistemas para
características fundamentales.
Una vez instalado en el sistema, se debe iniciar cockpit antes de que se pueda acceder a
través de la red.
Una vez que se establece una conexión con la interfaz web de Cockpit, un usuario debe
autenticarse para obtener acceso. La autenticación se realiza a través de la base de datos de
la cuenta del SO local del sistema. El acceso a funciones privilegiadas de administración del
sistema proporcionado por la interfaz de Cockpit, como la creación de usuarios, requerirá
que el usuario inicie sesión como el usuario root.
34 RH342-RHEL7.2-es-1-20160321
Uso de Performance Co-Pilot
también se implementó en Red Hat Enterprise Linux 6, y está disponible en la versión 6.6 y
versiones posteriores.
Hay varios servicios que forman parte de Performance Co-Pilot, pero el que recopila datos del
sistema localmente es pmcd, el Daemon colector de métricas de rendimiento. Este servicio debe
estar en ejecución para poder consultar datos de rendimiento con las utilidades de la línea de
comandos de Performance Co-Pilot.
RH342-RHEL7.2-es-1-20160321 35
Capítulo 2. Ser proactivo
PID SYSCPU USRCPU VGROW RGROW RUID THR ST EXC S CPU CMD
27541 0.00s 0.21s 0K 264K root 1 -- - S 72% pmatop
9002 0.02s 0.00s 0K 0K root 1 -- - R 6% pmdaproc
1 0.00s 0.00s 0K 0K root 1 -- - S 0% systemd
2 0.00s 0.00s 0K 0K root 0 -- - S 0% kthreadd
3 0.00s 0.00s 0K 0K root 0 -- - S 0% ksoftirqd/0
5 0.00s 0.00s 0K 0K root 0 -- - S 0% kworker/0:0H
6 0.00s 0.00s 0K 0K root 0 -- - S 0% kworker/u4:0
metric: proc.nprocs
host: server1.example.com
semantics: instantaneous value
units: none
samples: 5
interval: 1.00 sec
133
133
133
133
130
36 RH342-RHEL7.2-es-1-20160321
Uso de Performance Co-Pilot
Por defecto, pmlogger recopila datos por segundo y almacena datos registrados en el
directorio /var/log/pcp/pmlogger/HOSTNAME. Después de que se recopilan los datos en
un archivo pmlogger, se pueden usar herramientas, como pmval, para consultar datos.
El nombre del archivo de registro comenzará con la fecha con formato ISO. Además del
archivo de registro, se crean varios archivos para almacenar metadatos e información de
índice.
nota
Cuando exporta el registro a otro sistema, asegúrese de copiar el archivo de registro
y los archivos .meta asociados. Si falta alguno de estos archivos, las herramientas
de análisis no podrán utilizar los datos de registro.
Una vez que se crea el registro, las herramientas pcp de la línea de comando utilizarán la
opción -a para indicar que deben ejecutarse contra un archivo de datos en lugar de datos en
tiempo real. El comando pmval también tiene opciones para especificar las horas de inicio y
finalización que deben utilizarse si un administrador desea limitar los datos a un margen de
tiempo específico.
Si un administrador está interesado en los promedios de carga desde las 03:03:00 hasta las
03:04:00 del 24 de febrero de 2015:
RH342-RHEL7.2-es-1-20160321 37
Capítulo 2. Ser proactivo
Nagios permite que los administradores monitoreen el rendimiento del sistema y de la red
en hosts conectados desde un servidor central. Se basa en técnicas de monitoreo activas y
pasivas, algunas de las cuales pueden involucrar la instalación de agentes en los sistemas
monitoreados.
Hay una interfaz web en el servidor principal de Nagios que puede utilizarse para configurar
pruebas y ajustes para Nagios o para los hosts que está monitoreando. Los administradores
pueden establecer umbrales para los indicadores de rendimiento del sistema monitoreado
para que Nagios genere alertas cuando estas métricas de rendimiento queden fuera de los
rangos operativos normales.
Referencias
Para obtener más información acerca de Cockpit, consulte
Proyecto de Cockpit
http://www.cockpit-project.org
Para obtener más información acerca de Performance Co-Pilot, consulte las páginas
del manual pmstat(1), pmatop(1), pminfo(1), pmval(1) y PCPIntro(1).
38 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Monitoreo de sistemas
Recursos
Archivos /root/cpuidle
Máquinas servera
Resultados
Deberá poder mostrar los indicadores de rendimiento actuales e históricos en un sistema a
través de Performance Co-Pilot.
Andes de comenzar
Inicie sesión en servera como el usuario root.
RH342-RHEL7.2-es-1-20160321 39
Capítulo 2. Ser proactivo
4. Consulte el daemon pmcd para mostrar el tiempo de inactividad por CPU para un minuto.
cpu0 cpu1
0.9997 0.9997
0.9997 0.9997
... Output omitted ...
6. A través del resultado del comando anterior, determine la iteración más reciente del
registro de archivos al examinar los datos de fecha y hora contenidos en el nombre del
archivo.
40 RH342-RHEL7.2-es-1-20160321
/var/log/pcp/pmlogger/servera.lab.example.com/20151211.08.28.0
7. Use el comando pmval para obtener estadísticas históricas del tiempo de inactividad
por CPU en intervalos de un minuto desde el registro de archivo más reciente. Guarde el
resultado en el archivo /root/cpuidle.
8. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
RH342-RHEL7.2-es-1-20160321 41
Capítulo 2. Ser proactivo
Objetivos
Después de completar esta sección, los estudiantes podrán configurar sistemas para el
registro remoto en un host de registro central.
Registro remoto
La configuración estándar de la gestión de registros del sistema rota archivos de registro
todas las semanas y los conserva durante cuatro rotaciones. A veces se desea mantener
registros durante más de cuatro semanas (que es el valor predeterminado), especialmente
cuando establece tendencias de rendimiento del sistema relacionadas con tareas, como
cierres financieros al final del mes, que se ejecutan solo una vez por mes. Al enviar mensajes
de registro a un host de registro remoto con un almacenamiento masivo especializado,
los administradores pueden conservar grandes archivos de registros del sistema para sus
sistemas sin cambiar la configuración predeterminada de rotación de registros, que tiene
como intención evitar que los registros consuman almacenamiento en disco de manera
excesiva.
La recopilación central de los mensajes de registro del sistema también puede ser muy útil
para monitorear el estado de los sistemas e identificar rápidamente los problemas. Además,
proporciona una ubicación de copia de seguridad para los mensajes de registro en caso de
que el sistema tenga un error grave en el disco duro u otros problemas, que hacen que los
registros locales no estén disponibles. En estas situaciones, la copia de mensajes de registro
que residen en el host de registro central puede utilizarse para ayudar a diagnosticar el error
que causó el problema.
Los mensajes de registro tienen dos características que se usan para clasificarlos. La utilidad
(facility) de un mensaje de registro indica qué tipo de mensaje es. La prioridad (priority), por
otra parte, indica la importancia del evento registrado en el mensaje.
42 RH342-RHEL7.2-es-1-20160321
Registro remoto
Para configurar el servicio rsyslog en el host de registro central para que acepte registros
remotos, quite los comentarios de las líneas de recepción TCP o UDP en la sección de
módulos en el archivo /etc/rsyslog.conf.
TCP proporciona una entrega más confiable de los mensajes de registro remoto, pero UDP es
compatible con una variedad más amplia de sistemas operativos y dispositivos de red.
Importante
El transporte TCP sin formato de los mensajes de syslog está bastante más
implementado, aunque todavía no está estandarizado. La mayoría de las
implementaciones actualmente usan el puerto TCP 514, que es el puerto rshd
heredado. Si el sistema tiene el paquete rsh-server instalado y está usando el
servicio rshd inseguro y antiguo, se producirá un conflicto con el puerto TCP
514 para la recepción de syslog de TCP sin formato. Configure el servidor de
registro para que use un puerto diferente; para hacerlo, cambie la configuración de
$InputTCPServerRun.
Las reglas contenidas en /etc/rsyslog.conf están configuradas por defecto para admitir
el registro de mensajes en un único host. Por lo tanto, ordena y agrupa los mensajes por
instalación. Por ejemplo, los mensajes de correo se envían a /var/log/maillog mientras
que los mensajes generados por el daemon crond se consolidan en /var/log/cron para
facilitar la búsqueda de cada tipo de mensaje.
Aunque el orden de los mensajes por instalación (facility) es ideal en un único host, produce
un resultado inapropiado en un host de registro central debido a que mezcla los mensajes
de diferentes hosts remotos. Por lo general, en un host de registro central es mejor que
los mensajes de registro de sistemas remotos permanezcan por separado. Esta separación
puede alcanzarse al definir nombres de archivos de registro dinámicos a través de la función
de plantilla de rsyslog.
Las plantillas se definen en /etc/rsyslog.conf y pueden utilizarse para generar reglas con
nombres de archivos de registro dinámicos. Una definición de plantilla consta de la directiva
RH342-RHEL7.2-es-1-20160321 43
Capítulo 2. Ser proactivo
$template, seguida del nombre de una plantilla y, luego, una cadena que representa el
texto de la plantilla. El texto de la plantilla puede ser dinámico a través del uso de valores
sustituidos de las propiedades de un mensaje de registro. Por ejemplo, para direccionar
mensajes de syslog cron de diferentes sistemas a un host de registro central, utilice la
siguiente plantilla para generar nombres de archivos de registro dinámicos en la propiedad
HOSTNAME de cada mensaje:
$template DynamicFile,"/var/log/loghost/%HOSTNAME%/cron.log"
cron.* ?DynamicFile
A continuación se muestra otro ejemplo del uso de plantillas para generar nombres de
archivos de registro dinámicos. En este ejemplo, los mensajes de registro remotos se
ordenarán por su nombre de host y valores de instalación (facility) al hacer referencia a las
propiedades HOSTNAME y syslogfacility-test. Los mensajes de registro se escribirán en
los nombres de archivos de registro generados de manera dinámica, y no se realizará una
sincronización después de la operación de escritura.
$template DynamicFile,"/var/log/loghost/%HOSTNAME%/%syslogfacility-text%.log"
*.* -?DynamicFile
nota
Puede encontrar una lista completa de propiedades de mensajes de syslog
facilitada por rsyslog en la sección Propiedades disponibles de la página del
manual rsyslog.conf(5).
Una vez que se haya activado la recepción de syslog y el host haya creado las reglas deseadas
para la separación de registros, reinicie el servicio rsyslog para que se apliquen los cambios
de configuración. Además, agregue las reglas de firewall UDP o TCP para permitir el tráfico de
syslog entrante y, luego, actualice firewalld.
44 RH342-RHEL7.2-es-1-20160321
Registro remoto
que los nuevos archivos de registro no alcancen tamaños incontrolables. Por ejemplo, para
incluir nuevos archivos de registro de ejemplos anteriores en la rotación de registros, agregue
la siguiente entrada a la lista de archivos de registro en el archivo de configuración /etc/
logrotate.d/syslog.
/var/log/loghost/*/*.log
Por ejemplo, para que todos los mensajes de prioridad info o de prioridad más alta se
envíen a loghost.example.com por medio de UDP, use la siguiente línea:
*.info @loghost.example.com
Para que todos los mensajes se envíen a loghost.example.com por medio de TCP, use la
siguiente línea:
*.* @@loghost.example.com
Otra opción es que el nombre de host de registro se anexe con :PORT, donde PORT es el
puerto que está usando el servidor remoto rsyslog. Si no se indica un puerto, se asume el
puerto 514 de forma predeterminada.
Una vez que haya agregado las reglas, reinicie el servicio rsyslog y envíe un mensaje de
prueba con el comando logger:
Verifique los registros en el servidor remoto para asegurarse de que se haya recibido el
mensaje.
Referencias
Para obtener más información, consulte las páginas del manual rsyslog.conf(5),
rsyslogd(8) y logger(1).
RH342-RHEL7.2-es-1-20160321 45
Capítulo 2. Ser proactivo
Recursos
Archivos • /etc/rsyslog.conf
• /etc/logrotate.d/syslog
Máquinas • servera
• serverb
Resultados
Deberá poder centralizar el registro de sistemas remotos en un host de registro central.
Andes de comenzar
Inicie sesión como el usuario root en servera y serverb.
En servera, configure el servicio rsyslog para que funcione como un host de registro
central. Para una entrega de mensajes de syslog más confiable, configure el host de registro
central para aceptar la entrega de mensajes de hosts remotos a través de TCP.
Para organizar mejor los mensajes, cree una nueva regla que escriba los mensajes de syslog
generados por cada host en subdirectorios separados en el directorio /var/log/loghost.
Los subdirectorios recibirán su nombre de los nombres de host de cada host. Dentro del
subdirectorio de cada host, se conservará un archivo de registro separado para los mensajes
de cada instalación de syslog. Para un mejor rendimiento, configure el registro para que no se
realice una sincronización después de que se registra cada mensaje. Configure la rotación de
registros para los nuevos archivos de registro.
Configure serverb para el registro remoto del host de registro central. Pruebe la
configuración al generar un mensaje de prueba y verificar su presencia en el registro
adecuado en servera.
2. Configure el servicio rsyslog en servera para que se acepten los mensajes de syslog
de hosts remotos a través de TCP y para que se escriban los mensajes en archivos
separados para cada host.
46 RH342-RHEL7.2-es-1-20160321
$ModLoad imtcp
$InputTCPServerRun 514
2.2. En la sección "#### RULES ####", agregue la siguiente regla para los nombres
de archivos de registro dinámicos y, luego, cree una regla para usar el nombre
de archivo dinámico para separar los mensajes de registro por nombre de host e
instalación.
$template DynamicFile,"/var/log/loghost/%HOSTNAME%/%syslogfacility-text%.log"
*.* -?DynamicFile
2.3. Reinicie el servicio rsyslog para que se apliquen los cambios de configuración.
/var/log/loghost/*/*.log
4. Modifique el firewall de servera para permitir que los mensajes de syslog entrantes de
hosts remotos se entreguen a través de TCP.
5. Configure serverb para registrar los mensajes de syslog de manera remota en servera
a través del protocolo TCP.
5.1. En serverb, agregue la siguiente regla a /etc/rsyslog.conf para que todos los
mensajes de syslog se entreguen de manera remota a servera a través de TCP en el
puerto 514.
*.* @@servera.lab.example.com:514
5.2. Reinicie el servicio rsyslog para que se apliquen los cambios de configuración de
serverb.
RH342-RHEL7.2-es-1-20160321 47
Capítulo 2. Ser proactivo
6. Verifique que el registro remoto de serverb al host de registro central de servera esté
funcionando correctamente.
6.2. En servera, verifique que el mensaje de syslog aparezca en los archivos adecuados
de /var/log/loghost/serverb.
7. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
48 RH342-RHEL7.2-es-1-20160321
Uso de la gestión de configuraciones
Objetivos
Después de completar esta sección, los estudiantes deberían poder implementar el cliente
Puppet para la gestión de configuraciones.
En los últimos años, las herramientas simples para gestionar archivos de configuración
fueron sustituidas por sistemas de gestión de configuraciones. Estos sistemas han
crecido considerablemente en los últimos años y ahora hay muchas soluciones de código
abierto disponibles para satisfacer las necesidades de gestión de configuraciones de una
organización. Las siguientes son opciones de herramientas de gestión de configuraciones que
están disponibles para los administradores.
• Ansible puede ser adecuado para las organizaciones con necesidades de gestión de
configuraciones simples. Ansible está basado en el lenguaje de programación de Python.
No tiene agente y se basa en SSH para implementar configuraciones en sistemas remotos.
• Las última versión de Red Hat Satellite, Satellite 6, ofrece mucho más que la gestión de
archivos de configuración. Incorpora el uso de Puppet y proporciona un sistema de gestión
de configuraciones totalmente desarrollado para entornos empresariales.
RH342-RHEL7.2-es-1-20160321 49
Capítulo 2. Ser proactivo
Puppet se puede utilizar para establecer un estado deseado y hacer que la máquina coincida
con ese estado. El administrador del sistema ya no necesita un script para la configuración
inicial y un script separado (o peor aún, interacción humana) para la verificación del estado.
Puppet administra la configuración del sistema y comprueba que el sistema esté en el estado
deseado. Esto puede escalarse mucho mejor que el administrador de sistema tradicional que
utiliza scripts individuales para cada sistema.
Arquitectura de Puppet
Puppet utiliza un modelo servidor/cliente. Al servidor se lo llama Puppet maestro. El Puppet
maestro almacena instrucciones o manifiestos (código que contiene recursos y estados
deseados) para los clientes. A los clientes se los llama nodos de Puppet y ejecutan el software
del agente de Puppet. Por lo general, estos nodos ejecutan un daemon de Puppet (agent)
que se utiliza para conectarse al Puppet maestro. Los nodos descargarán la instrucción
asignada al nodo del Puppet maestro y aplicarán la configuración, en caso de ser necesaria.
50 RH342-RHEL7.2-es-1-20160321
Arquitectura de Puppet
Una ejecución de Puppet comienza con el nodo de Puppet (no el Puppet maestro). Por
defecto, el agente de Puppet inicia una ejecución de Puppet cada 30 minutos. Esta ejecución
utiliza servicios de transmisión segura (SSL) para pasar datos de un lado a otro entre el nodo
de Puppet y el Puppet maestro. El nodo se inicia al recopilar datos acerca del sistema a través
del comando facter. El comando facter incluye información sobre dispositivos de bloque,
sistemas de archivos, interfaz de la red, direcciones MAC, direcciones IP, memoria, sistema
operativo, CPU, virtualización, etc. Estos datos se envían del nodo al Puppet maestro.
Una vez que el Puppet maestro recibe los datos del nodo de Puppet, el Puppet maestro
compila un catalog, que describe el estado deseado de cada recurso configurado para el
nodo. El Puppet maestro verifica el nombre de host del nodo y lo vincula con la configuración
específica del nodo (llamada clasificación de nodos) o usa la configuración predeterminada
si el nodo no coincide. Este catálogo puede incluir información de dependencia para los
recursos (p. ej., ¿Puppet debería instalar el paquete primero o iniciar el servicio primero?).
Una vez que se compila el catálogo, el Puppet maestro envía el catálogo al nodo. El Puppet
aplicará el catálogo en el nodo de Puppet y configurará todos los recursos definidos en el
catálogo. Puppet es idempotentes; Puppet puede aplicar el catálogo a un nodo varias veces sin
afectar el estado resultante.
Una vez que el agente de Puppet aplica el catálogo al nodo, el nodo le informará al Puppet
maestro los detalles de la ejecución. Este informe incluye información sobre los cambios
que se realizaron en el nodo (si corresponde) y si la ejecución se completó correctamente.
La infraestructura de informes de Puppet tiene una API, para que otras aplicaciones puedan
descargar informes del Puppet maestro para almacenamiento o análisis adicional.
RH342-RHEL7.2-es-1-20160321 51
Capítulo 2. Ser proactivo
Una vez que se instala el paquete puppet, el cliente de Puppet debe configurarse con el
nombre de host del Puppet maestro. El nombre de host del Puppet maestro debe colocarse
en el archivo /etc/puppet/puppet.conf, en la sección [agent]. El siguiente fragmento
muestra un ejemplo donde el Puppet maestro es denominado puppet.lab.example.com:
[agent]
server = puppet.lab.example.com
nota
Cuando no se define un Puppet maestro explícito, Puppet utiliza un nombre de
host predeterminado de puppet. Si la ruta de búsqueda DNS incluye un host
denominado puppet, este host se utilizará automáticamente.
El paso final que se debe tomar en el cliente de Puppet es comenzar el servicio del agente de
Puppet y configurarlo para que se ejecute en el momento del inicio.
Cuando el servicio del agente de Puppet se inicia por primera vez, generará un certificado
de host y enviará una solicitud de firma de certificado al Puppet maestro. Una vez que se
haya enviado la solicitud de certificado cliente, la solicitud para firmar el certificado cliente
se puede ver en el Puppet maestro. Por defecto, la firma de certificados cliente se realiza
manualmente en el Puppet maestro. Sin embargo, el Puppet maestro también puede
configurarse para firmar automáticamente certificados cliente para que no se necesite una
intervención humana para nuevos registros de clientes. Una vez que el Puppet maestro
haya firmado el certificado, el agente de Puppet recibirá un catálogo y aplicará los cambios
necesarios.
nota
El paquete puppet viene con el repositorio de Satellite Tools 6.1.
52 RH342-RHEL7.2-es-1-20160321
Configuración de un cliente de Puppet
Referencias
Para obtener más información acerca de Puppet, consulte
Introducción a Puppet
https://docs.puppetlabs.com/puppet/3.6/reference/index.html
Para obtener más información acerca de facter, consulte la página del manual
facter(8).
RH342-RHEL7.2-es-1-20160321 53
Capítulo 2. Ser proactivo
Recursos
Archivos /etc/puppet/puppet.conf
Máquinas • servera
• serverb
Resultados
Deberá poder instalar y configurar Puppet en un sistema y, luego, utilizar el agente de Puppet
para configurar el servicio web en el sistema.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab puppet setup en
su máquina workstation. Esto configurará los repositorios necesarios en sus sistemas y
configurará servera para que actúe como el Puppet maestro.
1. Instale el software del agente de Puppet en serverb para implementarlo como el cliente
de Puppet.
server = servera.lab.example.com
54 RH342-RHEL7.2-es-1-20160321
[root@serverb ~]# journalctl -ef
6. En la ventana del terminal original, inicie el servicio puppet. El sistema se registrará con
el Puppet maestro y recuperará y aplicará su configuración.
Observe las actividades del agente de Puppet al monitorear las nuevas entradas de
registro que aparecen en el diario (journal) del sistema.
8. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
RH342-RHEL7.2-es-1-20160321 55
Capítulo 2. Ser proactivo
56 RH342-RHEL7.2-es-1-20160321
Configuración de seguimiento de cambios
Objetivos
Después de completar esta sección, los estudiantes podrán implementar el seguimiento de
cambios para mantener la homogeneidad de los sistemas.
Instalación de AIDE
Para comenzar con AIDE, instale el paquete RPM que proporciona el software AIDE. Este
paquete brinda documentos útiles sobre el ajuste del software para monitorear cambios
específicos.
Configuración de AIDE
Una vez que se instala el software, debe configurarlo. El archivo /etc/aide.conf es el
archivo de configuración primario de AIDE. Tiene tres tipos de directivas de configuración:
líneas de configuración, líneas de selección y líneas de macro.
Las líneas de configuración toman la forma de param = value. Cuando param no está
integrado en la configuración de AIDE, es la definición de un grupo que enumera los cambios
que se deben buscar. Por ejemplo, la siguiente definición de grupo puede encontrarse en /
etc/aide.conf instalado por defecto:
PERMS = p+i+u+g+acl+selinux
La línea anterior define un grupo denominado PERMS que busca cambios en permisos de
archivo (p), inode (i), propiedad de usuario (u), propiedad de grupo (g), ACLs (acl) o contexto
de SELinux (selinux).
Las líneas de selección definen las comprobaciones que deben realizarse en directorios
coincidentes. Las siguientes líneas son ejemplos de líneas de selección:
/dir1 group
=/dir2 group
!/dir3
RH342-RHEL7.2-es-1-20160321 57
Capítulo 2. Ser proactivo
El tercer tipo de directiva son las líneas de macro. Definen variables y su definición tiene la
siguiente sintaxis:
Dado que la base de datos se puede actualizar desde la máquina, se recomienda copiar
aide.db.gz a otro sistema.
nota
Cuando los archivos que contienen ejecutables binarios se capturan en una base
de datos de AIDE, se debe deshabilitar la tarea prelink cron. De lo contrario,
la primera vez que se ejecute prelink, los binarios aparecerán como archivos
cambiados.
58 RH342-RHEL7.2-es-1-20160321
Auditoría del sistema con auditd
Sin configuraciones adicionales, solo una cantidad limitada de mensajes se pasa por el
sistema de auditoría, principalmente mensajes de autenticación/autorización (inicios de
sesión de usuarios, uso de sudo, etc.) y mensajes de SELinux. Con una herramienta llamada
auditctl, los administradores (seguridad) pueden agregar reglas de auditoría en cualquier
llamada del sistema que deseen, incluidas todas las operaciones de archivos.
Importante
Dado que las reglas de auditoría están basadas en la primera coincidencia, el orden
es importante para que las reglas funcionen según lo previsto. Por ejemplo, si se
configura una regla para registrar todos los accesos a /etc y se configura otra regla
para registrar todos los accesos a /etc/sysconfig con una clave diferente, la
segunda regla nunca se activará debido a que la primera regla ya cubre ese acceso.
Cambiar el orden de las reglas permitirá que las reglas funcionen según lo previsto.
Una de las reglas más fáciles de agregar es una regla de visualización . Las visualizaciones
pueden establecerse en archivos y directorios y, opcionalmente, pueden activar ciertos tipos
de acceso (lectura, escritura, cambio de atributo y ejecución). Las visualizaciones se activan en
la llamada del sistema open y no en llamadas read o write individuales.
•
auditctl -w /etc/passwd -p wa -k user-edit
•
auditctl -w /etc/sysconfig/ -p rwa -k sysconfig-access
•
auditctl -w /bin -p x
Eliminación de reglas
Las reglas de visualización del sistema de archivos pueden eliminarse al utilizar la opción -
W en lugar de -w con la regla original. Las reglas agregadas con -a o -A pueden eliminarse al
reemplazar -[aA] con -d.
RH342-RHEL7.2-es-1-20160321 59
Capítulo 2. Ser proactivo
Reglas persistentes
Para que las reglas de auditoría sean persistentes, agréguelas al archivo /etc/audit/
rules.d/audit.rules. Este archivo contiene comandos auditctl como se ingresarían en
la línea de comandos, pero sin el propio comando auditctl delante. Las líneas vacías están
permitidas, y los comentarios están indicados con un carácter de numeral (#) al inicio de la
línea.
Importante
Debido a un error, auditd no puede reiniciarse en este momento con systemctl
restart auditd. Por lo tanto, es necesario utilizar service auditd restart
para volver a cargar los cambios en las reglas persistentes.
exit=4 a0=261b130 a1=90800 a2=e a3=19 items=1 ppid=2548 pid=26131 auid=500 uid=0
gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="aureport"
exe="/sbin/aureport" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
key="audit-access"
type=CWD msg=audit(1371716130.596:28708): cwd="/root"
type=PATH msg=audit(1371716130.596:28708): item=0 name="/var/log/audit" inode=17998
dev=fd:01 mode=040750 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:auditd_log_t:s0
El type de mensaje de auditoría. En este caso, se audita una llamada del sistema, pero se
pueden encontrar diversos tipos.
La marca de tiempo y el ID del mensaje de auditoría. La parte anterior a los dos puntos
(en este caso, 1371716130.596) es la marca de tiempo en cantidad de segundos desde
la época, mientras que la parte posterior a los dos puntos (28708) es el número del
evento de auditoría.
Para convertir una marca de tiempo de la hora de época a la zona horaria local, use el
comando date --date=@<epoch-time>.
60 RH342-RHEL7.2-es-1-20160321
Auditoría del sistema con auditd
Búsqueda de eventos
El sistema de auditoría se envía con una herramienta potente para buscar registros de
auditoría: ausearch. ausearch no solo permite que los administradores busquen y filtren
diversos tipos de eventos fácilmente, sino que también puede interpretar eventos al traducir
valores numéricos a valores (más) legibles como nombres de usuario o nombres de llamadas
del sistema. En la siguiente tabla se enumeran algunas de las opciones más comunes para
ausearch, pero existen muchas más, incluidas opciones para buscar eventos basados en
usuarios, terminales o, incluso, máquinas virtuales.
Opción Descripción
-i Interpretar líneas de registros, traducir valores numéricos a
nombres.
--raw Imprimir entradas de registro, no colocar separadores de
registro entre entradas.
-a <EVENT-ID> Muestra todas las líneas del evento con <EVENT-ID> como
el ID de evento.
--file <FILENAME> Busca todos los eventos que tienen un nombre de archivo
específico.
-k <KEY> Busca todos los eventos con la etiqueta <KEY>.
--start [start-date] Solo busca eventos después de start-date y start-
[start-time] time. Si se deja vacía la hora de inicio, se supone que es
medianoche. Si se omite una fecha de inicio, se supone que
es el día de hoy.
Como ejemplo, se puede utilizar ausearch para mostrar una versión interpretada del
ejemplo anterior buscado por el valor clave de audit-access.
RH342-RHEL7.2-es-1-20160321 61
Capítulo 2. Ser proactivo
Referencias
Para obtener más información acerca de aide, consulte las páginas del manual
aide(1) y aide.conf(5).
Para obtener más información acerca de auditd, consulte las páginas del manual
auditd(8), auditd.conf(5), auditctl(8), audit.rules(7) y ausearch(8).
62 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Configuración de seguimiento de cambios
En este trabajo de laboratorio, configurará y realizará una auditoría del sistema a través del
sistema de auditoría de Linus.
Recursos
Archivos /etc/audit/rules.d/audit.rules
Máquinas: • servera
• serverb
Resultados
Debería poder detectar cambios en el contenido y los atributos de archivos y directorios
ubicados en un sistema de archivos.
Andes de comenzar
Inicie sesión en servera con el usuario root.
2. Cree una regla para auditar los cambios en el contenido de los archivos y directorios
ubicados en el directorio /etc. Para facilitar la identificación de registros creados por la
regla, asocie los registros con la palabra clave etc_content.
RH342-RHEL7.2-es-1-20160321 63
Capítulo 2. Ser proactivo
3. Cree otra regla para auditar los cambios en los atributos de archivos y directorios
ubicados en el directorio /etc. Para facilitar la identificación de registros creados por la
regla, asocie los registros con la palabra clave etc_attribute.
-w /etc -p w -k etc_content
-w /etc -p a -k etc_attribute
6. Cambie los permisos del archivo /etc/shadow.copy para que todos lo puedan leer.
7. Utilice el comando ausearch para extraer los registros de auditoría para cambios en el
contenido de archivos y directorios del directorio /etc.
8. Utilice el comando ausearch para extraer los registros de auditoría para cambios en los
atributos de archivos y directorios del directorio /etc.
9. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
64 RH342-RHEL7.2-es-1-20160321
Trabajo de laboratorio: Ser proactivo
En este trabajo de laboratorio, configurará sistemas para monitoreo, registro remoto, gestión
de configuraciones y auditoría.
Recursos
Archivos • /etc/puppet/puppet.conf
• /etc/rsyslog.conf
• /etc/logrotate.d/syslog
• /etc/audit/rules.d/audit.rules
Máquinas • servera
• serverb
Resultados
Deberá poder configurar un servidor como un host de registro central y un Puppet maestro.
También deberá poder configurar otro host para monitoreo, registro en el host de registro,
comunicación con el Puppet maestro y auditoría para el acceso del sistema de archivos.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab proactive setup en
su máquina workstation.
En servera, configure el servicio rsyslog para que funcione como un host de registro
central. Para una entrega de mensajes de syslog más confiable, configure el host de registro
central para aceptar la entrega de mensajes de hosts remotos a través de TCP. Para organizar
mejor los mensajes, cree una nueva regla que escriba los mensajes de syslog generados
por cada host en archivos separados en el directorio /var/log/loghost. Cada archivo de
registro debe tener el nombre del host de cada sistema que genera los mensajes. Para un
mejor rendimiento, configure el registro para que no se realice una sincronización después
de que se registra cada mensaje. Agregue los nuevos archivos de registro al programa de
rotación de registros para que no lleguen a un tamaño incontrolable.
En serverb, cree una regla de auditoría para monitorear la ejecución del binario /usr/
sbin/useradd. Cada ejecución debe registrarse con la etiqueta add_user. Haga que la
regla de auditoría sea persistente para que se aplique a cada arranque del sistema. También,
instale y configure el software Performance Co-pilot para que se ejecute en serverb y pueda
ser utilizado para consultar las estadísticas actuales e históricas de rendimiento del sistema.
Para centralizar el registro, configure serverb para el registro remoto del host de registro
central. Por último, configure serverb para la gestión de configuraciones del Puppet maestro
que se ejecuta en servera.
1. Configure el servicio rsyslog en servera para que se acepten los mensajes de syslog
de hosts remotos a través del protocolo TCP y para que se escriban los mensajes en
archivos separados para cada host.
RH342-RHEL7.2-es-1-20160321 65
Capítulo 2. Ser proactivo
2. Modifique el firewall de servera para permitir que los mensajes de syslog entrantes de
hosts remotos se entreguen a través de TCP.
/var/log/loghost/*.log
4. Configure serverb para registrar los mensajes de syslog de manera remota en servera
a través del protocolo TCP.
5. En serverb, cree una regla para auditar el acceso de ejecución del archivo /usr/sbin/
useradd.
6. En serverb, haga que la regla de auditoría sea persistente para que se aplique a cada
arranque del sistema.
8. Inicie y habilite el servicio pmcd para recopilar métricas de rendimiento del sistema.
9. Inicie y habilite el servicio pmlogger para archivar las métricas de rendimiento del
sistema.
10. Instale el software del agente de Puppet en serverb para implementarlo como el cliente
de Puppet.
12. Habilite el servicio puppet para que el agente de Puppet se inicie en el arranque.
13. Inicie el servicio puppet. El sistema se registrará con el Puppet maestro y recuperará y
aplicará su configuración.
14. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
14.1.Evalúe su trabajo.
14.2.Reinicie todas sus máquinas virtuales para proveer un entorno limpio para los
siguientes ejercicios.
66 RH342-RHEL7.2-es-1-20160321
Solución
Solución
En este trabajo de laboratorio, configurará sistemas para monitoreo, registro remoto, gestión
de configuraciones y auditoría.
Recursos
Archivos • /etc/puppet/puppet.conf
• /etc/rsyslog.conf
• /etc/logrotate.d/syslog
• /etc/audit/rules.d/audit.rules
Máquinas • servera
• serverb
Resultados
Deberá poder configurar un servidor como un host de registro central y un Puppet maestro.
También deberá poder configurar otro host para monitoreo, registro en el host de registro,
comunicación con el Puppet maestro y auditoría para el acceso del sistema de archivos.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab proactive setup en
su máquina workstation.
En servera, configure el servicio rsyslog para que funcione como un host de registro
central. Para una entrega de mensajes de syslog más confiable, configure el host de registro
central para aceptar la entrega de mensajes de hosts remotos a través de TCP. Para organizar
mejor los mensajes, cree una nueva regla que escriba los mensajes de syslog generados
por cada host en archivos separados en el directorio /var/log/loghost. Cada archivo de
registro debe tener el nombre del host de cada sistema que genera los mensajes. Para un
mejor rendimiento, configure el registro para que no se realice una sincronización después
de que se registra cada mensaje. Agregue los nuevos archivos de registro al programa de
rotación de registros para que no lleguen a un tamaño incontrolable.
En serverb, cree una regla de auditoría para monitorear la ejecución del binario /usr/
sbin/useradd. Cada ejecución debe registrarse con la etiqueta add_user. Haga que la
regla de auditoría sea persistente para que se aplique a cada arranque del sistema. También,
instale y configure el software Performance Co-pilot para que se ejecute en serverb y pueda
ser utilizado para consultar las estadísticas actuales e históricas de rendimiento del sistema.
Para centralizar el registro, configure serverb para el registro remoto del host de registro
central. Por último, configure serverb para la gestión de configuraciones del Puppet maestro
que se ejecuta en servera.
1. Configure el servicio rsyslog en servera para que se acepten los mensajes de syslog
de hosts remotos a través del protocolo TCP y para que se escriban los mensajes en
archivos separados para cada host.
RH342-RHEL7.2-es-1-20160321 67
Capítulo 2. Ser proactivo
$ModLoad imtcp
$InputTCPServerRun 514
1.2. En la sección "#### RULES ####", agregue la siguiente regla para los nombres de
archivos de registro dinámicos.
$template DynamicFile,"/var/log/loghost/%HOSTNAME%.log"
*.* -?DynamicFile
1.3. Reinicie el servicio rsyslog para que se apliquen los cambios de configuración.
2. Modifique el firewall de servera para permitir que los mensajes de syslog entrantes de
hosts remotos se entreguen a través de TCP.
/var/log/loghost/*.log
4. Configure serverb para registrar los mensajes de syslog de manera remota en servera
a través del protocolo TCP.
4.1. En serverb, agregue la siguiente regla a /etc/rsyslog.conf para que todos los
mensajes de syslog se entreguen de manera remota a servera a través de TCP en el
puerto 514.
*.* @@servera.lab.example.com:514
4.2. Reinicie el servicio rsyslog para que se apliquen los cambios de configuración de
serverb.
5. En serverb, cree una regla para auditar el acceso de ejecución del archivo /usr/sbin/
useradd.
68 RH342-RHEL7.2-es-1-20160321
Solución
6. En serverb, haga que la regla de auditoría sea persistente para que se aplique a cada
arranque del sistema.
8. Inicie y habilite el servicio pmcd para recopilar métricas de rendimiento del sistema.
9. Inicie y habilite el servicio pmlogger para archivar las métricas de rendimiento del
sistema.
RH342-RHEL7.2-es-1-20160321 69
Capítulo 2. Ser proactivo
10. Instale el software del agente de Puppet en serverb para implementarlo como el cliente
de Puppet.
server = servera.lab.example.com
12. Habilite el servicio puppet para que el agente de Puppet se inicie en el arranque.
13. Inicie el servicio puppet. El sistema se registrará con el Puppet maestro y recuperará y
aplicará su configuración.
14. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
14.1.Evalúe su trabajo.
14.2.Reinicie todas sus máquinas virtuales para proveer un entorno limpio para los
siguientes ejercicios.
70 RH342-RHEL7.2-es-1-20160321
Resumen
Resumen
En este capítulo, aprendió lo siguiente:
• Una lista de los datos de rendimiento del sistema recopilados por el daemon colector de
métricas de rendimiento, pmcd, se puede mostrar con pminfo.
• El comando pmval puede utilizarse para recuperar datos actuales e históricos sobre el
rendimiento del sistema recopilados por pmcd.
• Los datos de registro de hosts remotos pueden registrarse por separado en el host de
registro central con el uso de plantillas para generar nombres de archivos de registro
dinámicos.
• El agente de Puppet, por defecto, intenta encontrar el Puppet maestro a través del nombre
puppet.lab.example.com.
• Para señalar el agente de Puppet a un Puppet maestro que tiene un nombre diferente,
configure el ajuste a través del parámetro server en la sección agente de /etc/puppet/
puppet.conf.
• Los cambios en el sistema de archivos pueden detectarse a través de una comparación con
la base de datos de AIDE con aide --check.
• Los eventos en registros de auditoría pueden buscarse a través del comando ausearch.
RH342-RHEL7.2-es-1-20160321 71
72
TRAINING
CAPÍTULO 3
SOLUCIÓN DE PROBLEMAS DE
ARRANQUE
Visión general
Meta Identificar y resolver problemas que puedan afectar la
capacidad de arranque de un sistema.
Objetivos • Solucionar problemas de arranque en sistemas BIOS
tradicionales.
RH342-RHEL7.2-es-1-20160321 73
Capítulo 3. Solución de problemas de arranque
Objetivos
Después de completar esta sección, los estudiantes podrán reparar problemas de arranque
en sistemas BIOS tradicionales.
1. El firmware de BIOS se inicia y realiza una prueba automática de encendido (Power On Self
Test) (POST).
7. El kernel y disco RAM inicial a los que se hacen referencia en la entrada de arranque se
cargan desde el disco, y se cede el control al kernel.
9. Los scripts del disco RAM inicial montan el sistema del archivo raíz del sistema de
destino, luego trasladan al archivo raíz al sistema de archivos instalado recientemente y
entregan el control a /sbin/init en el sistema del archivo raíz de destino.
10. El sistema init monta los sistemas de archivos e inicia los servicios en función a su
configuración.
74 RH342-RHEL7.2-es-1-20160321
GRUB2
GRUB2
El cargador de arranque utilizado en Red Hat Enterprise Linux es grub2, la segunda versión
importante del Gran gestor de arranque unificado (GRand Unified Bootloader). grub2 almacena
archivos en un sistema BIOS en una variedad de ubicaciones:
/boot/
Kernels y discos RAM iniciales. Los subdirectorios contienen otros archivos.
/boot/grub2/
Archivos de configuración, módulos de extensión y temas.
/boot/grub2/grub.cfg
El archivo de configuración grub2 principal. Este archivo se genera automáticamente y,
por lo general, no se debe editar manualmente.
/etc/grub.d/
Este directorio contiene un script auxiliar para generar un archivo de configuración grub2
principal.
/etc/default/grub
Este archivo contiene variables utilizadas en la generación del archivo de configuración
grub2 principal.
/boot/grub2/grubenv
Un archivo de exactamente 1 KiB, utilizado como almacenamiento para variables, como la
entrada de arranque “guardada” o predeterminada.
Para solucionar este problema, grub2 puede usar el “seguimiento de arranque”, la “brecha
de MBR” o el “área incorporada” en el disco para almacenar módulos y archivos adicionales.
Este es el espacio entre el MBR y la primera partición del disco. Para trabajar de manera
confiable, se necesitan al menos 31 KiB de espacio disponible (63 sectores en un disco de
sectores de 512 bytes). Si anaconda ha particionado un disco, la primera partición por lo
general comenzará en el sector 2048, dejando aproximadamente 1 MiB de espacio para el
área incorporada, suficiente espacio para grub2.
RH342-RHEL7.2-es-1-20160321 75
Capítulo 3. Solución de problemas de arranque
Configuración de grub2
Bajo circunstancias normales, un administrador no debería configurar manualmente
el cargador de arranque de grub2. Cuando se instala un kernel nuevo, se agrega a la
configuración automáticamente, y cuando se elimina un kernel, la entrada correspondiente
en el menú del cargador de arranque también se elimina automáticamente.
Es posible que el administrador desee modificar algunos parámetros que grub2 pasa a kernel
en el inicio. La mejor manera de hacerlo es al editar /etc/default/grub y, luego, forzar una
recreación del archivo de configuración grub2 principal.
GRUB_TIMEOUT
La cantidad de segundos que se muestra grub2 antes de que se inicia automáticamente
la entrada predeterminada.
GRUB_DEFAULT
La cantidad de entradas predeterminadas que deben iniciarse cada vez que un usuario
no selecciona otra entrada. grub2 comienza a contar en 0.
GRUB_CMDLINE_LINUX
Esta variable contiene una lista de opciones adicionales de la línea de comando de kernel
que deben agregarse a cada kernel de Linux individual. Los usos típicos incluyen “rhgb
quiet” para un arranque gráfico, “console=xxxxxx” para seleccionar un dispositivo
de consola de kernel, y “crashkernel=xxxx” para configurar el volcado de memoria
automático de kernel.
1. Realice el arranque desde una fuente de instalación; esta puede ser una imagen de DVD,
un CD de netboot o PXE que proporciona un árbol de instalación RHEL.
76 RH342-RHEL7.2-es-1-20160321
Reinstalación de grub2 en el MBR
3. Cuando se le pida montar los discos para el sistema de destino que se recuperará,
seleccione la opción 1 (Continuar). Esta acción montará el sistema en /mnt/sysimage.
4. Presione Intro para obtener una shell. Esta shell residirá dentro del entorno de
instalación/recuperación, con el sistema de destino montado en /mnt/sysimage.
Esta shell tiene una cantidad de herramientas disponibles para recuperar un sistema,
como todas las herramientas comunes de conexiones en red, LVM y sistema de archivos.
Los diversos directorios bin del sistema de destino también se agregan a la ruta de
búsqueda ejecutable predeterminada (${PATH}).
6. Verifique que /boot esté montado. Según el tipo de instalación, /boot puede estar en
una partición separada o puede ser parte del sistema del archivo raíz.
sh-4.2# ls -l /boot
7. Utilice el comando grub2-install para volver a escribir las secciones del cargador de
arranque del MBR y del área incorporada. Este comando necesitará el dispositivo de
bloqueo que representa el disco principal como argumento. Si no recuerda el nombre del
disco principal, utilice lsblk y blkid para identificarlo.
9. Espere a que el sistema se reinicie dos veces. Después del primer reinicio, el sistema
realizará un nuevo etiquetado exhaustivo del sistema de archivos SELinux y, luego, se
reiniciará otra vez automáticamente para asegurarse de que se utilicen los contextos
adecuados. Este nuevo etiquetado se activa automáticamente por el sistema de
recuperación anaconda que crea el archivo /.autorelabel.
Referencias
El capítulo sobre el cargador de arranque grub2 en la Guía de administración
de sistemas de Red Hat Enterprise Linux que se encuentra en https://
access.redhat.com/documentation
RH342-RHEL7.2-es-1-20160321 77
Capítulo 3. Solución de problemas de arranque
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder solucionar o reinstalar el cargador de arranque en un sistema basado en BIOS
a través del modo de recuperación (rescue) de anaconda.
Andes de comenzar
Desde su sistema workstation, ejecute el comando lab biosbootbreak setup. Este
comando modificará su sistema servera para que no pueda arrancar y, luego, lo reiniciará.
1.1.
Booting from Hard Disk...
1.2. Esto indicaría un problema en el contenido del MBR. Si el problema hubiera ocurrido
en grub2.cfg, hubiese aparecido un mensaje de error más informativo.
2.2. Cuando se muestre el menú de arranque, seleccione la entrada que desea arrancar
desde la red.
2.4. Espere que anaconda termine de cargarse y, cuando se le pida montar su sistema en
/mnt/sysimage, presione 1 y pulse Intro para continuar.
2.5. Cuando se le solicite, presione Intro para abrir una shell en su sistema.
78 RH342-RHEL7.2-es-1-20160321
3.1. chroot en el sistema en /mnt/sysimage.
4.2. Presione Ctrl+D para salir de anaconda. El sistema se reiniciará dos veces.
El segundo reinicio está forzado por el sistema después de realizar un nuevo
etiquetado completo de SELinux.
Importante
Durante el primer reinicio, puede parecer que su sistema no responde;
esto se debe a que se está realizando un nuevo etiquetado de SELinux en
segundo plano. No interrumpa el sistema, o reiniciará el nuevo etiquetado
en el próximo reinicio.
RH342-RHEL7.2-es-1-20160321 79
Capítulo 3. Solución de problemas de arranque
Objetivos
Después de completar esta sección, los estudiantes podrán reparar problemas de arranque
en sistemas UEFI.
¿Qué es UEFI?
Presentada en 2005, la Unified Extensible Firmware Interface (UEFI) reemplaza la anterior
Extensible Firmware Interface (EFI) y el sistema BIOS. Se buscó un reemplazo del BIOS anterior
para solucionar los límites que BIOS imponía, como el modo de procesador de 16 bits y solo 1
MiB de espacio accesible.
UEFI también permite el arranque de discos superiores a 2 TiB, siempre y cuando estén
particionados con una GUID Partition Table (GPT).
Una de las grandes diferencias entre los sistemas UEFI y los sistemas BIOS es la manera
en que arrancan. Mientra que en un sistema BIOS, BIOS tiene que buscar dispositivos de
arranque, los sistemas operativos pueden “registrarse” con el firmware de UEFI. Esto permite
que sea más fácil para los usuarios finales seleccionar el sistema operativo que desean
arrancar en un entorno de varios arranques.
grub2 y UEFI
Para arrancar un sistema de UEFI a través de grub2, debe haber una EFI System Partition
(ESP) en el disco. Esta partición debe tener el UUID de GPT C12A7328-F81F-11D2-
BA4B-00A0C93EC93B o el tipo de MBR 0xEF. Esta partición debe estar formateada con un
sistema de archivos FAT y debe ser lo suficientemente grande para admitir todos los kernels
de arranque y el propio cargador de arranque. Se recomienda un tamaño de 512 MiB, pero
los tamaños más pequeños también funcionarán. Esta partición debe colocarse en /boot/
efi y, por lo general, será creada por el instalador anaconda.
Este cambio es necesario dado que los kernels necesitan cargarse de manera diferente
en un sistema UEFI que en un sistema BIOS. El comando grub2-mkconfig reconoce
automáticamente un sistema UEFI y realiza los cambios correctos.
80 RH342-RHEL7.2-es-1-20160321
Reinstalación de grub2 en máquinas basadas en UEFI
grub2-install
Aunque el comando grub2-install es capaz de instalar un cargador de arranque en un
sistema UEFI, nunca debe utilizarse directamente.
Advertencia
El uso de grub2-install instalará un grubx64.efi personalizado. Si el
sistema se configuró para un arranque seguro, esto producirá un error en el
arranque.
Si se eliminó la entrada de Red Hat del menú de arranque de UEFI, arrancar desde el disco
que tiene la instalación de Red Hat Enterprise Linux 7 hará que se agregue automáticamente.
La aplicación shim.efi se firma con una clave en la que confía la mayor parte del firmware
de UEFI. Cuando se inicia, intentará cargar grubx64.efi a través de las llamadas normales
de firmware de UEFI. Si el firmware de UEFI se niega a cargar la aplicación debido a una mala
RH342-RHEL7.2-es-1-20160321 81
Capítulo 3. Solución de problemas de arranque
firma, shim intentará verificar la aplicación a través de otras claves compiladas en shim o a
través de una clave generada por el usuario almacenada en la NVRAM (Machine Owner Key,
Clave de propietario de la máquina [MOK]). Cuando intenta iniciar una aplicación firmada para
la que no se registraron claves, la aplicación MokManager.efi se inicia automáticamente para
que un usuario final pueda registrar una clave personal.
La aplicación shim.efi también registra una nueva llamada del sistema UEFI que grub2 puede
utilizar para verificar firmas de kernel.
Si shim.efi no está registrado con el firmware de UEFI, arrancar desde el sistema que
contiene el ESP ejecutará la aplicación /boot/efi/EFI/BOOT/BOOTX64.efi. A su vez, esto
ejecutará la aplicación fallback.efi, que registra automáticamente la aplicación shim.efi y
arranca el sistema, en función de los ajustes de /boot/efi/EFI/redhat/BOOT.CSV.
BootOrder: 0016,000A,000D,0009,000B,000C,000E,0008,0007,0014,0015,0013
Boot0000 Setup
Boot0001 Boot Menu
Boot0002 Diagnostic Splash Screen
Boot0003 Lenovo Diagnostics
...
Boot0013* PCI LAN
Boot0014 Other CD
Boot0015 Other HDD
Esta lista define el orden en el que se intentarán las entradas de arranque; primero la
entrada más a la izquierda y, por último, la entrada más a la derecha. El número hace
referencia a varias entradas de BootXXXX que lo siguen.
Esta es una entrada de arranque individual; en este caso, número 0x0016. Los números
de entrada de arranque siempre se presentan (y usan) como números hexadecimales.
Los asteriscos (*) muestran que esta entrada está activa; es decir, se puede seleccionar
y arrancar.
Para obtener más información acerca de las entradas de arranque, puede utilizar la opción -
v.
82 RH342-RHEL7.2-es-1-20160321
Administración de objetivos de arranque de UEFI
BootOrder: 0016,000A,000D,0009,000B,000C,000E,0008,0007,0014,0015,0013
Boot0000 Setup FvFile(721c8b66-426c-4e86-8e99-3457c46ab0b9)
...
Boot0016* Red Hat HD(1,GPT,c13391b4-a66f-4b9b-9deb-39da588d33a3,0x800,0x64000)/File(\EFI
\redhat\shim.efi)
El siguiente ejemplo agrega una nueva entrada denominada Yippie, con /dev/sda2 como
el ESP, y con la aplicación /EFI/yippie.efi en el ESP. Tenga en cuenta que las barras
diagonales normales (/) deben reemplazarse con barras diagonales inversas (\).
Consulte la página del manual efibootmgr para obtener más información acerca de
seleccionar objetivos de arranque temporales, agregar y eliminar entradas, y actualizar
entradas.
Referencias
Las secciones de “Arranque seguro de UEFI” en la Guía de administración de
sistemas de Red Hat Enterprise Linux en https://access.redhat.com/
documentation
RH342-RHEL7.2-es-1-20160321 83
Capítulo 3. Solución de problemas de arranque
a. grub2-install
b. fallback.efi
c. efibootmgr
d. grub2
a. /boot/efi/EFI/redhat/grub.cfg
b. /boot/grub2/grub.cfg
c. /boot/efi/grub.cfg
d. /boot/efi/redhat/grub.cfg
84 RH342-RHEL7.2-es-1-20160321
Solución
Solución
Elija las respuestas correctas para las siguientes preguntas:
a. grub2-install
b. fallback.efi
c. efibootmgr
d. grub2
a. /boot/efi/EFI/redhat/grub.cfg
b. /boot/grub2/grub.cfg
c. /boot/efi/grub.cfg
d. /boot/efi/redhat/grub.cfg
RH342-RHEL7.2-es-1-20160321 85
Capítulo 3. Solución de problemas de arranque
Objetivos
Después de completar esta sección, los estudiantes podrán identificar y resolver fallas del
servicio que afectan el proceso de arranque.
Dependencias de servicio
Cuando se inicia un sistema Red Hat Enterprise Linux 7, también se inician diversos servicios
automáticamente en función del objetivo de arranque (boot target) seleccionado. Cada uno
de estos servicios tiene dependencias en otros servicios.
Tipos de dependencia
En la siguiente lista se detallan los diferentes tipos de dependencia que una unidad puede
tener. Para obtener más información, consulte la página del manual systemd.unit(5).
Requires=
Iniciar esta unidad agregará automáticamente las unidades requeridas en la transacción.
Detener la unidad requerida detendrá también esta unidad. A menos que también se
utilice After= o Before=, las unidades se iniciarán al mismo tiempo.
RequiresOverridable=
Como Requires, pero los requisitos con fallas no harán que la unidad falle cuando un
administrador la inicia explícitamente. Cuando se inician como una dependencia, por
ejemplo durante el arranque, los requisitos harán que esta unidad falle.
Requisite= , RequisiteOverridable=
Como Requires y RequiresOverridable, pero más sólido. Si Requires inicia una
unidad requerida que todavía no está en ejecución, Requisite fallará.
Wants=
Una versión más débil de Requires. Cuando una unidad deseada no puede iniciarse,
aún así esta unidad se iniciará.
El valor wants también puede configurarse al crear enlaces simbólicos en las unidades
deseadas de /etc/systemd/system/<UNITNAME>.wants/.
Conflicts=
Una dependencia negativa. Iniciar esta unidad detendrá las unidades en conflicto (si
corresponde), y viceversa.
86 RH342-RHEL7.2-es-1-20160321
Inspección de dependencias
Before= , After=
Estas dos entradas configuran el orden. Cuando no se usan, las unidades requeridas se
inician al mismo tiempo. Si la unidad a.service tiene una línea Before=b.service, la
ejecución de b.service se demorará hasta que a.service haya finalizado el inicio.
After= indica que las unidades enumeradas deben haber finalizado el inicio antes de
que se pueda iniciar esta unidad.
Inspección de dependencias
Hay tres maneras de ver las dependencias de una unidad: manual, automatizada y gráfica.
Para ver manualmente las dependencias de una unidad, se puede usar el comando
systemctl show UNIT. Un administrador buscaría las líneas de configuración relevantes y
repetiría este proceso para todas las dependencias enumeradas.
nota
Una buena cantidad de unidades tiene una dependencia en un objetivo más grande
como basic.target. Ejecutar systemctl list-dependencies en esas unidades
también mostrará todas las dependencias para ese objetivo en el resultado.
RH342-RHEL7.2-es-1-20160321 87
Capítulo 3. Solución de problemas de arranque
s s h d .s o c k e t m u lt i-u s e r .t a r g e t
s s h d .s e r vic e
Problemas de dependencia
Es posible que un administrador configure dependencias de manera tal que el sistema nunca
pueda iniciarse mientras esté adherido a esas dependencias; por ejemplo, dos unidades
que tienen un Requires y un Before señalándose entre sí. Para que los sistemas puedan
arrancar, systemd detectará esos tipos de problemas y los intentará resolver. El método que
se utiliza para resolver estos problemas es bastante directo: Una de las unidades infractoras
se elimina de la transacción hasta que se alcance una configuración de arranque. Esto puede
significar que una cantidad de servicios que un administrador pensó que se iniciarían no se
están iniciando. Solo se muestra un breve mensaje en la consola en el momento del arranque
para esos problemas, por lo que es posible que se requiera una lectura adecuada de los
registros del sistema.
Importante
Cuando cambia archivos de configuración en el disco, no se olvide de ejecutar
systemctl daemon-reload para informarle los cambios a systemd.
Para obtener una shell root durante el inicio, un administrador puede habilitar el servicio
debug-shell.service. Este servicio iniciará una consola virtual con una shell logueada
como root anexada en /dev/tty9, muy prematuramente durante el arranque, durante el
inicio del objetivo (target) sysinit.target.
88 RH342-RHEL7.2-es-1-20160321
Shell de root temprana
Advertencia
NO deje el servicio debug-shell.service habilitado y en ejecución después de
que haya finalizado la depuración. Cualquier persona con acceso a una consola, ya
sea físicamente o a través de una tarjeta de gestión o un switch KVM, tendrá acceso
completo y libre a la máquina.
Referencias
Descripción general de systemd para RHEL7
https://access.redhat.com/articles/754933
RH342-RHEL7.2-es-1-20160321 89
Capítulo 3. Solución de problemas de arranque
En este trabajo de laboratorio, resolverá un problema donde hay dos servicios que no
pueden iniciarse en el arranque.
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder resolver un problema donde hay dos servicios que no pueden iniciarse en el
arranque.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab bootservicefail
setup en su sistema workstation.
Como parte de un proyecto más grande, su máquina servera está configurada para
ejecutar contenido web y de FTP, a través de los daemons httpd y vsftpd respectivamente.
Las especificaciones para este proyecto requerían que ambos daemons estén siempre en
ejecución al mismo tiempo, en la misma máquina.
Uno de sus excolegas ha intentado cumplir con este requisito, pero ahora ambos servicios
se niegan a iniciar en el momento del arranque. Lo han llamado para solucionar este
problema. Por ahora, no necesita garantizar que los dos servicios siempre se ejecutarán
simultáneamente.
1.1. Verifique el estado del servicio httpd. Dado que algunas líneas de estado pueden
contener información útil que supera el límite de 80 caracteres, utilice la opción -l
para mostrar las líneas de estado completas.
90 RH342-RHEL7.2-es-1-20160321
Dec 14 10:40:00 servera.lab.example.com systemd[1]: Found dependency on
httpd.service/start
Dec 14 10:40:00 servera.lab.example.com systemd[1]: Breaking ordering cycle by
deleting job vsftpd.service/start
1.2. Verifique el estado del servicio vsftpd. Dado que algunas líneas de estado pueden
contener información útil que supera el límite de 80 caracteres, utilice la opción -l
para mostrar las líneas de estado completas.
2. Parece que ambos servicios tienen una fuerte dependencia de inicio entre sí. Si
observa el resultado del paso anterior, ¿qué archivos podrían ser responsables de esta
dependencia? Investigue el contenido de esos archivos.
2.1. Desde el resultado de los comandos systemctl status, puede ver que se
agregaron dos archivos no estándares a las especificaciones del servicio systemd:
• /etc/systemd/system/httpd.service.d/10-dependencies.conf
• /etc/systemd/system/vsftpd.service.d/10-dependencies.conf
3. Formule una hipótesis acerca de por qué estos dos servicios no pueden iniciarse.
3.1. Ambos servicios tienen un valor Requires para otro servicio, pero esto solo
garantiza que si uno de ellos se inicia, el otro también lo hará.
3.2. Ambos servicios tienen un requisito de After en el otro servicio. Esto provocará una
dependencia cíclica, que systemd interrumpirá al no iniciar estos servicios.
RH342-RHEL7.2-es-1-20160321 91
Capítulo 3. Solución de problemas de arranque
4.2. Cambiar una de las dos líneas After a Before garantizará que los servicios siempre
se inicien juntos, sin causar una dependencia cíclica.
5.1. Cambie la línea After para el servicio httpd.service a Before. Abra /etc/
systemd/system/httpd.service.d/10-dependencies.conf en un editor de
texto y edítelo para que tenga el siguiente texto:
[Unit]
Before=vsftpd.service
Requires=vsftpd.service
5.2. Indíquele a systemd que vuelva a cargar todos los archivos de configuración del
disco.
5.4. Reinicie su sistema servera para comprobar que ambos servicios se iniciarán
durante el arranque.
7. Después de calificar sus sistemas, restablezca correctamente sus máquinas al estado que
tenían antes de iniciar el trabajo de laboratorio, al restablecer sus máquinas virtuales o al
ejecutar el siguiente comando en su sistema workstation.
92 RH342-RHEL7.2-es-1-20160321
Recuperación de la contraseña de root
Objetivos
Tras finalizar esta sección, los estudiantes podrán recuperar el control de root de un sistema.
Si la cuenta root aún está registrada en un terminal desbloqueado, esa sesión puede
utilizarse para restablecer la contraseña; de manera similar, si una cuenta para la que se
conoce la contraseña tiene acceso sudo a una shell, o al comando passwd, ese acceso puede
utilizarse para restablecer la contraseña de root.
Algunos métodos un poco más complejos incluyen la edición manual del archivo /etc/
shadow con un hash de contraseña conocido de una cuenta que tiene acceso sudo a un
editor, o la edición de imágenes del disco de la máquina virtual con el comando guestfish.
Si ninguno de los métodos mencionados está disponible, habrá otros métodos a disposición.
El modo de recuperación anaconda permitirá que alguien que tiene acceso físico a una
máquina restablezca la contraseña de root (siempre y cuando el disco no esté cifrado o se
conozca la contraseña cifrada, y el firmware de BIOS/UEFI permita el arranque desde otro
dispositivo, o se conozca la contraseña de BIOS).
Siga estos pasos para restablecer una contraseña de root perdida a través de este método:
2.1. Use las teclas del cursor para resaltar la entrada que normalmente se arrancaría y
presione e.
2.2. Use las teclas del cursor para ir a la línea que tiene el kernel y los argumentos de
kernel. Esta línea normalmente comienza con linux16 o linuxefi.
RH342-RHEL7.2-es-1-20160321 93
Capítulo 3. Solución de problemas de arranque
nota
Las imágenes de la máquina virtual utilizadas en el aula tienen un ajuste
console= al final de la línea que configura una consola serial. Si no está
utilizando una consola serial, elimine este ajuste para que el disco RAM
inicial utilice la consola virtual regular.
sh-4.2# load_policy -i
94 RH342-RHEL7.2-es-1-20160321
Restablecimiento de una contraseña de root sin medios externos
nota
Algunos administradores puede considerar que el orden de los pasos anteriores
puede ser “raro”. ¿Por qué no se carga la política de SELinux antes de ejecutar
el comando passwd? ¿Esto no ahorraría la molestia de ejecutar el comando
restorecon?
Referencias
Restablecimiento de una contraseña de root de RHEL-7/systemd
https://access.redhat.com/solutions/918283
RH342-RHEL7.2-es-1-20160321 95
Capítulo 3. Solución de problemas de arranque
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder restablecer una contraseña de root perdida sin tener otra forma de acceso raíz
a una máquina.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab rootpw setup en su
máquina workstation.
Uno de sus estimados colegas se ha ido de su empresa. Uno de sus proyectos finales incluía
la configuración de su máquina servera. Aunque su excolega hizo un trabajo admirable en
la configuración del servidor, faltan los documentos de servera.
Importante
Para este ejercicio, supongamos que no tiene acceso ssh sin contraseña a la cuenta
de root en servera, y que la cuenta student en servera no tiene acceso sudo
completo.
1. Abra una consola en servera y reiníciela. Diríjase al menú grub y fuerce al sistema a
pausar el arranque durante la ejecución del disco RAM inicial.
1.2. Presione cualquier tecla para pausar el temporizador de cuenta regresiva del menú
grub cuando aparezca.
1.4. Desplácese hacia abajo en la línea que comienza con linux16, presione End para ir
al final de la línea, elimine el último ajuste console= y anexe rd.break.
1.5. Presione Ctrl+X para realizar el arranque con estos ajustes modificados.
96 RH342-RHEL7.2-es-1-20160321
2. Cambie la contraseña de root de su sistema por redhat y asegúrese de hacerlo con
cuidado para no alterar los contextos de SELinux.
sh-4.2# load_policy -i
nota
Cargar la política de SELinux antes de cambiar la contraseña de root
provocará una denegación cuando intente actualizar la contraseña raíz.
En cambio, configurar la contraseña, luego cargar la política y corregir
los contextos sí funciona. Si se olvida de actualizar los contextos, ningún
usuario local podrá iniciar sesión después de un reinicio ya que habrá un
contexto de seguridad no válido en /etc/shadow.
3. Reinicie su sistema servera y compruebe que puede iniciar sesión como root con la
contraseña redhat.
sh-4.2# Ctrl+D
switch_root:/# Ctrl+D
RH342-RHEL7.2-es-1-20160321 97
Capítulo 3. Solución de problemas de arranque
3.2. Intente iniciar sesión en la consola como root con la contraseña redhat.
98 RH342-RHEL7.2-es-1-20160321
Trabajo de laboratorio: Solución de problemas de arranque
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder solucionar problemas donde un sistema no puede arrancar después del
cargador de arranque.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab bootissues setup en
su sistema workstation. Esto modificará la capacidad de su sistema servera para arrancar
y, luego, lo reiniciará.
Alguien decidió “agilizar” el proceso de arranque de su máquina servera. Al hacerlo, puso fin
a la capacidad que dicho sistema tenía para arrancar su objetivo (target) predeterminado.
5. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
RH342-RHEL7.2-es-1-20160321 99
Capítulo 3. Solución de problemas de arranque
Solución
En este trabajo de laboratorio, solucionará un problema donde un sistema no puede arrancar
después de la pantalla del cargador de arranque.
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder solucionar problemas donde un sistema no puede arrancar después del
cargador de arranque.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab bootissues setup en
su sistema workstation. Esto modificará la capacidad de su sistema servera para arrancar
y, luego, lo reiniciará.
Alguien decidió “agilizar” el proceso de arranque de su máquina servera. Al hacerlo, puso fin
a la capacidad que dicho sistema tenía para arrancar su objetivo (target) predeterminado.
Por lo general, esto indica que no hay un kernel definido en la entrada del menú, o
que se está cargando el disco RAM antes del kernel.
2.1. Aquí tiene dos opciones. Ver si arranca una segunda entrada, en este caso la entrada
de rescue, o editar manualmente la configuración en la memoria para resolver el
problema temporalmente.
2.2. Use el menú grub para arrancar la segunda entrada (rescue) (rescate).
100 RH342-RHEL7.2-es-1-20160321
Solución
5. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
RH342-RHEL7.2-es-1-20160321 101
Capítulo 3. Solución de problemas de arranque
Resumen
En este capítulo, aprendió lo siguiente:
• Cómo volver a configurar un sistema UEFI para que use el cargador de arranque shim de
EFI al eliminar entradas de arranque de EFI existentes a través de efibootmgr, y al reiniciar
desde el disco del sistema.
• Cómo recuperar una contraseña de root perdida con diversos métodos, incluido el uso de
rd.break en la línea de comandos de kernel.
102 RH342-RHEL7.2-es-1-20160321
TRAINING
CAPÍTULO 4
IDENTIFICACIÓN DE PROBLEMAS
DE HARDWARE
Visión general
Meta Identificar problemas de hardware que puedan afectar el
funcionamiento normal de un sistema.
Objetivos • Identificar el hardware y los problemas del hardware.
RH342-RHEL7.2-es-1-20160321 103
Capítulo 4. Identificación de problemas de hardware
Objetivos
Tras finalizar esta sección, los estudiantes podrán identificar hardware y problemas de
hardware.
Identificación de hardware
Un paso importante en la solución de posibles problemas de hardware es saber exactamente
cuál es el hardware presente en el sistema. Para sistemas virtuales, esto parece menos útil
que para sistemas físicos, pero le puede indicar a un administrador si se han agregado los
dispositivos virtuales correctos.
Identificación de CPU
La CPU en un sistema en ejecución puede identificarse con el comando lscpu del paquete
util-linux.
Otro dato importante es cuáles son los indicadores que una CPU admite. Estos indicadores
señalan si una CPU admite ciertas tecnologías extendidas, como una aceleración AES,
virtualización asistida por hardware, y muchas más. Puede inspeccionar estos indicadores en
/proc/cpuinfo.
104 RH342-RHEL7.2-es-1-20160321
Identificación de hardware
nota
El hecho de que una CPU admita un determinado indicador no siempre significa
que la función esté disponible. Por ejemplo, el indicador vmx en una CPU Intel
señala que el procesador es capaz de admitir virtualización de hardware, pero la
función en sí puede estar deshabilitada en el firmware del sistema.
Identificación de memoria
La herramienta dmidecode puede utilizarse para recuperar información acerca de bancos
de memoria físicos, incluido el tipo, la velocidad y la ubicación del banco. Para recuperar esta
información, utilice el comando dmidecode -t memory.
...
Identificación de discos
Para identificar discos físicos, un administrador puede usar el comando lsscsi del paquete
lsscsi. Esta herramienta puede enumerar todos los discos SCSI (y USB, SATA y SAS) adjuntados
a un sistema.
Para obtener más información, puede usar el comando hdparm del paquete hdparm en
discos individuales.
RH342-RHEL7.2-es-1-20160321 105
Capítulo 4. Identificación de problemas de hardware
Red Hat Enterprise Linux 7 proporciona dos mecanismos para registrar fallas de hardware:
mcelog y rasdaemon.
mcelog
mcelog proporciona un framework (marco) para detectar y registrar excepciones de
comprobación de la máquina en sistemas x86. En sistemas compatibles, también puede
marcar automáticamente áreas deficientes de RAM para que no sean utilizadas.
106 RH342-RHEL7.2-es-1-20160321
Prueba de memoria
A partir de ahora, los errores de hardware detectados por el daemon mcelog aparecerán en
el diario (journal) del sistema. Puede consultar mensajes a través del comando journalctl
-u mcelog.service. Si el daemon abrt está instalado y activo, también se desencadenará
en varios mensajes mcelog.
rasdaemon
rasdaemon es un reemplazo más moderno para mcelog que se conecta al subsistema de
detección del kernel. RAS significa fiabilidad, disponibilidad y facilidad de servicio (Reliability,
Availability, and Serviceability). rasdaemon se conecta al mecanismo de Detección y corrección
de errores (EDAC, Error Detection And Correction) para los módulos DIMM y los informa al
espacio del usuario, y también a los mensajes RAS que vienen del subsistema de detección
del kernel.
nota
Si no se registraron errores ni eventos, puede aparecer un mensaje de error
en el que se indique que falta una base de datos cuando ejecuta los comandos
anteriores.
Prueba de memoria
Cuando se presume que hay un error de memoria física, un administrador debe ejecutar una
prueba de memoria exhaustiva. En estos casos, se puede instalar el paquete memtest86+.
RH342-RHEL7.2-es-1-20160321 107
Capítulo 4. Identificación de problemas de hardware
Referencias
RHEL7: ¿Cuál de mcelog y rasdaemon debería usar para monitorear hardware, y
para qué casos de uso?
https://access.redhat.com/solutions/1412953
108 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Identificación de problemas de hardware
Recursos
Máquinas • servera
Resultados
Deberá poder identificar problemas de hardware con entradas de diario (journal).
Andes de comenzar
En su sistema workstation, ejecute el comando lab hardwareissues setup para
preparar su sistema servera para este ejercicio.
1.1. Inspeccione el archivo, verifique que tiene permiso de lectura y que es un archivo de
registro.
1.2. Limite su vista a los eventos que se generan a partir del servicio mcelog.service.
¿Esto proporciona información relevante?
RH342-RHEL7.2-es-1-20160321 109
Capítulo 4. Identificación de problemas de hardware
2. Dado que la máquina parece tener un problema de memoria, ha decidido ejecutar una
comprobación de memoria exhaustiva en ella. Pretenda que servera es la máquina en
cuestión y prepárela para ejecutar memtest86+.
Importante
No se recomienda ejecutar memtest86+ en una máquina virtual fuera del aula.
En circunstancias normales, memtest86+ debe ejecutarse en una máquina
hipervisor.
2.2. Ejecute el comando memtest-setup para agregar una nueva plantilla a /etc/
grub.d/
3. Reinicie servera y seleccione memtest86+ desde el menú grub2. Déjelo ejecutar por
unos segundos, explore algunas de las opciones y, luego, reinicie Red Hat Enterprise
Linux 7.
110 RH342-RHEL7.2-es-1-20160321
Administración de los módulos del kernel
Objetivos
Tras finalizar esta sección, los estudiantes deberán ser capaces de administrar módulos del
kernel y sus parámetros.
Aparte de sus nombres regulares, los módulos del controlador del dispositivo también
tienen alias incorporados, como usb:v0421p0434d0100dc*dsc*dp*ic*isc*ip*in*
o pci:v00008086d0000162Bsv*sd*bc03sc*i*. Estos alias permiten que el kernel
cargue automáticamente los controladores de hardware necesarios en función de los ID de
dispositivo y de los proveedores de USB o PCI.
nota
Los códigos de salida para el comando modprobe no reflejan si una acción se realizó
correctamente o no, sino que reflejan si se logró el resultado final deseado. Por
ejemplo, cuando carga un módulo que ya está cargado, devolverá 0, aunque no se
haya realizado ninguna acción.
RH342-RHEL7.2-es-1-20160321 111
Capítulo 4. Identificación de problemas de hardware
Opciones de módulo
Muchos módulos del kernel pueden adoptar opciones, alternando la manera en que se
comportan. Estos parámetros se exponen de dos maneras, mediante el uso del comando
modinfo -p y en el sistema de archivos virtual /sys/module.
Otro método de trabajar con opciones de módulo es a través del directorio /sys/module/.
La mayoría de los módulos con opciones las mostrará en un directorio denominado /sys/
module/<MODULENAME>/parameters, donde las opciones individuales se convierten en
archivos separados. Si una opción se puede modificar en el tiempo de ejecución, el archivo
correspondiente tendrá permiso de escritura para root. Si solo puede configurar una opción
en el momento de carga del módulo, el archivo correspondiente será de solo lectura.
Para establecer automáticamente esta opción cada vez que se carga este módulo, incluso
cuando se carga automáticamente, se puede usar un archivo de configuración en /etc/
modprobe.d/. Este archivo deberá tener un nombre de archivo que finalice en .conf, y los
archivos se analizarán en orden alfanumérico. Las opciones se agregan con una línea de
opciones como la que se muestra a continuación:
Se recomienda agrupar las opciones en archivos que correspondan a su módulo, por ejemplo
/etc/modprobe.d/st.conf, o en archivos relacionados a una función, por ejemplo, /etc/
modprobe.d/throughput.conf.
112 RH342-RHEL7.2-es-1-20160321
Administración de los módulos del kernel
Referencias
El capítulo sobre trabajar con módulos de kernel en la Guía para administradores de
sistemas Red Hat Enterprise Linux 7 en https://access.redhat.com/docs.
RH342-RHEL7.2-es-1-20160321 113
Capítulo 4. Identificación de problemas de hardware
Recursos
Máquinas • servera
• workstation
Resultados
Deberá poder configurar opciones de módulo para módulos de kernel cargables.
1. Vea la lista de posibles opciones de módulo del kernel para el módulo del kernel
megaraid_sas.ko, busque la opción que corresponda al manejo de interrupciones de
MSI-X, cargue el módulo y verifique que el valor predeterminado indicado esté en efecto
aplicado. A continuación, descargue el módulo.
1.4. Verifique que el valor predeterminado indicado (0) para la opción msix_disable
sea realmente el valor activo.
114 RH342-RHEL7.2-es-1-20160321
[root@servera ~]# modprobe -rv megaraid_sas
Esta configuración debería ser fácil de copiar a otros sistemas, por lo que es necesario un
archivo de configuración independiente.
RH342-RHEL7.2-es-1-20160321 115
Capítulo 4. Identificación de problemas de hardware
Objetivos
Después de completar esta sección, los estudiantes podrán identificar y resolver problemas
de virtualización.
Problemas de virtualización
Cuando ejecuta (varias) máquinas virtuales con KVM y libvirt, pueden surgir diversos
problemas. Algunos están relacionados con hardware/firmware; otros pueden estar
relacionados meramente con software/configuración. En esta sección, se identifican varios
problemas posibles, sus síntomas y sus soluciones.
<arch name='x86_64'>
<wordsize>64</wordsize>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<machine canonical='pc-i440fx-2.3' maxCpus='255'>pc</machine>
....
<machine maxCpus='255'>pc-0.13</machine>
<domain type='qemu'/>
<domain type='kvm'>
<emulator>/usr/bin/qemu-kvm</emulator>
<machine canonical='pc-i440fx-2.3' maxCpus='255'>pc</machine>
....
116 RH342-RHEL7.2-es-1-20160321
Recursos sobreutilizados
</domain>
</arch>
<features>
<cpuselection/>
<deviceboot/>
<disksnapshot default='on' toggle='no'/>
<acpi default='on' toggle='yes'/>
<apic default='on' toggle='no'/>
</features>
</guest>
</capabilities>
Esto indica el tipo de hardware que se virtualizará; en este caso, una máquina x86 de 64
bits. El resultado contendrá varios de estos bloques en algunos casos; por ejemplo, se
pueden emular las máquinas virtuales de 32 bits y 64 bits.
Este bloque indica que este tipo de máquina se puede emular con una CPU con software
qemu. La emulación es mucho más lenta que una virtualización de hardware completa,
en función de la magnitud.
Este bloque indica compatibilidad con la virtualización de hardware a través de KVM.
Si falta, este tipo de máquina no puede virtualizarse en hardware, pero requiere una
emulación.
Importante
Si la virtualización de hardware no está disponible, y no se puede activar en el
firmware del sistema, las máquinas virtualizadas se ejecutarán en un procesador
emulado, que es más lento que una CPU virtualizada por hardware.
Recursos sobreutilizados
libvirt permite que los administradores asignen más recursos virtuales a las máquinas
virtuales que los que realmente están disponibles en el sistema host. En la mayoría de los
casos, esta acción no tiene consecuencias (hasta cierto grado). El uso típico de la CPU de una
máquina virtual no alcanza el 100 %, por lo que asignar más CPU virtuales que la cantidad
de núcleos físicos no es un problema, siempre y cuando el uso de CPU de la máquina virtual
se mantenga dentro de los límites. La memoria se puede sobreutilizar, y la memoria de
la máquina virtual puede intercambiarse en el disco, o el uso ser comprimido por Kernel
Samepage Merging (KSM), donde las páginas de memoria duplicadas se reducen a una única
página y se dividen nuevamente cuando una máquina virtual escribe en ella. Las imágenes
dispersas en el disco pueden tener un tamaño total superior al espacio disponible real en el
almacenamiento subyacente, siempre y cuando el tamaño utilizado total no supere el espacio
disponible real en el almacenamiento host.
Cuando los recursos son escasos, el rendimiento y la latencia generales pueden verse
afectados considerablemente. El host no solo necesita balancear los recursos disponibles
entre las diferentes máquinas virtuales, también necesita utilizar algunos de estos mismos
recursos para realizar el balanceo.
RH342-RHEL7.2-es-1-20160321 117
Capítulo 4. Identificación de problemas de hardware
Otra opción es limitar el uso de recursos de varias máquinas virtuales, ya sea al reducir la
cantidad de recursos asignados a las máquinas o al imponer límites a través de cgroups.
Una tercera opción es detener las máquinas innecesarias o que no son críticas hasta que
disminuya nuevamente el uso de recursos.
Si solo se han utilizado herramientas libvirt, como virsh y virt-manager, para realizar
actualizaciones, todos los archivos deberían ser XML válidos y deberían validarse sobre
los archivos de esquema proporcionados. Pero, si un administrador ha realizado cambios
manuales en cualquiera de los archivos de /etc/libvirt/, es posible que se hayan
incorporado problemas.
Una manera simple de comprobar si un archivo es un XML válido que se valida sobre el
esquema libvirt, requiere dos pasos:
1. Primero, asegurarse de que el archivo es un XML válido. Para ello, se puede utilizar la
herramienta xmllint.
Por lo general, los errores informados por xmllint deberían ordenarse de manera
descendente, ya que los primeros errores pueden causar un número considerable de
falsos negativos más adelante.
118 RH342-RHEL7.2-es-1-20160321
Redes libvirt
Redes libvirt
Para proporcionar redes virtuales a máquinas virtuales, libvirt utiliza puentes por software.
Estos puentes actúan como switches virtuales que conectan todas las interfaces de red
(virtual) que tienen asignados.
Aparte de las redes virtuales creadas por libvirt, los administradores también pueden
configurar puentes regulares con una o más interfaces de red físicas asignadas a través de
NetworkManager.
Referencias
El capítulo sobre configuración de redes en la Guía de implementación y
administración de virtualización de Red Hat Enterprise Linux disponible en
https://access.redhat.com/docs.
El capítulo sobre puentes de red en la Guía de redes de Red Hat Enterprise Linux
disponible en https://access.redhat.com/docs.
RH342-RHEL7.2-es-1-20160321 119
Capítulo 4. Identificación de problemas de hardware
En este trabajo de laboratorio, solucionará una especificación XML de dominio no válida para
una máquina virtual.
Recursos
Archivos /root/somemachine.xml
Máquinas • workstation
Resultados
Deberá poder solucionar un archivo XML de dominio libvirt dañado.
Andes de comenzar
En su sistema workstation, ejecute el comando lab vmxml setup.
Uno de sus colegas ha estado teniendo problemas para importar una máquina
virtual en su sistema workstation. Esta máquina virtual está definida en el archivo
/root/somemachine.xml, pero si intenta importarla con virsh define /root/
somemachine.xml, se devuelven errores acerca de un archivo XML dañado.
Importante: A efectos de este ejercicio, la máquina virtual solo necesita definirse, no iniciarse.
Las imágenes del disco a las que se hace referencia en la definición de la máquina virtual no
existen, y no necesitan ser creadas.
1. Comience por recrear el problema. Tome nota de los errores e intente interpretarlos.
2. Use xmllint para verificar el XML en somemachine.xml, luego corrija los errores.
2.1. Use xmllint para verificar somemachine.xml. Recuerde que el primer error que se
informa puede tener un efecto dominó; por esto, le recomendamos corregir un error
a la vez, comenzando por el primer error informado por xmllint.
120 RH342-RHEL7.2-es-1-20160321
[root@workstation ~]# xmllint somemachine.xml
Parece que hay una etiqueta <acpi> faltante en o cerca de la línea 20.
<acpi/>
2.3. Repita los dos pasos anteriores, esta vez cambiando la línea 87 para incluir una
comilla de cierre:
<memballoon model='virtio'>
2.4. Ejecute el comando xmllint nuevamente para verificar que no haya más problemas
de XML pendientes.
RH342-RHEL7.2-es-1-20160321 121
Capítulo 4. Identificación de problemas de hardware
En este trabajo de laboratorio, configurará opciones para el módulo del kernel usb-storage.
Recursos
Máquinas servera
Resultados
Deberá poder configurar una opción de módulo para el controlador usb-storage.
Andes de comenzar
Asegúrese de que su sistema servera esté funcionando. Si es necesario, reinicie su sistema
servera.
Le han pedido que configure servera de manera tal que el módulo usb-storage ignore el
modo de protección contra escritura de ese dispositivo.
2. Cree una configuración permanente para habilitar siempre el indicador que se encuentra
en el paso anterior para el dispositivo USB con ID de proveedor 0513 e ID de producto
0132.
4. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
122 RH342-RHEL7.2-es-1-20160321
Solución
Solución
En este trabajo de laboratorio, configurará opciones para el módulo del kernel usb-storage.
Recursos
Máquinas servera
Resultados
Deberá poder configurar una opción de módulo para el controlador usb-storage.
Andes de comenzar
Asegúrese de que su sistema servera esté funcionando. Si es necesario, reinicie su sistema
servera.
Le han pedido que configure servera de manera tal que el módulo usb-storage ignore el
modo de protección contra escritura de ese dispositivo.
2. Cree una configuración permanente para habilitar siempre el indicador que se encuentra
en el paso anterior para el dispositivo USB con ID de proveedor 0513 e ID de producto
0132.
RH342-RHEL7.2-es-1-20160321 123
Capítulo 4. Identificación de problemas de hardware
4. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
124 RH342-RHEL7.2-es-1-20160321
Resumen
Resumen
En este capítulo, aprendió lo siguiente:
• Como iniciar y habilitar el servicio mcelog.service para recopilar registros cuando falla el
hardware.
• Los tres pasos para habilitar memtest86+: Instale el paquete memtest86+, ejecute
memtest-setup y grub2-mkconfig -o /boot/grub2/grub.cfg.
RH342-RHEL7.2-es-1-20160321 125
126
TRAINING
CAPÍTULO 5
SOLUCIÓN DE PROBLEMAS DE
ALMACENAMIENTO
Visión general
Meta Identificar y solucionar los problemas relacionados con el
almacenamiento.
Objetivos • Describir las funciones de las capas de la stack (pila) de
almacenamiento.
RH342-RHEL7.2-es-1-20160321 127
Capítulo 5. Solución de problemas de almacenamiento
Objetivos
Después de completar esta sección, los estudiantes podrán describir las capas del
subsistema de almacenamiento de Linux, explicar la función de cada capa e identificar
algunas herramientas que pueden utilizarse para examinar las actividades de las diferentes
capas.
128 RH342-RHEL7.2-es-1-20160321
El sistema de archivos virtual (VFS)
Esto significa que un usuario puede trabajar con archivos almacenados en diferentes
sistemas de archivos sin la necesidad de volver a escribir sus aplicaciones o herramientas
como cp o mv para admitir el nuevo sistema de archivos, siempre y cuando esos programas
usen el modelo de archivo común cuando trabajan con archivos.
Por ejemplo, las aplicaciones de Linux suponen que los directorios pueden manejarse
como archivos. Los diferentes sistemas de archivos almacenan datos de directorio en
diferentes maneras. VFS se asegura de que las aplicaciones puedan tratar a los directorios
como archivos mientras trabajan con el código del sistema de archivos para gestionar
correctamente la verdadera implementación de directorios en ese sistema de archivos.
VFS también conserva varias cachés para mejorar el rendimiento de E/S del almacenamiento:
la caché de inodo, la caché de entrada de directorio, la caché de búfer y la caché de
RH342-RHEL7.2-es-1-20160321 129
Capítulo 5. Solución de problemas de almacenamiento
La E/S directa (O_DIRECT) puede ser utilizada por aplicaciones que implementan su propia
caché, como algunas bases de datos, para evitar la caché de página. Por lo general, esto
se lleva a cabo si la aplicación es el único proceso que trabaja con un archivo y puede
hacer un mejor trabajo en administrar activamente su caché que lo que haría el sistema
automáticamente. Si se lleva a cabo de manera incorrecta o si otros procesos acceden al
archivo a través de la caché de página, es posible que se generen daños u otros problemas.
Hay varias restricciones y condiciones importantes en la E/S directa que no se debatirán en
este documento.
Herramientas de VFS
Por lo general, los problemas de esta capa están relacionados a problemas de rendimiento
debido a falta de memoria que limita la caché o a errores de ajuste de sysctl. Para obtener
un resumen del uso de la caché, puede ejecutar el comando free para ver un resumen
básico o cat /proc/meminfo para obtener información más detallada.
La caché se asignará dinámicamente desde la memoria libre según se necesite para admitir la
E/S, bajo la teoría de que la memoria no utilizada es un recurso malgastado y se liberará para
que las aplicaciones la utilicen si el sistema está bajo presión de la memoria. Puede ejecutar
lo siguiente para borrar las caché de página, inodo y entrada de directorio:
Esto dañará el rendimiento del sistema hasta que el sistema pueda volver a completar las
caché con datos a los que se accede con frecuencia.
Hay una gran cantidad de parámetros ajustables sysctl de kernel expuestos en /proc/
sys/vm que afectan el rendimiento de la administración de memoria y cachés del disco en
general. Este curso no incluye un análisis más profundo.
Sistemas de archivos
El sistemas de archivos proporcionan las estructuras lógicas que determinan cómo se
organizan y se nombran los archivos y sus datos y metadatos en el almacenamiento, y cómo
se los protege de riesgos y daños. Diferentes sistemas de archivos pueden proporcionar
diferentes funciones, y pueden implementar funciones similares en diferentes maneras. Por
lo general, los sistemas de archivos utilizados para discos de sistemas de Linux, como XFS y
130 RH342-RHEL7.2-es-1-20160321
Asignador de dispositivos
ext4, compartirán un subconjunto común de funciones requeridas por el estándar POSIX que
les permitirá integrarse bien con VFS y el modelo de archivo común.
Los sistemas de archivos pueden estar respaldados por almacenamiento de bloque (XFS,
ext4, GFS2, FAT32), almacenamiento de red (NFS, SMB), o pueden ser "pseudosistemas de
archivos" sintéticos (procfs, sysfs) o sistemas de archivos para un propósito especial (tmpfs)
respaldados por memoria y presentados por el kernel como si fueran almacenamiento.
Asignador de dispositivos
El asignador de dispositivos (Device mapper) es un mecanismo potente del kernel para crear
asignaciones 1:1 de bloques en un dispositivo de bloque a bloques de otro dispositivo de
bloque lógico. Este capa se utiliza para implementar LVM, cifrado en disco de LUKS y RAID de
asignador de dispositivos, entre otras cosas. Su uso es opcional; es posible que un dispositivo
de bloque físico se formatee directamente con un sistema de archivos sin utilizar el asignador
de dispositivos en lo absoluto.
En esta tabla se indica que /dev/mapper/myvg1-mylv1 está formado por dos asignaciones.
La primera es una asignación lineal 1:1 del dispositivo de bloque con número principal/
secundario 253:17 a los primeros 1015808 bloques de /dev/mapper/myvg1-mylv1.
La segunda es una asignación lineal 1:1 del dispositivo de bloque con número principal/
secundario 253:18 a los siguientes 1015808 bloques de /dev/mapper/myvg1-mylv1
(comenzando por el bloque 1015808). Los números principal/secundario 253:17 y 253:18
corresponden a /dev/vdb1 y /dev/vdb2:
RH342-RHEL7.2-es-1-20160321 131
Capítulo 5. Solución de problemas de almacenamiento
• Combinar las solicitudes adyacentes para mejorar la cantidad de datos que se leen o se
escriben por solicitud.
• Priorizar las solicitudes para administrar la latencia y asegurarse de que ninguna solicitud
espere demasiado tiempo en la cola antes de ser enviada al controlador y fuera del
almacenamiento.
En Red Hat Enterprise Linux 7, la mayoría de los dispositivos pasan las solicitudes de E/S de
bloques a través de uno de tres algoritmos del programador de E/S basado en solicitudes:
132 RH342-RHEL7.2-es-1-20160321
Multitrayecto del asignador de dispositivos (Device mapper multipath)
al dispositivo, a menos que las solicitudes hayan estado en espera durante demasiado
tiempo, en cuyo caso se envían inmediatamente, dándole prioridad a las solicitudes de
lectura por sobre las solicitudes de escritura.
• cfq ("cola completamente equitativa") es el predeterminado para los discos SATA y para
la mayoría de los discos en sistemas de RHEL 6. Cada proceso tiene una cola de solicitud
para escrituras síncronas, hay menor cantidad de colas para E/S asíncrona, y los procesos
del programador en los que cada uno de ellos utiliza Round Robin para una determinada
fracción de tiempo.
• noop es un programador simple con el método "primero en entrar, primero en salir" que
realiza una combinación básica de solicitudes, pero no las ordena antes de enviarlas al
dispositivo. Es ideal para dispositivos de acceso aleatorio o dispositivos que realizan su
propria programación (como controladores de almacenamiento empresarial).
El programador estándar de E/S se diseñó para rotar discos duros, trabajar con latencias
de milisegundos y cientos de operaciones de E/S por segundo. Un nuevo mecanismo de
varias colas de E/S de bloque denominado blk-mq omite los programadores tradicionales
y permite que ciertos controladores del dispositivo asignen solicitudes de E/S a varias colas.
Los dispositivos de almacenamiento /dev/vd* paravirtualizados virtio comenzaron a
utilizar este subsistema en Red Hat Enterprise Linux 7.1/kernel-3.10.0-183.el7, en lugar de
programadores tradicionales de E/S. A largo plazo, este nuevo sistema está diseñado para
manejar almacenamiento con latencias de microsegundos, millones de IOPS y un gran
paralelismo interno.
RH342-RHEL7.2-es-1-20160321 133
Capítulo 5. Solución de problemas de almacenamiento
En este diagrama, un servidor de Red Hat Enterprise Linux tiene dos adaptadores de bus
de host (HBA) adjuntados a SAN. Por lo general, esto se realiza mediante conexiones físicas
de canal de fibra. El SAN también tiene conexiones a dos controladores de almacenamiento
diferentes. Como resultado, esta configuración permite cuatro posibles "trayectos" al
almacenamiento de backend. Esto resulta útil para la tolerancia de fallas, pero también
puede utilizarse para mejorar el rendimiento.
En Red Hat Enterprise Linux, el mecanismo del asignador de dispositivos del kernel se utiliza
para generar dispositivos de bloque separados para representar diferentes trayectos al
mismo dispositivo de almacenamiento. Esto es administrado por el daemon multipathd y la
herramienta de línea de comandos multipath, desde el paquete device-mapper-multipath.
Puede acceder a estos trayectos a través de otro dispositivo de bloque multitrayecto. Ese
dispositivo de bloque administrativo enviará las solicitudes a uno de los dispositivos de
bloque subyacentes asociado que representa un trayecto particular.
Esta capa solo entra en juego si el dispositivo de bloque tiene varios trayectos disponibles y
se utiliza el multitrayecto del asignador de dispositivos.
134 RH342-RHEL7.2-es-1-20160321
Controladores de bajo nivel
Hay cuatro controladores principales de SCSI de alto nivel. Para los dispositivos de bloque,
los dos más importantes son el controlador de disco de SCSI (sd) y el controlador de CDROM
de SCSI (sr). Además, hay un controlador de SCSI de alto nivel para los dispositivos de cinta
de SCSI basados en caracteres (st) y uno para los dispositivos de SCSI genéricos como los
escáneres (sg).
Cualquier elemento que actúe como un dispositivo de SCSI y utilice el protocolo de SCSI
para comunicarse entre el controlador de bajo nivel y el controlador de alto nivel, utiliza
la capa media de SCSI. Esto puede incluir elementos que, a primera vista, no parecen
estar relacionados con SCSI, como almacenamiento USB y SATA y ciertos dispositivos de
almacenamiento paravirtualizados de bajo nivel. Estos se presentarán al sistema como
dispositivos de SCSI y utilizarán nombres de dispositivo adecuados (/dev/sda, por ejemplo).
Algunos dispositivos de almacenamiento omiten esta capa. Por ejemplo, los dispositivos /
dev/vd* son dispositivos paravirtualizados que hablan directamente al controlador de bajo
nivel virtio_blk, que no forma parte de la pila de SCSI y no reproduce el protocolo de SCSI.
Independientemente de si usa la capa media de SCSI, el controlador de bajo nivel recibe E/S
del programador en la capa de bloque y la envía al hardware de almacenamiento subyacente.
El controlador toma las solicitudes de E/S entrantes y las transforma en una forma aceptable
para el controlador de hardware subayacente. El controlador de bajo nivel no envía E/S a la
cola, pero rastrea las solicitudes de E/S en desarrollo. Este es el nivel más bajo de la pila de
almacenamiento que aún forma parte del kernel de Linux.
Hardware físico
Adaptadores de bus de host (HBA) y firmware
El adaptador de bus de host (host bus adapter) (HBA) es el hardware físico del servidor que se
utiliza para comunicarse con el dispositivo de almacenamiento. Puede ser un adaptador de
host de SCSI o SATA o una tarjeta de interfaz de canal de fibra. Ese dispositivo puede tener su
propio firmware que controla sus operaciones. En una máquina virtual huésped, se puede
presentar un dispositivo virtio_pci paravirtualizado en la máquina como su hardware.
Capa de transporte
La capa de transporte define el protocolo de conexión utilizado por el HBA para comunicarse
con el almacenamiento adjunto. Esta capa podría involucrar la comunicación a través de una
conexión de punto a punto de SATA o SAS, USB, canal de fibra o, incluso, iSCSI sobre TCP/IP.
RH342-RHEL7.2-es-1-20160321 135
Capítulo 5. Solución de problemas de almacenamiento
Referencias
Werner Fischer ha publicado un diagrama más detallado de la pila de
almacenamiento para los kernels de Linux recientes, bajo la licencia CC-BY-SA, en
Diagrama de la pila de almacenamiento de Linux
https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram
136 RH342-RHEL7.2-es-1-20160321
Prueba: Orientación sobre la pila de almacenamiento de Linux
a. noop
b. cfq
c. virtio_blk
d. deadline
a. Multitrayecto DM (DM-Multipath)
b. LVM
c. device-mapper
d. vfs
a. La capa VFS mantiene varias cachés, como la caché de inodo, la caché de entrada
de directorio y la caché de página.
b. Las aplicaciones pueden omitir la caché de página al abrir archivos con el conjunto
de indicadores O_DIRECT.
c. La capa VFS solo se utiliza para algunos sistemas de archivos comunes como ext4,
pero no para otros, como XFS.
d. La capa VFS proporciona una interfaz genérica para aplicaciones de espacio de
usuario en implementaciones del sistema de archivos.
RH342-RHEL7.2-es-1-20160321 137
Capítulo 5. Solución de problemas de almacenamiento
Solución
Elija las respuestas correctas para las siguientes preguntas:
a. noop
b. cfq
c. virtio_blk
d. deadline
a. Multitrayecto DM (DM-Multipath)
b. LVM
c. device-mapper
d. vfs
138 RH342-RHEL7.2-es-1-20160321
Recuperación de archivos dañados del sistema
Objetivos
Tras finalizar esta sección, los estudiantes podrán detectar y recuperarse de archivos dañados
del sistema.
Red Hat Enterprise Linux 7 proporciona un controlador unificado que admite los sistemas
de archivos ext2, ext3 y ext4. Aunque el sistema de archivos ext2 ahora es admitido por el
controlador del sistema de archivos extendido unificado, ext2 se considera obsoleto. Por lo
tanto, los administradores deberían evitar el uso del sistema de archivos ext2, de ser posible.
La creación de diarios (journals) del sistema de archivos se incorporó en Red Hat Enterprise
Linux con la presentación de ext3. La creación de diarios (journals) de sistemas de archivos
mejora la integridad de datos en el caso de un corte de energía o una caída del sistema.
Después de dicho evento, un sistema de archivos con diarios (journals) puede usar su diario
para recuperar rápidamente información no guardada en un intento por evitar daños en los
metadatos del sistema de archivos.
Los sistemas de archivos XFS y ext4 también generan diarios (journals) de los sistemas de
archivos. Aunque los sistemas de archivos con diarios (journals) generados proporcionan una
mayor resistencia a las fallas, no lo protegen de daños del sistema de archivos. Aún pueden
ocasionarse daños en el sistema de archivos, incluso en sistemas de archivos con diarios
(journals), debido a fallas en el hardware, errores de administración de almacenamiento y
errores de software.
• Si una falla en el hardware es la causa de los datos dañados, se debe resolver el problema
de hardware antes de ejecutar una verificación o reparación en el sistema de archivos.
Por ejemplo, si un disco de almacenamiento tiene fallas, mueva el sistema de archivos a
un disco funcional antes de realizar tareas de mantenimiento en el sistema de archivos.
La migración de datos puede realizarse con varias utilidades comunes, como dd. Esto
proporcionará la base funcional del hardware que se requiere para el mantenimiento del
sistema de archivos.
RH342-RHEL7.2-es-1-20160321 139
Capítulo 5. Solución de problemas de almacenamiento
• Se debe realizar una verificación del sistema de archivos antes de repararlo. Esto funciona
como un simulacro para la reparación del sistema de archivos. Durante este simulacro,
la verificación del sistema de archivos informará cualquier problema que se detecte en el
sistema de archivos y se tomarán medidas correctivas.
The superblock could not be read or does not describe a correct ext2
file system. If the device is valid and it really contains an ext2
file system (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
140 RH342-RHEL7.2-es-1-20160321
Identificación de daños en el sistema de archivos
La ubicación de los superbloques de respaldo varía según el tamaño del bloque del sistema
de archivos. Para determinar la ubicación de los superbloques de respaldo, use la utilidad
dumpe2fs.
Una vez que se identifican los superbloques alternativos, use la opción -b para especificar el
superbloque alternativo que se debe usar durante la verificación del sistema de archivos.
Código de Descripción
salida
0 No hay errores.
4 Los errores del sistema de archivos no están corregidos.
8 Error operativo.
16 Error de uso.
32 Cancelado por el usuario.
128 Error de librería compartida.
nota
Las utilidades e2fsck y dumpe2fs son proporcionadas por el paquete e2fsprogs.
RH342-RHEL7.2-es-1-20160321 141
Capítulo 5. Solución de problemas de almacenamiento
El comando xfs_repair se invoca con la opción -n para realizar verificaciones del sistema
de archivos. La opción -n le indicará a xfs_repair que analice el sistema de archivos y que
solo informe las reparaciones que deben realizarse en lugar de realizar medidas correctivas.
El siguiente comando realiza una verificación del sistema de archivos en el sistema de
archivos XFS que reside en /dev/vdb1.
Como los sistemas de archivos ext3 y ext4, es posible que las verificaciones del sistema de
archivos no se ejecuten debido a un superbloque principal dañado. Sin embargo, a diferencia
de e2fsck, xfs_repair no requiere que el administrador especifique las ubicaciones de
los superbloques alternativos. Analizará automáticamente el sistema de archivos XFS hasta
que localice un superbloque secundario. Una vez localizado, se utilizará el superbloque
secundario para recuperar el superbloque principal.
142 RH342-RHEL7.2-es-1-20160321
Reparación de sistemas de archivos
Una verificación del sistema de archivos XFS devolverá el código de salida 1 si se detectaron
los daños en el sistema de archivos. Si no se detectaron los daños del sistema de archivos, se
devolverá el código de salida 0.
Opción Descripción
-b ubicación Utiliza el superbloque alternativo en la ubicación especificada.
-p Repara automáticamente el sistema de archivos. Solo le muestra un
aviso al usuario cuando los problemas no se pueden solucionar de
manera segura.
-v Modo detallado.
-y Se ejecuta en modo no interactivo y responde sí a todas las preguntas.
Esta opción no se puede usar junto con las opciones -p o -n.
RH342-RHEL7.2-es-1-20160321 143
Capítulo 5. Solución de problemas de almacenamiento
El resultado de la reparación del sistema de archivos puede estar determinado por el código
de salida del comando e2fsck. El estado de salida informado es la suma de los códigos de
salida desencadenados en la siguiente tabla.
Código de Descripción
salida
0 No hay errores.
1 Los errores del sistema de archivos están corregidos.
2 Los errores del sistema de archivos están corregidos. Se requiere un
reinicio.
4 Los errores del sistema de archivos no están corregidos.
8 Error operativo.
16 Error de uso.
32 Cancelado por el usuario.
128 Error de biblioteca compartida.
Como se indicó, xfs_repair solo se puede ejecutar en un sistema de archivos XFS con
un registro de diario (journal) limpio. Si montar y desmontar un sistema de archivos XFS
no genera un registro limpio, es posible que el registro esté dañado. Dado que se necesita
tener un registro limpio, puede ser necesario en estas situaciones utilizar la opción -L en
xfs_repair. Esta opción reduce a cero el registro de diario (journal). Aunque este paso
es necesario para continuar, los administradores deben tomar nota de que puede generar
mayores inconsistencias en el sistema de archivos, ya que descarta todos los metadatos del
sistema de archivos en el registro de diario (journal).
144 RH342-RHEL7.2-es-1-20160321
Copia de seguridad y recuperación del sistema de archivos
- zero log...
- scan file system freespace and inode maps...
- found root inode chunk
Phase 3 - for each AG...
- scan and clear agi unlinked lists...
- process known inodes and perform inode discovery...
- agno = 0
- agno = 1
Invalid inode number 0x499602d2
xfs_dir_ino_validate: XFS_ERROR_REPORT
Metadata corruption detected at block 0xa7e0/0x1000
entry "subscription-manager" at block 0 offset 456 in directory inode 144973 references
invalid inode 1234567890
clearing inode number in entry at offset 456...
entry at block 0 offset 456 in directory inode 144973 has illegal name "/ubscription-
manager": - process newly discovered i
nodes...
Phase 4 - check for duplicate blocks...
- setting up duplicate extent list...
- check for inodes claiming duplicate blocks...
- agno = 0
- agno = 1
Phase 5 - rebuild AG headers and trees...
- reset superblock...
Phase 6 - check inode connectivity...
- resetting contents of realtime bitmap and summary inodes
- traversing file system ...
bad hash table for directory inode 144973 (no data entry): rebuilding
rebuilding directory inode 144973
- traversal finished ...
- moving disconnected inodes to lost+found ...
disconnected inode 145282, moving to lost+found
Phase 7 - verify and correct link counts...
done
Si se encuentran inodos o directorios con daños severos durante la recuperación del sistema
de archivos, es posible que se descarten permanentemente si no tienen solución. Debido a la
posibilidad de dicha pérdida de datos, es importante que los administradores tengan copias
de seguridad recientes de los datos del sistema de archivos a las cuales acudir, para poder
recuperar datos perdidos de manera adecuada.
RH342-RHEL7.2-es-1-20160321 145
Capítulo 5. Solución de problemas de almacenamiento
Referencias
Para obtener más información, consulte las páginas del manual e2fsck(8),
dumpe2fs(8) y xfs_repair(8).
146 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Recuperación de archivos dañados del sistema
En este trabajo de laboratorio, verificará un sistema de archivos y reparará los daños del
sistema de archivos.
Recursos
Archivos /root/etc.tgz
Máquinas servera
Resultados
Deberá poder verificar y reparar un sistema de archivos XFS.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab xfs setup en su
máquina workstation.
1.1. Desmonte el sistema de archivos /dev/vdb1 dado que no se puede realizar una
verificación del sistema de archivos en un sistema de archivos montado.
1.2. Use el comando xfs_repair con la opción -n para realizar la verificación del
sistema de archivos sin medidas correctivas.
RH342-RHEL7.2-es-1-20160321 147
Capítulo 5. Solución de problemas de almacenamiento
Tenga en cuenta los errores informados, ya que presentan información que puede
resultar útil para la recuperación del sistema de archivos.
2. Use la utilidad xfs_repair para reparar las inconsistencias del sistema de archivos.
148 RH342-RHEL7.2-es-1-20160321
- moving disconnected inodes to lost+found ...
disconnected inode 145282, moving to lost+found
Phase 7 - verify and correct link counts...
done
RH342-RHEL7.2-es-1-20160321 149
Capítulo 5. Solución de problemas de almacenamiento
/mnt/etc_restore/etc/security/console.apps
6. Utilice la copia de seguridad del contenido del sistema de archivos ubicada en /root/
etc.tgz para validar el nombre y la ubicación correctos del archivo huérfano.
6.1. Extraiga el archivo de copia de seguridad para poder utilizar su contenido para
efectuar una comparación.
6.2. Verifique el contenido del archivo huérfano frente a la copia de seguridad del archivo
identificado.
8. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
150 RH342-RHEL7.2-es-1-20160321
Recuperación de accidentes de LVM
Objetivos
Después de completar esta sección, los estudiantes deberán poder revertir errores de
administración de almacenamiento en volúmenes de LVM.
Archivos de configuración
El comportamiento de LVM se configura en /etc/lvm/lvm.conf. Este archivo tiene ajustes
para controlar el comportamiento de bloqueo, el análisis de dispositivos y la asignación
de nombres de volúmenes físicos con varias rutas, así como otras funciones de LVM. En la
siguiente tabla, se enumeran algunas de las opciones más comunes.
/etc/lvm/lvm.conf Opciones
dir El directorio que se debe analizar para los
nodos de dispositivos de volumen físico.
obtain_device_list_from_udev Si se debe usar udev para obtener una lista
de los dispositivos de bloqueo elegibles para
el análisis.
preferred_names Una lista de expresiones regulares que
detallan los nombres de dispositivos
que deben tener preferencia cuando se
muestran los dispositivos. Si se encuentran
diversos nombres de dispositivos
(nodos) para el mismo volumen físico, las
herramientas de LVM le darán preferencia a
aquellos que aparecen primero en la lista.
filter (filtro) Una lista de expresiones regulares prefijadas
con a para Add (Agregar) o r para Remove
(Quitar). Esta lista determina los nodos
de dispositivos en los que se buscará la
presencia de una firma de volumen físico. El
valor predeterminado es [ "a/.*/" ], que
agrega todos los dispositivos. Puede usar
RH342-RHEL7.2-es-1-20160321 151
Capítulo 5. Solución de problemas de almacenamiento
/etc/lvm/lvm.conf Opciones
esta opción para eliminar el dispositivo que
nunca debe analizarse.
backup (copia de seguridad) Este ajuste determina si se debe almacenar
una copia de seguridad basada en texto
de los metadatos del grupo de volúmenes
después de cada cambio. Puede usar esta
copia de seguridad para restaurar un grupo
de volúmenes si se dañan los metadatos en
el disco.
backup_dir Este ajuste especifica dónde se debe
almacenar la copia de seguridad de los
metadatos del grupo de volúmenes.
archive (archivo) Este ajuste determina si se deben archivar
los diseños o las configuraciones del
grupo de volúmenes para utilizarlos
posteriormente para revertir los cambios.
archive_dir Este ajuste especifica dónde se deben
almacenar los archivos de configuraciones
anteriores.
retain_min Este ajuste especifica la cantidad mínima de
archivos que se deben almacenar.
retain_days Este ajuste especifica la cantidad mínima de
días que se deben conservar los archivos.
La función de archivado de LVM puede ser muy útil en este tipo de situaciones. LVM puede
mantener copias archivadas de los metadatos del grupo de volúmenes. Si se establece la
opción de archive en 1 en /etc/lvm/lvm.conf, las herramientas de LVM crearán una
copia archivada de los metadatos del grupo de volúmenes actual antes de realizar cambios
en el disco. En una configuración predeterminada, puede encontrar estos archivos en /etc/
lvm/archive. Puede visualizar la lista de todos los metadatos archivados para un grupo de
volúmenes al examinar los archivos en /etc/lvm/archive y prestar atención a las líneas de
descripción. De manera alternativa, se puede ver la misma información con el comando
vgcfgrestore -l <vgname>.
152 RH342-RHEL7.2-es-1-20160321
Revertir cambios de LVM
File: /etc/lvm/archive/vg_example_00001-1528176681.vg
VG name: vg_example
Description: Created *before* executing 'lvcreate -L 1G -n lv_example vg_example'
Backup Time: Mon Jan 19 07:02:00 2016
File: /etc/lvm/archive/vg_example_00002-1484695080.vg
VG name: vg_example
Description: Created *before* executing 'lvresize -L -256M /dev/vg_example/lv_example'
Backup Time: Mon Jan 19 07:02:34 2016
File: /etc/lvm/backup/vg_example
VG name: vg_example
Description: Created *after* executing 'lvresize -L -256M /dev/vg_example/lv_example'
Backup Time: Mon Jan 19 07:02:34 2016
Para deshacer un cambio de LVM, asegúrese de que el volumen lógico no esté en uso
actualmente (desmonte los sistemas de archivos que se crearon en el volumen lógico)
y, luego, utilice el comando vgcfgrestore nuevamente, pero esta vez con la opción -f
<archive_file>.
En algunos casos, puede ser necesario desactivar y, luego, reactivar el volumen lógico para
asegurarse de que todos los cambios se apliquen también en la memoria.
RH342-RHEL7.2-es-1-20160321 153
Capítulo 5. Solución de problemas de almacenamiento
Referencias
Guía de administración de almacenamiento de Red Hat
• Sección 4: LVM
154 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Recuperación de accidentes de LVM
Recursos
Archivos /mnt/lvm
Máquinas servera
Resultados
Deberá poder identificar y revertir la causa de una falla de LVM.
Andes de comenzar
Prepare su sistema para este ejercicio ejecutando el comando lab lvm setup en su
máquina workstation.
3. Verifique que el sistema de archivos del volumen lógico esté montado en /mnt/lvm.
RH342-RHEL7.2-es-1-20160321 155
Capítulo 5. Solución de problemas de almacenamiento
File: /etc/lvm/archive/vg00_00002-1999295985.vg
VG name: vg00
Description: Created *before* executing 'lvresize -L20M /dev/vg00/lvol0'
Backup Time: Wed Jan 20 02:43:40 2016
File: /etc/lvm/backup/vg00
VG name: vg00
Description: Created *after* executing 'lvresize -L20M /dev/vg00/lvol0'
Backup Time: Wed Jan 20 02:43:40 2016
6. Analice las descripciones de cada registro de archivo e identifique el archivo que existió
antes de la asignación de espacio en el volumen lógico. Determine si el comando
registrado en el registro de archivo generó el problema observado por el usuario.
File: /etc/lvm/archive/vg00_00002-1999295985.vg
VG name: vg00
Description: Created *before* executing 'lvresize -L20M /dev/vg00/lvol0'
Backup Time: Wed Jan 20 02:43:40 2016
En lugar de asignar otros 20 MiB de espacio al volumen lógico con la opción -L+20M, el
administrador redujo por error el volumen lógico a 20 MiB.
156 RH342-RHEL7.2-es-1-20160321
drwxr-xr-x. 94 root root 8192 Jan 19 22:26 etc
10. Complete correctamente la solicitud del usuario al asignar otros 20 MiB de espacio al
sistema de archivos /dev/vg00/lvol0.
11. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
11.1.Evalúe su trabajo.
RH342-RHEL7.2-es-1-20160321 157
Capítulo 5. Solución de problemas de almacenamiento
Objetivos
Tras finalizar esta sección, los estudiantes podrán recuperar datos de sistemas de archivos
cifrados.
El montaje persistente de volumen cifrado que se lleva a cabo durante el arranque del
sistema consta de los siguientes pasos.
2. Con la frase de contraseña proporcionada por el usuario o con una clave contenida en
un archivo, el volumen cifrado se descifra y se asigna a un dispositivo del asignador de
dispositivos denominado /dev/mapper/name, que utiliza el nombre especificado en /
etc/crypttab.
158 RH342-RHEL7.2-es-1-20160321
Solución de problemas de volúmenes de LUKS
El primer campo identifica el nombre del dispositivo asignado sin el prefijo /dev/mapper.
El segundo campo corresponde al dispositivo cifrado. El tercer campo de entradas puede
dejarse en blanco para la frase de contraseña solicitada, o se puede especificar un archivo de
clave para utilizar en el descifrado.
Si el descifrado tiene errores, verifique que el contenido del segundo campo y del tercer
campo sea correcto. Un nombre de dispositivo cifrado incorrecto y un archivo de clave
incorrecto resultarán en fallas en el descifrado.
Si el descifrado es exitoso pero el montaje del dispositivo asignado tiene errores, compruebe
que el contenido del primer campo de la entrada relevante sea correcto. Si hay una
discrepancia entre el nombre asignado especificado en /etc/crypttab y el nombre del
asignador de dispositivos correspondiente en /etc/fstab, el contenido descifrado no estará
disponible en el punto de montaje configurado.
Fallas en el descifrado
Aparte de las configuraciones incorrectas mencionadas en /etc/crypttab, el descifrado de
un dispositivo cifrado también puede ocurrir en las siguientes situaciones.
LUKS ofrece un total de ocho ranuras de clave para los dispositivos cifrados. Si hay otras
claves o frases de contraseña, pueden utilizarse para restablecer la contraseña olvidada
o desconocida. Las claves asociadas se pueden mostrar con el comando cryptsetup
luksDump.
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 256
MK digest: 78 1a 67 57 7f b6 4e a3 60 40 fb 0b 76 91 ee 96 21 2e 09 d4
MK salt: bd c2 45 9d 30 32 4e 69 aa 6b a8 90 33 c5 f1 6a
4a f4 c7 fc e8 7f 21 ae a4 3b a2 91 74 dc f8 9e
MK iterations: 81000
UUID: 3d1d164c-569c-4809-ba6e-9b3de75ed223
RH342-RHEL7.2-es-1-20160321 159
Capítulo 5. Solución de problemas de almacenamiento
Si hay una copia de respaldo del encabezado de LUKS, también puede resolver el problema
al restaurar el encabezado desde la copia de seguridad, que permitirá el descifrado
mediante la contraseña anterior.
• Las funciones de hash y los códigos necesarios para ejecutar el cifrado no están en el
kernel. Se puede determinar una lista de códigos criptográficos admitidos por el kernel de
un sistema al examinar el contenido de /proc/crypto.
Como sucede con todas las tareas administrativas del sistema, las copias de seguridad de los
encabezados de LUKS deben llevarse a cabo antes de las tareas administrativas realizadas en
un volumen cifrado por LUKS.
160 RH342-RHEL7.2-es-1-20160321
Restauración de encabezados de LUKS
WARNING!
========
Device /path/to/encrypted/device already contains LUKS header. Replacing header will
destroy existing keyslots.
Referencias
Página del manual: cryptsetup(8)
RH342-RHEL7.2-es-1-20160321 161
Capítulo 5. Solución de problemas de almacenamiento
Recursos
Archivos /root/luks_header_backup
Máquinas • servera
Resultados
Deberá poder resolver problemas y recuperarse de una falla en el montaje de un volumen
cifrado.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab luks setup en su
máquina workstation.
Un volumen cifrado por LUKS montado en /mnt/secure en servera estaba protegido con
la contraseña RedHatR0cks!. Para cumplir con la política de contraseñas de la empresa, un
administrador junior cambió la contraseña por una nueva, JustMyLUK. Sin embargo, después
del cambio de contraseña, el administrador junior informa que la nueva contraseña no
funciona en el volumen cifrado. Por suerte, hace poco se realizó una copia de seguridad del
encabezado de LUKS para el volumen, que está disponible en /root/luks_header_backup.
Evalúe la situación y restaure el volumen al estado de funcionamiento. Utilice la copia de
seguridad del encabezado de LUKS, si es necesario, para restaurar la función del volumen
cifrado.
2. Evalúe el estado actual del volumen cifrado. Utilice el comando dmsetup para determinar
si hay un dispositivo asignado en el dispositivo del bloque cifrado. Utilice el filtro --
target crypt para filtrar solo el dispositivo del bloque cifrado.
162 RH342-RHEL7.2-es-1-20160321
[root@servera ~]# dmsetup ls --target crypt
No devices found
4. Utilice cryptsetup luksDump para determinar si hay otras claves para el volumen
cifrado para determinar si hay otras posibles contraseñas que pueda probar.
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 256
MK digest: d1 db 30 00 8d f4 f9 7a 4c 9f eb 7a 8c 2a 3a 0f 30 e0 75 d9
MK salt: c8 ca d5 90 5a f7 cd 5d b9 35 4e c5 83 b1 b4 f7
47 e3 4e b8 5b 36 bb f7 67 25 61 61 8e e5 9f de
MK iterations: 81250
UUID: b4b499bb-be72-4912-b9f6-0d23970aba6b
RH342-RHEL7.2-es-1-20160321 163
Capítulo 5. Solución de problemas de almacenamiento
5.1. Dado que es una buena práctica realizar cambios administrativos reversibles, realice
una copia de seguridad del encabezado de LUKS actual antes de reemplazarlo con el
encabezado de LUKS de la copia de seguridad.
WARNING!
========
Device /dev/vdb1 already contains LUKS header. Replacing header will destroy
existing keyslots.
6. Utilice el comando cryptsetup luksOpen una vez más para intentar abrir
manualmente el volumen cifrado y crear el dispositivo asignado asociado que está
especificado en /etc/crypttab. Intente descifrar el volumen cifrado con la contraseña
anterior.
8. Compruebe que el dispositivo asignado para el volumen cifrado ahora puede montarse
correctamente en /mnt/secure.
9. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
164 RH342-RHEL7.2-es-1-20160321
[student@workstation ~]$ lab luks reset
RH342-RHEL7.2-es-1-20160321 165
Capítulo 5. Solución de problemas de almacenamiento
Objetivos
Después de completar esta sección, los estudiantes podrán identificar y resolver problemas
de iSCSI.
166 RH342-RHEL7.2-es-1-20160321
Configuración de iniciadores de iSCSI
Término Descripción
detección Hacer consultas a un servidor de target para enumerar targets
(discovery) configurados. El uso del destino requiere de pasos de acceso adicionales
(consulte inicio de sesión).
IQN Un nombre calificado de iSCSI, un nombre único en el mundo utilizado
para identificar iniciadores y destinos, en el formato de nomenclatura
según las directivas:
iqn.YYYY-MM.com.reversed.domain[:optional_string]
iqn: significa que este nombre utilizará un dominio como su
identificador.
YYYY-MM: el primer mes en que se adquirió el nombre de dominio.
com.reversed.domain: el nombre de dominio invertido de la
organización que crea este nombre iSCSI.
optional_string: una cadena opcional con dos puntos antepuestos
asignada por el propietario del dominio según lo deseado que continúa
siendo única en todo el mundo. Puede incluir dos puntos para separar los
límites de la organización.
inicio Autenticar a un target o LUN para comenzar el uso del dispositivo de
de sesión bloqueo de cliente.
(login)
LUN Un número de unidad lógica, dispositivos de bloqueo numerados
conectados y disponibles a través de un destino. Uno o más LUN pueden
conectarse a un único target, a pesar de que, en general, un target
proporciona solo un LUN.
nodo Cualquier initiator de iSCSI o target de iSCSI, identificado por su IQN.
portal Una dirección IP y un puerto en un target o initiator utilizado para
establecer conexiones. Algunas implementaciones iSCSI utilizan portal y
nodo de manera intercambiable.
TPG Grupo de portal de destino, el conjunto de direcciones IP y puertos TCP de
la interfaz a los que escuchará un destino iSCSI específico. La configuración
de target (por ejemplo, ACL) se puede agregar al TPG para coordinar la
configuración de múltiples LUN.
SCSI también puede implementarse mediante el uso de un iniciador por hardware que
incluya los protocolos necesarios en un adaptador de bus de host dedicado. Los HBA iSCSI
RH342-RHEL7.2-es-1-20160321 167
Capítulo 5. Solución de problemas de almacenamiento
y los motores de descarga TCP (TOE), que incluyen la pila de red TCP en un NIC Ethernet,
trasladan la sobrecarga de procesamiento de iSCSI o TCP, y las interrupciones de Ethernet en
el hardware, lo que reduce la carga de las CPU del sistema.
Opciones de autenticación
iSCSI utiliza ACL para enmascarar el LUN, al administrar el acceso de destinos apropiados y
LUN a los iniciadores. El acceso a los destinos también puede limitarse con la autenticación
CHAP. Las ACL de iSCSI son similares al uso de números mundiales (WWN) de dispositivos
de FC para restricciones de administración de creación de zonas flexibles . A pesar de que la
restricción obligatoria de puertos a nivel del interruptor de FC (creación de zonas permanentes)
no tiene un mecanismo similar a iSCSI, las VLAN de Ethernet pueden ofrecer una seguridad
de aislamiento similar.
iSCSI ofrece los nombres de usuario y las contraseñas con Protocolo de autenticación
por desafío mutuo (Challenge-Handshake Authentication Protocol) (CHAP) como un
mecanismo de autenticación para limitar la conectividad entre los initiators y los targets
elegidos. Por defecto, el iniciador de iSCSI en Red Hat Enterprise Linux se configura para
la no autenticación. El número de puerto puede omitirse cuando el servidor de target está
configurado en el puerto predeterminado 3260. Por lo tanto, si se desea una seguridad de
datos mejorada en la red, debe configurar la autenticación CHAP en el iniciador.
168 RH342-RHEL7.2-es-1-20160321
Solución de problemas del iniciador de iSCSI
• Para la autenticación no, elimine todos los valores de la credencial y vuelva a comentar las
líneas authmethod.
Verifique que el destino de las conexiones iniciadas por iscsiadm responden correctamente
a la dirección IP del host de destino. Si no es el caso, utilice dig para realizar una resolución
de nombres mediante DNS. Si se han eliminado los problemas con la resolución DNS,
inspeccione /etc/hosts y /etc/nsswitch.conf para ver si sus configuraciones son la
fuente de los mismos problemas de resolución.
Por defecto, los servidores de destino están configurados para que se escuchen en el puerto
3260. Si la resolución de nombres está funcionando adecuadamente, pruebe realizar una
conexión a este puerto mediante una utilidad como Netcat.
Por defecto, los servidores de destino están configurados para que se escuchen en el puerto
3260. Si la conexión falla, compruebe que las configuraciones del servidor de destino sean
correctas. Asegúrese de que el servidor de destino esté configurado para escucharse en el
puerto predeterminado y que firewalld esté configurado para las conexiones remotas al
puerto.
RH342-RHEL7.2-es-1-20160321 169
Capítulo 5. Solución de problemas de almacenamiento
Si el nombre del iniciador está configurado correctamente, las fallas del inicio de sesión
pueden atribuirse a la configuración incorrecta de la autenticación. Para autenticarse
correctamente, el iniciador debe estar configurado para utilizar el método de autenticación
requerido por el servidor de destino. Por defecto, no se configura un método de
autenticación en el servidor o el cliente. Si se configura el servidor para la autenticación CHAP,
se deben especificar las configuraciones CHAP del iniciador en /etc/iscsi/iscsid.conf,
como se mencionó anteriormente.
Para evaluar la causa de las fallas en el inicio de sesión, puede resultar útil ejecutar el inicio
de sesión en el modo detallado. La opción -d habilita el modo de depuración. El nivel de
depuración se puede configurar entre 0 y 8. Se requiere el nivel 8 para ver los detalles de
autenticación.
170 RH342-RHEL7.2-es-1-20160321
Solución de problemas del iniciador de iSCSI
Puede visualizar los ajustes existentes para un destino mediante el siguiente comando.
Use el comando iscsiadm para modificar los ajustes existentes. Use la opción -o para
especificar la operación actualizar. También use la opción -n para especificar el parámetro
para modificar y usar la opción -v con el fin de especificar el valor del parámetro. Por
ejemplo, para cambiar el método de autenticación para deshabilitar la autenticación CHAP,
ejecute el siguiente comando.
Los ajustes para todos los nodos conocidos se pueden purgar al utilizar el mismo comando y
no especificar un destino.
RH342-RHEL7.2-es-1-20160321 171
Capítulo 5. Solución de problemas de almacenamiento
Referencias
Página del manual: iscsiadm(8)
172 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Resolución de problemas de iSCSI
Recursos
Máquinas • servera
Resultados
Deberá poder identificar y resolver una configuración incorrecta de un iniciador de iSCSI en
un sistema cliente.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab iscsi setup en su
máquina workstation.
1.2. Compruebe si hay sesiones o conexiones activas. Dado que el administrador informó
una falla en el inicio de sesión del destino, no se espera que haya sesiones activas.
1.3. Intente iniciar sesión en el destino para verificar lo que el administrador informó y
también para ver la naturaleza de los errores generados.
RH342-RHEL7.2-es-1-20160321 173
Capítulo 5. Solución de problemas de almacenamiento
3. Los mensajes de depuración indican que el iniciador está configurado para usar la
autenticación CHAP. Dado que el destino no requiere autenticación, el método de
autorización del iniciador tiene una configuración incorrecta. Corrija la configuración en
/etc/iscsi/iscsid.conf al comentar la siguiente línea y, luego, reinicie iscsid para
que se apliquen los cambios.
# node.session.auth.authmethod = CHAP
4. Intente iniciar sesión en el destino otra vez para verificar si se ha resuelto el problema de
inicio de sesión.
5. Dado que la falla continúa, use la opción -d con el comando iscsiadm e intente iniciar
sesión en el destino nuevamente, pero genere también información de depuración
detallada. Dado que los mensajes de error están relacionados con la falla en la
autorización, busque mensajes de depuración que correspondan a esto.
174 RH342-RHEL7.2-es-1-20160321
iscsiadm: updated 'node.session.queue_depth', '32' => '32'
iscsiadm: updated 'node.session.nr_sessions', '1' => '1'
iscsiadm: updated 'node.session.auth.authmethod', 'None' => 'CHAP'
iscsiadm: updated 'node.session.timeo.replacement_timeout', '120' => '120'
iscsiadm: updated 'node.session.err_timeo.abort_timeout', '15' => '15'
... Output omitted ...
6. Los mensajes de depuración indican que el iniciador aún está utilizando la autenticación
CHAP para iniciar sesión en el destino. Esto se debe a que el método de autorización
utilizado en los intentos de inicio de sesión anteriores se guardó para el destino. Utilice el
comando iscsiadm para cambiar el método de autenticación a None (Ninguno).
7. Intente iniciar sesión en el destino otra vez para verificar si se ha resuelto el problema de
inicio de sesión.
8. Dado que la falla continúa, use la opción -d con el comando iscsiadm e intente iniciar
sesión en el destino nuevamente, pero genere también información de depuración
detallada. Dado que los mensajes de error están relacionados con la falla en la
autorización, busque mensajes de depuración que correspondan a esto.
10. El nombre del iniciador está configurado incorrectamente. Corrija el nombre y reinicie
iscsid para que se aplique el cambio.
RH342-RHEL7.2-es-1-20160321 175
Capítulo 5. Solución de problemas de almacenamiento
11. Intente iniciar sesión en el destino otra vez para verificar si se ha resuelto el problema de
inicio de sesión.
12. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
12.1.Evalúe su trabajo.
13. Reinicie todos sus sistemas para proveer un entorno limpio para los siguientes ejercicios.
176 RH342-RHEL7.2-es-1-20160321
Trabajo de laboratorio: Solución de problemas de almacenamiento
Recursos
Archivos /mnt/save/luks/iscsistorage_luks_header
Resultados
Deberá poder resolver problemas con sistemas de archivos dañados, encabezados de LUKS,
administración de LVM y destinos de iSCSI.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab storage setup en su
máquina workstation.
Si tiene problemas para descifrar el volumen cifrado, se realizó una copia de seguridad
del encabezado del volumen cifrado y se almacenó en el volumen lógico de LVM /dev/
save/old en servera. Monte el volumen lógico en /mnt/save en servera, y puede
ubicar el archivo de copia de seguridad del encabezado de LUKS en /mnt/save/luks/
iscsistorage_luks_header. Si, por cualquier motivo, no se puede acceder al archivo,
resuelva el problema y, luego, restaure el archivo en esa ubicación.
3. Una vez que se realiza correctamente la detección del destino de iSCSI en workstation,
inicie sesión en el destino. Si encuentra algún problema, resuélvalo para que el inicio de
sesión se lleve a cabo de manera correcta.
RH342-RHEL7.2-es-1-20160321 177
Capítulo 5. Solución de problemas de almacenamiento
5. Dado que el descifrado falló, monte el volumen lógico de LVM /dev/save/old en /mnt/
save para acceder al archivo de volcado del encabezado de LUKS. Si encuentra algún
problema con el volumen lógico, resuélvalo para que el volumen lógico esté disponible.
10. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
10.1.Evalúe su trabajo.
11. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
178 RH342-RHEL7.2-es-1-20160321
Solución
Solución
En este trabajo de laboratorio, revolverá problemas de almacenamiento relacionados con
cifrado, sistemas de archivos, LVM e iSCSI.
Recursos
Archivos /mnt/save/luks/iscsistorage_luks_header
Resultados
Deberá poder resolver problemas con sistemas de archivos dañados, encabezados de LUKS,
administración de LVM y destinos de iSCSI.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab storage setup en su
máquina workstation.
Si tiene problemas para descifrar el volumen cifrado, se realizó una copia de seguridad
del encabezado del volumen cifrado y se almacenó en el volumen lógico de LVM /dev/
save/old en servera. Monte el volumen lógico en /mnt/save en servera, y puede
ubicar el archivo de copia de seguridad del encabezado de LUKS en /mnt/save/luks/
iscsistorage_luks_header. Si, por cualquier motivo, no se puede acceder al archivo,
resuelva el problema y, luego, restaure el archivo en esa ubicación.
RH342-RHEL7.2-es-1-20160321 179
Capítulo 5. Solución de problemas de almacenamiento
3. Una vez que se realiza correctamente la detección del destino de iSCSI en workstation,
inicie sesión en el destino. Si encuentra algún problema, resuélvalo para que el inicio de
sesión se lleve a cabo de manera correcta.
180 RH342-RHEL7.2-es-1-20160321
Solución
3.3. Dado que el método de autenticación está configurado correctamente, verifique que
la falla de autenticación no se deba a una restricción de ACL al comprobar que el
nombre del iniciador coincide con el acceso otorgado por la ACL de destino.
3.5. Reinicie iscsid para que se aplique el cambio de nombre del iniciador.
5. Dado que el descifrado falló, monte el volumen lógico de LVM /dev/save/old en /mnt/
save para acceder al archivo de volcado del encabezado de LUKS. Si encuentra algún
problema con el volumen lógico, resuélvalo para que el volumen lógico esté disponible.
RH342-RHEL7.2-es-1-20160321 181
Capítulo 5. Solución de problemas de almacenamiento
5.3. Dado que el volumen lógico no está, investigue el registro de archivo de LVM para
determinar el motivo de su ausencia.
File: /etc/lvm/archive/save_00000-1431778654.vg
Couldn't find device with uuid eYfFIc-HUFc-NxnQ-w0xq-QmnE-j6DC-36y0UY.
VG name: save
Description: Created *before* executing 'vgcreate save /dev/vdb1'
Backup Time: Fri Jan 22 13:34:33 2016
File: /etc/lvm/archive/save_00001-884435814.vg
VG name: save
Description: Created *before* executing 'lvcreate -W y -L 15M -n old save'
Backup Time: Fri Jan 22 13:34:33 2016
File: /etc/lvm/archive/save_00002-527329952.vg
VG name: save
Description: Created *before* executing 'lvcreate -W y -L 15M -n new save'
Backup Time: Fri Jan 22 13:34:33 2016
File: /etc/lvm/archive/save_00003-600513272.vg
VG name: save
Description: Created *before* executing 'lvremove -f /dev/save/old'
Backup Time: Fri Jan 22 13:34:33 2016
File: /etc/lvm/backup/save
VG name: save
Description: Created *after* executing 'lvremove -f /dev/save/old'
Backup Time: Fri Jan 22 13:34:33 2016
5.4. Deshaga la eliminación del volumen lógico y, luego, monte el volumen en /mnt/
save.
182 RH342-RHEL7.2-es-1-20160321
Solución
cuando verifica el archivo, resuélvalo para que el archivo esté disponible en la ubicación
especificada.
RH342-RHEL7.2-es-1-20160321 183
Capítulo 5. Solución de problemas de almacenamiento
6.4. Monte el sistema de archivos reparado. Según el informe de reparación del sistema
de archivos, esperamos encontrar el archivo iscsistorage_luks_header en el
directorio lost+found. Restáurelo en el directorio /mnt/save/luks.
WARNING!
========
Device /dev/sda1 already contains LUKS header. Replacing header will destroy
existing keyslots.
184 RH342-RHEL7.2-es-1-20160321
Solución
10. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
10.1.Evalúe su trabajo.
11. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
RH342-RHEL7.2-es-1-20160321 185
Capítulo 5. Solución de problemas de almacenamiento
Resumen
En este capítulo, aprendió lo siguiente:
• Los sistemas de archivos ext3 y ext4 se pueden verificar y reparar con el comando e2fsck.
• Los sistemas de archivos XFS se pueden verificar y reparar con el comando xfs_repair.
• Por lo general, los problemas con las conexiones de iSCSI al servidor de destino son
generados por problemas de red en el caso de que la detección de destinos no se realice
correctamente.
• Por lo general, los problemas con las conexiones de iSCSI al servidor de destino son
generados por problemas de autenticación o ACL en el caso de que la detección de
destinos se realice correctamente.
186 RH342-RHEL7.2-es-1-20160321
TRAINING
CAPÍTULO 6
SOLUCIÓN DE PROBLEMAS DE
RPM
Visión general
Meta Identificar y resolver problemas en, y utilizando, el
subsistema de gestión de paquetes.
Objetivos • Resolver problemas de dependencia de la gestión de
paquetes manualmente.
RH342-RHEL7.2-es-1-20160321 187
Capítulo 6. Solución de problemas de RPM
Objetivos
Después de completar esta sección, los estudiantes podrán identificar y resolver problemas
de dependencia de paquetes.
Dependencias de paquetes
Las dependencias de paquetes ocurren cuando un paquete de RPM requiere una
funcionalidad proporcionada por otros paquetes de RPM. Estos requisitos de paquetes se
incluyen en los metadatos de cada paquete de RPM. El comando rpm no resuelve estas
dependencias. El comando yum resuelve dependencias y utiliza rpm para instalar o borrar un
paquete.
A pesar de los mejores intentos de Yum, a veces hay problemas de dependencias de RPM que
no se resolverán de manera predeterminada. Un ejemplo de esto puede observarse cuando
instala un paquete que requiere una versión específica de otro paquete, y una versión
incompatible diferente del paquete requerido ya está instalada en el sistema.
Cuando diagnostica problemas de dependencia de RPM, los registros del sistema no soy
muy útiles. Además de la base de datos de RPM, el registro /var/log/yum.log contiene un
historial de los paquetes instalados y eliminados. No hay mucha información detallada del
RPM. Invocar el comando rpm con la opción -v permite mostrar más información diagnóstica
en errores estándares cuando se ejecuta. Las opciones -v adicionales harán que rpm sea más
detallado.
El comando rpm también puede utilizarse para mostrar información útil sobre la dependencia
de los paquetes. La opción --requires, o -R de manera abreviada, muestra los requisitos
para el paquete que se pasan como parámetro. No muestra tanta información como yum
deplist.
188 RH342-RHEL7.2-es-1-20160321
Uso de Yum para bloquear versiones de paquetes
cpio
diffutils
pygpgme
pyliblzma
python >= 2.4
python(abi) = 2.7
nota
Si la instalación de una versión anterior del paquete es un requisito previo para
otros paquetes instalados en el sistema, también se puede especificar e instalar una
versión anterior de los paquetes dependientes.
RPM proporciona una funcionalidad similar con la opción --oldpackage. Esta opción se
utiliza con el comando rpm -U. Le indica a la actualización de RPM que instale la versión
anterior de un paquete instalado.
Comando Función
yum versionlock list Muestra la lista de versiones bloqueadas del
paquete.
RH342-RHEL7.2-es-1-20160321 189
Capítulo 6. Solución de problemas de RPM
Comando Función
yum versionlock add WILDCARD Bloquea las versiones actuales de los
paquetes que coinciden con el comodín.
yum versionlock delete WILDCARD Elimina los bloqueos que coinciden con el
comodín.
yum versionlock clear Elimina todos los bloqueos de versión del
paquete.
Una vez que se bloquea una versión específica de un paquete, Yum no intentará actualizar el
paquete cuando se ejecute el comando yum update.
El comando yum list --showduplicates puede utilizarse para encontrar todas las
versiones disponibles de un paquete.
Referencias
Páginas del manual: rpm(8), yum(8), yum-versionlock(1)
190 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Resolución de problemas de dependencia
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder resolver problemas de dependencia de paquetes.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab package-
dependencies setup en su sistema workstation.
El equipo de seguridad actualizó los requisitos de su sistema para los hosts en el centro de
datos. Parte de esa actualización requiere la instalación de un paquete personalizado, rht-
main, en cada host.
Uno de sus colegas intentó instalar rht-main en servera sin éxito. Se le ha pedido que
resuelva este problema y que instale el paquete.
1. Utilice Yum para instalar el paquete rht-main. Revise los mensajes de error en busca de
información útil.
2. El paquete rht-main requiere la instalación de una versión específica del paquete rht-
prereq, concretamente la versión 0.1. Se ha instalado una versión más reciente en el
sistema. Utilice Yum para instalar la versión anterior del paquete.
RH342-RHEL7.2-es-1-20160321 191
Capítulo 6. Solución de problemas de RPM
Resolving Dependencies
--> Running transaction check
---> Package rht-prereq.noarch 0:0.1-1.el7 will be a downgrade
---> Package rht-prereq.noarch 0:0.2-1.el7 will be erased
... Output omitted ...
3. Ahora que se instaló el software de requisito previo, utilice Yum para instalar el paquete
rht-main requerido.
Complete!
192 RH342-RHEL7.2-es-1-20160321
El paquete yum-plugin-versionlock proporcionará la funcionalidad requerida. Use Yum
para instalarla.
Installed:
yum-plugin-versionlock.noarch 0:1.1.31-34.el7
Complete!
9. Después de calificar sus sistemas, restablezca correctamente sus máquinas al estado que
tenían antes de iniciar el trabajo de laboratorio, al restablecer sus máquinas virtuales o al
ejecutar el siguiente comando en su sistema workstation.
RH342-RHEL7.2-es-1-20160321 193
Capítulo 6. Solución de problemas de RPM
Objetivos
Después de completar esta sección, los estudiantes podrán identificar y volver a desarrollar
una base de datos dañada de RPM.
En algunas ocasiones, la base de datos de RPM puede dañarse por una variedad de razones.
Utilice los siguientes pasos para reparar una base de datos dañada. Preste atención a los
mensajes de error que aparecen.
1. Elimine los archivos de bloqueo obsoletos y elimine los índices de la base de datos para
evitar problemas de bloqueo adicionales.
194 RH342-RHEL7.2-es-1-20160321
Base de datos dañada de RPM
Referencias
Página del manual: rpm(8)
RH342-RHEL7.2-es-1-20160321 195
Capítulo 6. Solución de problemas de RPM
En este trabajo de laboratorio, reparará una base de datos dañada de un paquete de RPM.
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder diagnosticar y reparar una base de datos dañada de un paquete de RPM.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab package-database
setup en su sistema workstation.
1. Primero, vea si puede reproducir el error que el administrador junior observó. Comience
una instalación Yum del paquete httpd, pero decline la instalación antes de que Yum
realice cambios al sistema.
196 RH342-RHEL7.2-es-1-20160321
yum load-transaction /tmp/yum_save_tx.2016-01-11.17-24.mjLElP.yumtx
2. Revise los registros del sistema en busca de mensajes de error relacionados a este
problema. /var/log/messages y /var/log/yum.log son buenos lugares para
comenzar a buscar.
3. Realice una consulta simple de paquete de RPM y vea si produce un mensaje de error.
El comando rpm -qa generó un mensaje de error útil, pero desapareció de la pantalla
antes de que pudiera leerlo. Redireccionar el resultado estándar del comando le
permitirá ver solo los mensajes de error.
5. Identifique y elimine los bloqueos obsoletos. Elimine los índices de la base de datos de
RPM.
RH342-RHEL7.2-es-1-20160321 197
Capítulo 6. Solución de problemas de RPM
6. Realice una copia de seguridad de los archivos de la base de datos de RPM antes de
realizar más cambios.
9. Utilice rpm --rebuilddb para crear nuevos índices de base de datos de RPM.
10. Ejecute el comando rpm -qa nuevamente y muestre solo los mensajes de error
estándar.
12. Después de calificar sus sistemas, restablezca correctamente sus máquinas al estado que
tenían antes de iniciar el trabajo de laboratorio, al restablecer sus máquinas virtuales o al
ejecutar el siguiente comando en su sistema workstation.
198 RH342-RHEL7.2-es-1-20160321
[student@workstation ~]$ lab package-database reset
RH342-RHEL7.2-es-1-20160321 199
Capítulo 6. Solución de problemas de RPM
Objetivos
Después de completar la sección, los estudiantes podrán identificar y restaurar archivos
cambiados que pertenecen a la administración de paquetes.
La primera cadena de caracteres es una máscara de los atributos del archivo. Los puntos
se muestran para los atributos que coinciden con la base de datos. En la siguiente tabla se
enumeran los campos más comunes de los atributos de archivo.
200 RH342-RHEL7.2-es-1-20160321
Verificación de paquetes instalados
De manera opcional, es posible que rpm -V muestre un carácter antes del nombre del
archivo. Este carácter representa el tipo de archivo de RPM que el desarrollador del paquete
especificó. En la siguiente tabla se enumeran los tipos de archivo de RPM más comunes
especificados.
RH342-RHEL7.2-es-1-20160321 201
Capítulo 6. Solución de problemas de RPM
Tenga en cuenta que los comandos yum verify producen un resultado más legible. Además
de imprimir las diferencias de archivos, los comandos imprimen los valores comparables del
sistema de archivos y de la base de datos de RPM.
Tenga en cuenta que la propiedad del grupo del archivo de ejemplo aún no coincide con su
propiedad original en la base de datos de RPM. El comando rpm --setugids restaura las
propiedades de usuario o grupo de los archivos en un paquete a sus valores originales.
Se puede usar el comando yum reinstall para recuperar archivos modificados que
pertenecen a un paquete. Este comando reinstala la versión idéntica de un paquete que está
instalado actualmente. Funciona para paquetes que solo permiten que se instale una versión
de un paquete a la vez en el sistema. No funciona para paquetes de "solo instalación", como
el kernel de Linux.
Installed:
vsftpd.x86_64 0:3.0.2-10.el7
Complete!
[root@demo ~]# rpm -V vsftpd
202 RH342-RHEL7.2-es-1-20160321
Recuperación de archivos cambiados
Referencias
Páginas del manual: rpm(8), yum(8), yum-verify(1)
RH342-RHEL7.2-es-1-20160321 203
Capítulo 6. Solución de problemas de RPM
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder diagnosticar y corregir problemas de permiso de archivos y archivos dañados a
través de rpm y yum.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab broken-commands
setup en su sistema workstation.
Recibe informes en donde se indica que algunos de los comandos de servera están
dañados. Los usuarios no pueden enumerar archivos con ls, y el comando sudo no tiene un
comportamiento adecuado. Se le ha pedido que diagnostique y corrija estos problemas.
1. Inicie sesión como root en servera. Aparece un mensaje de error cuando inicia sesión
que le da una pista acerca del primer comando dañado que necesita solución.
2. Utilice rpm para identificar el paquete del que proviene el comando y verifique el
contenido del paquete.
3. Utilice rpm para restaurar los permisos de los archivos en el paquete coreutils.
204 RH342-RHEL7.2-es-1-20160321
4. Compruebe que se haya corregido el comando. Vuelva a verificar el paquete coreutils y
vea si ls está funcionando nuevamente.
5. Ahora es el momento de resolver el problema con sudo. Inicie sesión como student en
servera e intente usar sudo para obtener acceso al conteo de palabras en /etc/ssh/
sshd_config.
7. Inicie sesión como root en servera. Utilice rpm -V para verificar el paquete que
proporciona el comando sudo.
Complete!
[root@servera ~]# rpm -V sudo
S.5....T. c /etc/sudoers
9. Inicie sesión nuevamente como student en servera y compruebe que sudo esté
funcionando.
RH342-RHEL7.2-es-1-20160321 205
Capítulo 6. Solución de problemas de RPM
11. Después de calificar sus sistemas, restablezca correctamente sus máquinas al estado que
tenían antes de iniciar el trabajo de laboratorio, al restablecer sus máquinas virtuales o al
ejecutar el siguiente comando en su sistema workstation.
206 RH342-RHEL7.2-es-1-20160321
Suscripción de sistemas a actualizaciones de Red Hat
Objetivos
Después de completar esta sección, los estudiantes deberán poder registrar un sistema con
Red Hat y administrar suscripciones de Red Hat.
Los sistemas Red Hat Enterprise Linux deben estar autorizados para recibir paquetes
de software. Las aplicaciones de Red Hat Subscription Manager (RHSM) se utilizan para
administrar las autorizaciones de software de un host. Red Hat Subscription Manager utiliza
certificados X.509 en un host para controlar el estado de su suscripción. El proceso de
autorización es un proceso que consta de tres pasos.
2. Registre el sistema con Red Hat directamente o un servidor de Red Hat Satellite. Este
paso se lleva a cabo una vez y se coloca un certificado de identidad en el sistema.
Los certificados X.509 tienen fechas de caducidad y se pueden actualizar cuando se ponen
a disposición nuevos certificados. Yum tiene un complemento (plug-in) subscription-
manager que hace que funcione con el sistema de Red Hat Subscription Management. El
servicio rhsmcertd verifica regularmente la configuración del sistema para confirmar que los
certificados de autorización estén al día y para identificar actualizaciones de certificados.
Los sistemas cliente de Red Hat Subscription Manager deben poder contactar al
servicio de administración de suscripciones y a la red de entrega de contenido. De
manera predeterminada, se puede acceder a ambos servicios de red a través del puerto
443. La configuración de Internet predeterminada define el servidor de RHSM como
subscription.rhn.redhat.com. El nombre de host para el servidor de entrega de
contenido es cdn.redhat.com.
subscription-manager-gui
En máquinas gráficas donde X está instalado, puede utilizar subscription-manager-
gui para configurar y administrar suscripciones de software de Red Hat. Puede ejecutar
subscription-manager-gui desde una shell o al seleccionar el elemento de menú
Applications (Aplicaciones) > System Tools (Herramientas del sistema) > Red Hat
Subscription Manager desde el escritorio.
RH342-RHEL7.2-es-1-20160321 207
Capítulo 6. Solución de problemas de RPM
Una vez que haya seleccionado el host de registro, si hace clic en Next (Siguiente), aparecerá
la próxima pantalla System Registration (Registro del sistema). Aquí se le pedirán las
208 RH342-RHEL7.2-es-1-20160321
subscription-manager-gui
credenciales de inicio de sesión del Portal de clientes de Red Hat, o una cuenta de Red Hat
Satellite si se seleccionó un servidor de Satellite.
nota
Si se seleccionó la casilla de verificación I will use an Activate Key (Utilizaré una
clave activa) en la pantalla anterior, el administrador puede proporcionar el nombre
de una clave de activación y la organización de Satellite en la que está definida.
Una vez que se registre el sistema con el RHSM, se mostrará la pestaña My Installed
Products (Mis productos instalados), pero el estado del producto cambiará de Unknown
(Desconocido) a Not Subscribed (No suscrito).
RH342-RHEL7.2-es-1-20160321 209
Capítulo 6. Solución de problemas de RPM
Aparecerá otra pestaña, All Available Subscriptions (Todas las suscripciones disponibles).
Haga clic en esta pestaña para ver las suscripciones de RHSM que se pueden asociar al
sistema.
Una vez que se selecciona la suscripción deseada, se hace clic en el botón Attach (Asociar).
Se asociará la suscripción al sistema, o aparecerá un cuadro de diálogo Contract Selection
(Selección de contrato) adicional si la suscripción tiene varios tipos de contratos asociados.
Si el host tiene varios productos instalados, es posible que deba asociar varias suscripciones
para cubrir todos los productos instalados. A medida que se cumple con cada requisito de la
suscripción, el estado de los productos cambiará a Subscribed (Suscrito).
210 RH342-RHEL7.2-es-1-20160321
subscription-manager
subscription-manager
Red Hat Subscription Management también tiene una utilidad basada en texto para
administrar suscripciones del sistema, subscription-manager. subscription-manager
proporciona todas las funcionalidades de subscription-manager-gui, pero se utilizan
opciones de línea de comandos para sobrescribir los valores predeterminados. Por ejemplo,
se puede especificar la opción --serverurl=HOSTNAME para que señale a un host de RHSM
diferente a subscription.rhn.redhat.com.
RH342-RHEL7.2-es-1-20160321 211
Capítulo 6. Solución de problemas de RPM
212 RH342-RHEL7.2-es-1-20160321
subscription-manager
Enabled: 0
RH342-RHEL7.2-es-1-20160321 213
Capítulo 6. Solución de problemas de RPM
El archivo comienza con la sección [server] (servidor). Incluye las variables que señalan
al servidor de RHSM. Las variables de proxy_* definen el servidor proxy y la autenticación
proxy cuando se debe utilizar un proxy para acceder a Internet.
[server]
# Server hostname:
hostname = subscription.rhn.redhat.com
# Server prefix:
prefix = /subscription
# Server port:
port = 443
La sección rhsm define la URL para el servicio de red de entrega de contenido, baseurl. Los
directorios donde se almacenan los certificados X.509 también se definen en esta sección.
[rhsm]
# Content base URL:
baseurl= https://cdn.redhat.com
214 RH342-RHEL7.2-es-1-20160321
Solución de problemas relacionados con la administración de suscripciones de Red Hat
productCertDir = /etc/pki/product
entitlementCertDir = /etc/pki/entitlement
consumerCertDir = /etc/pki/consumer
[rhsmcertd]
# Interval to run cert check (in minutes):
certCheckInterval = 240
# Interval to run auto-attach (in minutes):
autoAttachInterval = 1440
[main]
enabled=1
Inspección de certificados
Todos los certificados X.509 se almacenan en subdirectorios en el directorio /etc/pki. El
subdirectorio consumer almacena el certificado y la clave de identidad del servidor.
El comando rct cat-cert muestra los campos y valores integrados en los certificados
X.509 de RHSM. Se puede utilizar para comparar el ID de certificados de autorización con el
ID de certificados de productos correspondientes.
RH342-RHEL7.2-es-1-20160321 215
Capítulo 6. Solución de problemas de RPM
En el siguiente ejemplo se muestra una conexión exitosa a Red Had. La URL pasada como
argumento es una baseurl copiada de /etc/yum.repos.d/redhat.repo, excepto la parte
de $releasever/$basearch de la URL expandida.
Ignore el error 403 HTTP. La conectividad de red es lo que se está revisando, y curl obtuvo
una respuesta HTTP de los servidores de Red Hat.
Referencias
Páginas del manual: subscription-manager(8), rct(8), rhsmcertd(8)
216 RH342-RHEL7.2-es-1-20160321
Prueba: Suscripción de sistemas a actualizaciones de Red Hat
A continuación se muestran los pasos para solucionar problemas de Red Hat Subscription
Manager. Indique el orden en que deben efectuarse los pasos.
c. Utilice el comando rct cat-cert para inspeccionar los certificados X.509 utilizados
por RHSM.
RH342-RHEL7.2-es-1-20160321 217
Capítulo 6. Solución de problemas de RPM
Solución
A continuación se muestran los pasos para solucionar problemas de Red Hat Subscription
Manager. Indique el orden en que deben efectuarse los pasos.
3 c. Utilice el comando rct cat-cert para inspeccionar los certificados X.509 utilizados
por RHSM.
218 RH342-RHEL7.2-es-1-20160321
Trabajo de laboratorio: Solución de problemas de RPM
Recursos
URL de la aplicación http://servera.lab.example.com
Máquinas • workstation
• servera
Resultados
Deberá poder diagnosticar y reparar problemas del paquete que provocan la falla de un
servicio.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab package-issues
setup en su sistema workstation. Esto instalará e implementará un servidor web en su
sistema de servera.
4. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
RH342-RHEL7.2-es-1-20160321 219
Capítulo 6. Solución de problemas de RPM
Solución
En este trabajo de laboratorio, corregirá un problema de paquete de software que provoca la
falla de un servicio de red recientemente instalado.
Recursos
URL de la aplicación http://servera.lab.example.com
Máquinas • workstation
• servera
Resultados
Deberá poder diagnosticar y reparar problemas del paquete que provocan la falla de un
servicio.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab package-issues
setup en su sistema workstation. Esto instalará e implementará un servidor web en su
sistema de servera.
1.1. Primero, verifique el estado del servicio httpd para ver si se está ejecutando.
220 RH342-RHEL7.2-es-1-20160321
Solución
El servicio está inactivo y los mensajes de error sugieren que no se pudo arrancar.
1.2. Dado que el servicio se instaló recientemente, revise el archivo de registro de Yum
para identificar los paquetes recientemente instalados. Es posible que su resultado
sea diferente, pero asuma que los siguientes paquetes se instalaron recientemente
en su sistema.
RH342-RHEL7.2-es-1-20160321 221
Capítulo 6. Solución de problemas de RPM
CGroup: /system.slice/httpd.service
├─2394 /usr/sbin/httpd -DFOREGROUND
├─2395 /usr/sbin/httpd -DFOREGROUND
... Output omitted ...
Jan 08 10:11:54 servera.lab.example.com systemd[1]: Starting The Apache HTTP ...
Jan 08 10:11:54 servera.lab.example.com systemd[1]: Started The Apache HTTP S...
Hint: Some lines were ellipsized, use -l to show in full.
2.3. Confirme desde workstation que servera está proporcionando contenido web.
4. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
222 RH342-RHEL7.2-es-1-20160321
Resumen
Resumen
En este capítulo, aprendió lo siguiente:
• Puede usar los comandos yum downgrade y rpm -U --oldpackage para instalar
versiones anteriores de paquetes instalados.
• Los comandos rpm --setperms, rpm --setugids y yum reinstall pueden recuperar
archivos cambiados.
• El comando rct cat-cert se puede usar para mostrar el contenido de los certificados de
autorización, productos e identidad de RHSM.
• curl se puede usar para confirmar la conectividad de red con el host de Red Hat
Subscription Manager.
RH342-RHEL7.2-es-1-20160321 223
224
TRAINING
CAPÍTULO 7
SOLUCIÓN DE PROBLEMAS DE
RED
Visión general
Meta Identificar y solucionar problemas de conectividad de red.
Objetivos • Comprobar la conectividad de la red con herramientas
estándares.
RH342-RHEL7.2-es-1-20160321 225
Capítulo 7. Solución de problemas de red
Prueba de conectividad
Objetivos
Después de completar esta sección, los estudiantes podrán verificar la conectividad de red
con herramientas estándares.
El comando ping toma el nombre de host, o la dirección IP, del host de interés como un
argumento. Cuando se utiliza la opción -b, el argumento del comando especificado es una
dirección de difusión (broadcast). Por defecto, ping enviará continuamente solicitudes eco
de ICMP cada segundo. Todas las respuestas que recibe se muestran con su número de
secuencia de paquete y tiempo de latencia. Cuando el usuario interrumpe el comando con un
Ctrl+C, ping muestra un resumen.
Hay un par de opciones que hacen que ping sea útil en programas de shell. La opción -c
COUNT especifica un conteo que limita la cantidad de solicitudes eco que se puede enviar.
La opción -W TIMEOUT especifica la cantidad de segundos que se espera antes de que se
agote el tiempo de espera. El siguiente comando ping envía una solicitud eco y espera tres
segundos por una respuesta.
ping devuelve un estado de salida cero cuando el host de destino responde, y un estado de
salida no cero cuando no se recibe una respuesta.
El comando ping6 es la versión IPv6 de ping. Dado que varias interfaces pueden tener una
dirección de conexión local IPv6 (fe80::), la opción -I INTERFACE especifica la interfaz para
enviar las solicitudes de eco.
226 RH342-RHEL7.2-es-1-20160321
Análisis de puertos de red
La siguiente tabla enumera las opciones ping y ping6 utilizadas con mayor frecuencia.
Opción Descripción
-b Difunde (broadcast) a la red especificada como un argumento
-n Muestra información de host numéricamente
-i INTERVAL Especifica el intervalo de solicitudes eco en segundos (el valor
predeterminado es 1)
-I INTERFACE Envía solicitudes eco a INTERFACE
-c COUNT Envía solo solicitudes eco COUNT
-W TIMEOUT Espera TIMEOUT segundos antes de finalizar
RH342-RHEL7.2-es-1-20160321 227
Capítulo 7. Solución de problemas de red
Puede deshabilitar los análisis del puerto con la opción -sn. Los administradores utilizan esta
opción cuando desean ver rápidamente los hosts que están en ejecución en una red.
La opción -sU le indica a nmap que debe realizar un análisis de puerto UDP. Este análisis lleva
considerablemente más tiempo en ejecutarse que el análisis de puerto TCP predeterminado.
Es útil cuando un administrador desea un panorama más completo de los servicios que un
host expone en la red.
Nmap tiene muchas otras opciones útiles que superan el alcance de este curso.
228 RH342-RHEL7.2-es-1-20160321
Comunicación con un servicio remoto
Ncat tiene dos modos de funcionamiento. Actúa como un cliente de red por defecto, también
conocido como modo de conexión. El puerto y nombre de host al que se debe conectar se
especifican como argumentos en el comando.
Ncat actúa como un servidor cuando se invoca con la opción -l. Esto se conoce como el
modo de escucha. La opción hace que -k mantenga el puerto abierto para escuchar más
conexiones cuando se utiliza en este modo.
El siguiente resultado muestra lo que sucede cuando se utiliza una sesión de modo de
conexión de Ncat para comunicarse con el agente de escucha anterior.
RH342-RHEL7.2-es-1-20160321 229
Capítulo 7. Solución de problemas de red
Ctrl+D
/bin/bash ejecuta cada línea de texto enviada al servidor. El resultado de los comandos se
envía de regreso al cliente de red.
Importante
Por razones obvias de seguridad, nunca se debe conectar directamente una shell a
un puerto de red. Se brindó el ejemplo anterior para demostrar la funcionalidad de
Ncat con la opción -e.
Ncat admite IPv4 e IPv6. Las opciones -4 y -6 obligan a Ncat a utilizar IPv4 o IPv6,
respectivamente.
Las selecciones se realizan con las teclas de flecha hacia arriba y hacia abajo. A continuación,
presione Enter (Intro) para ejecutar la selección actual. O bien, puede escribir el carácter
resaltado para ejecutar un comando.
IPtraf-ng puede monitorear conexiones de red actuales. Puede mostrar conteos resumidos o
detallados acerca de las interfaces de red en el sistema local. Puede mostrar información de
paquetes UDP e ICMP.
230 RH342-RHEL7.2-es-1-20160321
Monitoreo del trafico de la red
La selección del menú principal Filters... (Filtros…) permite que un administrador cree filtros
para incluir (o excluir) tipos específicos de tráfico de red. Cada filtro es un conjunto de reglas
que pueden seleccionar paquetes en función del tipo de protocolo IP, el puerto, la dirección,
la fuente o el destino.
Referencias
Páginas del manual icmp(7), iptraf-ng(8), ncat(1), nmap(1) y ping(8)
RH342-RHEL7.2-es-1-20160321 231
Capítulo 7. Solución de problemas de red
Recursos
URL de la aplicación http://content.example.com
Máquinas • servera
• serverb
Resultados
Deberá poder utilizar herramientas de software para probar la conectividad de la red.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab network-testing
setup en su sistema workstation. Esto instalará software, abrirá puertos de firerwall y
configurará un servidor web en serverb.
1. El primer paso para probar la conectividad de la red es hacer ping en un host remoto.
Inicie sesión como root en servera. Utilice el comando ping para confirmar que puede
acceder a serverb.
2. El comando ping6 prueba la conectividad IPv6. Utilice el comando ping6 para ver si
puede acceder a serverb. La opción -n mostrará información de la dirección de host
numéricamente.
232 RH342-RHEL7.2-es-1-20160321
3. Por lo general, el paquete nmap no se instala de manera predeterminada. Utilice Yum
para instalarlo en su host servera.
4. Analice la red lab.example.com, 172.25.250.0/24, y vea cuáles son las máquinas a las
que se puede acceder.
La opción -sn le indica a nmap que debe realizar un análisis de ping. No se realizan
análisis de puerto.
Por defecto, nmap realiza un análisis de puerto IPv4. La opción -6 hace que analice
puertos de la dirección IPv6.
RH342-RHEL7.2-es-1-20160321 233
Capítulo 7. Solución de problemas de red
6. Otra herramienta útil para probar redes es Netcat, nc o ncat para abreviar. Instale el
paquete nmap-ncat en servera.
7. Utilice Netcat como un cliente IPv4 del servidor web que se ejecuta en serverb.
Conéctese al puerto 80 y emita el comando HTTP GET. Netcat mostrará lo que se envía
desde el servidor, y el servidor web no emite un aviso.
8. Netcat también puede utilizarse como un servicio de red que muestra todo el contenido
que recibe.
8.1. Inicie sesión como root en serverb. El script de configuración del trabajo de
laboratorio abrió el puerto TCP 4231, por lo que deberá ejecutar Netcat como
un servidor que escuchará en el puerto 4231. Debería seguir escuchando varias
conexiones.
8.2. Desde servera, use nmap para realizar un análisis de puerto de serverb.
8.3. Desde servera, use el cliente nc para conectarse al puerto 4231 de serverb.
Escriba una línea de texto y, luego, escriba Ctrl+C para salir.
234 RH342-RHEL7.2-es-1-20160321
[root@servera ~]# nc serverb 4231
this is a test
Ctrl+C
8.4. Por defecto, el servidor de Netcat escucha el puerto TCP en IPv4 e IPv6. Utilice el
cliente Netcat desde servera para conectarse al servidor Netcat que escucha en el
puerto 4231 de serverb a través de IPv6.
Una vez más, el texto que escribió debería mostrarse en la pantalla de serverb.
10. Inicie sesión como root en la consola servera (no utilice SSH en el servidor server).
Ejecute la aplicación iptraf-ng.
Seleccione IP traffic monitor (Monitor de tráfico IP) en el menú principal. Utilice las teclas
de flecha para navegar y, luego, presione Enter (Intro) para elegir el elemento de menú
resaltado.
11. En la sesión SSH de servera, utilice Yum para instalar el paquete lftp. Observe las
ventanas de iptraf-ng mientras se instala el paquete.
Aparecerá otra conexión en el cuadro superior. Una de las direcciones de esa conexión
será 172.25.254.254:80. Esta es la conexión utilizada por Yum para descargar el paquete
RPM de lftp. Una vez que el paquete está instalado, el indicador de conexión cambiará a
CLOS.
RH342-RHEL7.2-es-1-20160321 235
Capítulo 7. Solución de problemas de red
13. Utilice SSH de serverb a servera a través de IPv6. Verá la conexión TCP al puerto 22
fd37:5265:6448:6174::a en el cuadro superior.
14. En lugar de monitorear tráfico de red, muestra las estadísticas de interfaz de red. Escriba
X para salir de la ventana actual en iftraf-ng. Escriba X para salir de la ventana de
monitoreo; luego, seleccione General interface statistics (Estadísticas de interfaz
generales) o escriba S para mostrar las estadísticas de la interfaz.
Observe cómo cambian los contadores de tráfico. Los paquetes totales y los paquetes
IPv6 aumentarán. La actividad de eth1 aumentará y, luego, regresará a 0.00 kbps una vez
que se complete el comando ls.
Escriba X para salir de la ventana; luego, escriba X para salir de la aplicación y cerrar
sesión en la consola.
15. Cree otra sesión de SSH en servera. Inicie sesión como root y SSH desde workstation
a través de una red IPv4. Ejecute iptraf-ng en esa ventana.
Seleccione IP traffic monitor (Monitor de tráfico IP) y, luego, seleccione All interfaces
(Todas las interfaces) desde el cuadro de diálogo Select Interface (Seleccionar interfaz).
16. Cree un filtro para excluir tráfico de SSH, pero supervise todo el otro tráfico de red.
16.2.Seleccione Filters... (Filtros…) y, luego, IP.... Esta pantalla le permite crear y gestionar
filtros de red IP.
236 RH342-RHEL7.2-es-1-20160321
16.3.Seleccione Define new filter... (Definir nuevo filtro…). Ingrese “Exclude SSH” (Excluir
SSH) para la descripción y, luego, presione Enter (Intro). Se mostrará una lista vacía
de reglas de filtrado.
16.4.Primero, cree una regla que elimine todo el tráfico de SSH entrante, el tráfico de TCP
destinado al puerto 22.
Escriba A para agregar una nueva regla a la lista de reglas para este filtro. Ingrese
“22” en el campo para el puerto Destination (Destino). Escriba Y en el campo TCP
protocol (Protocolo TCP). Escriba E en el campo Include/Exclude (Incluir/Excluir).
16.5.Cree otra regla que incluya todos los otros tráficos de red.
Escriba A para agregar otra regla a la lista de reglas para este filtro. Escriba Y en el
campo del protocolo All IP (Todas las IP). Presione Enter (Intro) para aceptar sus
cambios.
17. Aplique el nuevo filtro que se creó. Seleccione Apply filter... (Aplicar filtro…), seleccione el
filtro Exclude SSH (Excluir SSH) y presione Enter (Intro).
Escriba X para salir del menú Filters (Filtros). En el cuadro Filter Status (Estado de filtro),
IP filter active (Filtro IP activo) confirma que el filtro está en vigor.
18. Vea cómo funciona el filtro. Escriba X para salir del menú Filter Status (Estado de filtro).
Seleccione IP traffic monitor (Monitor de tráfico IP) y, luego, seleccione All interfaces
(Todas las interfaces) para la interfaz.
No aparecerá la conexión TCP de SSH en el cuadro superior. Aún así, el contador Packets
captured (Paquetes capturados), que se muestra en la parte inferior de la pantalla,
disminuirá.
20.2.Seleccione Filter... (Filtro…), seleccione IP... y, luego, seleccione Detach filter (Quitar
filtro). iptraf-ng informará que el filtro está desactivado. Presione cualquier tecla
para continuar.
RH342-RHEL7.2-es-1-20160321 237
Capítulo 7. Solución de problemas de red
20.3.Escriba X para salir. El Filter status (Estado de filtro) cambió a No IP filter active (No
hay filtro de IP activo).
20.5.Seleccione IP traffic monitor (Monitor de tráfico IP) y, luego, seleccione All interfaces
(Todas las interfaces). El monitoreo muestra la conexión de SSH en ejecución debido
al tráfico de red causado por las actualizaciones de monitoreo.
21. Cuando termine de probar la conectividad de red, restablezca sus máquinas al estado
que tenían antes de comenzar el trabajo de laboratorio. Reinicie sus máquinas virtuales o
ejecute el siguiente comando en su sistema workstation.
238 RH342-RHEL7.2-es-1-20160321
Resolución de problemas de conectividad
Objetivos
Después de completar esta sección, los estudiantes podrán identificar y resolver problemas
de conectividad de red.
nota
Los dispositivos de red de huéspedes virtuales utilizan la asignación de nombres de
red tradicional.
Los archivos de registro brindan información útil que ayuda a solucionar problemas de
asignación de nombres de dispositivos de red. El archivo /var/log/messages contiene
información de detección de dispositivos que se realiza en el momento del arranque.
También registra los mensajes que NetworkManager produce cuando intenta activar el
dispositivo. En el siguiente ejemplo se muestra eth1 con una configuración y activación
correctas.
RH342-RHEL7.2-es-1-20160321 239
Capítulo 7. Solución de problemas de red
connected
3914:Feb 3 05:29:25 host NetworkManager[610]: <info> (eth1): device
state change: unavailable -> disconnected (reason 'none') [20 30 0]
... Output omitted ...
3942:Feb 3 05:29:25 host NetworkManager[610]: <info> (eth1): Activation:
successful, device activated.
3954:Feb 3 05:29:25 host nm-dispatcher: Dispatching action 'up' for eth1
Tenga en cuenta que el nombre del archivo necesitaba comenzar con ifcfg-, pero no
tenía que coincidir con el nombre de dispositivo especificado, aunque esta es una práctica
recomendada. Una vez que se realizaron los cambios en el archivo de configuración, el
sistema se reinició para implementarlos.
240 RH342-RHEL7.2-es-1-20160321
Solución de problemas de configuración de la interfaz
La variable IPV6INIT debe tener el valor yes (sí) para que se aplique cualquier configuración
IPv6 en la interfaz de la red. IPV6ADDR especifica la dirección IPv6 estática principal
y la máscara de red. Se pueden asignar direcciones IPv6 adicionales con la variable
IPV6_SECONDARIES. La variable IPV6_AUTOCONF determina si la configuración automática
de IPv6 se realiza en la interfaz de la red.
RH342-RHEL7.2-es-1-20160321 241
Capítulo 7. Solución de problemas de red
[root@demo ~]# nmcli conn down 'System eth1' ; nmcli conn up 'System eth1'
Connection 'System eth1' successfully deactivated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/2)
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/3)
242 RH342-RHEL7.2-es-1-20160321
Resolución de problemas de resolución DNS
Los siguientes ajustes de la configuración de red demuestran cómo se asignan los valores
DNS a este host. Dado que PEERDNS está configurado en yes (sí) en ifcfg-eth0, las
direcciones IP definidas por DNS1 y DNS2 definen las entradas de nameserver en /etc/
resolv.conf. El archivo de configuración de eth1 no afecta la configuración de DNS en
ningún modo.
nota
El ajuste PEERDNS=yes también configura dhclient para modificar /etc/
resolv.conf cuando utiliza DHCP para asignar valores de red.
RH342-RHEL7.2-es-1-20160321 243
Capítulo 7. Solución de problemas de red
244 RH342-RHEL7.2-es-1-20160321
Solución de problemas de firewall
forward-ports:
icmp-blocks:
rich rules:
public (default)
interfaces:
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
... Output omitted ...
Una manera rápida de convertir reglas de tiempo de ejecución en reglas permanentes es con
el comando firewall-cmd --runtime-to-permanent
Firewalld está desarrollado sobre la funcionalidad Netfilter. Esto significa que se puede usar
iptables para obtener información de firewall en un nivel inferior a firewall-cmd.
RH342-RHEL7.2-es-1-20160321 245
Capítulo 7. Solución de problemas de red
De manera similar, el comando ip6tables muestra y administra las tablas de firewall IPv6.
Referencias
Para obtener más información, consulte la
Guía de redes de Red Hat Enterprise Linux 7 - Asignación de nombres consistente
a dispositivos de red
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/
html/Networking_Guide/ch-Consistent_Network_Device_Naming.html
246 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Resolución de problemas de conectividad
Recursos
Máquinas • servera
• serverb
Resultados
Deberá poder diagnosticar y resolver problemas de conectividad de redes en un host de Red
Hat Enterprise Linux.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab network-fix setup
en su sistema workstation. Esto configurará IPv6 en servera y serverb e interrumpirá
parte de la conectividad de red de servera.
1. Inicie sesión en servera como root. Intente hacer ping en serverb a través de IPv6 con
su nombre de host para confirmar que no funciona.
2.1. Use el comando ip para mostrar los ajustes actuales de IP para servera.
RH342-RHEL7.2-es-1-20160321 247
Capítulo 7. Solución de problemas de red
Observa que la interfaz eth0 está funcionando con una dirección IPv4 asignada y
una dirección IPv6 de conexión local, pero eth1 no tiene direcciones IP asignadas.
2.2. Use nmcli para mostrar las configuraciones de red de NetworkManager. Muestre la
información del dispositivo y de la conexión.
2.3. Revise los mensajes de arranque en /var/log/messages para ver si hay otras
pistas. Salte a la parte inferior del archivo y desplácese hacia arriba hasta ver los
mensajes de inicialización de red.
248 RH342-RHEL7.2-es-1-20160321
Feb 1 09:39:35 servera NetworkManager[1549]: <info> ifcfg-rh:
new connection /etc/sysconfig/network-scripts/ifcfg-enp2s0
(8c6fd7b1-ab62-a383-5b96-46e083e04bb1,"System enp2s0")
Feb 1 09:39:35 servera NetworkManager[1549]: <info> ifcfg-rh:
new connection /etc/sysconfig/network-scripts/ifcfg-eth0
(5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03,"System eth0")
Ha encontrado más evidencia útil. No hay dispositivos que coincidan con la interfaz
enp2s0.
Los ajustes de la red parecen ser correctos, pero el archivo los define para una
interfaz que no existe. La segunda interfaz de red de este sistema se conoce como
eth1, no en2ps0.
4. Ajuste los archivos de configuración de red para que reflejen los dispositivos de red del
sistema.
4.1. Realice una copia del archivo ifcfg-enp2s0 original antes de hacer modificaciones.
La copia no puede estar en el directorio /etc/sysconfig/network-scripts; si
está allí, permanecerá en vigor.
4.2. Cambie el nombre del archivo de configuración para que su nombre haga referencia
a la interfaz de red eth1.
RH342-RHEL7.2-es-1-20160321 249
Capítulo 7. Solución de problemas de red
4.3. Cambie el contenido del archivo para que la variable DEVICE haga referencia a la
interfaz de red correcta, eth1. El archivo ifcfg-eth1 resultante debería incluir el
siguiente contenido.
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=fd37:5265:6448:6174::a/64
IPADDR=172.24.250.10
NETMASK=255.255.255.0
5. Use el comando nmcli para que NetworkManager relea los archivos de configuración de
la interfaz de red.
Las conexiones de red parecen ser correctas. Use el comando ip para confirmar que los
ajustes de la red estén aplicados.
6. Haga ping en serverb con su dirección IPv6. Esto funciona, por lo que no se realizarán
cambios adicionales. Vuelva a su directorio de inicio.
7. Intente hacer ping en serverb con su nombre de host. La resolución de nombres aún no
funciona, por lo que deberá recopilar información del sistema para resolver el problema.
250 RH342-RHEL7.2-es-1-20160321
[root@servera ~]# ping6 serverb.lab.example.com
unknown host
7.2. Use el comando host para consultar los hosts que están enumerados en /etc/
resolv.conf.
;; QUESTION SECTION:
;serverb.lab.example.com. IN AAAA
;; ANSWER SECTION:
serverb.lab.example.com. 3600 IN AAAA fd37:5265:6448:6174::b
Todos ellos tienen errores, excepto el último del archivo. Observe que
NetworkManager incluyó un comentario en el archivo que sugiere que se debería
ignorar la cuarta entrada.
7.3. Use el comando nmcli para ver cómo está configurado el DNS. Dado que eth0 es la
interfaz de red externa para servera, revise su configuración.
RH342-RHEL7.2-es-1-20160321 251
Capítulo 7. Solución de problemas de red
ipv6.dns-search:
ipv6.ignore-auto-dns: no
IP4.DNS[1]: 172.25.250.11
IP4.DNS[2]: 172.25.250.10
IP4.DNS[3]: 127.0.0.1
IP4.DNS[4]: 172.25.250.254
Observe que el ajuste de ipv4.dns coincide con las entradas de nameserver del
DNS definidas en /etc/resolv.conf.
9. Intente hacer ping en serverb con su nombre de host. DNS aún no funciona.
10. Reinicie la conexión de NetworkManager para System eth0. Esto aplicará los cambios a
la conexión. Si utilizó SSH para conectarse al host, asegúrese de iniciar la conexión con la
misma línea de comando.
252 RH342-RHEL7.2-es-1-20160321
[root@servera ~]# nmcli conn down 'System eth0' ; nmcli conn up 'System eth0'
Connection 'System eth0' successfully deactivated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/2)
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/3)
11. Use ping6 para hacer ping en serverb con su nombre de host.
Espere que se complete el reinicio antes de seguir con el próximo paso de calificación.
12. Cuando finalice, verifique su trabajo ejecutando el comando lab network-fix grade
desde su máquina workstation.
13. Después de calificar sus sistemas, restablezca correctamente sus máquinas al estado que
tenían antes de iniciar el trabajo de laboratorio, al restablecer sus máquinas virtuales o al
ejecutar el siguiente comando en su sistema workstation.
RH342-RHEL7.2-es-1-20160321 253
Capítulo 7. Solución de problemas de red
Objetivos
Después de completar esta sección, los estudiantes podrán inspeccionar el tráfico de red
para solucionar problemas.
Protocolo Color
HTTP Verde claro
TCP Gris
UDP Celeste
ARP Amarillo claro
ICMP Rosa
Con errores Negro
Una vez que se detiene la captura de un paquete, se pueden escribir los paquetes de red
capturados en un archivo para compartirlos o para analizarlos en otro momento. Los
elementos de menú File (Archivo) > Save (Guardar) o File (Archivo) > Save As… (Guardar
como…) permiten que el usuario especifique el archivo en el que desea guardar los paquetes.
Wireshark admite una variedad de formatos de archivo.
Wireshark también se puede utilizar para analizar paquetes capturados que se guardaron
anteriormente en archivos. No se requiere el privilegio root para analizar paquetes de
254 RH342-RHEL7.2-es-1-20160321
Captura de paquetes con tcpdump
archivos de captura existentes. El elemento de menú File (Archivo) > Open… (Abrir…)
selecciona el archivo que se cargará, o el usuario puede especificar el archivo como una
opción cuando ejecuta wireshark desde la línea de comandos.
El botón Expression… (Expresión…) lleva a los usuarios a un cuadro de diálogo que los ayuda
a crear expresiones de filtrado más sólidas. La expresión ip.src == 192.168.10.23
filtrará los paquetes para que solo se muestren los paquetes que se originan de
192.168.10.23.
El cuadro del medio muestra el paquete como fue analizado por Wireshark. Cada encabezado
de capa de la red se muestra en un formato breve legible por el ojo humano. Si expande
cada encabezado, el usuario puede ver información más detallada acerca de los datos de la
capa de red. Cada línea comienza con el nombre de campo del encabezado seguido por su
valor. Cuando es posible, Wireshark traduce valores a cadenas. Por ejemplo, cuando 22 es el
valor de una dirección de puerto TCP, se muestra como “ssh” con el valor bruto de 22 entre
paréntesis. Cuando se selecciona cada campo, los datos sin formato correspondientes se
resaltan en el cuadro inferior.
Cuando se invoca sin argumentos, tcpdump captura y muestra información acerca de los
paquetes que salen de la interfaz de red principal y que llegan a esta. La ejecución continúa
hasta que el usuario interrumpe el programa al escribir Ctrl+C. La opción -c COUNT hace
que tcpdump se cierre después de que se capturan los paquetes COUNT. Cuando el programa
se cierra, muestra un resumen de la cantidad de paquetes capturados por el programa.
RH342-RHEL7.2-es-1-20160321 255
Capítulo 7. Solución de problemas de red
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:17:58.499620 IP servera.lab.example.com.ssh > 172.25.250.250.56573:
Flags [P.], seq 861940776:861940972, ack 498126305, win 325, options
[nop,nop,TS val 56643816 ecr 1185210527], length 196
10:17:58.499680 IP 172.25.250.250.56573 > servera.lab.example.com.ssh:
Flags [.], ack 196, win 322, options [nop,nop,TS val 1185210632 ecr
56643816], length 0
10:17:58.499985 IP servera.lab.example.com.42442 >
workstation.lab.example.com.domain: 670+ PTR?
250.250.25.172.in-addr.arpa. (45)
3 packets captured
4 packets received by filter
0 packets dropped by kernel
tcpdump puede filtrar el paquete que captura en función de una expresión que se pasa como
argumento. El siguiente comando solo captura paquetes que provienen del host denominado
ntpserver o que van hacia él.
El siguiente comando tcpdump captura paquetes ICMP que vienen desde y van hacia
192.168.32.7.
Se pueden usar expresiones más complejas con operadores lógicos. El siguiente comando
tcpdump filtra todos los paquetes IP entre el host matrix y cualquier otro host, excepto
human175.
Puede encontrar más información acerca de la sintaxis para las expresiones de filtrado
tcpdump en la página del manual pcap-filter(7).
El comando tcpdump también tiene opciones que controlan la información que muestra
acerca de cada paquete capturado. La opción -x hace que tcpdump muestre la información
de datos y el encabezado del paquete como valores hexadecimales. La opción -X muestra los
256 RH342-RHEL7.2-es-1-20160321
Captura de paquetes con tcpdump
datos como valores hexadecimales y ASCII. Esto es útil si el protocolo de red de más alto nivel
incluye comandos de texto. Wireshark puede leer y analizar el paquete que captura archivos
creados por tcpdump para realizar un análisis más profundo.
nota
Wireshark también tiene una versión basada en texto, denominada tshark. Este
programa es proporcionado por el paquete wireshark.
Referencias
Páginas del manual pcap-filter(7), tcpdump(8), tcpslice(8), tshark(1) y
wireshark-filter(4)
RH342-RHEL7.2-es-1-20160321 257
Capítulo 7. Solución de problemas de red
Recursos
URL de la • http://materials.example.com
aplicación
• http://materials.example.com/rh342-practice.tcpdump
• http://serverb.lab.example.com
Archivos • http-test.tcpdump.
• practice.pcapng
• rh342-practice.tcpdump
Máquinas • servera
• serverb
• workstation
Resultados
Debería poder capturar, filtrar e inspeccionar paquetes de red a través de Wireshark y
tcpdump.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab network-traffic
setup en su sistema workstation. Esto instalará y configurará un servidor web en serverb.
1. Inicie sesión como student en workstation. Abra una ventana del terminal como root
e instale los paquetes que proporciona Wireshark.
2. Ejecute Wireshark como root y configúrelo para capturar paquetes en todas las
interfaces de red.
2.2. Seleccione Capture (Capturar) > Interfaces… para abrir el cuadro de diálogo
Wireshark: Capture Interfaces (Wireshark: Capturar interfaces). Haga clic en la
casilla que se encuentra junto a la interfaz any y, luego, haga clic en el botón Start
(Iniciar) para comenzar a capturar paquetes.
258 RH342-RHEL7.2-es-1-20160321
3. Genere tráfico de red en servera desde workstation.
3.2. Genere tráfico de NTP. Use ntpdate para actualizar el reloj del sistema.
4. Detenga Wirwshark para que no capture más paquetes de red. Seleccione Capture
(Capturar) > Stop (Detener), o escriba Ctrl+E.
5.1. Filtre los paquetes para que solo se pueda ver el tráfico ICMP. Ingrese icmp en el
cuadro Filter: (Filtrar:). Use el cuadro del medio para inspeccionar los diferentes
valores de encabezado y datos para algunos de los paquetes mostrados.
5.2. Filtre los paquetes para que solo se pueda ver el tráfico NTP. Ingrese ntp en el
cuadro Filter: (Filtrar:). Inspeccione los encabezados y datos de algunos paquetes.
5.3. Filtre los paquetes para que solo se puedan ver los paquetes HTTP. Ingrese http en
el cuadro Filter: (Filtrar:).
Haga clic con el botón derecho del mouse en cualquier paquete HTTP y, luego,
seleccione Follow TCP Stream (Seguir flujo de TCP). El contenido del flujo se
mostrará en un formato mucho más legible. Los mensajes del cliente HTTP se
muestran en un color (rojo) y las respuestas del servidor HTTP se muestran en otro
color (azul).
6. Guarde los datos del paquete capturado para un análisis posterior. Seleccione File
(Archivo) > Save (Guardar), o escriba Ctrl+S para abrir el cuadro de diálogo Save
Capture File (Guardar archivo de captura). Seleccione el directorio de inicio de root para
el campo Guardar en la carpeta:. Especifique practice en el campo Name: (Nombre:).
Deje Wireshark/... - pcapng como el tipo seleccionado en el campo File Type: (Tipo de
archivo:). Haga clic en el botón Save (Guardar) para guardar los datos capturados.
RH342-RHEL7.2-es-1-20160321 259
Capítulo 7. Solución de problemas de red
7.3. Abra el archivo de captura. Seleccione File (Archivo) > Open… (Abrir…), o escriba
Ctrl+O para abrir el cuadro de diálogo Open Capture File (Abrir archivo de captura).
Explore y seleccione el archivo rh342-practice.tcpdump. Haga clic en el botón
Open (Abrir).
8. Filtre los datos capturados para que solo se puedan ver los paquetes SMTP. Ingrese smtp
en el cuadro Filter: (Filtrar:).
9. Inspeccione el contenido de los paquetes de red. Haga clic en los iconos "+" en el cuadro
del medio para expandir diferentes partes del paquete de red. Trate de encontrar el texto
del mensaje de correo electrónico.
10. Haga clic con el botón derecho del mouse en el intercambio SMTP y, luego, seleccione
Follow TCP Stream (Seguir flujo de TCP). El contenido del flujo se mostrará en un formato
mucho más legible. Los mensajes del servidor SMTP se muestran en un color (azul) y los
mensajes del cliente SMTP se muestran en otro color (rojo). La cadena “GOLD RING HAS
BEEN CAUGHT” es la primera línea del cuerpo del mensaje de correo.
11. También puede usar la utilidad tcpdump para capturar y mostrar tráfico de red. Es útil en
entornos no gráficos.
11.1.Inicie sesión como root en serverb y compruebe que tcpdump está instalado en el
sistema.
11.2.Ejecute tcpdump en serverb para que capture tráfico de red relacionado con
servera. Para capturar paquetes desde las interfaces de red, se necesita un
privilegio root.
260 RH342-RHEL7.2-es-1-20160321
time=0.303 ms
64 bytes from serverb.lab.example.com (172.25.250.11): icmp_seq=3 ttl=64
time=0.229 ms
Ctrl+C
6 packets captured
6 packets received by filter
0 packets dropped by kernel
12. Utilice tcpdump para capturar tráfico de red que entra en un puerto específico. Guarde
los paquetes capturados en un archivo para un análisis posterior.
12.1.Ejecute tcpdump en serverb para que capture tráfico HTTP. Debería guardar los
paquetes de red capturados en un archivo llamado http-test.tcpdump.
Ctrl+C
10 packets captured
10 packets received by filter
0 packets dropped by kernel
RH342-RHEL7.2-es-1-20160321 261
Capítulo 7. Solución de problemas de red
13.1.La opción -r FILENAME hace que tcpdump lea datos de red desde un archivo en
lugar de desde interfaces de red. Sin otras opciones, solo se muestra la información
del encabezado del paquete.
13.2.Muestre solo los paquetes entrantes que vinieron de servera. Se pueden usar
expresiones para filtrar los paquetes que se muestran. La opción -x hace que los
datos del paquete se muestren en formato hexadecimal.
13.3.La opción -X hace que los datos del paquete se muestren en formato hexadecimal y
ASCII. Intente reconocer algunas de las solicitudes HTTP que vinieron de servera.
262 RH342-RHEL7.2-es-1-20160321
[nop,nop,TS val 103035086 ecr 223556028], length 0
0x0000: 4500 0034 d065 4000 4006 1e15 ac19 fa0a E..4.e@.@.......
0x0010: ac19 fa0b c793 0050 3a7e e0ab ebab c756 .......P:~.....V
0x0020: 8010 00e5 4c70 0000 0101 080a 0624 30ce ....Lp.......$0.
0x0030: 0d53 31bc .S1.
11:52:54.699689 IP servera.lab.example.com.51091 >
serverb.lab.example.com.http: Flags [P.], seq 0:71, ack 1, win 229,
options [nop,nop,TS val 103035086 ecr 223556028], length 71
0x0000: 4500 007b d066 4000 4006 1dcd ac19 fa0a E..{.f@.@.......
0x0010: ac19 fa0b c793 0050 3a7e e0ab ebab c756 .......P:~.....V
0x0020: 8018 00e5 4cb7 0000 0101 080a 0624 30ce ....L........$0.
0x0030: 0d53 31bc 4745 5420 2f20 4854 5450 2f31 .S1.GET./.HTTP/1
0x0040: 2e31 0d0a 5573 6572 2d41 6765 6e74 3a20 .1..User-Agent:.
0x0050: 6375 726c 2f37 2e32 392e 300d 0a48 6f73 curl/7.29.0..Hos
0x0060: 743a 2073 6572 7665 7262 0d0a 4163 6365 t:.serverb..Acce
0x0070: 7074 3a20 2a2f 2a0d 0a0d 0a pt:.*/*....
... Output omitted ...
14. Copie los datos HTTP capturados en workstation para un análisis más profundo.
Use Wireshark en workstation para ver el tráfico de red HTTP capturado. Asegúrese de
“seguir” el flujo TCP para ver el intercambio HTTP en un formato mucho más legible.
RH342-RHEL7.2-es-1-20160321 263
Capítulo 7. Solución de problemas de red
En este trabajo de laboratorio, identificará y corregirá los ajustes de red mal configurados de
un servidor.
Recursos
URL de la aplicación http://serverb.lab.example.com
Máquinas • servera
• serverb
Resultados
Deberá poder diagnosticar y reparar los problemas de configuración de red que causan que
un servicio de red no esté disponible.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab network-lab setup
en su sistema workstation. Esto implementará un servidor web y ajustará la configuración
de red de serverb.
Hay un servidor web ejecutándose en serverb que publica contenido. Se debería poder ver
el contenido en la siguiente URL: http://serverb.lab.example.com.
El administrador junior que configuró serverb perdió los documentos que contenían
las especificaciones de la red para el servidor. El equipo de la red ha configurado
adecuadamente la entrada DNS para serverb en sus servidores. Diagnostique y corrija la
configuración de la red de serverb para que el contenido web esté disponible. Asegúrese de
que las correcciones de la red perduren.
1. Determine cuáles se suponen que son los ajustes de la red IP pública de serverb.
2. Inicie sesión en serverb. Diagnostique y solucione los problemas de la red para que el
contenido web esté disponible.
5. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
264 RH342-RHEL7.2-es-1-20160321
Solución
Solución
En este trabajo de laboratorio, identificará y corregirá los ajustes de red mal configurados de
un servidor.
Recursos
URL de la aplicación http://serverb.lab.example.com
Máquinas • servera
• serverb
Resultados
Deberá poder diagnosticar y reparar los problemas de configuración de red que causan que
un servicio de red no esté disponible.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab network-lab setup
en su sistema workstation. Esto implementará un servidor web y ajustará la configuración
de red de serverb.
Hay un servidor web ejecutándose en serverb que publica contenido. Se debería poder ver
el contenido en la siguiente URL: http://serverb.lab.example.com.
El administrador junior que configuró serverb perdió los documentos que contenían
las especificaciones de la red para el servidor. El equipo de la red ha configurado
adecuadamente la entrada DNS para serverb en sus servidores. Diagnostique y corrija la
configuración de la red de serverb para que el contenido web esté disponible. Asegúrese de
que las correcciones de la red perduren.
1. Determine cuáles se suponen que son los ajustes de la red IP pública de serverb.
1.2. Identifique la puerta de enlace y la máscara de red IPv4. (Sugerencia: Tanto servera
como workstation están configuradas para esa red).
RH342-RHEL7.2-es-1-20160321 265
Capítulo 7. Solución de problemas de red
2. Inicie sesión en serverb. Diagnostique y solucione los problemas de la red para que el
contenido web esté disponible.
2.1. Muestre los ajustes de la red actual. Esto identificará la cantidad de interfaces de red
actuales y mostrará su configuración inicial.
[root@serverb ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
link/ether 52:54:00:00:fa:0b brd ff:ff:ff:ff:ff:ff
inet 172.25.251.11/24 brd 172.25.251.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe00:fa0b/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
link/ether 52:54:00:01:fa:0b brd ff:ff:ff:ff:ff:ff
inet 172.24.250.11/24 brd 172.24.250.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fd37:5265:6448:6174::b/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe01:fa0b/64 scope link
valid_lft forever preferred_lft forever
2.2. Hay dos interfaces de red física. Determine los nombres de conexión de
NetworkManager.
Una tercera conexión puede hacer referencia a eth1, pero no tiene un dispositivo
asociado en la última columna. Desaparecerá cuando serverb se reinicie y se
puede omitir tranquilamente. La interfaz asociada con eth0 está conectada a la red
externa, por lo que merece mayor atención.
266 RH342-RHEL7.2-es-1-20160321
Solución
Los ajustes del servidor DNS parecen correctos, pero la interfaz de red está
configurada para una subred equivocada. Debería estar configurada para la red
172.25.250.0/24. El administrador junior debe haber escrito el tercer octeto de la
dirección IP.
2.4. Realice una copia de respaldo de los archivos de configuración de la interfaz antes de
realizar cambios.
RH342-RHEL7.2-es-1-20160321 267
Capítulo 7. Solución de problemas de red
2.8. Confirme que los puertos del firewall HTTP están abiertos.
5. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
268 RH342-RHEL7.2-es-1-20160321
Resumen
Resumen
En este capítulo, aprendió lo siguiente:
• nmap puede analizar rápidamente una red en busca de hosts, o puede realizar análisis de
puerto más exhaustivos que requieren mucho más tiempo.
• El comando ncat, o nc, puede utilizarse como un cliente de red simple o puede actuar
como un servidor simple para probar la conectividad de las redes.
• Para solucionar los nombres de dispositivos de red incorrectos, ajuste las variables DEVICE
y HWADDR en el archivo de configuración de la interfaz de red adecuado, ifcfg-*, y, luego,
reinicie.
RH342-RHEL7.2-es-1-20160321 269
270
TRAINING
CAPÍTULO 8
SOLUCIÓN DE PROBLEMAS DE LA
APLICACIÓN
Visión general
Meta Resolver los problemas de la aplicación.
Objetivos • Identificar las dependencias de la librería del software
de terceros.
RH342-RHEL7.2-es-1-20160321 271
Capítulo 8. Solución de problemas de la aplicación
Objetivos
Después de completar esta sección, los estudiantes podrán identificar dependencias de la
librería para software de terceros.
Las aplicaciones de enlaces dinámicos con librerías compartidas tienen muchos beneficios:
• Los archivos ejecutables binarios de la aplicación son más pequeños debido a que el
código de la librería no se copia en ellos.
La librería compartida tiene un enlace simbólico que la señala y que coincide con su campo
DT_SONAME.
Cuando se ejecuta una aplicación, el enlazador de tiempo de ejecución identifica las librerías
compartidas requeridas y las asigna al espacio de memoria del programa. En Red Hat
Enterprise Linux 7, /lib64/ld-linux-x86-64.so* es el valor predeterminado, una versión
272 RH342-RHEL7.2-es-1-20160321
Uso de librerías compartidas con aplicaciones
de 64 bits del enlazador de tiempo de ejecución. Viene con el paquete glibc.x86_64. La versión
de 32 bits de la librería glibc proporciona la versión de 32 bits del enlazador de tiempo de
ejecución cuando se instala.
• Por último, busca los directorios en las rutas de librerías predeterminadas. El cargador
de librería compartida de 64 bits señala las versiones de 64 bits de las ubicaciones
predeterminadas, /lib64 y /usr/lib64. /lib y /usr/lib son los directorios que el
enlazador de tiempo de ejecución de 32 bits busca.
El comando ldd muestra las librerías compartidas que una determinada aplicación requiere
en el tiempo de ejecución. Se muestra el nombre DT_SONAME de cada librería, seguido del
nombre de ruta de la librería en el sistema.
RH342-RHEL7.2-es-1-20160321 273
Capítulo 8. Solución de problemas de la aplicación
nota
El nombre de ruta absoluta de una librería está incrustado en un programa cuando
la librería compartida no tiene un campo DT_SONAME. En el ejemplo anterior, la
referencia /lib64/ld-linux-x86-64.so.2 señala al propio enlazador de tiempo
de ejecución.
Es posible, y muy probable, que haya otras librerías que el enlazador de tiempo de ejecución
no pueda resolver. Se puede usar el comando ldd para mostrar las librerías compartidas
utilizadas por una aplicación. Las librerías que no pueden resolverse en el tiempo de
ejecución se muestran como “no encontrada”.
274 RH342-RHEL7.2-es-1-20160321
Uso de librerías compartidas con aplicaciones
Una vez que se identifican las librerías compartidas que faltan, debe instalarlas en el
sistema. Esta es una tarea relativamente simple cuando las librerías son proporcionadas
por un paquete RPM. Los paquetes RPM incluyen información de dependencia de la librería
compartida dentro de los metadatos del paquete.
Si la librería compartida no está incluida y distribuida por Red Hat, tendrá que comunicarse
con el proveedor externo para ver si puede proporcionarla. Cuando se instala o se
elimina una librería compartida del sistema, el comando ldconfig debería ejecutarse sin
argumentos. ldconfig actualiza la caché del enlazador de tiempo de ejecución, /etc/
ld.so.cache.
Referencias
Páginas del manual: ld(1), ldconfig(8), ld.so(8), ldd(1), nm(1) y objdump(1).
RH342-RHEL7.2-es-1-20160321 275
Capítulo 8. Solución de problemas de la aplicación
Recursos
Máquina • servera
Resultados
Debe poder identificar cuáles son las librerías que una aplicación necesita ejecutar en un
sistema.
Andes de comenzar
Prepárese para este ejercicio ejecutando el comando lab app-libdeps setup en su
sistema workstation. Esta acción descargará e instalará la aplicación genisoimage en
servera.
Se muestra un mensaje de error útil. Cuando el sistema no puede resolver una librería
compartida, el programa genera el mismo estado de salida que la shell cuando no puede
encontrar un comando.
2. Descubra cuáles son las librerías compartidas que el programa requiere. El mensaje
de error deja en claro que se requiere libusal.so.0, pero es posible que falten otras
librerías requeridas.
276 RH342-RHEL7.2-es-1-20160321
En el resultado anterior, se pueden resolver todas las librerías exceptos dos:
libusal.so.0 y librols.so.0.
3. Utilice Yum para determinar si se pueden instalar paquetes que proporcionen esas
librerías.
4. Ambas librerías vienen con el paquete libusal. Inicie sesión como root en servera e
instálelo.
RH342-RHEL7.2-es-1-20160321 277
Capítulo 8. Solución de problemas de la aplicación
El programa está dañado otra vez. Si la aplicación fue proporcionada por un paquete,
rpm y yum habrían estado al tanto de la dependencia de la librería.
278 RH342-RHEL7.2-es-1-20160321
11. Después de calificar su sistema, restablezca correctamente su máquina al estado que
tenía antes de iniciar el trabajo de laboratorio, al restablecer su máquina virtual o al
ejecutar el siguiente comando en su sistema workstation.
RH342-RHEL7.2-es-1-20160321 279
Capítulo 8. Solución de problemas de la aplicación
Objetivos
Después de completar esta sección, los estudiantes podrán identificar si una aplicación sufre
de fugas de memoria.
Debe estar atento a dos tipos diferentes de fugas de memoria. En el primer caso, un
programa solicita memoria con una llamada del sistema como malloc, pero no utiliza
realmente la memoria solicitada. Esto hace que el tamaño virtual del programa aumente
(VIRT en top). También aumentará la línea Committed_AS en /proc/meminfo, pero no se
utiliza una memoria física real. El tamaño residente (RSS en top) permanece (casi) igual.
Cuando un programa utiliza realmente la memoria que asigna, esto hace que el tamaño
residente aumente en función del tamaño virtual, lo que provoca una escasez de memoria.
Aunque fugar la memoria virtual no es bueno, fugar la memoria residente tendrá un mayor
impacto en el sistema.
Una vez que se detecta una fuga de memoria, comuníquese con el desarrollador de software
que desarrolló la aplicación. El código fuente requerirá mayor análisis, se deberán realizar
correcciones y se tendrá que restablecer y probar la aplicación para resolver este tipo de
problema.
280 RH342-RHEL7.2-es-1-20160321
Diagnóstico de fugas de memoria
Referencias
Páginas del manual: sar(1), valgrind(1)
RH342-RHEL7.2-es-1-20160321 281
Capítulo 8. Solución de problemas de la aplicación
Recursos
Máquina • servera
Resultados
Debería poder utilizar valgrind para identificar una fuga de memoria virtual y una fuga de
memoria residente.
Andes de comenzar
Prepárese para este ejercicio ejecutando el comando lab app-memleak setup en su
sistema workstation. Este comando instala el paquete bigmem en servera.
El programa bigmem es conocido por fugar memoria (por diseño). Para verificarlo, ejecútelo
con la herramienta memcheck de valgrind.
2. Ejecute el comando bigmem en valgrind y pida que se asigne 256 MiB de memoria
residente.
282 RH342-RHEL7.2-es-1-20160321
3. Repita esta tarea con bigmem, y ahora pida que se asigne 256 MiB de memoria virtual.
4. valgrind detectó la fuga de memoria, pero no está claro qué tipo de fuga de memoria
tiene bigmem.
4.2. Ahora que está seguro de que bigmem fuga memoria, ejecute los dos comandos
nuevamente, pero esta vez sin valgrind. Preste atención al resultado del comando
watch.
Dado que bigmem utiliza realmente la memoria que solicita cuando se ejecuta sin
la opción -v, tanto la memoria confirmada como la memoria residente aumentan
según la cantidad solicitada.
RH342-RHEL7.2-es-1-20160321 283
Capítulo 8. Solución de problemas de la aplicación
4.3. Utilice Ctrl+C para interrumpir el comando watch. Cierre la sesión del terminal.
284 RH342-RHEL7.2-es-1-20160321
Depuración de ejecuciones de la aplicación
Objetivos
Después de completar esta sección, los estudiantes podrán depurar una aplicación a través
de las herramientas de software de Red Hat Enterprise Linux.
RH342-RHEL7.2-es-1-20160321 285
Capítulo 8. Solución de problemas de la aplicación
strace se inicia mediante la ejecución del comando pwd. Esto se logra mediante el
comando execve. Las siguientes llamadas del sistema access, open, fstat, mmap y close
muestran el enlazador de tiempo de ejecución que asigna las necesidades pwd de las
librerías compartidas a su espacio de memoria. La llamada del sistema getcwd devuelve
el directorio de trabajo actual a la aplicación, luego write lo muestra en la pantalla. Cada
llamada del sistema se muestra con los argumentos que se pasaron, o devolvieron, con el
valor de retorno mostrado. Cuando falla una llamada del sistema, también se muestra el
valor numérico y simbólico de la variable errno. Esto puede ayudar a un administrador a
comprender por qué falló la llamada del sistema.
Por lo general, strace solo mostrará información acerca del proceso que se ejecuta. Si desea
seguir la ejecución de procesos secundarios generados por la aplicación, debe especificar la
opción -f.
El uso anterior de strace produjo un error. Solo root, o el usuario que es propietario de un
proceso, puede usar strace para adjuntarse a ese proceso.
286 RH342-RHEL7.2-es-1-20160321
Solución de problemas de la ejecución de aplicaciones
<detached ...>
El proceso 1729 está en un bucle que ejecuta la llamada del sistema select, lo que hace
que el proceso se suspenda por un segundo. Cada vez que se activa, ejecuta la llamada del
sistema wait4 para ver si han salido algunos de sus procesos secundarios.
Para detectar solo llamadas del sistema específicas, puede usar la opción -e. Por ejemplo,
para detectar solo las llamadas del sistema open y stat, mientras se envía el resultado al
archivo /tmp/mytrace, se puede utilizar el siguiente comando:
RH342-RHEL7.2-es-1-20160321 287
Capítulo 8. Solución de problemas de la aplicación
fileno(0x7f70c03c7400) = 1
__freading(0x7f70c03c7400, 0, 64, 0x7f70c03c7eb0) = 0
__freading(0x7f70c03c7400, 0, 2052, 0x7f70c03c7eb0) = 0
fflush(0x7f70c03c7400) = 0
fclose(0x7f70c03c7400) = 0
__fpending(0x7f70c03c71c0, 0, 0x7f70c03c8a00, 0xfbad000c) = 0
fileno(0x7f70c03c71c0) = 2
__freading(0x7f70c03c71c0, 0, 0x7f70c03c8a00, 0xfbad000c) = 0
__freading(0x7f70c03c71c0, 0, 4, 0xfbad000c) = 0
fflush(0x7f70c03c71c0) = 0
fclose(0x7f70c03c71c0) = 0
+++ exited (status 0) +++
Los usuarios sin privilegios solo pueden ejecutar, no leer, algunos programas binarios.
ltrace requiere acceso de lectura para que el ejecutable funcione.
La siguiente sesión muestra cómo usar auditd para resolver problemas en una aplicación
que tiene fallas en el tiempo de ejecución.
288 RH342-RHEL7.2-es-1-20160321
Solución de problemas de la ejecución de aplicaciones
El mensaje de error sugiere que hay una falla en la apertura de un archivo, por lo que
se utiliza auditctl para activar una regla que audita llamadas del sistema open() que
tienen fallas (-F success=0). Con la nueva regla en vigor, la falla de la aplicación genera
un mensaje de error útil en el archivo audit.log. La aplicación no pudo abrir un archivo
denominado /etc/example.conf.
Una vez que se recopila la información necesaria, se puede utilizar el comando auditctl -d
para eliminar la regla auditd.
Referencias
Páginas del manual auditctl(8), auditd(8), ausearch(8), ltrace(1) y strace(1)
RH342-RHEL7.2-es-1-20160321 289
Capítulo 8. Solución de problemas de la aplicación
En este trabajo de laboratorio, resolverá problemas en una aplicación que tiene errores en el
tiempo de ejecución.
Recursos
Máquina • servera
Resultados
Debe poder utilizar ltrace y strace para diagnosticar problemas de la aplicación en el
tiempo de ejecución.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab app-runtime setup
en su sistema workstation. Esta acción descargará e instalará la aplicación progress en
servera.
Su Administrador ha oído hablar sobre una herramienta útil llamada progress. Después
de investigar en Internet, se ha descubierto que un archivo tar proporciona este programa
para Linux. Ha recibido la tarea de instalar el programa, con su documentación, en servera y
probarlo.
El comando progress no produjo errores de AVC, por lo que debe buscar información
útil en otra parte.
3. Use el comando strace para ver las llamadas del sistema que progress realiza.
290 RH342-RHEL7.2-es-1-20160321
[root@servera ~]# strace progress
execve("/usr/bin/progress", ["progress"], [/* 25 vars */]) = 0
brk(0) = 0x1722000
... Output omitted ...
mprotect(0x604000, 4096, PROT_READ) = 0
mprotect(0x7fa05801b000, 4096, PROT_READ) = 0
munmap(0x7fa058012000, 28767) = 0
open("/etc/ntp.conf", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "Unable to open configuration fil"..., 35Unable to open configuration file.
) = 35
exit_group(1) = ?
+++ exited with 1 +++
6. Observe lo que sucede cuando /etc/ntp.conf está presente, pero el usuario sin
privilegios no lo puede leer.
6.1. Cambie los permisos del archivo para que no se pueda leer.
RH342-RHEL7.2-es-1-20160321 291
Capítulo 8. Solución de problemas de la aplicación
Aunque produciría el mismo mensaje de error poco útil, strace muestra el valor
errno que indica por qué falló la llamada del sistema open.
292 RH342-RHEL7.2-es-1-20160321
Trabajo de laboratorio: Solución de problemas de la aplicación
Recursos
Máquina • servera
Resultados
Debe poder diagnosticar y resolver problemas de dependencia de la librería y de tiempo de
ejecución de la aplicación.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab app-lab setup en su
sistema workstation. Esta acción descargará e instalará la aplicación gdisk en servera.
Otro administrador del sistema instaló la aplicación gdisk y no pudo hacerla funcionar.
Usted tiene la tarea de hacerla funcionar.
2. Identifique las librerías compartidas que el programa necesita. Instale los paquetes que
cumplirán con los requisitos de la librería compartida.
3. Resuelva los problemas de tiempo de ejecución adicionales que evitan que gdisk se
ejecute.
4. Cuando finalice, verifique su trabajo ejecutando el comando lab app-lab grade desde
su máquina workstation.
RH342-RHEL7.2-es-1-20160321 293
Capítulo 8. Solución de problemas de la aplicación
Solución
En este trabajo de laboratorio, depurará una aplicación de un tercero.
Recursos
Máquina • servera
Resultados
Debe poder diagnosticar y resolver problemas de dependencia de la librería y de tiempo de
ejecución de la aplicación.
Andes de comenzar
Configure sus sistemas para este ejercicio al ejecutar el comando lab app-lab setup en su
sistema workstation. Esta acción descargará e instalará la aplicación gdisk en servera.
Otro administrador del sistema instaló la aplicación gdisk y no pudo hacerla funcionar.
Usted tiene la tarea de hacerla funcionar.
1.1. Inicie sesión como root en servera y ejecute el archivo ejecutable gdisk.
2. Identifique las librerías compartidas que el programa necesita. Instale los paquetes que
cumplirán con los requisitos de la librería compartida.
2.1. Identifique las librerías compartidas que el comando gdisk utiliza y que no pueden
resolverse.
2.2. Utilice Yum para determinar si se pueden instalar paquetes que proporcionen esas
librerías.
294 RH342-RHEL7.2-es-1-20160321
Solución
2.4. gdisk se ejecuta correctamente, pero ahora muestra su propio mensaje de error.
3. Resuelva los problemas de tiempo de ejecución adicionales que evitan que gdisk se
ejecute.
3.1. El comando gdisk produce un mensaje de error poco claro: “Fatal error: license not
found.” Busque errores de AVC en /var/log/messages.
No hay errores de AVC causados por el programa, por lo que no es necesario enviar
una consulta a auditd.
3.2. Use el comando strace o ltrace para ver las llamadas del sistema que gdisk
realiza. Esto aclarará un poco el problema.
nota
Es posible que deba instalar el paquete ltrace en servera, si decide
utilizarlo.
RH342-RHEL7.2-es-1-20160321 295
Capítulo 8. Solución de problemas de la aplicación
file or directory)
write(2, "Fatal error: license not found.\n", 32Fatal error: license
not found.
) = 32
exit_group(1) = ?
+++ exited with 1 +++
4. Cuando finalice, verifique su trabajo ejecutando el comando lab app-lab grade desde
su máquina workstation.
296 RH342-RHEL7.2-es-1-20160321
Resumen
Resumen
En este capítulo, aprendió lo siguiente:
• Se utiliza ldconfig para actualizar e imprimir los contenidos de la caché del enlazador de
tiempo de ejecución /etc/ld.so.cache.
• El comando ldd APPLICATION muestra las librerías compartidas requeridas por una
aplicación.
• Hay dos tipos de fugas de memoria: las que roban del espacio de dirección para un
proceso y las que consumen memoria física que afectan a todo el sistema.
• El comando strace puede realizar un seguimiento de las llamadas del sistema realizadas
por una aplicación.
• ltrace puede mostrar las llamadas de la librería compartida que una aplicación realiza.
RH342-RHEL7.2-es-1-20160321 297
298
TRAINING
CAPÍTULO 9
TRATAMIENTO DE PROBLEMAS
DE SEGURIDAD
Visión general
Meta Identificar y solucionar los problemas relacionados con
subsistemas de seguridad.
Objetivos • Identificar y solucionar los problemas relacionados con
SELinux.
RH342-RHEL7.2-es-1-20160321 299
Capítulo 9. Tratamiento de problemas de seguridad
Objetivos
Después de completar esta sección, los estudiantes podrán identificar y corregir problemas
relacionados con SELinux.
Registros de SELinux
Cuando SELinux bloquea una acción, por ejemplo, cuando un servidor web intenta escribir
en /etc/shadow, esta acción se registra a través del daemon auditd. Puede ver estos
registros de auditoría en /var/log/audit/audit.log, o puede buscarlos con el comando
ausearch. El uso de ausearch permite que los administradores se centren exactamente en
los mensajes en los que están interesados.
La opción -m avc le indica a ausearch que solo debería mostrar mensajes de Control
de vector de acceso (AVC, Access Vector Control), el tipo de mensaje asociado con las
denegaciones de SELinux.
La opción -ts recent especifica que se deben mostrar los mensajes de hace
10 minutos. También se pueden usar otras indicaciones, como today (hoy), yesterday
(ayer) y this-week (esta semana), así como horas reales.
Por lo general, se muestran dos líneas por cada denegación de SELinux; la acción que
causó la denegación, normalmente una llamada del sistema, y la propia denegación.
La línea type=SYSCALL tendrá información útil, como el ID de usuario real, original y
efectivo del proceso de llamada.
La denegación real tendrá type=AVC al comienzo.
La parte audit(1456134949.107:5677) enumera la hora a la que se pasó este
mensaje al sistema de auditoría. Esta hora está en segundos desde la época (hora
de UNIX); para convertirla a la zona horaria local, puede usar el comando date --
date=@timestamp.
Esto muestra la lista de acciones denegadas. Las acciones comunes incluyen read para
leer, open para abrir y getattr para solicitar información adicional del archivo.
Otros campos en la línea type=AVC identifican el nombre del proceso para el que se denegó
una acción, la ruta del sistema de archivos (no la ruta absoluta, sino la ruta de un sistema de
archivos individual), el dispositivo que almacena el sistema de archivos, el inodo del archivo
de destino, y los contextos de SELinux completos del proceso que intenta acceder a algo, y el
proceso, destino, archivo o puerto de red al que se está accediendo.
300 RH342-RHEL7.2-es-1-20160321
Herramientas para la solución de problemas de SELinux
Reglas dontaudit
Hay algunas acciones que se realizan con tanta frecuencia, pero son denegadas siempre, que
la política SELinux tiene una regla dontaudit especial para ellas. Esto significa que la acción
aún estará bloqueada, pero no se registrará.
Puede ver una lista completa de reglas dontaudit activas con el comando sesearch -D
desde el paquete setools-console.
Importante
Las reglas dontaudit existen por una razón. Por lo general, son acciones que se
realizan con frecuencia, deben estar siempre bloqueadas y no tienen un impacto
en el comportamiento del sistema. Sin embargo, hay muchas ocurrencias de estas
acciones. Mantener a dontaudit deshabilitado completará el registro de auditoría
rápidamente y hará que sea más difícil centrarse en las denegaciones importantes.
nota
Es posible que deba reiniciar el daemon auditd antes de activar el complemento
(plug-in) sedispatch. A diferencia de otros servicios, este aún requiere el uso del
comando service: service auditd restart.
RH342-RHEL7.2-es-1-20160321 301
Capítulo 9. Tratamiento de problemas de seguridad
Importante
setroubleshootd a menudo sugerirá desarrollar un módulo de políticas con
el comando audit2allow. En la mayoría de los casos, esta no será la solución
preferida. Solo se deben desarrollar módulos de políticas personalizadas cuando el
impacto de dicho módulo se comprende perfectamente. En la mayoría de los casos,
se puede encontrar una solución más simple y segura.
En ambos casos, se producirá el mismo resultado y se escribirá en los registros del sistema
por setroubleshootd.
Cuando se utiliza una ubicación no estándar, deberá dar aviso al sistema. Por ejemplo,
para usar /mysites/sitea/www como raíz de documento (document root) para un
servidor web, deberá seguir estos pasos:
302 RH342-RHEL7.2-es-1-20160321
Problemas comunes de SELinux
En el caso de httpd, hay booleanos específicos para casos de uso como conectarse a
varias bases de datos, memcached, servidores FTP, LDAP, y mucho más. También hay un
booleano para permitir todas las conexiones de red, por si un caso de uso específico no
está cubierto por uno de los otros booleanos.
Puede consultar una lista de booleanos, junto con el estado actual, el estado
predeterminado y la descripción, con el comando semanage boolean --list. Puede
consultar booleanos individuales y configurarlos con los comandos getsebool y
setsebool respectivamente.
Importante
A menos que se utilice el indicador -P cuando ejecuta setsebool, los valores
booleanos solo se actualizarán en la memoria, no sistemáticamente.
Para etiquetar un puerto (sin etiqueta) con una nueva etiqueta, se puede usar el
comando semanage.
Si se debe utilizar un puerto que ya está etiquetado con un tipo incompatible, por
ejemplo, hacer que sshd se escuche en un puerto 443/tcp, se deberá escribir un nuevo
módulo de políticas para permitir esta unión. Por lo general, no es recomendable.
RH342-RHEL7.2-es-1-20160321 303
Capítulo 9. Tratamiento de problemas de seguridad
Se pueden usar los comandos seinfo -t y seinfo -b para enumerar todos los tipos y
booleanos, respectivamente. Cuando la opción -t recibe el nombre de un tipo, mostrará ese
tipo y todos los alias configurados para ese tipo.
También se puede usar el comando seinfo para determinar los tipos de puerto asociados
con un puerto de red específico:
Se puede usar el comando sesearch para buscar dentro de las reglas definidas en la política.
Esto resulta útil para ver las reglas que un determinado booleano habilita. Por ejemplo, para
ver todas las reglas allow habilitadas por el booleano httpd_can_connect_ldap, se puede
usar el siguiente comando:
Esta regla permite que los procesos del tipo httpd_t se conecten a sockets del tipo
ldap_port_t.
Referencias
Para obtener más información, consulte la Guía para usuarios y administradores de
SELinux disponible en https://access.redhat.com/docs.
304 RH342-RHEL7.2-es-1-20160321
Ejercicio guiado: Resolución de problemas de SELinux
Recursos
Máquinas • servera
Resultados
Deberá poder resolver problemas de permiso de SELinux.
Andes de comenzar
Desde su sistema workstation, ejecute el comando lab selinuxts setup. De esta
manera, se establecerá este ejercicio en servera. Como parte del proceso de configuración,
su sistema servera se reiniciará dos veces.
En contra de las políticas de su empresa, su colega no registró ninguno de los pasos llevados
a cabo. Cuando le preguntó, su colega no pudo recordar exactamente qué pasos realizó en el
sistema.
1. Inspeccione los mensajes de SELinux que se registraron hoy. ¿Hay algún patrón?
2. ¿Qué pudo haber generado tantos archivos sin etiquetas? ¿Cuáles son las posibles
soluciones? Implemente la solución más integral.
Los archivos sin etiquetas se crean cuando el sistema se ejecuta con SELinux
deshabilitado. Esto puede suceder cuando se recupera el sistema con el modo de
recuperación anaconda, o cuando un administrador ejecuta (temporalmente) un
RH342-RHEL7.2-es-1-20160321 305
Capítulo 9. Tratamiento de problemas de seguridad
El segundo método es más integral y garantiza que se reinicie cualquier servicio que
pudo haber generado los problemas debido a archivos sin etiquetas.
4. Importante: Si no completó este ejercicio con éxito, pero desea continuar, limpie sus
sistemas al restablecer su sistema servera o al ejecutar el comando lab selinuxts
reset en su sistema workstation.
306 RH342-RHEL7.2-es-1-20160321
Gestión de problemas de autenticación
Objetivos
Después de completar esta sección, los estudiantes podrán identificar y resolver problemas
en la autorización y autenticación de usuarios.
¿Qué es PAM?
Red Hat Enterprise Linux 7 utiliza un conjuntos de librerías denominado Módulos de
autenticación conectables (Pluggable Authentication Modules) (PAM) para proporcionar servicios
de autenticación, autorización, gestión de sesiones y cambio de contraseña a aplicaciones y
servicios.
Las aplicaciones que utilizan PAM realizan una llamada de librería a PAM cuando necesitan
realizar una acción; a continuación, interactúan con el usuario en función de las devoluciones
de llamadas (por ejemplo, solicitar una contraseña) y, luego, recibe un sí o un no de las
librerías de PAM.
• auth: Autentica credenciales de usuarios. Esto puede ser tan simple como verificar una
contraseña, o tan complejo como requerir una autenticación de dos factores con un token
de hardware y una frase de contraseña, o incluso una verificación biométrica.
Configuración de PAM
PAM puede configurarse independientemente por cada servicio que lo usa. Esto se lleva
a cabo en archivos que llevan el nombre del servicio en /etc/pam.d/. Por ejemplo, el
servicio vsftpd se configurará en el archivo /etc/pam.d/vsftpd. Si no se encuentra una
configuración adecuada, se utiliza el archivo /etc/pam.d/other, que bloquea todos los
accesos.
RH342-RHEL7.2-es-1-20160321 307
Capítulo 9. Tratamiento de problemas de seguridad
module-path puede ser un nombre de ruta absoluto o una ruta relativa a /lib/security/
o /lib64/security/. Esto especifica qué módulo debería utilizarse para realizar esta
verificación.
module-arguments puede ser una lista de argumentos separados por espacios para el
módulo especificado. Algunos módulos requieren el uso de algunos argumentos, mientras
que otros no proporcionan argumentos.
Cuando se consulta un servicio por un tipo específico, se analizan todas las líneas que
coinciden con ese tipo en el orden en que se encuentran en el archivo de configuración.
Aunque se permite combinar los tipos de servicios a lo largo de un archivo de configuración,
se recomienda mantener cuatro bloques separados para estos tipos para facilitar el
mantenimiento.
#%PAM-1.0
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers
onerr=succeed
auth required pam_shells.so
auth include password-auth
308 RH342-RHEL7.2-es-1-20160321
Solución de problemas de PAM
Advertencia
En la mayoría de los casos, PAM no debe configurarse manualmente, sino mediante
la familia de herramientas authconfig.
Errores comunes incluyen utilizar el tipo de control incorrecto, por ejemplo, requisite en
lugar de optional; orden incorrecto de reglas, por ejemplo, enumerar pam_deny.so antes
de cualquier otro elemento; e intentos de utilizar módulos que no admiten el tipo actual, por
ejemplo, intentar utilizar pam_pwhistory.so dentro del bloque auth.
Los módulos individuales de PAM pueden proporcionar su documentación que, entre otra
información, indica los tipos que admite en las páginas del manual y como archivos en /
usr/share/doc/pam-*/txts/. Esta documentación también puede incluir explicaciones de
mensajes de error y explicaciones sobre cómo habilitar una depuración más detallada para
módulos individuales.
Para restaurar los ajustes authconfig anteriores después de que se realizaron cambios
manuales (no deseados), se puede usar el comando authconfig --updateall. Esto
aplicará la configuración almacenada en /etc/sysconfig/authconfig en el sistema, lo
que sobrescribirá cualquier cambio manual.
Referencias
El capítulo sobre el uso de módulos de autenticación conectables de la Guía de
autenticación de nivel del sistema disponible en https://access.redhat.com/
docs.
RH342-RHEL7.2-es-1-20160321 309
Capítulo 9. Tratamiento de problemas de seguridad
Recursos
Máquinas • workstation
• serverb
Resultados
Deberá poder resolver problemas relacionados con la autenticación.
Andes de comenzar
En su sistema workstation, ejecute el comando lab auth setup; esto preparará sus
sistemas workstation y serverb para este ejercicio.
Después de leer bastante en varios foros de Internet, uno de sus colegas decide intentar
aumentar la seguridad de serverb. El intento falló, así como también el intento de su
colega de limpiar el sistema posteriormente. Se le ha pedido que restaure el acceso de FTP
autenticado a directorios de inicio en serverb. Para probar, se le otorgó una cuenta de
usuario denominada ftpuser con la contraseña redhat.
1.1. Desde su sistema workstation, use lftp para iniciar sesión en la cuenta ftpuser
en serverb. Recuerde que lftp solo intenta iniciar sesión después de que se envía
el primer comando.
2. Recopile más información sobre el problema; en este caso, el diario (journal) del sistema
en serverb puede brindar información útil.
Este mensaje parece indicar un problema con la configuración de PAM para vsftpd.
310 RH342-RHEL7.2-es-1-20160321
2.2. Use rpm para ver si los archivos que pertenecen al paquete vsftpd han cambiado
desde la instalación.
Este resultado parece indicar que la configuración de PAM para vsftpd ha cambiado.
nota
La razón por la que movemos, y no copiamos, el archivo dañado en el paso
anterior es que yum, por defecto, no sobrescribe archivos de configuración
al reinstalarse, por lo que el archivo dañado habría permanecido en el
sistema si lo hubiésemos copiado.
Parece ser que el archivo dañado tenía un requisito adicional en las verificaciones de
la cuenta a través del módulo pam_ftp.so.
4.3. Lea la documentación de pam_ftp para descubrir qué se supone que debe hacer y
por qué falló en este caso.
RH342-RHEL7.2-es-1-20160321 311
Capítulo 9. Tratamiento de problemas de seguridad
6. Limpie sus máquinas al ejecutar el comando lab auth reset desde su máquina
workstation, o reinicie sus máquinas workstation y serverb.
312 RH342-RHEL7.2-es-1-20160321
Resolución de problemas de Kerberos y LDAP
Objetivos
Después de completar esta sección, los estudiantes podrán identificar y corregir problemas
relacionados con la administración de identidades de LDAP y Kerberos.
¿Qué es LDAP?
Protocolo Ligero de Acceso a Directorios (LDAP, Lightweight Directory Access Protocol) es un
protocolo para acceder, consultar y actualizar servicios de directorio. Se desarrolló en función
de la necesidad de simplificar el protocolo X.509 y los servicios relacionados.
LDAP organiza objetos, como cuentas de usuario, y sus atributos relacionados, como
contraseñas, nombres completos, etc., en un árbol. Los atributos que pueden utilizarse en un
objeto dependen de las clases de objeto asociadas con ese objeto. En un directorio normal,
todos los objetos que representan el mismo elemento, como un usuario o una computadora,
tendrán las mismas clases de objeto y los mismos atributos asociados.
Hay varios conjuntos de herramientas para trabajar con servidores de LDAP desde la
línea de comandos. Uno de los más populares es el conjunto de herramientas OpenLDAP
proporcionado en el paquete openldap-clients.
dn:uid=ldapuser,ou=People,dc=lab,dc=example,dc=com
cn: LDAP Test User
homeDirectory: /home/guests/ldapuser
¿Qué es Kerberos?
Kerberos es un método de proporcionar servicios de autenticación y servicio Single Sign-On
(SSO) a usuarios y servicios. Kerberos supone que las máquinas individuales de la red son de
confianza, pero que la propia red es insegura, por lo que nunca se transmitirán contraseñas a
través de la red.
Una transacción típica de Kerberos involucrará tres partes (de ahí viene el nombre en honor
al perro de tres cabezas que protege la entrada a Hades):
RH342-RHEL7.2-es-1-20160321 313
Capítulo 9. Tratamiento de problemas de seguridad
• El servicio con el que el usuario desea autenticarse. Dado que los servicios no pueden
escribir sus propias contraseñas de manera interactiva, la contraseña del servicio se
almacenará en un archivo denominado keytab.
Autenticación inicial
Cuando un usuario inicia sesión por primera vez en una sesión a través de Kerberos, deberá
obtener un Ticket de obtención de tickets (TGT, Ticket Granting Ticket). Este TGT permitirá que el
usuario obtenga tickets para otros servicios sin tener que escribir su contraseña nuevamente
durante el tiempo que el TGT sea válido (por lo general, algunas horas). Este ticket se puede
obtener automáticamente cuando inicia sesión de manera interactiva en una máquina que
usa Kerberos, o desde la línea de comandos a través de la herramienta kinit.
1. El sistema al que el usuario está ingresando envía una solicitud para un TGT del usuario
al KDC.
2. El KDC responde con un nuevo TGT, cifrado con la contraseña del usuario.
1. El cliente envía una solicitud a KDC de un ticket de servicio para la entidad del servicio al
que desea autenticarse.
2. El KDC responde con dos copias del mismo ticket de servicio: uno cifrado con el TGT del
usuario, el otro cifrado con la contraseña para el servicio.
3. El cliente descifra la versión cifrada con el TGT y utiliza el ticket descifrado para cifrar una
marca de tiempo.
314 RH342-RHEL7.2-es-1-20160321
Solución de problemas de LDAP
telnet, etc., utilizan host/, los servicios NFS utilizan nfs/, y los servicios web utilizan http/.
Otros servicios pueden utilizar, y utilizarán, diferentes prefijos.
Conectividad de red
LDAP funciona en el puerto TCP 389 para texto sin formato y conexiones cifradas por
TLS. Las versiones anteriores del protocolo también admiten el puerto TCP 636 para las
conexiones cifradas por SSL. Si un firewall está bloqueando el acceso a estos puertos, o
si un cliente con versión anterior intenta conectarse al puerto 636/TCP mientras que el
servidor solo admite la versión STARTTLS moderna en el puerto 389/TCP, se generarán
problemas de conexión.
Los administradores pueden verificar estos ajustes al utilizar el comando ldapsearch. Para
resolver problemas relacionados con la información del usuario, también puede usar el
comando getent passwd.
nota
Cuando se utiliza sssd para la autenticación e información del usuario, el comando
getent passwd no enumerará a todos los usuarios disponibles, sino que solo
enumerará a los usuarios locales. Para realizar pruebas, se puede agregar el
nombre de una cuenta de red conocida para probar si los usuarios de la red
también se resuelven correctamente; por ejemplo: getent passwd ldapuser.
RH342-RHEL7.2-es-1-20160321 315
Capítulo 9. Tratamiento de problemas de seguridad
• ¿Las horas entre todas las partes están sincronizadas? Una diferencia de más de dos
minutos provocará una falla en Kerberos.
• ¿Un kinit username para ese usuario funciona desde la misma máquina? Si eso no
funciona, hay un problema con la configuración de PAM para la autenticación que, por
lo general, puede solucionarse con la familia de herramientas authconfig. Si eso no
funciona, puede haber un problema con el KDC o con los archivos de configuración de
Kerberos en la máquina.
• ¿Los registros de DNS SRV para Kerberos (si se utilizan) son correctos?
Cuando los usuarios pueden iniciar sesión, pero no pueden autenticarse a determinados
servicios, o la autenticación de servicio a servicio como NFSv4 falla, deberá verificar algunos
elementos adicionales.
• ¿Los servicios pueden leer su keytab? (/etc/krb5.keytab para servicios como SSH y NFS,
varios otros archivos para otros servicios).
• ¿Keytab está usando la versión más reciente de la contraseña? Las Keytabs se pueden
inspeccionar con el comando klist -ek <FILENAME>. La columna KVNO muestra la
versión de la contraseña almacenada. Cuando se agrega una entidad a una keytab, se
genera una contraseña nueva y aleatoria de manera automática.
• ¿Los servicios están de acuerdo en la manera en que se debería utilizar Kerberos? Por
ejemplo, una exportación de NFS que especifica sec=krb5p solo se puede montar cuando
el cliente también especifica el mismo nivel de seguridad.
• ¿Están todos los servicios de ayuda necesarios en ejecución? Por ejemplo, un servidor de
NFS necesita un servicio nfs-secure-server.service, y un cliente de NFS necesita el
servicio nfs-secure.service cuando utiliza NFSv4 habilitada por Kerberos.
316 RH342-RHEL7.2-es-1-20160321
Solución de problemas de Kerberos
Referencias
Para obtener más información, consulte la Guía de políticas, autenticación e
identidad de dominios de Linux, y la Guía de autenticación de nivel del sistema en
https://access.redhat.com/docs.
RH342-RHEL7.2-es-1-20160321 317
Capítulo 9. Tratamiento de problemas de seguridad
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder diagnosticar y resolver problemas relacionados con la autenticación y la
información del usuario de Kerberos y LDAP.
Andes de comenzar
En su sistema workstation, ejecute el comando lab krb5ldap setup. Esto preparará sus
sistemas workstation y servera para este ejercicio.
Su sistema workstation está configurado para actuar como un servidor de LDAP para
brindar información del usuario (solo STARTTLS), y como un KDC de Kerberos para la
autenticación del usuario. Su sistema servera está configurado para actuar como un cliente
para ambos servicios.
Su sistema workstation también está configurado para actuar como un servidor de NFS
habilitado por Kerberos, y servir a los directorios de inicio de los usuarios configurados en
LDAP y Kerberos.
318 RH342-RHEL7.2-es-1-20160321
nota
Por defecto, ssh en sus sistemas está configurado para permitir automáticamente
cualquier inicio de sesión de la cuenta student en workstation a
cualquier cuenta en servera. Para iniciar sesión con una contraseña,
para obtener un ticket de Kerberos, se puede usar el comando ssh -o
PreferredAuthentications=keyboard-interactive,password USER@HOST.
Un contenedor que ejecuta este comando se instala en su sistema workstation
como passhwd.
1.1. Como student en workstation, use ssh para iniciar sesión en la cuenta ldapuser
en servera a través de la autenticación de contraseña para obtener un Ticket de
obtención de tickets (TGT) de Kerberos.
-bash-4.2$ klist
Ticker cache: KEYRING:persistent:1701:krb_cache_sRRVnEH
Default principal: ldapuser@LAB.EXAMPLE.COM
2. El paso anterior indicó que LDAP y Kerberos están funcionando con normalidad, por
lo que es posible que el problema esté en la configuración de NFS. Inspeccione la
exportación del servidor en workstation y la configuración cliente en servera en
busca de irregularidades.
RH342-RHEL7.2-es-1-20160321 319
Capítulo 9. Tratamiento de problemas de seguridad
Parece que servera no está usando la keytab más reciente, lo que podría explicar el
mensaje de registro No credentials (Sin credenciales) que vimos antes.
320 RH342-RHEL7.2-es-1-20160321
4.1. Actualice la keytab /etc/krb5.keytab en servera.
RH342-RHEL7.2-es-1-20160321 321
Capítulo 9. Tratamiento de problemas de seguridad
En este trabajo de laboratorio, resolverá problemas relacionados con uno o más subsistemas
de seguridad.
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder diagnosticar y solucionar problemas relacionados con subsistemas de
seguridad.
Andes de comenzar
En su sistema workstation, ejecute el comando lab security setup; esto preparará sus
sistemas workstation y servera para este ejercicio.
322 RH342-RHEL7.2-es-1-20160321
nota
Las máquinas de su aula están configuradas para que la cuenta student en
workstation pueda utilizar ssh en cualquier cuenta de servera sin una
contraseña. A efectos de prueba, necesitará iniciar sesión con la autenticación
de contraseña para probar la configuración de Kerberos. Para ello, puede
usar el comando ssh -o PreferredAuthentications=keyboard-
interactive,password. Para su comodidad, se delimitó este comando en un
script de utilidad denominado passhwd.
4. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
RH342-RHEL7.2-es-1-20160321 323
Capítulo 9. Tratamiento de problemas de seguridad
Solución
En este trabajo de laboratorio, resolverá problemas relacionados con uno o más subsistemas
de seguridad.
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder diagnosticar y solucionar problemas relacionados con subsistemas de
seguridad.
Andes de comenzar
En su sistema workstation, ejecute el comando lab security setup; esto preparará sus
sistemas workstation y servera para este ejercicio.
nota
Las máquinas de su aula están configuradas para que la cuenta student en
workstation pueda utilizar ssh en cualquier cuenta de servera sin una
contraseña. A efectos de prueba, necesitará iniciar sesión con la autenticación
de contraseña para probar la configuración de Kerberos. Para ello, puede
usar el comando ssh -o PreferredAuthentications=keyboard-
interactive,password. Para su comodidad, se delimitó este comando en un
script de utilidad denominado passhwd.
324 RH342-RHEL7.2-es-1-20160321
Solución
1.1. Recree el problema al intentar iniciar sesión en servera como el usuario ldapuser
con la contraseña kerberos.
1.2. Inspeccione los registros de sshd.service en servera para ver por qué el usuario
ldapuser no pudo iniciar sesión.
1.3. Verifique que la información del usuario esté disponible para el usuario ldapuser.
RH342-RHEL7.2-es-1-20160321 325
Capítulo 9. Tratamiento de problemas de seguridad
Este mensaje parece indicar que las opciones de exportación en workstation están
denegando el acceso.
2.3. Consulte las opciones de montaje definidas en /etc/fstab en servera para /mnt/
importantfiles.
2.4. ¿Las opciones de montaje que se encontraron en el paso anterior están alineadas
con las opciones de exportación encontradas? De no ser así, ¿cuál es el problema?
4. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
326 RH342-RHEL7.2-es-1-20160321
Resumen
Resumen
En este capítulo, aprendió lo siguiente:
• Las contraseñas de servicio se actualizan con una contraseña aleatoria nueva cada vez que
se agregan a una keytab.
• Se puede usar klist -ek para ver cuáles son las entidades de servicio, y las versiones,
que están en una keytab.
RH342-RHEL7.2-es-1-20160321 327
328
TRAINING
CAPÍTULO 10
SOLUCIÓN DE PROBLEMAS DE
KERNEL
Visión general
Meta Identificar problemas de kernel y ayudar al Soporte de
Red Hat a resolver problemas de kernel.
Objetivos • Crear volcados de memoria de kernel para ayudar al
Soporte de Red Hat a resolver problemas de kernel.
RH342-RHEL7.2-es-1-20160321 329
Capítulo 10. Solución de problemas de kernel
Objetivos
Después de completar esta sección, los estudiantes podrán configurar sistemas para generar
volcados de error.
De manera similar, cuando un sistema operativo experimenta un cuelgue o una caída del
sistema, también puede escribir el contenido de la imagen de la memoria del kernel en
un archivo conocido como volcado de error (crash dump). Dado que el volcado de error de
kernel incluye el contenido del espacio de la memoria del kernel en el momento de la falla
del sistema, su análisis puede proporcionar información acerca de su causa. Al configurar
sus sistemas para capturar volcados de error, los administradores pueden proporcionarle
a su proveedor de sistema operativo los elementos necesarios para determinar y resolver
correctamente la causa raíz de los cuelgues y las caídas del sistema.
kdump y kexec
Red Hat Enterprise Linux ofrece el software kdump para capturar los volcados de error
de kernel. El software kdump funciona al utilizar la herramienta kexec en un sistema en
ejecución para iniciar un kernel de Linux secundario sin tener que reiniciar el sistema.
Otros mecanismos de error de kernel, como Linux Kernel Crash Dump (LKCD), realizan volcados
de error en el contexto de una falla y, por consiguiente, del kernel inestable. En cambio,
kdump captura volcados de error a través de un kernel recientemente iniciado. El uso de un
kernel de captura independiente hace que kdump sea un mecanismo de volcado de error
extremadamente confiable.
Configuración de kdump
El software kdump se instala por defecto en Red Hat Enterprise Linux 7 a través de la
instalación del paquete kexec-tools. El paquete proporciona las utilidades de línea de
comando y los archivos necesarios para administrar kdump desde la línea de comandos.
También puede instalar system-config-kdump para proporcionar una herramienta de
configuración gráfica para kdump.
Reserva de memoria
Como se mencionó anteriormente, el mecanismo kdump se basa en kexec para iniciar el
kernel de captura secundario desde un área de memoria reservada del kernel principal en
330 RH342-RHEL7.2-es-1-20160321
Configuración de kdump
Utilice el siguiente comando para los sistemas que usan firmware BIOS.
Use el siguiente comando para los sistemas que utilizan firmware UEFI.
Reinicie los sistemas posteriormente para que se aplique la cantidad de memoria reservada
especificada.
El servicio kdump
El mecanismo de volcado de error de kdump se proporciona a través del servicio kdump. Los
administradores interesados en habilitar la recopilación de volcados de error de kernel en
sus sistemas deben asegurarse de que el servicio kdump esté habilitado e iniciado en cada
sistema.
RH342-RHEL7.2-es-1-20160321 331
Capítulo 10. Solución de problemas de kernel
Con el servicio kdump habilitado e iniciado, los volcados de error de kernel comenzarán a
generarse durante los cuelgues y las caídas del sistema. El comportamiento de la recopilación
y el volcado de error de kernel puede modificarse de varias maneras al editar el archivo de
configuración /etc/kdump.conf.
Debido a su gran tamaño, la entrega de este archivo al Soporte de Red Hat puede demorar
un tiempo. Para acelerar el análisis del volcado de error, se puede enviar primero el archivo
vmcore-dmesg.txt, que es mucho más pequeño, para facilitar una evaluación preliminar.
path /var/crash
Además de escribir en una ruta del sistema de archivos local, kdump también ofrece otros
tipos de objetivos de volcado de error con el uso de las siguientes opciones en /etc/
kdump.conf.
332 RH342-RHEL7.2-es-1-20160321
Configuración de kdump
Opción Descripción
especificado a través de la cuenta de usuario especificada
para la autenticación.
sshkey[sshkeypath] Se utiliza en conjunto con el tipo de volcado de error ssh
para especificar la ubicación de la clave SSH para utilizar
para la autenticación.
[fs type] [partition] Monte la partición especificada que contiene el tipo de
sistema de archivos especificado en /mnt y, luego, escriba
el volcado de error en la ubicación de la ruta especificada
por la opción path.
path [path] Especifica la ruta en la que se guardará el volcado de error
en el objetivo de volcado. Si no se especifica un objetivo
de volcado, se supone que la ruta proviene de la raíz del
sistema de archivos local.
Recopilación básica
Por defecto, la recopilación del volcado de error se realiza a través de la utilidad
makedumpfile. La opción core_collector se utiliza en /etc/kdump.conf para especificar
cómo se debe realizar la recopilación del volcado de error.
El ajuste anterior especifica que la recopilación del volcado de error se realizará a través de la
utilidad makedumpfile.
La utilidad makedumpfile también ofrece opciones para personalizar los tipos de mensaje
que se incluyen en el resultado del error. El ejemplo anterior utiliza el nivel de mensaje 1, que
solo incluye un indicador de progreso en el mensaje de resultado del error. En la siguiente
tabla se enumeran algunos de los niveles de mensaje que se ofrecen.
nota
Puede consulta la lista completa de niveles de mensaje en la página del manual
makedumpfile(8).
RH342-RHEL7.2-es-1-20160321 333
Capítulo 10. Solución de problemas de kernel
La utilidad makedumpfile también ofrece opciones para filtrar el tipo de páginas incluidas en
el volcado de error. Los administradores pueden elegir la exclusión de páginas cero, páginas
en caché y páginas de datos de usuarios, así como también páginas libres, al especificar un
nivel de volcado. Este filtrado puede ayudar a disminuir considerablemente el tamaño del
volcado de error.
El ejemplo anterior utiliza el nivel de volcado 31, que excluye páginas cero, páginas en caché,
páginas de datos de usuarios y páginas libres. Este nivel de volcado ofrecería el volcado de
error más pequeño.
nota
Puede consultar la lista completa de niveles de volcado en la página del manual
makedumpfile(8).
core_collector scp
Uso de kdumpctl
El paquete kexec-tools incluye una utilidad de línea de comandos, kdumpctl, que puede
realizar algunas tareas de administración kdump comunes.
Puede utilizar la utilidad kdumpctl para verificar el estado del servicio kdump al utilizar el
subcomando status.
Con el comando kdumpctl showmem, los administradores pueden mostrar la cantidad actual
de memoria reservada configurada para el kernel de captura.
334 RH342-RHEL7.2-es-1-20160321
Disparadores de volcados de error de kernel
nota
Para simplificar la configuración de kdump, los trabajos de laboratorio de Red Hat
ofrecen la herramienta en línea Kdump Helper. Esta herramienta está diseñada
para generar un script basado en las respuestas del usuario acerca del uso previsto
de sus volcados de error.
El script configura kdump para el objetivo deseado, así como el nivel de mensaje
y volcado. Además, también puede incluir configuraciones de sysctl para
desencadenar volcados de error para condiciones específicas como bloqueos de
software o eventos fuera de memoria.
RH342-RHEL7.2-es-1-20160321 335
Capítulo 10. Solución de problemas de kernel
Eventos OOM
Cuando un sistema se queda sin memoria, se puede invocar el eliminador Out of Memory
(OOM, Sin memoria) para eliminar los procesos y, de esa manera, liberar la memoria del
sistema y mantener el sistema en funcionamiento. Se puede configurar un sistema para
que active una rutina de pánico cuando ocurren eventos de eliminador OOM. La rutina de
pánico desencadenará la generación de un volcado de error. El contenido del volcado de
error puede proporcionar información acerca del estado de la memoria del sistema en el
momento en que se invocó al eliminador OOM.
Para que la configuración sea permanente, los administradores deben emitir los siguientes
comandos:
Proceso colgado
Los sistemas también pueden configurarse para desencadenar un volcado de error cuando
se considera que un proceso está colgado. Esta condición ocurre cuando un proceso se
cuelga durante un determinado período, que por defecto es de 120 segundos. Puede
configurar el tiempo de espera para la tarea colgada, y puede ver el ajuste actual al consultar
el contenido del archivo /proc/sys/kernel/hung_task_timeout_secs.
Para que la configuración sea permanente, los administradores deben emitir los siguientes
comandos:
Bloqueo de software
Los bloqueos de software son el resultado de un error de software que provoca que el kernel
se repita en bucle en modo kernel durante una cantidad de tiempo irrazonable. También se
puede configurar la generación de un volcado de error de kernel cuando ocurren bloqueos
de software.
336 RH342-RHEL7.2-es-1-20160321
Disparadores de volcados de error de kernel
Para que la configuración sea permanente, los administradores deben emitir los siguientes
comandos:
Para que la configuración sea permanente, los administradores deben emitir los siguientes
comandos:
SysRq mágica
La clave SysRq "mágica" es una secuencia de claves que se puede utilizar en un sistema
que no responde para diagnosticar problemas relacionados con el kernel. Esta función está
deshabilitada por defecto y puede habilitarse temporalmente con el siguiente comando.
Para que la configuración sea permanente, los administradores deben emitir los siguientes
comandos:
Una vez que se habilita la instalación SysRq, se puede activar el sistema para ejecutar
los eventos SysRq con la entrada de comandos SysRq específicos. Puede ingresar estos
comandos con la secuencia Alt+PrintScreen+[CommandKey]. En la siguiente tabla se
resumen los comandos SysRq y sus eventos asociados.
RH342-RHEL7.2-es-1-20160321 337
Capítulo 10. Solución de problemas de kernel
Una alternativa al método mencionado de emitir comandos SysRq como una combinación
de claves es emitir comandos SysRq al escribir sus caracteres de clave SysRq asociados en
/proc/sysrq-trigger. Por ejemplo, el siguiente comando iniciará una interrupción del
sistema.
Prueba de kdump
Una vez que se configura kdump, se debe reiniciar el servicio kdump para que se apliquen
los ajustes de configuración. Como se mencionó, puede utilizar kdumpctl para verificar el
estado del servicio kdump.
Para probar otros aspectos del mecanismo kdump, puede iniciar un volcado de error a través
de la instalación SysRq. Al habilitar la instalación SysRq y emitir el comando c, se puede iniciar
una secuencia de errores de kernel.
• Los paquetes kernel-debuginfo que coinciden con la versión del kernel en la cual se realizó
el volcado. Puede encontrar esta información en el archivo vmcore-dmesg.txt que está
almacenado junto al volcado de error del kernel, o al ejecutar el comando strings en el
archivo vmcore.
338 RH342-RHEL7.2-es-1-20160321
Análisis de volcados de error de kernel
• El paquete crash.
El resultado mostrará información útil, incluido el motivo de la rutina de pánico del kernel.
Dentro del entorno crash, hay una variedad de comandos útiles a disposición. Siempre
puede obtener ayuda específica a través del comando help [COMMAND]. Para salir, solo
debe escribir exit en el aviso.
Los siguientes comandos pueden ser útiles para un administrador del sistema que está
investigando un volcado de error de kernel:
• files <PID>: Este comando mostrará los archivos abiertos para el proceso especificado.
La variación foreach files mostrará todos los archivos abiertos para cada proceso que
estaba ejecutándose en el momento de la caída del sistema.
• ps: Este comando mostrará una lista de todos los procesos que estaban ejecutándose en
el momento de la caída del sistema. Se pueden utilizar varios argumentos para modificar el
resultado; para ello, consulte help ps.
• fuser <PATHNAME>: Este comando funciona como el comando fuser regular, mostrando
qué procesos estaban usando un archivo o directorio determinado y en qué manera.
Como alternativa a un nombre de ruta, puede especificar un número inodo con formato
hexadecimal.
Referencias
Guía para volcados de error de kernel de Red Hat Enterprise Linux 7
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/
html/Kernel_Crash_Dump_Guide/
RH342-RHEL7.2-es-1-20160321 339
Capítulo 10. Solución de problemas de kernel
Recursos
Archivos • /etc/kdump.conf
• /var/kdump
Máquinas • servera
• serverb
Resultados
Deberá poder configurar kdump para volcar en un servidor remoto durante una caída de
kernel.
Andes de comenzar
Inicie sesión en servera y serverb a través de la consola como el usuario root.
Se le ha pedido que configure sus servidores para que generen volcados de error durante
una caída del sistema. Para una administración más simple y un uso más eficiente del
almacenamiento, ha decidido consolidar todos los volcados de error en un servidor central,
servera. Configure servera para que los sistemas remotos puedan escribir volcados de
error en el directorio /var/kdump.
Use serverb para probar su configuración kdump antes de implementarla en sus servidores
restantes. Los volcados de error de kernel deben generarse en el directorio /var/kdump en
servera a través de una sesión SSH con el comando scp.
1. En servera, cree el directorio /var/kdump para crear espacio para los volcados de error
de sistemas remotos.
2.1. Verifique el estado del servicio kdump para ver si el servicio está habilitado e iniciado.
Este servicio debe estar en ejecución para que se desencadene el mecanismo de
volcado de error de kernel durante una caída del sistema.
2.2. Dado que el servicio no está habilitado ni iniciado, habilite e inicie el servicio para
que habilitar los volcados de error de kernel y, luego, verificar el estado del servicio
para asegurarse de que se haya iniciado correctamente.
340 RH342-RHEL7.2-es-1-20160321
[root@serverb ~]# systemctl enable kdump
Created symlink from /etc/systemd/system/multi-user.target.wants/kdump.service
to /usr/lib/systemd/system/kdump.service.
[root@serverb ~]# systemctl start kdump
[root@serverb ~]# systemctl status kdump
● kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor
preset: enabled)
Active: active (exited) since Wed 2016-02-10 22:40:28 EST; 6s ago
Process: 1517 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/
SUCCESS)
Main PID: 1517 (code=exited, status=0/SUCCESS)
3. Edite /etc/kdump.conf para configurar kdump para que los volcados de error se
depositen en el directorio /var/kdump en servera.
ssh root@servera.lab.example.com
sshkey /root/.ssh/kdump_id_rsa
3.3. Modifique la entrada core_collector para que se utilice scp para depositar
el volcado de error en servera. Esta línea debe reemplazar cualquier línea
core_collector existente.
core_collector scp
3.4. Modifique la entrada path para que los volcados de error se depositen en /var/
kdump en servera.
path /var/kdump
4. Utilice kdumpctl para generar e instalar remotamente la clave SSH que se utilizará para
transferir el volcado de error a servera.
RH342-RHEL7.2-es-1-20160321 341
Capítulo 10. Solución de problemas de kernel
6. Desencadene una caída del sistema para probar la configuración kdump en serverb.
6.1. Habilite todas las funciones SysRq de kernel al establecer el valor dentro del archivo
/proc/sys/kernel/sysrq en 1.
6.2. Desencadene una caída del sistema al establecer el valor dentro del archivo /proc/
sysrq-trigger en c.
342 RH342-RHEL7.2-es-1-20160321
total 0
drwxr-xr-x. 2 root root 42 Feb 10 23:55 172.25.250.10-2016-02-10-23:55:28
[root@servera ~]# ll /var/kdump/172.25.250.10-2016-02-10-23\:55\:28/
total 1951732
-r--------. 1 root root 1998532608 Feb 10 23:55 vmcore
-rw-r--r--. 1 root root 39932 Feb 10 23:55 vmcore-dmesg.txt
8. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
RH342-RHEL7.2-es-1-20160321 343
Capítulo 10. Solución de problemas de kernel
Objetivos
Después de completar esta sección, los estudiantes podrán compilar scripts de SystemTap en
módulos de kernel para implementarlos en sistemas remotos.
Introducción a SystemTap
El framework (marco) de SystemTap permite el sondeo y la instrumentación simples de casi
todos los componentes dentro de kernel. Les proporciona a los administradores una librería y
un lenguaje de programación flexible al aprovechar la instalación kprobes dentro del kernel
de Linux.
A través del uso de kprobes, los programadores de kernel pueden adjuntar código de
instrumentación al inicio o final de cualquier función de kernel. Los scripts de SystemTap
especifican dónde adjuntar sondeos y qué datos recopilar cuando se ejecuta el sondeo. El
comando stap analiza el script en código fuente C generado dinámicamente para un módulo
de kernel personalizado, compila el módulo de instrumentación y, luego, llama a staprun
para insertar el módulo y, cuando es adecuado, elimina el módulo del kernel.
Instalación de SystemTap
Dado que SystemTap requiere una nomenclatura simbólica para las instrucciones dentro
de kernel, depende de los siguientes paquetes que, por lo general, no se encuentran en
sistemas de producción. Estos paquetes se desplegaran en cualquier dependencia requerida.
En particular, gcc es una depentencia del paquete systemtap.
nota
Las versiones del paquete relacionado al kernel deben coincidir con el número de
versión del kernel de destino.
• kernel-debuginfo
• kernel-devel
• systemtap
En clase, estos RPM se proporcionan como parte del repositorio yum del contenido del curso.
344 RH342-RHEL7.2-es-1-20160321
Uso de stap para ejecutar scripts de SystemTap
nota
Uno de los comandos incluidos en el paquete systemtap-client, una dependencia
de systemtap, es stap-prep. stap-prep es útil después de que un administrador
haya instalado el paquete systemtap y registrado la máquina en el repositorio
correcto. Cuando se ejecuta, stap-prep examinará el kernel que está en ejecución
actualmente e instalará los paquetes kernel-devel y kernel-debuginfo coincidentes.
Para compilar y ejecutar estos scripts de ejemplo, o cualquier script de SystemTap en este
sentido, los administradores usan el comando stap. El comando stap pasará por estos cinco
pasos:
3. Traducir el script a C.
5. Llamar al comando staprun para cargar el módulo del kernel, iniciar la ejecución del
programa y descargar el módulo al final de la ejecución del programa.
Si ejecuta stap con la opción -v, se mostrarán las etapas que stap realiza para ejecutar el
programa.
RH342-RHEL7.2-es-1-20160321 345
Capítulo 10. Solución de problemas de kernel
En el resultado stap anterior, stap muestra explícitamente las etapas que utiliza para
pasar de un script basado en texto a cargar y ejecutar el módulo del kernel. Observe el
Paso 2; durante este paso, el script se expande y se traduce a C. En el Paso 3, el nuevo
programa C se compila del directorio de caché temporal al módulo del kernel. En el Paso 4,
el módulo del kernel se carga desde el directorio de caché. El Paso 5 maneja la ejecución de
la instrumentación de SystemTap y, cuando finaliza, la descarga del módulo del kernel.
Escribir el objeto de kernel con un nombre específico y en un directorio fuera del directorio
de caché normal facilitará que otros usuarios, con los permisos correctos, carguen y utilicen
estos módulos. Además, permitirá que estos módulos se copien fácilmente en otros
sistemas, siempre y cuando los otros sistemas de destino estén ejecutando la misma versión
del kernel que el sistema donde se compiló el módulo de SystemTap.
El ejemplo anterior detendrá la ejecución de stap después del Paso 4 (-p 4). El módulo
de kernel resultante se colocará en syscalls_by_proc.ko (-m syscalls_by_proc) en el
directorio de trabajo actual.
346 RH342-RHEL7.2-es-1-20160321
Ejecución de programas SystemTap como un usuario que no es root
nota
El nombre utilizado por el módulo de kernel puede contener solo los siguientes
caracteres:
• Caracteres alfabéticos ASCII en minúsculas (a-z)
• Dígitos (0-9)
Grupo de Descripción
SystemTap
stapusr El usuario puede ejecutar módulos de instrumentación de
SystemTap, pero solo si existen en el directorio /lib/modules/
$(uname -r)/systemtap. Es posible que los usuarios de este
grupo no se compilen ni interactúen con SystemTap. Además, el
usuario root debe ser el propietario del directorio /lib/modules/
$(uname -r)/systemtap y tener permisos de escritura solo para
root.
Por su parte, un usuario que pertenece a stapusr ahora puede ejecutar su módulo de
instrumentación dividido en etapas.
RH342-RHEL7.2-es-1-20160321 347
Capítulo 10. Solución de problemas de kernel
Un usuario con membresías del grupo stapusr y del grupo stapdev puede ejecutar el
comando stap de la misma manera que el usuario root puede hacerlo.
nota
Debido a este privilegio root especial para compilar y cargar módulos de kernel
en el kernel en ejecución, se recomienda que los administradores concedan este
permiso con prudencia.
• systemtap-runtime
En Red Hat Enterprise Linux 7, systemtap-runtime es parte del grupo de paquetes Base, por lo
que debe instalarse en la mayoría de los sistemas de manera predeterminada.
348 RH342-RHEL7.2-es-1-20160321
Implementación de un módulo de instrumentación de SystemTap
Referencias
Guía de principiantes de Red Hat Enterprise Linux 7
RH342-RHEL7.2-es-1-20160321 349
Capítulo 10. Solución de problemas de kernel
Recursos
Archivos: • /usr/share/doc/systemtap-client-2.8/examples/
io/iotop.stp
• /lib/modules/3.10.0-327.el7.x86_64/systemtap
Máquinas: • servera
• serverb
Resultados
Deberá compilar un programa de SystemTap y distribuirlo para que un usuario u otro sistema
lo ejecute.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab systemtap setup en
su máquina workstation.
Un desarrollador que trabaja con serverb se queja sobre el rendimiento deficiente del
sistema. Un administrador junior le informa que ya ha tratado de solucionar el problema y ha
determinado que el rendimiento deficiente se debe a un alto nivel de actividades de E/S de
disco del sistema. El administrador confirmó esto con la utilidad iostat que informa que el
nivel intenso de actividades de E/S ocurre en el disco secundario del sistema, /dev/vdb.
1.1. Verifique si los paquetes kernel-debuginfo y kernel-devel que systemtap necesita están
instalados. Si no es el caso, instale los paquetes.
350 RH342-RHEL7.2-es-1-20160321
2. Determine si hay un script de SystemTap para determinar el uso de E/S del disco por
proceso.
2.1. Échele un vistazo a los scripts de ejemplo de E/S incluidos en el paquete systemtap
para ver si alguno es adecuado.
2.2. El script iotop.stp parece prometedor ya que su contenido indica que informará
los principales 10 procesos de E/S.
RH342-RHEL7.2-es-1-20160321 351
Capítulo 10. Solución de problemas de kernel
4.2. Copie el módulo de kernel iotop.ko de servera al directorio del módulo de kernel
de SystemTap en serverb.
5. En serverb, configure la cuenta de usuario student para que pueda ejecutar el módulo
de kernel de SystemTap recientemente instalado. Debido a que la cuenta de usuario solo
necesitará ejecutar módulos de kernel de SystemTap, solo necesita agregarse al grupo
stapusr.
352 RH342-RHEL7.2-es-1-20160321
[root@serverb ~]# cat /usr/local/bin/cleandisk.sh
#!/bin/bash
while true; do
dd if=/dev/zero of=/dev/vdb size=1024 count=1000000
done
8. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
RH342-RHEL7.2-es-1-20160321 353
Capítulo 10. Solución de problemas de kernel
Recursos
Archivos • /usr/share/doc/systemtap-client-2.8/examples/
network/nettop.stp
• /etc/kdump.conf
• /var/crash
Máquinas • servera
• serverb
Resultados
Deberá poder configurar un sistema para recopilar un volcado de error durante una caída de
kernel y compilar un programa de SystemTrap como un módulo de kernel portátil.
Andes de comenzar
Prepare su sistema para este ejercicio ejecutando el comando lab kernel setup en su
máquina workstation.
354 RH342-RHEL7.2-es-1-20160321
2. Analice los mensajes de error y utilícelos para detectar y resolver el problema con la
compilación.
5. Configure kdump para que los volcados de error se depositen en el directorio /var/
crash utilizando el algoritmo de compresión lzo y generando todos los tipos de
mensajes.
6. Desencadene una caída del sistema para probar la configuración kdump en serverb.
8. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
8.2. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
RH342-RHEL7.2-es-1-20160321 355
Capítulo 10. Solución de problemas de kernel
Solución
En este trabajo de laboratorio, recopilará un módulo de SystemTap y configurará un sistema
para volcado de crash.
Recursos
Archivos • /usr/share/doc/systemtap-client-2.8/examples/
network/nettop.stp
• /etc/kdump.conf
• /var/crash
Máquinas • servera
• serverb
Resultados
Deberá poder configurar un sistema para recopilar un volcado de error durante una caída de
kernel y compilar un programa de SystemTrap como un módulo de kernel portátil.
Andes de comenzar
Prepare su sistema para este ejercicio ejecutando el comando lab kernel setup en su
máquina workstation.
356 RH342-RHEL7.2-es-1-20160321
Solución
2. Analice los mensajes de error y utilícelos para detectar y resolver el problema con la
compilación.
2.1. Dado que los mensajes de error informan que faltan las dependencias debuginfo
necesarias, verifique que estén instalados los paquetes de kernel correctos.
Complete!
RH342-RHEL7.2-es-1-20160321 357
Capítulo 10. Solución de problemas de kernel
Complete!
4.1. Verifique el estado del servicio kdump para ver si el servicio está habilitado e iniciado.
Este servicio debe estar en ejecución para que se desencadene el mecanismo de
volcado de error de kernel durante una caída del sistema.
4.2. Dado que el servicio no está habilitado ni iniciado, habilite e inicie el servicio para
que habilitar los volcados de error de kernel y, luego, verificar el estado del servicio
para asegurarse de que se haya iniciado correctamente.
358 RH342-RHEL7.2-es-1-20160321
Solución
5. Configure kdump para que los volcados de error se depositen en el directorio /var/
crash utilizando el algoritmo de compresión lzo y generando todos los tipos de
mensajes.
5.2. Reinicie el servicio kdump para que se apliquen los cambios de configuración.
6. Desencadene una caída del sistema para probar la configuración kdump en serverb.
6.1. Habilite todas las funciones SysRq de kernel al establecer el valor dentro del archivo
/proc/sys/kernel/sysrq en 1.
6.2. Desencadene una caída del sistema al establecer el valor dentro del archivo /proc/
sysrq-trigger en c.
RH342-RHEL7.2-es-1-20160321 359
Capítulo 10. Solución de problemas de kernel
8. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
8.2. Reinicie todas sus máquinas para proveer un entorno limpio para los siguientes
ejercicios.
360 RH342-RHEL7.2-es-1-20160321
Resumen
Resumen
En este capítulo, aprendió lo siguiente:
• Un volcado de error de kernel se puede configurar para que sea desencadenado por un
proceso de cuelgue de OOM, bloqueo de software y eventos NMI a través de la utilidad
sysctl.
• La utilidad stap se puede usar para ejecutar y compilar los scripts de SystemTap en
módulos kernel portátiles.
• La membresía del grupo stapusr permite que los usuarios ejecuten los módulos de
instrumentación de SystemTap.
• La membresía del grupo stapdev permite que los usuarios compilen los módulos de
instrumentación de SystemTap.
RH342-RHEL7.2-es-1-20160321 361
362
TRAINING
CAPÍTULO 11
Visión general
Meta Practique y demuestre los conocimientos y las habilidades
que aprendió en Red Hat Enterprise Linux Diagnostics and
Troubleshooting.
Objetivos • Revise y recuerde los conocimientos y las habilidades
que aprendió en Red Hat Enterprise Linux Diagnostics
and Troubleshooting.
RH342-RHEL7.2-es-1-20160321 363
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
Objetivos
Tras finalizar esta sección, los estudiantes podrán revisar y refrescar conocimientos y
habilidades aprendidos en Red Hat Enterprise Linux Diagnostics and Troubleshooting.
Los estudiantes pueden consultar las secciones anteriores en el libro de textos para lecturas
complementarias.
364 RH342-RHEL7.2-es-1-20160321
Revisión de Diagnósticos y solución de problemas de Red Hat Enterprise
• Recuperar una base de datos dañada de Red Hat Package Management (RPM).
RH342-RHEL7.2-es-1-20160321 365
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
• Crear volcados de memoria de kernel para ayudar al Soporte de Red Hat a resolver
problemas de kernel.
• Compilar y ejecutar módulos de SystemTap para ayudar al Soporte de Red Hat a resolver
problemas de kernel.
366 RH342-RHEL7.2-es-1-20160321
Trabajos de laboratorio de revisión integral
Objetivos
Después de completar esta sección, los estudiantes podrán practicar y demostrar
conocimientos y habilidades aprendidos en la Solución de problemas de Red Hat Enterprise
Linux.
Revisiones completas
En los siguientes ejercicios, usted es un administrador de sistemas sénior que trabaja para
una importante empresa internacional. Durante un recorrido reciente de sus principales
oficinas corporativas, se encontró con una variedad de problemas que requerían su
experiencia y sus conocimientos para encontrar una solución.
Los siguientes cinco ejercicios son algunos aspectos destacados de los problema que
descubrió. Algunos de estos ejercicios podrían contener más de un problema, debido a que
los intentos de arreglo anteriores pueden haber dejado las máquinas en un estado no tan
ideal.
Durante estos ejercicios, recuerde utilizar un enfoque estructurado y tomar muchas notas
sobre lo que descubre y cambia.
RH342-RHEL7.2-es-1-20160321 367
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
Recursos
Archivos /usr/local/bin/pre-upower-version
Máquinas servera
Resultados
Deberá poder resolver correctamente los problemas de su máquina servera.
Andes de comenzar
Prepare su máquina servera para este ejercicio ejecutando el comando lab amsterdam
setup en su máquina workstation.
Otro administrador del sistema instaló una versión personalizada de la aplicación upower y
no pudo hacerla funcionar. Usted tiene la tarea de hacerla funcionar.
Ejecute los siguientes comandos para confirmar que la aplicación está lista para utilizarse:
El primer comando debe producir un mensaje de ayuda útil. El segundo comando debe
mostrar la versión actual de upower.
1. Investigue y proporcione una solución para los problemas que hacen que /usr/
libexec/upowerd --help tenga fallas. Se entiende que una solución será suficiente
hasta que el proveedor proporcione un arreglo más permanente.
2. Investigue, y corrija, el requisito del sistema necesario para que upower --version
funcione. Una vez que se identifica la condición de requisito previo, cree un script de shell
denominado /usr/local/bin/pre-upower-version que la implemente.
368 RH342-RHEL7.2-es-1-20160321
Solución
Solución
En este trabajo de laboratorio, resolverá un problema en su sistema servera.
Recursos
Archivos /usr/local/bin/pre-upower-version
Máquinas servera
Resultados
Deberá poder resolver correctamente los problemas de su máquina servera.
Andes de comenzar
Prepare su máquina servera para este ejercicio ejecutando el comando lab amsterdam
setup en su máquina workstation.
Otro administrador del sistema instaló una versión personalizada de la aplicación upower y
no pudo hacerla funcionar. Usted tiene la tarea de hacerla funcionar.
Ejecute los siguientes comandos para confirmar que la aplicación está lista para utilizarse:
El primer comando debe producir un mensaje de ayuda útil. El segundo comando debe
mostrar la versión actual de upower.
1. Investigue y proporcione una solución para los problemas que hacen que /usr/
libexec/upowerd --help tenga fallas. Se entiende que una solución será suficiente
hasta que el proveedor proporcione un arreglo más permanente.
1.1. Primero, ejecute el comando para ver si se muestran mensajes de error útiles.
1.2. Utilice ldd para identificar todas las librerías compartidas que no pueden resolverse
en este momento.
1.3. Utilice Yum para identificar los paquetes que podrían proporcionar las librerías
compartidas, libimobiledevice.so.4 y libplist.so.1.
RH342-RHEL7.2-es-1-20160321 369
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
1.4. Instale los paquetes que proporcionarán las librerías compartidas requeridas.
Help Options:
-h, --help Show help options
Application Options:
--timed-exit Exit after a small delay
--immediate-exit Exit after the engine has loaded
-v, --verbose Show extra debugging information
2. Investigue, y corrija, el requisito del sistema necesario para que upower --version
funcione. Una vez que se identifica la condición de requisito previo, cree un script de shell
denominado /usr/local/bin/pre-upower-version que la implemente.
2.2. Utilice strace para mostrar las llamadas del sistema que el programa está
realizando. Busque las llamadas del sistema que ocurrieron antes de que se imprima
el mensaje de error y tome nota de sus argumentos.
370 RH342-RHEL7.2-es-1-20160321
Solución
2.3. Utilice Yum para instalar el RPM nmap-ncat. Se utilizará para escuchar en el puerto
8765 en servera.
2.4. Abra otra ventana e inicie sesión en servera. Ejecute nc y haga que escuche el
puerto 8765 en la dirección 127.0.0.1.
RH342-RHEL7.2-es-1-20160321 371
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
372 RH342-RHEL7.2-es-1-20160321
Trabajo de laboratorio: Tokio — Problemas para registrarse en la consola
Recursos
Máquinas • serverb
Resultados
Deberá poder resolver correctamente los problemas de su máquina serverb.
Andes de comenzar
Prepare su máquina serverb para este ejercicio ejecutando el comando lab tokyo setup
en su máquina workstation.
El ticket de este problema se asignó a uno de sus administradores junior, quien intentó
solucionar el problema. Desafortunadamente, durante el proceso de “solución”, su máquina
serverb se volvió inaccesible.
Sorprendido por este resultado, su administrador junior no recuerda los pasos que tomó
hasta llegar a este punto.
RH342-RHEL7.2-es-1-20160321 373
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
Solución
En este trabajo de laboratorio, resolverá un problema en su sistema serverb.
Recursos
Máquinas • serverb
Resultados
Deberá poder resolver correctamente los problemas de su máquina serverb.
Andes de comenzar
Prepare su máquina serverb para este ejercicio ejecutando el comando lab tokyo setup
en su máquina workstation.
El ticket de este problema se asignó a uno de sus administradores junior, quien intentó
solucionar el problema. Desafortunadamente, durante el proceso de “solución”, su máquina
serverb se volvió inaccesible.
Sorprendido por este resultado, su administrador junior no recuerda los pasos que tomó
hasta llegar a este punto.
Parece que serverb está atascado en la pantalla de menú de grub2. Intente iniciar
la entrada predeterminada; si eso no funciona, intente iniciar una entrada de
respaldo.
1.4. Intente iniciar sesión como root en la consola con la contraseña redhat.
374 RH342-RHEL7.2-es-1-20160321
Solución
Parece que el problema de registro original aún está presente. Intente iniciar sesión
como root por SSH.
2.1. Intente iniciar sesión en la consola de serverb como student, con la contraseña
student.
Este mensaje no indica una contraseña incorrecta, por lo que la falla se debe a otro
elemento.
2.3. ¿Cuál es el archivo que controla la autenticación para el proceso login? Revíselo y
verifique que no tenga ajustes extraños.
2.5. Verifique que el paso anterior haya resuelto el problema al iniciar sesión en la
consola de serverb como student, con la contraseña student.
RH342-RHEL7.2-es-1-20160321 375
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder diagnosticar y solucionar un problema relacionado con la autenticación.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab paris setup en su
sistema workstation.
En la siguiente tabla se enumeran todos los ajustes que se enviaron a la persona que unió
servera a su dominio de autenticación.
Configuración
Servidor LDAP ldap://workstation.lab.example.com
Base de búsqueda dc=lab,dc=example,dc=com
de LDAP
Certificado CA de ftp://workstation.lab.example.com/pub/example-ca.crt
LDAP
Dominio de Kerberos LAB.EXAMPLE.COM
KDC de Kerberos workstation.lab.example.com
Directorios de inicio workstation.lab.example.com:/home/guests/*
de NFSv4
376 RH342-RHEL7.2-es-1-20160321
4. Evalúe su trabajo ejecutando el comando lab paris grade de su máquina
workstation.
RH342-RHEL7.2-es-1-20160321 377
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
Solución
En este trabajo de laboratorio, resolverá un problema relacionado con la autenticación.
Recursos
Máquinas • workstation
• servera
Resultados
Deberá poder diagnosticar y solucionar un problema relacionado con la autenticación.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab paris setup en su
sistema workstation.
En la siguiente tabla se enumeran todos los ajustes que se enviaron a la persona que unió
servera a su dominio de autenticación.
Configuración
Servidor LDAP ldap://workstation.lab.example.com
Base de búsqueda dc=lab,dc=example,dc=com
de LDAP
Certificado CA de ftp://workstation.lab.example.com/pub/example-ca.crt
LDAP
Dominio de Kerberos LAB.EXAMPLE.COM
KDC de Kerberos workstation.lab.example.com
Directorios de inicio workstation.lab.example.com:/home/guests/*
de NFSv4
1.1. Intente iniciar sesión como ldapuser en servera, con la contraseña kerberos, a
través de ssh y en la consola.
1.2. El uso de ssh ldapuser@servera requiere una contraseña, pero falla cuando se
ingresa la contraseña.
378 RH342-RHEL7.2-es-1-20160321
Solución
2.1. Lea los registros relacionados a sshd y login. ¿Qué se dice acerca del usuario
ldapuser?
Las entradas para sshd y login enumeran a ldapuser como un usuario no válido.
Este servidor requiere el uso de TLS; inténtelo de nuevo aplicando el uso de TLS.
Este directorio parece estar vacío. Eso explicaría el hecho de no poder verificar el
certificado TLS para nuestro servidor LDAP.
3.2. Descargue el certificado correcto para esa ubicación, luego agregue los hash
requeridos por las herramientas cliente de OpenLDAP.
RH342-RHEL7.2-es-1-20160321 379
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
3.7. Verifique que ahora puede iniciar sesión como ldapuser con la contraseña
kerberos. Cuando utiliza ssh desde workstation, se usará la autenticación basada
en clave de SSH y, por lo tanto, no se podrá acceder al directorio de inicio para
ldapuser. Pruebe con la autenticación basada en clave deshabilitada o pruébelo en
la consola de servera.
380 RH342-RHEL7.2-es-1-20160321
Trabajo de laboratorio: Londres — Problema en el servidor web
En este trabajo de laboratorio, resolverá una falla del servicio y un sistema de archivos
dañado.
Recursos
Aplicación http://servera.lab.example.com
Máquinas • servera
Resultados
Deberá poder resolver el error que produce un servicio para iniciarlo y recuperarlo de la
inconsistencia del sistema de archivos.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab london setup en su
máquina workstation.
Una vez que el servicio httpd se inicia correctamente, compruebe que el contenido del sitio
web se pueda recuperar a través de http://servera.lab.example.com. Si no se puede
recuperar el contenido del sitio web, analice y resuelva el problema.
1. Constate las quejas del usuario al intentar conectarse al sitio web desde serverb.
RH342-RHEL7.2-es-1-20160321 381
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
10. Constate que las quejas del usuario estén resueltas al intentar conectarse al sitio web
desde serverb.
11. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
11.1.Evalúe su trabajo.
382 RH342-RHEL7.2-es-1-20160321
Solución
Solución
En este trabajo de laboratorio, resolverá una falla del servicio y un sistema de archivos
dañado.
Recursos
Aplicación http://servera.lab.example.com
Máquinas • servera
Resultados
Deberá poder resolver el error que produce un servicio para iniciarlo y recuperarlo de la
inconsistencia del sistema de archivos.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab london setup en su
máquina workstation.
Una vez que el servicio httpd se inicia correctamente, compruebe que el contenido del sitio
web se pueda recuperar a través de http://servera.lab.example.com. Si no se puede
recuperar el contenido del sitio web, analice y resuelva el problema.
1. Constate las quejas del usuario al intentar conectarse al sitio web desde serverb.
1.2. Intente recuperar el archivo index.html desde el servidor web que se ejecuta en
servera.
RH342-RHEL7.2-es-1-20160321 383
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
3.2. Determine los archivos del paquete httpd en los que se han modificado los permisos.
4.1. Use el comando rpm para restablecer los permisos de los archivos que pertenecen al
paquete httpd con sus ajustes originales.
384 RH342-RHEL7.2-es-1-20160321
Solución
6.2. Intente recuperar el archivo index.html desde el servidor web que se ejecuta en
servera.
RH342-RHEL7.2-es-1-20160321 385
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
386 RH342-RHEL7.2-es-1-20160321
Solución
8.3. Ejecute una comprobación del sistema de archivos en el sistema de archivos que
reside en la partición /dev/vdb1.
RH342-RHEL7.2-es-1-20160321 387
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
10. Constate que las quejas del usuario estén resueltas al intentar conectarse al sitio web
desde serverb.
11. Evalúe su trabajo y, luego, realice una limpieza en sus sistemas para el próximo ejercicio.
11.1.Evalúe su trabajo.
388 RH342-RHEL7.2-es-1-20160321
Trabajo de laboratorio: Nueva York — Demoras en la red
En este trabajo de laboratorio, resolverá un problema que involucra pausas de red extrañas.
Recursos
Máquinas • workstation
• servera
• serverb
Resultados
Deberá poder resolver un problema de red que involucra demoras aparentemente aleatorias.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab newyork setup en su
máquina workstation.
Los usuarios informan pausas aleatorias cuando se conectan a los servicios de red
en su sistema serverb. Hasta hace poco, este sistema estaba bajo el control de otro
administrador, que se ha ido de la empresa. El exadministrador era conocido por desconfiar
de tecnologías nuevas y, contrario a la política de la empresa, nunca tomaba notas o realizaba
registros de su trabajo.
Los servicios httpd y sshd están disponibles para pruebas. Una máquina similar, servera,
no se ve afectada por el problema, pero ese servidor no está ejecutando los servicios httpd.
1. Recree el problema.
2. Recopile información.
4. Pruebe su hipótesis.
RH342-RHEL7.2-es-1-20160321 389
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
390 RH342-RHEL7.2-es-1-20160321
Solución
Solución
En este trabajo de laboratorio, resolverá un problema que involucra pausas de red extrañas.
Recursos
Máquinas • workstation
• servera
• serverb
Resultados
Deberá poder resolver un problema de red que involucra demoras aparentemente aleatorias.
Andes de comenzar
Prepare sus sistemas para este ejercicio ejecutando el comando lab newyork setup en su
máquina workstation.
Los usuarios informan pausas aleatorias cuando se conectan a los servicios de red
en su sistema serverb. Hasta hace poco, este sistema estaba bajo el control de otro
administrador, que se ha ido de la empresa. El exadministrador era conocido por desconfiar
de tecnologías nuevas y, contrario a la política de la empresa, nunca tomaba notas o realizaba
registros de su trabajo.
Los servicios httpd y sshd están disponibles para pruebas. Una máquina similar, servera,
no se ve afectada por el problema, pero ese servidor no está ejecutando los servicios httpd.
1. Recree el problema.
Hay una demora de un par de segundos antes de que se lleven a cabo las
conexiones.
real 0m3.190s
user 0m0.015s
sys 0m0.004s
1.3. Cronometre la carga de una página web desde serverb a través de curl.
RH342-RHEL7.2-es-1-20160321 391
Capítulo 11. Revisión integral de Red Hat Enterprise Linux Diagnostics and Troubleshooting
2. Recopile información.
2.1. Ejecute el comando curl en strace para ver si se bloquea en algún lugar.
Parece ser que las demoras provienen de algunas llamadas del sistema poll, en un
socket creado con la siguiente llamada del sistema:
2.2. Eche otro vistazo al resultado de strace. ¿El socket se abre correctamente?
3.1. Si serverb no tenía una dirección IPv6 en funcionamiento, o una entrada DNS
en funcionamiento para esa dirección, las herramientas como ssh y curl nunca
intentarían conectarse allí.
3.2. Lógicamente, aunque IPv6 esté configurado correctamente para serverb, algún
elemento está bloqueando el acceso.
4. Pruebe su hipótesis.
4.1. Realice una prueba al forzar ssh y curl a conectarse solo a través de IPv4. ¿Todavía
ve la demora?
392 RH342-RHEL7.2-es-1-20160321
Solución
RH342-RHEL7.2-es-1-20160321 393
394