
Una política de ejemplo de detección y remediación.
#+Title: Inventario y Remediación de CVE-2016-2118 #+SETUPFILE: ~/src/org-html-themes/setup/theme-readtheorg.setup
[[file:./media/badlock.png]]
Esta política detecta hosts vulnerables a [[https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2118][CVE-2016-2118]] (comúnmente conocida como [[http://badlock.org][Badlock]]) comprobando si una versión de paquete conocida como vulnerable está actualmente instalada. La política de remediación mantiene =samba= en la versión =latest= disponible.
Nota: Esta política actualmente cubre centos 5 y 6. Considera contribuir con soporte para más plataformas.
Esta política se instala mediante un [[file:Makefile][Makefile]] tradicional (aunque horriblemente escrito). Para instalarla, simplemente clona este repositorio y luego ejecuta make install MASTERFILES=</path/to/policy_root>.
Por ejemplo:
#+BEGIN_SRC sh :results raw :wrap EXAMPLE make install MASTERFILES=/tmp/example-a10042 #+END_SRC
#+RESULTS: #+BEGIN_EXAMPLE mkdir -p /tmp/example-a10042/services/cfengine-CVE-2016-2118/cfengine-CVE-2016-2118 rsync -avz --exclude /home/nickanderson/vagrant/tmp/eia/CVE/masterfiles/services/cfengine-CVE-2016-2118/* /tmp/example-a10042/services/cfengine-CVE-2016-2118/ sending incremental file list Makefile README.org main.cf data/ data/centos_5.json data/centos_6.json media/ media/badlock.png
sent 19,776 bytes received 165 bytes 39,882.00 bytes/sec total size is 29,079 speedup is 1.46 find /tmp/example-a10042/services/cfengine-CVE-2016-2118/ -type f | xargs chmod 600 find /tmp/example-a10042/services/cfengine-CVE-2016-2118/ -type d | xargs chmod 700 #+END_EXAMPLE
Después de instalar la política en tu conjunto de políticas, debes añadirla a inputs para que sea analizada.
Si estás ejecutando CFEngine =3.7.3=, =3.8.1= o superior, puedes usar el [[https://docs.cfengine.com/docs/master/reference-language-concepts-augments.html][archivo augments]] para añadirlo a inputs.
Por ejemplo:
#+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ] } #+END_SRC
** =inventory_CVE_2016_2118=
Este bundle comprueba si la versión instalada de samba coincide con una versión vulnerable conocida, tal como se define en =data/$(sys.flavor).json=, por ejemplo: =data/centos_6.json=. Por supuesto, existen otros métodos, como el propio gestor de paquetes, que podrían usarse para buscar versiones vulnerables.
Este es un bundle autorun, así que si estás ejecutando el [[https://github.com/cfengine/masterfiles/][Masterfiles Policy Framework]] (la política predeterminada con la que se distribuye CFEngine), puedes simplemente definir la clase =services_autorun=.
#+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ], "classes": { "services_autorun": [ "any" ] } } #+END_SRC
NOTA: Cuando la política se ejecuta y detecta un host vulnerable, emite un informe y define la clase =CVE_2016_2118=.
Por ejemplo:
#+BEGIN_EXAMPLE R: Detected Vulnerability: CVE-2016-2118 #+END_EXAMPLE
Los usuarios de CFEngine Enterprise verán la interfaz de informes de inventario en Mission Portal ampliada con un nuevo atributo =Vulnerable CVE(s)=.
Por ejemplo:
[[file:./media/vulnerable_cves_inventory_attribute.png]]
[[file:./media/inventory_report_vulnerable_cves.png]]
[[file:./media/inventory_report_vulnerable_cves_chart.png]]
[[file:./media/define_alert.png]]
[[file:./media/alert_status_vulnerable_hosts.png]]
** =remediate_CVE_2016_2118=
=remediate_CVE_2016_2118= también es un bundle autorun, pero solo cuando la clase =remediate_CVE_2016_2118= está definida.
Existen numerosas formas de expresar de manera flexible qué hosts y durante qué períodos de tiempo se permite la remediación automática.
Si estás ejecutando =3.7.3=, =3.8.1= o superior, puedes habilitarlo para toda tu infraestructura añadiéndolo al [[https://docs.cfengine.com/docs/master/reference-language-concepts-augments.html][archivo augments]].
#+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ], "classes": { "services_autorun": [ "any" ], "remediate_CVE_2016_2118": [ "any" ] } } #+END_SRC
La política busca la lista de paquetes que se sabe que son vulnerables en un archivo de datos json nombrado según el flavor del sistema, tal como lo identifica =$(sys.flavor)=, por ejemplo [[file:data/centos_6.json][=centos_6=]].