#!/bin/bash # DESC: fallos y vulnerabilidades # Nombre del archivo HTML OUTPUT_FILE="reporte_seguridad.html" # Crear el archivo HTML e iniciar el contenido echo "" > $OUTPUT_FILE echo "Reporte de Seguridad del Sistema" >> $OUTPUT_FILE echo "" >> $OUTPUT_FILE echo "

Reporte de Seguridad del Sistema

" >> $OUTPUT_FILE echo "

Fecha: $(date)

" >> $OUTPUT_FILE # 1. Verificar si el usuario está ejecutando el script como root if [[ $EUID -ne 0 ]]; then echo "Error: Por favor, ejecuta este script como root" echo "

Error: Por favor, ejecuta este script como root

" >> $OUTPUT_FILE echo "" >> $OUTPUT_FILE exit 1 fi # 2. Revisar actualizaciones de seguridad pendientes echo "1. Verificando actualizaciones de seguridad pendientes..." echo "

1. Verificando actualizaciones de seguridad pendientes...

" >> $OUTPUT_FILE apt-get update > /dev/null 2>&1 apt-get upgrade -s | grep -i "Inst" > /tmp/updates.txt if [[ -s /tmp/updates.txt ]]; then echo "Hay actualizaciones de seguridad pendientes. Ejecuta 'apt-get upgrade' para instalarlas." echo "

Hay actualizaciones de seguridad pendientes. Ejecuta 'apt-get upgrade' para instalarlas.

" >> $OUTPUT_FILE else echo "El sistema está actualizado." echo "

El sistema está actualizado.

" >> $OUTPUT_FILE fi rm /tmp/updates.txt # 3. Comprobar servicios innecesarios echo "2. Comprobando servicios innecesarios..." echo "

2. Comprobando servicios innecesarios...

" >> $OUTPUT_FILE netstat -tuln | grep -E '(:22|:80|:443)' > /tmp/services.txt if [[ -s /tmp/services.txt ]]; then echo "Algunos servicios abiertos:" cat /tmp/services.txt echo "

Algunos servicios abiertos:

" >> $OUTPUT_FILE
    cat /tmp/services.txt >> $OUTPUT_FILE
    echo "
" >> $OUTPUT_FILE else echo "No se detectaron servicios innecesarios abiertos." echo "

No se detectaron servicios innecesarios abiertos.

" >> $OUTPUT_FILE fi rm /tmp/services.txt # 4. Buscar permisos inseguros en archivos importantes echo "3. Buscando archivos con permisos inseguros..." echo "

3. Buscando archivos con permisos inseguros...

" >> $OUTPUT_FILE find / -type f -perm 777 -exec ls -l {} \; > /tmp/permissions.txt if [[ -s /tmp/permissions.txt ]]; then echo "Se encontraron archivos con permisos 777 (inseguros):" cat /tmp/permissions.txt echo "

Se encontraron archivos con permisos 777 (inseguros):

" >> $OUTPUT_FILE
    cat /tmp/permissions.txt >> $OUTPUT_FILE
    echo "
" >> $OUTPUT_FILE else echo "No se encontraron archivos con permisos inseguros." echo "

No se encontraron archivos con permisos inseguros.

" >> $OUTPUT_FILE fi rm /tmp/permissions.txt # 5. Comprobar si existen usuarios con privilegios echo "4. Comprobando usuarios con privilegios de root..." echo "

4. Comprobando usuarios con privilegios de root...

" >> $OUTPUT_FILE echo "Usuarios con privilegios de root:" echo "

Usuarios con privilegios de root:

" >> $OUTPUT_FILE
awk -F: '$3 == 0 { print $1 }' /etc/passwd | tee /tmp/superusers.txt
cat /tmp/superusers.txt >> $OUTPUT_FILE
echo "
" >> $OUTPUT_FILE rm /tmp/superusers.txt # 6. Comprobación básica de fail2ban o firewall activo echo "5. Comprobando si fail2ban o firewall están activos..." echo "

5. Comprobando si fail2ban o firewall están activos...

" >> $OUTPUT_FILE if systemctl is-active --quiet fail2ban; then echo "fail2ban está activo" echo "

fail2ban está activo

" >> $OUTPUT_FILE else echo "fail2ban no está activo" echo "

fail2ban no está activo

" >> $OUTPUT_FILE fi if systemctl is-active --quiet ufw; then echo "El firewall (ufw) está activo" echo "

El firewall (ufw) está activo

" >> $OUTPUT_FILE else echo "El firewall (ufw) no está activo" echo "

El firewall (ufw) no está activo

" >> $OUTPUT_FILE fi # 7. Verificar si hay usuarios conectados echo "6. Comprobando si hay usuarios conectados..." echo "

6. Comprobando si hay usuarios conectados...

" >> $OUTPUT_FILE if who | grep -q '.'; then echo "Usuarios conectados actualmente:" who echo "

Usuarios conectados actualmente:

" >> $OUTPUT_FILE
    who >> $OUTPUT_FILE
    echo "
" >> $OUTPUT_FILE else echo "No hay usuarios conectados en este momento." echo "

No hay usuarios conectados en este momento.

" >> $OUTPUT_FILE fi # Finalizar el HTML echo "" >> $OUTPUT_FILE # Mensaje de confirmación echo "Reporte de seguridad generado en $OUTPUT_FILE"