1. Fundamentos de la trazabilidad
La trazabilidad es la cuarta fase del acceso y deja constancia de quién hizo qué, cuándo y desde dónde. Sin ella, las otras tres fases no pueden verificarse. Un sistema puede identificar, autenticar y autorizar correctamente y, aun así, ser imposible de investigar tras un incidente si no conserva evidencias fiables.
Los registros cumplen tres funciones distintas:
-
Detección: revelan intentos de fuerza bruta, accesos desde orígenes inesperados o elevaciones de privilegios mientras ocurren.
-
Investigación: permiten reconstruir la secuencia de un incidente y delimitar qué cuentas, archivos y máquinas resultaron afectados.
-
Responsabilidad: atribuyen cada acción a una persona concreta, lo que exige cuentas nominales y no compartidas.
Un registro solo es útil como evidencia si cumple cinco propiedades:
| Propiedad | Significado | Consecuencia técnica en Linux |
|---|---|---|
Completitud |
Se registran todos los eventos relevantes |
Reglas de |
Integridad |
Nadie puede modificar o borrar entradas sin dejar rastro |
Permisos estrictos, atributo |
Imputabilidad |
Cada evento se asocia a una identidad real |
Cuentas nominales y uso de |
Sincronización |
Las marcas de tiempo son comparables entre sistemas |
Servicio NTP activo y zona horaria definida |
Retención |
Los registros se conservan el tiempo necesario |
Rotación, límites de tamaño y almacenamiento centralizado |
|
Los registros contienen datos personales Una dirección IP, un nombre de usuario o la hora de conexión de una persona son datos personales según el RGPD. La política de registro debe justificar qué se recoge, limitar el acceso a esos archivos y definir un plazo de conservación proporcionado. |
La manipulación de los registros es una técnica habitual tras un compromiso. MITRE ATT&CK la recoge como Clear Linux or Mac System Logs (T1070.002) y como Disable or Modify Tools (T1562.001), y el uso de credenciales robadas como Valid Accounts (T1078). Por eso las medidas de este capítulo se orientan tanto a recoger los eventos como a protegerlos.
1.1. Eventos de acceso que conviene registrar
| Evento | Qué se quiere saber | Dónde queda registrado |
|---|---|---|
Inicio de sesión correcto o fallido |
Quién, desde qué origen y con qué método |
|
Uso de |
Quién ejecutó qué con privilegios |
|
Alta, baja o cambio de cuentas y grupos |
Quién modificó la identidad |
|
Cambio de la política de acceso |
Quién tocó PAM, |
Reglas de |
Bloqueo de cuentas |
Qué cuentas alcanzaron el umbral de fallos |
|
Arranques y paradas del sistema |
Ventanas sin supervisión |
|
1.2. Arquitectura del registro en Ubuntu
En Ubuntu conviven tres mecanismos complementarios, que no se sustituyen entre sí:
-
journaldrecoge los mensajes de los servicios y del núcleo en un diario estructurado, consultable conjournalctl. En Ubuntu es persistente, porque existe el directorio/var/log/journal/. -
rsyslogrecibe esos mensajes y los escribe en los archivos de texto tradicionales, como/var/log/auth.logy/var/log/syslog, según las reglas de/etc/rsyslog.d/. Es también el componente habitual para enviarlos a otra máquina. -
auditdregistra lo que el propio núcleo observa: llamadas al sistema y accesos a archivos vigilados. Es independiente de los anteriores, no depende de que la aplicación decida registrar algo y no está instalado por defecto.
Los registros de sesiones son un caso aparte, ya que login, sshd y getty escriben directamente en los archivos binarios /var/run/utmp, /var/log/wtmp y /var/log/btmp, que se leen con who, last y lastb.
|
Los mensajes de |
2. Registros del sistema
2.1. Archivos principales
| Archivo | Contenido | Propietario y permisos |
|---|---|---|
|
Autenticación, |
|
|
Mensajes generales del sistema |
|
|
Historial de sesiones abiertas y arranques |
|
|
Intentos de inicio de sesión fallidos |
|
|
Último acceso de cada cuenta |
|
|
Eventos del subsistema de auditoría |
|
El grupo adm permite leer los registros sin ser root. Conviene recordar que pertenecer a adm equivale a poder ver todo el historial de accesos de la máquina, incluidos nombres de usuario escritos por error en el campo de contraseña.
|
|
2.2. Anatomía de los mensajes de autenticación
Cada línea de auth.log sigue el formato marca de tiempo, equipo, programa[PID] y mensaje. Un intento fallido de SSH contra una cuenta inexistente deja este rastro:
2026-10-19T21:49:36+02:00 lab sshd[207595]: Invalid user noexiste from ::1 port 57170 (1)
2026-10-19T21:49:39+02:00 lab sshd[207595]: Failed password for invalid user noexiste from ::1 port 57170 ssh2 (2)
2026-10-19T21:49:40+02:00 lab sshd[207678]: Accepted password for ana from ::1 port 57184 ssh2 (3)
2026-10-19T21:49:40+02:00 lab sshd[207678]: pam_unix(sshd:session): session opened for user ana(uid=1001) by ana(uid=0) (4)
| 1 | El usuario no existe, la señal típica de una enumeración o de un ataque de diccionario. |
| 2 | Fallo de contraseña. La expresión invalid user indica que la cuenta tampoco existe. |
| 3 | Acceso correcto, con el método password. Con claves públicas aparecería Accepted publickey. |
| 4 | Apertura de sesión registrada por el módulo PAM del servicio. |
Para sudo, cada comando ejecutado deja una línea con el usuario, el directorio, la cuenta de destino y la orden completa:
sudo: ubuntu : PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/cat /etc/shadow (1)
sudo: ana : user NOT in sudoers ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/true (2)
sudo: pam_unix(sudo:auth): authentication failure; logname=ubuntu uid=1001 euid=0 tty= ruser=ana (3)
| 1 | Ejecución autorizada. La orden figura completa, lo que permite reconstruir la actividad administrativa. |
| 2 | Intento de una cuenta sin permisos en sudoers. Es un indicio de interés, porque una cuenta que no debería administrar está probando privilegios. |
| 3 | Fallo de la contraseña en la pila auth de PAM. |
|
Con los conceptos explicados en los apartados anteriores, ya puede realizar el Ejercicio 1. Exploración de las fuentes de registro y el Ejercicio 2. Generación y localización de eventos de acceso. |
2.3. Consulta con journalctl
journalctl filtra por unidad, programa, prioridad, intervalo de tiempo y texto, sin necesidad de encadenar grep:
| Opción | Función | Ejemplo |
|---|---|---|
|
Filtra por unidad de |
|
|
Filtra por nombre de programa |
|
|
Acota el intervalo |
|
|
Filtra por expresión regular |
|
|
Filtra por prioridad |
|
|
Cambia el formato de salida |
|
|
Limita el arranque actual o uno anterior |
|
|
Sigue la salida en tiempo real |
|
La opción -o short-iso muestra la hora con zona horaria, y -o json expone campos como _UID, _COMM, _EXE y _HOSTNAME, útiles para procesar los eventos con otras herramientas.
3. Historial de sesiones
3.1. Órdenes de consulta
| Orden | Fuente | Información que ofrece |
|---|---|---|
|
|
Sesiones abiertas ahora, su origen y la actividad actual |
|
|
Sesiones pasadas, arranques y apagados con |
|
|
Intentos de acceso fallidos, solo para |
|
|
Último acceso de cada cuenta, con |
last -n 5 -w
sudo lastb -n 5 -w
lastlog -u ana
|
Ubuntu 26.04. En esta versión |
La opción -w muestra los nombres completos, que de otro modo se truncan. Una cuenta con **Never logged in** en lastlog que, sin embargo, tiene una contraseña válida, es candidata a bloqueo o eliminación, porque amplía la superficie de ataque sin aportar ningún uso.
|
Límites del historial de sesiones
|
3.2. Primeros indicios de ataque
Con las órdenes anteriores se identifican los patrones de mayor interés, que MITRE ATT&CK clasifica como Brute Force (T1110) cuando se repiten contra una cuenta y como Valid Accounts (T1078) cuando uno tiene éxito:
| Patrón | Cómo se ve | Posible interpretación |
|---|---|---|
Muchos fallos desde un mismo origen |
Decenas de |
Fuerza bruta |
Un mismo origen contra muchas cuentas |
Varios |
Enumeración o diccionario |
Muchas cuentas desde un único origen con pocos intentos |
Un fallo por cuenta |
Pulverización de contraseñas |
Fallos seguidos de un acceso correcto |
|
Credencial adivinada |
Acceso en un horario atípico o desde un origen nuevo |
|
Credencial robada |
|
Cuenta sin permisos probando |
Exploración tras un acceso inicial |
sudo awk '$3 ~ /^sshd/ && /Failed password/ {for (i = 1; i <= NF; i++) if ($i == "from") print $(i + 1)}' /var/log/auth.log | sort | uniq -c | sort -rn | head
Este patrón de tubería, que cuenta las apariciones de cada origen, se desarrolla con más detalle en el tutorial de análisis de registros del sistema con tuberías.
|
Con los conceptos explicados en los apartados anteriores, ya puede realizar el Ejercicio 3. Historial de sesiones con |
4. Auditoría del núcleo con auditd
4.1. Qué aporta frente a los registros de texto
auth.log contiene lo que cada programa decide contar. Si un administrador edita /etc/shadow con un editor o un atacante modifica /etc/sudoers.d/ con un script, ningún servicio escribe en auth.log. El subsistema de auditoría del núcleo cubre ese hueco, ya que registra los accesos a archivos y las llamadas al sistema con independencia de la aplicación, y los asocia al identificador de auditoría (auid).
El auid se asigna al iniciar sesión y no cambia aunque la persona use sudo o su. Así, un evento con auid=ubuntu uid=root indica que ubuntu actuó con privilegios de root, lo que resuelve el problema de la imputabilidad cuando varias personas administran la misma cuenta.
# Actualiza el índice de paquetes
sudo apt update
# Instala el servicio de auditoría y sus complementos
sudo apt install -y auditd audispd-plugins
systemctl is-active auditd
sudo auditctl -s
4.2. Reglas de vigilancia
Las reglas se cargan con auditctl y, para que sobrevivan a un reinicio, se guardan en /etc/audit/rules.d/, de donde augenrules las combina en /etc/audit/audit.rules. La forma más sencilla es el vigilante de archivos:
-w /etc/shadow -p wa -k identidad
| Elemento | Significado |
|---|---|
|
Vigila un archivo o un directorio |
|
Registra escrituras |
|
Etiqueta el evento para localizarlo después con |
Un conjunto mínimo para controlar el acceso se guarda en /etc/audit/rules.d/50-acceso.rules:
# Cuentas y credenciales
-w /etc/passwd -p wa -k identidad
-w /etc/group -p wa -k identidad
-w /etc/shadow -p wa -k identidad
-w /etc/gshadow -p wa -k identidad
# Privilegios
-w /etc/sudoers -p wa -k privilegios
-w /etc/sudoers.d/ -p wa -k privilegios
# Autenticación y sesiones
-w /etc/pam.d/ -p wa -k autenticacion
-w /var/log/faillock/ -p wa -k intentos
-w /var/log/wtmp -p wa -k sesiones
-w /var/log/btmp -p wa -k sesiones
-w /var/run/utmp -p wa -k sesiones
sudo augenrules --load
sudo auditctl -l
Estas reglas corresponden a los controles habituales del CIS Benchmark sobre auditoría de identidad, de privilegios y de sesiones.
|
La opción |
|
Una regla |
4.3. Consulta de los eventos
Dos herramientas complementarias permiten explotar /var/log/audit/audit.log:
-
ausearchbusca eventos concretos por clave, usuario, tipo, resultado o intervalo. -
aureportgenera informes resumidos por categoría.
| Orden | Resultado |
|---|---|
|
Eventos con la clave |
|
Una frase legible por cada evento |
|
Autenticaciones y accesos fallidos |
|
Órdenes ejecutadas con |
|
Informe de inicios de sesión |
|
Informe de autenticaciones |
|
Informe de archivos vigilados accedidos |
|
Número de eventos por clave |
El parámetro -i convierte identificadores numéricos en nombres, y --start acepta today, recent y fechas.
|
Cuando |
Un evento de modificación de /etc/passwd genera varios registros enlazados por el mismo número, que ausearch agrupa: el tipo SYSCALL identifica la llamada y el auid, el tipo PATH el archivo afectado y el tipo PROCTITLE la orden que lo provocó. La salida --format text resume todo ello en una línea, como ubuntu, acting as root, successfully renamed /etc/passwd+ to /etc/passwd using /usr/sbin/useradd.
|
Con los conceptos explicados en los apartados anteriores, ya puede realizar el Ejercicio 5. Reglas de vigilancia con |
5. Protección, retención y centralización
5.1. Retención y rotación
Cada mecanismo tiene su propia política, que debe dimensionarse según el plazo de conservación fijado:
| Componente | Configuración | Valores de referencia |
|---|---|---|
|
|
|
|
|
|
|
|
|
[Journal]
Storage=persistent
SystemMaxUse=200M
MaxRetentionSec=6month
Por defecto, auditd conserva cinco archivos de 8 MB, una capacidad pequeña para un servidor real. Si se llena, la acción disk_full_action = SUSPEND detiene la auditoría en lugar de detener el sistema, lo cual deja un periodo sin evidencias. En entornos críticos se sube el tamaño y se configura space_left_action para que avise antes.
logrotate -f /etc/logrotate.conf fuerza una rotación inmediata. La rotación individual de un solo archivo, como logrotate -f /etc/logrotate.d/rsyslog, falla en Ubuntu con el aviso de directorio con permisos inseguros, porque la directiva su root syslog solo está en el archivo principal.
5.2. Integridad de los registros
-
Permisos: los archivos de
/var/log/no deben ser legibles por todos. En Ubuntu,auth.logysyslogson640ybtmpes660. -
Atributo
append-only:chattr +aimpide truncar o borrar un archivo, aunque sí permite añadir líneas. Conviene en archivos que no se rotan, porquelogrotatetambién necesita borrar y no puede trabajar sobre un archivo con+a. -
Verificación del diario:
journalctl --verifycomprueba la consistencia interna de los archivos del diario y detecta corrupción accidental. Sin selladoSeal=yes, no protege frente a un atacante con privilegios que reescriba el diario completo. -
Sincronización horaria: sin una hora fiable, los registros de varias máquinas no pueden correlacionarse.
timedatectlindica si el reloj está sincronizado.
timedatectl show -p NTPSynchronized
sudo journalctl --verify 2>&1 | grep -E 'PASS|FAIL'
Ninguna de estas medidas detiene a un atacante con acceso de root en la propia máquina, que puede desactivar auditd o editar los archivos. La única defensa sólida es sacar copia de los registros fuera de la máquina mientras se generan.
5.3. Envío a un colector remoto con rsyslog
rsyslog puede reenviar los eventos de autenticación a un servidor central por TCP. En el equipo emisor, una regla en /etc/rsyslog.d/90-envio.conf selecciona las categorías de autenticación:
auth,authpriv.* action(type="omfwd" target="192.0.2.10" port="6514" protocol="tcp")
En el equipo colector, un archivo en /etc/rsyslog.d/10-receptor.conf abre el puerto y guarda los mensajes en un directorio por equipo:
module(load="imtcp")
input(type="imtcp" port="6514" ruleset="remoto")
template(name="PorEquipo" type="string" string="/var/log/remoto/%HOSTNAME%/%PROGRAMNAME%.log")
ruleset(name="remoto") {
action(type="omfile" dynaFile="PorEquipo")
}
|
El envío por TCP sin cifrar expone el contenido de los registros y permite que un tercero inyecte eventos falsos. En producción debe usarse TLS con el módulo |
La Guía de PKI explica cómo emitir los certificados necesarios para proteger este canal.
|
Con los conceptos explicados en los apartados anteriores, ya puede realizar el Ejercicio 7. Retención, rotación e integridad y el Ejercicio 8. Envío remoto de registros con |
6. Guía consolidada de bastionado y lista de verificación
6.1. Matriz de riesgos y medidas técnicas
| Vector de amenaza | Impacto potencial | Medida de bastionado | Verificación técnica |
|---|---|---|---|
Fuerza bruta no detectada |
Cuentas comprometidas sin alerta |
Revisión periódica de |
|
Borrado de registros tras el acceso |
Pérdida de evidencias |
Copia remota y |
|
Modificación de |
Persistencia con privilegios |
Reglas de |
|
Actividad atribuida a una cuenta compartida |
Imposibilidad de imputar |
|
|
Desbordamiento del almacenamiento |
Pérdida de auditoría |
Límites de |
|
Marcas de tiempo inconsistentes |
Correlación imposible |
Sincronización NTP activa |
|
Archivos de registro legibles por todos |
Exposición de datos personales |
Permisos |
|
6.2. Lista de verificación CIS Benchmark para Ubuntu 24.04
-
auditdinstalado y activo desde el arranque:dpkg -s auditd | grep -E '^(Status|Version)' systemctl is-enabled auditd && systemctl is-active auditd -
Reglas sobre identidad, privilegios, sesiones e intentos de acceso, cargadas y también persistentes:
sudo auditctl -l | grep -E 'identidad|privilegios|sesiones|autenticacion' ls /etc/audit/rules.d/ -
Retención de
auditddimensionada:sudo grep -E '^(max_log_file|num_logs|max_log_file_action|space_left_action|disk_full_action)' /etc/audit/auditd.conf -
journaldpersistente y con límites definidos:grep -rE '^(Storage|SystemMaxUse|MaxRetentionSec)' /etc/systemd/journald.conf /etc/systemd/journald.conf.d/ 2>/dev/null -
rsyslogactivo y con permisos de creación restrictivos:systemctl is-active rsyslog grep -r FileCreateMode /etc/rsyslog.conf /etc/rsyslog.d/ -
Permisos de los archivos de registro:
stat -c '%a %U:%G %n' /var/log/auth.log /var/log/syslog /var/log/btmp /var/log/audit/audit.log -
Registros enviados a un colector remoto:
grep -rE 'omfwd|^[^#]*@@?[0-9a-z]' /etc/rsyslog.conf /etc/rsyslog.d/ -
Reloj sincronizado:
timedatectl | grep -E 'synchronized|NTP service'
7. Ejercicios prácticos
Los ejercicios están diseñados para realizarse en orden sobre una máquina virtual Ubuntu 24.04 de pruebas, ya que algunos reutilizan usuarios y reglas creados en ejercicios anteriores. Puede crearla con la guía de Multipass.
|
No realice estos ejercicios en un servidor en producción. Los ejercicios habilitan temporalmente la autenticación por contraseña en SSH para poder generar intentos fallidos, y la limpieza final restaura la configuración original. |
|
Los ejercicios se han verificado en Ubuntu 24.04 LTS. En Ubuntu 26.04 LTS cambian las herramientas de historial de sesiones, como se indica en el apartado 3.1, y |
| Nº | Ejercicio | Competencia que desarrolla |
|---|---|---|
1 |
Localizar dónde queda cada evento de acceso |
|
2 |
Reconocer los mensajes de |
|
3 |
Consultar sesiones y accesos fallidos |
|
4 |
Detectar indicios de fuerza bruta con |
|
5 |
Instalar |
|
6 |
Atribuir acciones con |
|
7 |
Dimensionar |
|
8 |
Sacar copia de los eventos fuera del origen |
|
9 |
Verificar la conformidad de forma automatizada |
|
10 |
Revertir los cambios realizados durante la práctica |
7.1. Ejercicio 1. Exploración de las fuentes de registro
Realice los siguientes pasos:
-
Compruebe que
journaldes persistente y cuánto espacio ocupa, y quersyslogestá activo. Indique siauditdestá instalado. -
Liste los archivos de
/var/log/relacionados con la autenticación y compare sus propietarios y permisos con la tabla del apartado 2.1. -
Compruebe qué reglas de
rsyslogenvían los mensajes de autenticación aauth.log, y si algún destino remoto está configurado. -
Compruebe que el reloj está sincronizado.
-
Cree el usuario
anacon una contraseña conocida y habilite temporalmente la autenticación por contraseña en SSH con un archivo que se evalúe antes que la configuración decloud-init.
7.2. Ejercicio 2. Generación y localización de eventos de acceso
Realice los siguientes pasos:
-
Intente conectarse dos veces por SSH como
anacon una contraseña incorrecta, una vez como un usuario inexistente y, por último, con la contraseña correcta. -
Localice los eventos generados en
/var/log/auth.log. Identifique las líneasInvalid user,Failed password,Accepted passwordysession opened. -
Obtenga los mismos eventos con
journalctl, filtrando por la unidadssh, con hora en formato ISO y limitados a los últimos diez minutos. -
Provoque un uso indebido de
sudocon la cuentaana, que no pertenece a ningún grupo administrativo. Localice la líneauser NOT in sudoersenauth.log. -
Genere un evento administrativo con una cuenta autorizada y compruebe que
sudoregistra la orden completa.
7.3. Ejercicio 3. Historial de sesiones con last, lastb y lastlog
Realice los siguientes pasos:
-
Muestre las cinco últimas sesiones, incluidos los arranques del sistema, y las sesiones abiertas en este momento.
-
Muestre los últimos accesos fallidos registrados. Indique cuántos corresponden a la cuenta inexistente
noexiste. -
Consulte el último acceso de
anay de la cuenta de serviciodaemonconlastlog, y razone por qué esta última muestra**Never logged in**. -
Compruebe los permisos de
btmpy explique por qué no debe ser legible por todos los usuarios, teniendo en cuenta lo que sucede cuando alguien escribe su contraseña en el campo del usuario.
7.4. Ejercicio 4. Resumen de intentos fallidos
Realice los siguientes pasos:
-
Cuente con
awkcuántos fallos de contraseña hay por dirección de origen enauth.log. -
Obtenga con
journalctly su opción de filtrado por expresión regular las líneasFailed passwordeInvalid userde la última hora. -
Cree el script
~/resumen_accesos.sh, que muestre los fallos por origen, las cuentas inexistentes intentadas y las líneas desudosin autorización, y ejecútelo. -
Razone cómo distinguiría con estos datos un ataque de fuerza bruta de una pulverización de contraseñas y qué medida de las ya estudiadas aplicaría contra cada uno.
7.5. Ejercicio 5. Reglas de vigilancia con auditd
Realice los siguientes pasos:
-
Instale
auditdy compruebe que está activo y que no tiene reglas cargadas. -
Cree
/etc/audit/rules.d/50-acceso.rulescon las reglas del apartado 4.2 y cárguelas. -
Genere de nuevo un acceso correcto y dos fallidos por SSH con
ana, y compruebe conaureportqueauditdlos ha registrado. -
Compruebe que los intentos fallidos aparecen como eventos de tipo
USER_AUTHconres=failed, y localice la dirección de origen.
7.6. Ejercicio 6. Auditoría de cambios de cuentas y privilegios
Realice los siguientes pasos:
-
Cree un usuario temporal y una regla de
sudodesde su cuenta, como lo haría un administrador, o un atacante que ya hubiera conseguido privilegios. -
Localice con
ausearchlos eventos con las clavesidentidadyprivilegios, en formato de texto, e identifique qué orden provocó cada cambio. -
Obtenga un informe de los archivos vigilados accedidos y otro resumen por claves.
-
Compruebe con los registros
USER_CMDque elauiddel evento es el de su cuenta aunque la acción se ejecutara comoroot, y razone por qué esto permite la imputación aunque varias personas usensudo. -
Elimine el usuario y la regla temporales, y compruebe que su eliminación también quedó registrada.
7.7. Ejercicio 7. Retención, rotación e integridad
Realice los siguientes pasos:
-
Limite el diario de
journalda 200 MB y a seis meses con un archivo en/etc/systemd/journald.conf.d/, reinicie el servicio y compruebe el espacio ocupado. -
Compruebe la integridad de los archivos del diario.
-
Fuerce una rotación de los registros de texto, compruebe que aparece
auth.log.1y queauth.logqueda vacío. Explique por qué el comando funciona con el archivo principal delogrotatey no con el dersyslogpor separado. -
Aplique el atributo
append-onlya un archivo de prueba y compruebe que no puede truncarse ni borrarse, aunque sí ampliarse.
7.8. Ejercicio 8. Envío remoto de registros con rsyslog
El laboratorio usa la propia máquina como colector, a través del bucle local, para practicar la configuración sin montar una segunda máquina.
Realice los siguientes pasos:
-
Configure el receptor en el puerto 5514 con la plantilla del apartado 5.3 y el emisor hacia
127.0.0.1. -
Valide la configuración, reinicie
rsyslogy compruebe que el puerto está a la escucha. -
Genere un mensaje de autenticación de prueba con
loggery localícelo en el directorio del colector. -
Razone qué protecciones faltan para usar este esquema en producción y qué parte de la actividad de un atacante no se vería afectada por el envío remoto.
7.9. Ejercicio 9. Auditoría CIS de la trazabilidad
Desarrolle el script /root/auditoria_trazabilidad.sh que compruebe los controles de la sección 6.2 y muestre CONFORME o NO CONFORME para cada uno. Ejecútelo y analice los controles que no se cumplen.
7.10. Ejercicio 10. Limpieza del entorno
Realice los siguientes pasos:
-
Elimine las reglas de auditoría y desinstale
auditd. -
Restaure la configuración de
rsyslog, dejournaldy de SSH. -
Cierre las sesiones de
ana, que pueden seguir activas unos segundos tras desconectarse, y elimine el usuario, el script de resumen y el script de auditoría. -
Compruebe que no quedan archivos ni servicios del laboratorio.
Con la realización de estos ejercicios se consolidan los procedimientos esenciales de trazabilidad: la lectura de los mensajes de autenticación, el uso del historial de sesiones, la auditoría de archivos sensibles con auditd, y la protección y centralización de los registros.
8. Recursos y referencias
8.1. Documentación oficial
-
Páginas de manual:
man auditctl,man ausearch,man aureport,man audit.rules,man auditd.conf,man journalctl,man logrotate,man last,man lastb,man lastlog. -
MITRE ATT&CK T1562.001: Impair Defenses: Disable or Modify Tools.
9. Licencia
Licencia CC BY-NC-ND 4.0
Esta página forma parte del curso Bastionado de Redes y Sistemas © 2026 de José Juan Sánchez Hernández y su contenido se distribuye bajo una licencia Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International.
Esta licencia exige que quienes reutilicen el material otorguen el debido crédito al autor. Permite copiar y redistribuir el material en cualquier medio o formato, únicamente en su forma original, y solo para fines no comerciales.