Realizar análisis de Nessus

Nessus es un escáner de seguridad que se usa para detectar vulnerabilidades de seguridad en hardware y software.

En este documento se describen los pasos para:

  • instalar Nessus

  • Realizar análisis de Nessus

  • Exportar resultados de análisis de Nessus

1. Fondo

Tenable Nessus es una herramienta de terceros con licencia. Consulta los siguientes recursos para obtener más información sobre Nessus:

2. Antes de empezar

  • Estación de trabajo

    • Se necesita el programa de arranque (te-bf) o una estación de trabajo equivalente accesible para el operador para alojar Nessus.
  • Se requiere acceso

    • Sigue las instrucciones de IAM-R0005:

      • Obtener el rol de administrador de clúster para cada clúster de destino.
    • Sigue las instrucciones de IAM-R0004:

      • Genera el archivo KUBECONFIG de cada clúster de destino.
  • Herramientas necesarias

    • kubectl
    • ssh-keygen
  • Software

    • Se necesita un instalador de Nessus compatible con el SO de tu estación de trabajo. Obtén el instalador de https://www.tenable.com/downloads/nessus y transfiérelo a la estación de trabajo de Nessus antes de continuar.
  • Licencias

    • Se necesita un único código de activación de licencia de Tenable Nessus (Pro, Export o Manager). Si no tienes un código de activación de licencia, ponte en contacto con el punto de contacto de tu equipo para obtener licencias de terceros o la lista de materiales de software.

3. Instalar Nessus

En esta sección se describen los pasos para instalar Nessus en la estación de trabajo de Nessus.

Si Nessus ya está instalado y activado, puedes saltarte esta sección.

Si Nessus ya no está disponible (por ejemplo, si se instaló en un ordenador que ya no existe), la licencia utilizada para activar la instancia anterior de Nessus debe restablecerse antes de continuar.

  1. Exporta la ruta al instalador de Nessus:

    NESSUS_INSTALLER=
    
  2. Instala Nessus con dpkg:

    dpkg -i ${NESSUS_INSTALLER:?}
    
  3. Reinicia Nessus y confirma que se está ejecutando:

    sudo systemctl restart nessusd
    sudo systemctl status nessusd
    
  4. Obtener el código de desafío para registrar Nessus sin conexión:

    /opt/nessus/sbin/nessuscli fetch --challenge
    
  5. En un ordenador conectado a Internet, vaya a la página de activación sin conexión de Nessus https://plugins.nessus.org/v2/offline.php.

  6. Copia el código de activación sin conexión de Nessus y el código de activación de la licencia de Nessus en la página de activación sin conexión de Nessus y pulsa "Enviar".

  7. En la página de activación sin conexión de Nessus ahora deberían aparecer la URL del complemento de Nessus y la licencia del producto. Necesitarás ambos valores para los pasos siguientes.

  8. Guarda la URL del complemento de Nessus en una ubicación segura para consultarla más adelante, ya que la necesitarás en esta guía.

  9. Guarda la licencia de la página de activación sin conexión de Nessus en la estación de trabajo de Nessus en un archivo llamado /opt/nessus/etc/nessus/nessus.license.

  10. Aplica la licencia a Nessus:

    /opt/nessus/sbin/nessuscli fetch --register-offline /opt/nessus/etc/nessus/nessus.license
    
  11. Crea un usuario administrador:

    Sigue las indicaciones de nessuscli adduser para crear un usuario de admin. Estas credenciales se usarán más adelante para realizar análisis y descargar resultados, así que guárdalas en un lugar seguro.

    /opt/nessus/sbin/nessuscli adduser
    
  12. Mientras Nessus está en ejecución, se puede acceder a su interfaz de usuario a través del puerto 8834. En el navegador que elijas, ve a https://<nessus-workstation-ip>:8834 e inicia sesión como usuario admin.

4. Actualizar los complementos de Nessus

Los complementos de Nessus más recientes deben descargarse y aplicarse a Nessus antes de ejecutar análisis para asegurarse de que los resultados sean relevantes y estén actualizados. Los complementos de Nessus deben obtenerse directamente de Tenable mediante la URL del complemento de Nessus que se obtiene en la página de activación sin conexión de Nessus.

  1. Obtén el paquete de complementos.

    Opción 1: Ve a la URL del complemento de Nessus con el navegador que prefieras y el paquete se descargará automáticamente.

    Opción 2: Descargar el paquete con wget wget "${PLUGIN_URL:?}" -O plugin-updates.tar.gz

  2. Transfiere el paquete del complemento a la estación de trabajo de Nessus y exporta la ubicación del archivo:

    NESSUS_PLUGIN_BUNDLE=
    
  3. Aplica las actualizaciones de complementos a Nessus:

    /opt/nessus/sbin/nessuscli update ${NESSUS_PLUGIN_BUNDLE:?}
    
  4. Las actualizaciones de los complementos tardan unos 30 minutos en compilarse. Puedes seguir los pasos para crear análisis mientras esto ocurre, pero no ejecutes los análisis hasta que los complementos hayan terminado de compilarse.

5. Configurar análisis de Nessus

Se deben crear análisis para cada combinación única de clase de destino y credencial. En esta sección se explica cómo crear el análisis necesario a través de la interfaz de usuario de Nessus.

Antes de continuar, confirma el acceso a la interfaz de usuario de Nessus en https://<nessus-workstation-ip>:8834 e inicia sesión como usuario admin.

5.1. Recoger CIDRs de red

Los análisis de Nessus se crean para analizar los CIDR de la red externa e interna del entorno.

  1. Recoge los CIDRs de red externos e internos de la red del dispositivo de destino (lo ideal es que esta red no se solape con otro entorno vecino).

    del clúster de infraestructura de la organización.
  2. Es probable que los intervalos de IP incluyan la IP del bootstrapper u otras IPs que no se deban analizar. Introduce los siguientes comandos para cada IP que no se deba analizar (por ejemplo, la IP de arranque):

    IGNORE_IP=
    IGNORE_IP_REASON=
    
    echo "# ${IGNORE_IP_REASON:?}" >> /opt/nessus/etc/nessus/nessusd.rules
    echo "reject ${IGNORE_IP:?}" >>  /opt/nessus/etc/nessus/nessusd.rules
    

5.2. Escaneos de descubrimiento de hosts

Los análisis de descubrimiento de redes no están autenticados y se utilizan para rastrear una red en busca de objetivos y exposiciones de redes no seguras.

Esta exploración se configurará para analizar los CIDRs de la red externa e interna identificados en la sección anterior.

En la interfaz de usuario de Nessus:

  1. Crea un análisis de descubrimiento de hosts llamado host-discovery.
  2. Especifica los hosts: CIDRs externos e internos.
  3. Guardar y lanzar

5.3. Análisis de SO de nodos

Los análisis de nodos se autentican y están diseñados para inspeccionar sistemas operativos críticos en busca de vulnerabilidades conocidas, configuraciones no seguras y cumplimiento.

Sigue los pasos de esta sección para el clúster de infraestructura de la organización:

  1. Exporta el archivo kubeconfig del clúster:

    KUBECONFIG=
    
  2. Lista todos los nodos del clúster:

    kubectl --kubeconfig=${KUBECONFIG:?} get nodes -o wide
    
  3. Fíjate en la columna que muestra la IP de datos de cada nodo. Antes de continuar, comprueba que se puede acceder a la IP de los datos desde la estación de trabajo de Nessus con ping.

    ping <node_data_ip>
    
  4. En la interfaz de usuario de Nessus, empieza a crear un análisis avanzado con el nombre nodeos-compliance-<cluster_name>

  5. En el análisis avanzado, rellena el campo de hosts con una lista separada por comas de todas las IPs de datos de nodos del paso 1.

  6. Sigue los pasos que se indican en el Apéndice: Añadir credenciales SSH de nodos de clúster para añadir credenciales de análisis.

  7. Ve a la pestaña Cumplimiento y elige la última revisión disponible de "DISA STIG Ubuntu 20.04 v1". Guarda la configuración de cumplimiento tal cual, sin modificar los valores predeterminados.

  8. Guarda la configuración del análisis e inicia el análisis.

5.4. Tomarse un descanso

Los análisis deberían tardar más de 30 minutos en completarse. Ahora es un buen momento para descansar o hacer otra cosa hasta que se completen.

6. Exportar resultados de análisis

En esta sección se explica el proceso para exportar los resultados de un análisis.

Descarga los resultados de cada análisis completado:

  1. Selecciona el análisis completado para revisar los resultados.

  2. En la parte superior derecha, haz clic en el botón "Denunciar".

  3. Elige el formato de informe CSV y selecciona todas las columnas.

  4. Haz clic en "Generar informe". Después de un breve retraso, el informe debería descargarse.

  5. Si también necesitas un informe HTML, elige Formato de informe HTML y la plantilla de informe que te parezca adecuada. La plantilla de informe recomendada es "Vulnerabilidades detalladas por complemento con cumplimiento/corrección".

7. Pasos siguientes

Los informes CSV o HTML resultantes deben procesarse de acuerdo con los procesos de seguridad de tu entorno. En caso de duda, ponte en contacto con un punto de contacto de SecOps o Cumplimiento para obtener más instrucciones.

8. Apéndice

8.1. Añadir credenciales SSH de nodos de clúster

En esta sección se explica el proceso para obtener un conjunto de credenciales de SSH para que Nessus analice los nodos de un clúster de destino.

  1. Exporta el archivo kubeconfig del clúster:

    KUBECONFIG=
    
  2. Listar las claves SSH del clúster

    kubectl --kubeconfig=${KUBECONFIG} get -A secret | grep ssh-key
    
  3. Identifique el espacio de nombres del secreto "ssh-key" correspondiente al clúster de destino y exporte el espacio de nombres:

    CLUSTER_NS=
    
  4. Crea un directorio ssh de Nessus:

    NESSUS_FOLDER=nessus
    mkdir -p ${NESSUS_FOLDER}/.ssh
    
  5. Exporta el par de claves SSH al directorio SSH de Nessus:

    kubectl --kubeconfig=${KUBECONFIG:?} get -n ${CLUSTER_NS:?} secret/ssh-key -o jsonpath='{ .data.id_rsa }' | base64 -d > ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
    
    kubectl --kubeconfig=${KUBECONFIG:?} get -n ${CLUSTER_NS:?} secret/ssh-key -o jsonpath='{ .data.id_rsa-cert\.pub }' | base64 -d > ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa-cert.pub
    
  6. Corrija los permisos del par de claves:

    # fix permissions
    chmod 600 ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
    chmod 600 ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa-cert.pub
    
  7. Convierte la clave privada al formato PEM con una frase de contraseña vacía:

    ssh-keygen -p -m PEM -f ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
    

    La salida correcta debería tener un aspecto similar al siguiente:

    Key has comment 'root@te-bd-bootstrapper'
    Enter new passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved with the new passphrase.
    
  8. Transfiere nessus-<cluster>-id_rsa y nessus-<cluster>-id_rsa-cert.pub a la estación de trabajo que se usa para acceder a la interfaz de usuario de Nessus.

  9. En la interfaz de usuario de Nessus, ve a la pestaña Credenciales de la configuración del análisis.

  10. Crea una credencial SSH y elige "certificado" como método de autenticación.

  11. Proporciona los siguientes ajustes para el método de autenticación SSH con certificado:

    • Nombre de usuario: "root"

    • Certificado de usuario: Añadir archivo nessus-<cluster>-id_rsa-cert.pub

    • Clave privada: Añadir archivo nessus-<cluster>-id_rsa

  12. Guarda la configuración de SSH.

  13. Vuelve al lugar donde se hacía referencia a esta sección.