
Un exemple de politique de détection et de remédiation.
#+Title: Inventaire et remédiation CVE-2016-2118 #+SETUPFILE: ~/src/org-html-themes/setup/theme-readtheorg.setup
[[file:./media/badlock.png]]
Cette politique détecte les hôtes vulnérables à [[https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2118][CVE-2016-2118]] (communément appelé [[http://badlock.org][Badlock]]) en vérifiant si une version vulnérable connue du paquet est actuellement installée. La politique de remédiation maintient =samba= à la version =latest= disponible.
Remarque : Cette politique couvre actuellement centos 5 et 6. Merci d'envisager de contribuer à la prise en charge d'autres plateformes.
Cette politique s'installe à l'aide d'un Makefile traditionnel (mais horriblement
écrit). Pour l'installer, clonez simplement ce dépôt, puis exécutez make install
MASTERFILES=</path/to/policy_root>.
Par exemple : #+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
Après avoir installé la politique dans votre jeu de politiques, vous devez l'ajouter aux inputs afin qu'elle soit analysée.
Si vous exécutez CFEngine =3.7.3=, =3.8.1= ou une version supérieure, vous pouvez utiliser le [[https://docs.cfengine.com/docs/master/reference-language-concepts-augments.html][fichier augments]] pour l'ajouter aux inputs.
Par exemple : #+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ] } #+END_SRC
** =inventory_CVE_2016_2118= Ce bundle vérifie si la version installée de samba correspond à une version vulnérable connue telle que définie dans =data/$(sys.flavor).json=, par exemple : =data/centos_6.json=. Il existe bien sûr d'autres méthodes, comme le gestionnaire de paquets lui-même, qui pourraient être utilisées pour rechercher les versions vulnérables.
Il s'agit d'un bundle autorun, donc si vous utilisez le [[https://github.com/cfengine/masterfiles/][Masterfiles Policy Framework]], (la politique par défaut fournie avec CFEngine), vous pouvez simplement définir la classe =services_autorun=.
#+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ], "classes": { "services_autorun": [ "any" ] } } #+END_SRC
REMARQUE : Lorsque la politique s'exécute et détecte un hôte vulnérable, elle émet un rapport et définit la classe =CVE_2016_2118=.
Par exemple :
#+BEGIN_EXAMPLE R: Detected Vulnerability: CVE-2016-2118 #+END_EXAMPLE
Les utilisateurs de CFEngine Enterprise verront l'interface Inventory Reporting du Mission Portal enrichie d'un nouvel attribut =Vulnerable CVE(s)=.
Par exemple :
[[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= est également un bundle autorun, mais uniquement lorsque la classe =remediate_CVE_2016_2118= est définie.
Il existe de nombreuses façons d'exprimer avec flexibilité quels hôtes et pendant quelles périodes la remédiation automatique est autorisée.
Si vous exécutez =3.7.3=, =3.8.1= ou une version supérieure, vous pouvez l'activer pour l'ensemble de votre infrastructure en l'ajoutant au [[https://docs.cfengine.com/docs/master/reference-language-concepts-augments.html][fichier augments]].
#+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ], "classes": { "services_autorun": [ "any" ], "remediate_CVE_2016_2118": [ "any" ] } } #+END_SRC
La politique recherche la liste des paquets connus comme vulnérables dans un fichier de données json nommé d'après la variante du système telle qu'identifiée par =$(sys.flavor)=, par exemple [[file:data/centos_6.json][=centos_6=]].