Silenciar las alertas de comprobación de root de OSSEC

3

Estoy intentando silenciar algunas alertas de comprobación de raíz OSSEC como estas: -

** Alert 1456448991.70239: mail  - ossec,rootcheck,
2016 Feb 26 01:09:51 myhost->rootcheck
Rule: 519 (level 7) -> 'System Audit: Vulnerable web application found.'
System Audit: Web vulnerability - Backdoors / Web based malware found - eval(base64_decode. File: /var/www/somepath/app/code/local/Mlx/Mlx/Model/Observer.php.

** Alert 1456448991.70587: mail  - ossec,rootcheck,
2016 Feb 26 01:09:51 myhost->rootcheck
Rule: 519 (level 7) -> 'System Audit: Vulnerable web application found.'
System Audit: Web vulnerability - Backdoors / Web based malware found - eval(base64_decode. File: /var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.

He agregado una regla a rules/local_rules.xml que debería detener las alertas configurando level="0" : -

<group name="rootcheck">

  <rule id="100200" level="0">
    <if_sid>519</if_sid>
    <match>Web vulnerability - Backdoors / Web based malware found - eval(base64_decode</match>
    <match>app/code/local/Mlx/Mlx</match>
    <description>Ignore Magento extension Mlx license restriction PHP</description>
  </rule>

Aquí está la cadena de reglas de las que depende, desde rules/ossec_rules.xml : -

<group name="ossec,">

  <rule id="509" level="0">
    <category>ossec</category>
    <decoded_as>rootcheck</decoded_as>
    <description>Rootcheck event.</description>
    <group>rootcheck,</group>
  </rule>

  <rule id="510" level="7">
    <if_sid>509</if_sid>
    <description>Host-based anomaly detection event (rootcheck).</description>
    <group>rootcheck,</group>
    <if_fts />
  </rule>

  <rule id="516" level="3">
    <if_sid>510</if_sid>
    <match>^System Audit</match>
    <description>System Audit event.</description>
    <group>rootcheck,</group>
  </rule>

  <rule id="519" level="7">
    <if_sid>516</if_sid>
    <match>^System Audit: Web vulnerability</match>
    <description>System Audit: Vulnerable web application found.</description>
    <group>rootcheck,</group>
  </rule>

Estos comandos, ejecutados después de realizar cualquier cambio en la regla, reinician ossec, borran la base de datos de verificación de raíz e inician (después de algún retraso) una nueva verificación de raíz: -

# bin/ossec-control restart
# bin/rootcheck_control -u 000
# bin/agent_control -ru 000

ossec-logtest se puede usar para ver cómo se decodifican las líneas de un archivo de registro y qué reglas se usan para generar alertas, pero parece que no sirve de nada para probar reglas de verificación de raíz: -

# bin/ossec-logtest
2016/02/26 01:52:55 ossec-testrule: INFO: Reading local decoder file.
2016/02/26 01:52:55 ossec-testrule: INFO: Started (pid: 24633).
ossec-testrule: Type one log per line.

System Audit: Web vulnerability - Backdoors / Web based malware found - eval(base64_decode. File: /var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.

**Phase 1: Completed pre-decoding.
       full event: 'System Audit: Web vulnerability - Backdoors / Web based
                    malware found - eval(base64_decode. File:
                    /var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.'
       hostname: 'myhost'
       program_name: '(null)'
       log: 'System Audit: Web vulnerability - Backdoors / Web based
             malware found - eval(base64_decode. File:
             /var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.'

**Phase 2: Completed decoding.
       No decoder matched.

De hecho, no hay decodificadores que descodifiquen esta línea de "registro" (o las variaciones que probé).

Es posible sobrescribir una regla al copiarla en local_rules.xml y agregar el atributo overwrite : -

<rule id="519" level="0" overwrite="yes">
  <if_sid>516</if_sid>
  <match>^System Audit: Web vulnerability</match>
  <description>System Audit: Vulnerable web application found.</description>
  <group>rootcheck,</group>
</rule>

Y habiendo cambiado el atributo level , todas las 519 alertas se silencian.

Así que debe haber algo mal con mi regla. ¿Qué estoy haciendo mal?

    
pregunta jah 26.02.2016 - 03:42
fuente

1 respuesta

1

Lo que estás haciendo mal es suponer que varios elementos <match> en una regla son AND ed cuando en realidad están concatenados. Así que tu regla: -

<group name="rootcheck">

  <rule id="100200" level="0">
    <if_sid>519</if_sid>
    <match>Web vulnerability - Backdoors / Web based malware found - eval(base64_decode</match>
    <match>app/code/local/Mlx/Mlx</match>
  </rule>

no coincidirá con el mensaje sobre el que estás alertando, pero coincidirá con la cadena: -

"Vulnerabilidad de la web - Se encontraron puertas traseras / malware basado en web - eval (base64_decod ea pp / code / local / Mlx / Mlx"

Puedes intentar esto: -

<rule id="100200" level="0">
  <if_sid>519</if_sid>
  <match>System Audit: Web vulnerability - Backdoors / Web based malware found</match>
  <match> - eval(base64_decode. File: /var/www/</match>
  <regex>somepath/app/code/local/Mlx/Mlx|</regex>
  <regex>otherpath/app/code/local/Mlx/Mlx</regex>
  <description>Ignore Magento extension Mlx license restriction PHP</description>
</rule>

Esa regla usa varios elementos match y regex solo para acortar los patrones para hacerlos más legibles. También se concatenan múltiples elementos de expresiones regulares y, en este caso, se obtienen dos patrones OR d (usando el símbolo de tubería para separarlos). Las cadenas de coincidencia y expresión regular resultantes son AND ed para que esta regla funcione como se desea.

Cabe señalar que la regla de trabajo, arriba, es demasiado permisiva: también coincidiría con: -

"Auditoría del sistema: vulnerabilidad de la web - Backdoors / malware basado en web encontrado - eval (base64_decode. Archivo: / var / www / completamente diferente ruta / somepath / app / code / local / Mlx /Mlx/ReallyEvil.php. "

y no activará una alerta por la presencia de algo realmente malvado. Podría ser mejor usar varias reglas que son muy específicas sobre las rutas que coinciden.

Esta primera regla extiende la regla 519 "Auditoría del sistema: se encontró una aplicación web vulnerable", utiliza el mismo nivel de alerta y tiene una descripción y coincidencia ligeramente más específicas: -

<rule id="100200" level="7">
  <if_sid>519</if_sid>
  <match>^System Audit: Web vulnerability - Backdoors / Web based malware found - eval(base64_decode.</match>
  <description>System Audit: Vulnerable web application with possible back door or web based malware found.</description>
  <group>rootcheck</group>
</rule>

Luego, estas reglas adicionales extienden la regla 100200 para suprimir las alertas para archivos específicos, coincidiendo al final del mensaje: -

<rule id="100201" level="0">
  <if_sid>100200</if_sid>
  <match>File: /var/www/somepath/app/code/local/Mlx/Mlx/Model/Observer.php.$</match>
  <description>Ignore Magento extension Mlx license restriction PHP</description>
  <group>rootcheck</group>
</rule>

<rule id="100202" level="0">
  <if_sid>100200</if_sid>
  <match>File: /var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.$</match>
  <description>Ignore Magento extension Mlx license restriction PHP</description>
  <group>rootcheck</group>
</rule>

Verbose, pero más correcto.

    
respondido por el jah 27.02.2016 - 00:11
fuente

Lea otras preguntas en las etiquetas