
An example detection and remediation policy.
#+Title: Инвентаризация и исправление CVE-2016-2118 #+SETUPFILE: ~/src/org-html-themes/setup/theme-readtheorg.setup
[[file:./media/badlock.png]]
Эта политика обнаруживает хосты, уязвимые для [[https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2118][CVE-2016-2118]] (обычно известного как [[http://badlock.org][Badlock]]), проверяя, установлена ли известная уязвимая версия пакета. Политика исправления поддерживает =samba= на последней доступной версии.
Примечание: Эта политика в настоящее время охватывает centos 5 и 6. Пожалуйста, рассмотрите возможность поддержки других платформ.
Эта политика устанавливается с помощью традиционного (но ужасно написанного) [[file:Makefile][Makefile]]. Для установки просто клонируйте этот репозиторий, а затем выполните make install MASTERFILES=</path/to/policy_root>.
Например: #+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
После установки политики в ваш набор политик необходимо добавить её в inputs, чтобы она была обработана.
Если вы используете CFEngine =3.7.3=, =3.8.1= или выше, вы можете использовать [[https://docs.cfengine.com/docs/master/reference-language-concepts-augments.html][файл augments]], чтобы добавить её в inputs.
Например: #+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ] } #+END_SRC
** =inventory_CVE_2016_2118= Этот бандл проверяет, соответствует ли установленная версия samba известной уязвимой версии, определённой в =data/$(sys.flavor).json=, например: =data/centos_6.json=. Существуют, конечно, и другие методы, такие как сам менеджер пакетов, которые можно использовать для поиска уязвимых версий.
Это автозапускаемый бандл, поэтому, если вы используете [[https://github.com/cfengine/masterfiles/][Masterfiles Policy Framework]] (политика по умолчанию, поставляемая с CFEngine), вы можете просто определить класс =services_autorun=.
#+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ], "classes": { "services_autorun": [ "any" ] } } #+END_SRC
ПРИМЕЧАНИЕ: Когда политика запускается и обнаруживает уязвимый хост, она выдаёт отчёт и определяет класс =CVE_2016_2118=.
Например:
#+BEGIN_EXAMPLE R: Detected Vulnerability: CVE-2016-2118 #+END_EXAMPLE
Пользователи CFEngine Enterprise увидят интерфейс Inventory Reporting в Mission Portal, дополненный новым атрибутом =Vulnerable CVE(s)=.
Например:
[[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= также является автозапускаемым бандлом, но только когда определён класс =remediate_CVE_2016_2118=.
Существует множество способов гибко указать, какие хосты и в какие периоды времени разрешено автоматическое исправление.
Если вы используете =3.7.3=, =3.8.1= или выше, вы можете включить её для всей инфраструктуры, добавив её в [[https://docs.cfengine.com/docs/master/reference-language-concepts-augments.html][файл augments]].
#+BEGIN_SRC json { "inputs": [ "services/cfengine-CVE-2016-2118/main.cf" ], "classes": { "services_autorun": [ "any" ], "remediate_CVE_2016_2118": [ "any" ] } } #+END_SRC
Политика ищет список пакетов, известных как уязвимые, в JSON-файле данных, названном по flavor системы, определяемому =$(sys.flavor)=, например [[file:data/centos_6.json][=centos_6=]].