
An example detection and remediation policy.
#+Title: CVE-2016-2118 Inventário e Remediação #+SETUPFILE: ~/src/org-html-themes/setup/theme-readtheorg.setup
[[file:./media/badlock.png]]
Esta política detecta hosts vulneráveis ao [[https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2118][CVE-2016-2118]] (comumente conhecido como [[http://badlock.org][Badlock]]) verificando se uma versão de pacote conhecida como vulnerável está atualmente instalada. A política de remediação mantém =samba= na versão =latest= disponível.
Nota: Esta política atualmente cobre centos 5 e 6. Por favor, considere contribuir com suporte para mais plataformas.
Esta política é instalada utilizando um [[file:Makefile][Makefile]] tradicional (mas horrivelmente escrito). Para
instalar, simplesmente clone este repositório e então execute make install
MASTERFILES=</path/to/policy_root>.
Por exemplo: #+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
Após instalar a política no seu conjunto de políticas, você precisa adicioná-la às entradas (inputs) para que seja interpretada.
Se você estiver executando CFEngine =3.7.3=, =3.8.1= ou superior, você pode usar o [[https://docs.cfengine.com/docs/master/reference-language-concepts-augments.html][arquivo de aumentos]] para adicioná-lo às entradas.
Por exemplo: #+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ] } #+END_SRC
** =inventory_CVE_2016_2118= Este bundle verifica se a versão instalada do samba corresponde a uma versão vulnerável conhecida, conforme definido em =data/$(sys.flavor).json=, por exemplo: =data/centos_6.json=. Existem, claro, outros métodos como o próprio gerenciador de pacotes que poderiam ser usados para procurar versões vulneráveis.
Este é um bundle autorun, então se você estiver executando o [[https://github.com/cfengine/masterfiles/][Masterfiles Policy Framework]], (a política padrão que acompanha o CFEngine), você pode simplesmente definir a classe =services_autorun=.
#+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ], "classes": { "services_autorun": [ "any" ] } } #+END_SRC
NOTA: Quando a política é executada e detecta um host vulnerável, ela emite um relatório e define a classe =CVE_2016_2118=.
Por exemplo:
#+BEGIN_EXAMPLE R: Detected Vulnerability: CVE-2016-2118 #+END_EXAMPLE
Os usuários do CFEngine Enterprise verão a interface de Relatórios de Inventário no Mission Portal aumentada com um novo atributo =Vulnerable CVE(s)=.
Por exemplo:
[[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= também é um bundle autorun, mas apenas quando a classe =remediate_CVE_2016_2118= está definida.
Existem diversas maneiras de expressar flexivelmente quais hosts e durante quais períodos de tempo a remediação automática é permitida.
Se você estiver executando =3.7.3=, =3.8.1= ou superior, pode ativá-la para toda a sua infraestrutura adicionando-a ao [[https://docs.cfengine.com/docs/master/reference-language-concepts-augments.html][arquivo de aumentos]].
#+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ], "classes": { "services_autorun": [ "any" ], "remediate_CVE_2016_2118": [ "any" ] } } #+END_SRC
A política procura a lista de pacotes que são conhecidos como vulneráveis em um arquivo de dados json nomeado de acordo com o flavor do sistema, conforme identificado por =$(sys.flavor)=, por exemplo [[file:data/centos_6.json][=centos_6=]].