CVE-Manager: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 10: | Строка 10: | ||
# <b>cve-manager</b> - диалоговый интерфейс для запуска всех остальных модулей; | # <b>cve-manager</b> - диалоговый интерфейс для запуска всех остальных модулей; | ||
# <b>cve-backup</b> - осуществляет резервное копирование/восстановление ранее сформированной БДУ; | # <b>cve-backup</b> - осуществляет резервное копирование/восстановление ранее сформированной БДУ; | ||
# <b>cve-download</b> - осуществляет загрузку по | # <b>cve-download</b> - осуществляет загрузку по HTTPS списков уязвимостей, предоставляемых NVD (National Vulnerability Database) и ФСТЭК (Федеральная служба по техническому и экспортному контролю), а также CPE словаря; | ||
# <b>cve-import</b> - осуществляет для выбранных репозиториев внесение списка пакетов, которые размещены на alt-сервере (например | # <b>cve-import</b> - осуществляет для выбранных репозиториев внесение списка пакетов, которые размещены на alt-сервере (например <code>/ALT/p8/files/list/src.list</code> и <code>/ALT/p8/files/list/bin.list</code> для ветви <i>p8</i>), а также внесение загруженных списков уязвимостей и CPE словаря в БД MySQL; Имеет возможность фильтрации импортируемых списков пакетов в соответствии с содержимым предоставляемого текстового файла, каждая строка которого является названием пакета, информация о котором должна быть учтена в БДУ; | ||
# <b>cve-fixes</b> - извлекает 'Fixes' записи и URL из метаданных всех исходных пакетов рассматриваемых репозиториев, использует <i>gb-x-parse-vulns-from-changelog</i>; | # <b>cve-fixes</b> - извлекает 'Fixes' записи и URL из метаданных всех исходных пакетов рассматриваемых репозиториев, использует <i>gb-x-parse-vulns-from-changelog</i>; | ||
# <b>cpe-map</b> - осуществляет установление соответствия импортированных в БД названий исходных пакетов рассматриваемых репозиториев и 1) названий программных продуктов из импортированного в БД CPE словаря, а также 2) названий программных продуктов из импортированного в БД списка уязвимостей ФСТЭК; | # <b>cpe-map</b> - осуществляет установление соответствия импортированных в БД названий исходных пакетов рассматриваемых репозиториев и 1) названий программных продуктов из импортированного в БД CPE словаря, а также 2) названий программных продуктов из импортированного в БД списка уязвимостей ФСТЭК; | ||
Строка 19: | Строка 19: | ||
## <i>lesser version</i> - версия пакета в репозитории меньше данной уязвимой версии; | ## <i>lesser version</i> - версия пакета в репозитории меньше данной уязвимой версии; | ||
## <i>[NO FIX]</i> - версия пакета в репозитори совпадает с уязвимой версией пакета и устранение данной уязвимости не зафиксировано; | ## <i>[NO FIX]</i> - версия пакета в репозитори совпадает с уязвимой версией пакета и устранение данной уязвимости не зафиксировано; | ||
# <b>cve-monitor</b> - предназначен для посылки запросов в БД и выдачи результатов, например получение списка всех пакетов с имеющимися незакрытыми уязвимостями; На данный момент (версия 0.17) результаты представляются в произвольной текстовой форме, в ближайшей перспективе возможность их получения в формате XML/JSON/YAML. | # <b>cve-monitor</b> - предназначен для посылки запросов в БД и выдачи результатов, например получение списка всех пакетов с имеющимися незакрытыми уязвимостями; На данный момент (версия 0.17.0) результаты представляются в произвольной текстовой форме, в ближайшей перспективе возможность их получения в формате XML/JSON/YAML. | ||
Все модули кроме cve-import написаны на Python, cve-import написан на C++. | Все модули кроме <i>cve-import</i> написаны на Python, <i>cve-import</i> написан на C++. | ||
== Настройка == | == Настройка == | ||
Строка 26: | Строка 26: | ||
Параметры <i>cve-manager</i> определяются файлом ini-формата <code>/etc/cve-manager/cve-manager.conf</code>. Данный ini-файл состоит из следующих секций: | Параметры <i>cve-manager</i> определяются файлом ini-формата <code>/etc/cve-manager/cve-manager.conf</code>. Данный ini-файл состоит из следующих секций: | ||
# <b><i>database</i></b>, содержащей параметры соединения с базой данных MySQL; | # <b><i>database</i></b>, содержащей параметры соединения с базой данных MySQL; | ||
# <b><i>branches</i></b>, содержащей метки о рассмотрении (значение 1) или не рассмотрении (значение 0) соответствующей ветви Sisyphus; | # <b><i>branches</i></b>, содержащей метки о рассмотрении (значение 1) или не рассмотрении (значение 0) соответствующей ветви <i>Sisyphus</i>; | ||
# <b><i>paths</i></b>, в которой указывается путь к корневому каталогу alt-сервера, а также путь к каталогу, в который <i>cve-download</i> загружает входные данные и откуда <i>cve-import</i> их импортирует в БД. | # <b><i>paths</i></b>, в которой указывается путь к корневому каталогу alt-сервера, а также путь к каталогу, в который <i>cve-download</i> загружает входные данные и откуда <i>cve-import</i> их импортирует в БД. | ||
Файл настройки принадлежит пользователю <i>root</i>, относится к группе <i>cve</i> и имеет режим <i>rw- | Файл настройки принадлежит пользователю <i>root</i>, относится к группе <i>cve</i> и имеет режим <i>rw-rw----</i>. Также группе <i>cve</i> принадлежат все модули, кроме модуля <i>cve-monitor</i>. Таким образом вносить изменения в БДУ могут только члены группы <i>cve</i>. При этом <i>cve-monitor</i> имеет свой файл настройки <code>/etc/cve-manager/cve-monitor.conf</code>, позволяющий осуществлять соединение с БДУ с правом только на чтение (SELECT) пользователям, не являющимся членами группы <i>cve</i> - структура данного файла повторяет структуру файла <code>cve-manager.conf</code> за исключением отсутствия секции <i>paths</i>. | ||
== Использование == | == Использование == | ||
Строка 35: | Строка 35: | ||
<code>cve-manager [-h] [-a] [-t] [-p] [-d]</code> | <code>cve-manager [-h] [-a] [-t] [-p] [-d]</code> | ||
<br> | <br> | ||
:<i>-h, --help</i> - Вывод справки; | :<i>-h, --help</i> - Вывод справки; | ||
:<i>-a, --auto</i> - Запуск модулей один за другим в автоматическом режиме; | :<i>-a, --auto</i> - Запуск модулей один за другим в автоматическом режиме; | ||
:<i>-s MODULE_NAME, --starting_step MODULE_NAME</i> - Запуск работы в автоматическом режиме с указанного шага (название модуля без приставки "cve-") | :<i>-s MODULE_NAME, --starting_step MODULE_NAME</i> - Запуск работы в автоматическом режиме с указанного шага (название модуля без приставки "cve-") | ||
:<i>-t, --timer</i> - Задействование таймера, который измеряет интервалы времени исполнения запускаемых модулей; | :<i>-t, --timer</i> - Задействование таймера, который измеряет интервалы времени исполнения запускаемых модулей; | ||
:<i>-p, --plain</i> - Упрощенный вывод (следует использовать, например, при записи в файл). | :<i>-p, --plain</i> - Упрощенный вывод (следует использовать, например, при записи в файл). | ||
При запуске без параметра "<i>-a</i>" <i>cve-manager</i> работает в диалоговом режиме - на каждом шаге выводится справочная информация о возможных действиях. На первом шаге следует выбрать нужный для использования в данный момент модуль, при выборе модуля выводится справочная информация данного модуля. При начале работы с нуля следует запускать модули в том порядке, в котором они перечислены в разделе "Структура программы". | При запуске без параметра "<i>-a</i>" <i>cve-manager</i> работает в диалоговом режиме - на каждом шаге выводится справочная информация о возможных действиях. На первом шаге следует выбрать нужный для использования в данный момент модуль, при выборе модуля выводится справочная информация данного модуля. При начале работы с нуля следует запускать модули в том порядке, в котором они перечислены в разделе "Структура программы". | ||
Строка 46: | Строка 46: | ||
Для работы <i>cve-manager</i> нет необходимости устанавливать MySQL сервер и создавать БД уязвимостей в своём окружении - в настройках <i>cve-manager</i> может быть указан адрес удалённого сервера. Тем не менее, это можно сделать, выполнив следующие шаги:<br> | Для работы <i>cve-manager</i> нет необходимости устанавливать MySQL сервер и создавать БД уязвимостей в своём окружении - в настройках <i>cve-manager</i> может быть указан адрес удалённого сервера. Тем не менее, это можно сделать, выполнив следующие шаги:<br> | ||
1) Установить MySQL сервер: | 1) Установить MySQL сервер: | ||
::<code>apt-get install MySQL-server</code> | ::<code>apt-get install MySQL-server</code> | ||
2) Внести изменения в файл настройки MySQL сервера <i>/etc/my.cnf.d/server.cnf</i>: | 2) Внести изменения в файл настройки MySQL сервера <i>/etc/my.cnf.d/server.cnf</i>: | ||
::<code>#skip-networking<br>bind-address = 127.0.0.1</code> | ::<code>#skip-networking<br>bind-address = 127.0.0.1</code> | ||
3) Перезапустить MySQL сервер и запустить MySQL консоль: | 3) Перезапустить MySQL сервер и запустить MySQL консоль: | ||
::<code>su -l -c 'service mysqld restart'</code | ::<code>su -l -c 'service mysqld restart'</code> | ||
::<code>mysql -u root</code> | ::<code>mysql -u root</code> | ||
4) Задать пароль пользователя MySQL с именем <i>root</i>: | 4) Задать пароль пользователя MySQL с именем <i>root</i>: | ||
::<code><b><i>mysql></i></b> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root-passwd');</code | ::<code><b><i>mysql></i></b> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root-passwd');</code> | ||
::, где <i>root-passwd</i> - задаваемый пароль пользователя <i>root</i>; | ::, где <i>root-passwd</i> - задаваемый пароль пользователя <i>root</i>; | ||
5) Добавить пользователя MySQL, от имени которого будет осуществляться | 5) Добавить пользователя MySQL, от имени которого будет осуществляться формирование БД: | ||
::<code><b><i>mysql></i></b> | ::<code><b><i>mysql></i></b> GRANT ALL PRIVILEGES ON *.* to 'user-name'@'localhost' IDENTIFIED BY 'user-passwd';</code> | ||
::, где <i>user-name</i> - имя пользователя, <i>user-passwd</i>- пароль пользователя; | ::, где <i>user-name</i> - имя пользователя, <i>user-passwd</i>- пароль пользователя; | ||
6) При использовании MySQL-server версии >= 5.7 может возникнуть его несовместимость с используемыми C++ и Python MySQL-фреймворками; | 6) Добавить пользователя MySQL, от имени которого будут осуществляться запросы на чтение записей БД (мониторинг): | ||
Для исправления этого следует (например, для совместимости с версией 5.6): | ::<code><b><i>mysql></i></b> GRANT SELECT ON *.* TO 'monitor'@'localhost' IDENTIFIED BY 'monitor';</code> | ||
: | |||
:::<code>mysql -u root -p</code | 7) При использовании MySQL-server версии >= 5.7 может возникнуть его несовместимость с используемыми C++ и Python MySQL-фреймворками; Для исправления этого следует (например, для совместимости с версией 5.6): | ||
:::<code><b><i>mysql></i></b> set @@global.show_compatibility_56=ON;</code | :7.1) Задать режим обратной совместимости в mysql консоли: | ||
: | :::<code>mysql -u root -p</code> | ||
:::<code><b><i>mysql></i></b> set @@global.show_compatibility_56=ON;</code> | |||
:7.2) Добавить в файл <i>/etc/my.cnf.d/server.cnf</i> строку: | |||
:::<code>show_compatibility_56 = 1</code> | :::<code>show_compatibility_56 = 1</code> | ||
Версия от 02:00, 12 сентября 2018
cve-manager - консольная программа, предназначенная для отслеживания уязвимостей программного обеспечения, имеет модульную структуру, написана на Python и C++. Распространяется по лицензии GPLv3.0.
Назначение
cve-manager предназначен для формирования базы данных уязвимостей (БДУ) программ, которые находятся в заданных репозиториях rpm-пакетов, а также для предоставления интерфейса доступа к записям сформированной БД (например, для дальнейшего их представления на web-ресурсе, или осуществления почтовой рассылки).
Структура программы
cve-manager состоит из следующих модулей:
- cve-manager - диалоговый интерфейс для запуска всех остальных модулей;
- cve-backup - осуществляет резервное копирование/восстановление ранее сформированной БДУ;
- cve-download - осуществляет загрузку по HTTPS списков уязвимостей, предоставляемых NVD (National Vulnerability Database) и ФСТЭК (Федеральная служба по техническому и экспортному контролю), а также CPE словаря;
- cve-import - осуществляет для выбранных репозиториев внесение списка пакетов, которые размещены на alt-сервере (например
/ALT/p8/files/list/src.list
и/ALT/p8/files/list/bin.list
для ветви p8), а также внесение загруженных списков уязвимостей и CPE словаря в БД MySQL; Имеет возможность фильтрации импортируемых списков пакетов в соответствии с содержимым предоставляемого текстового файла, каждая строка которого является названием пакета, информация о котором должна быть учтена в БДУ; - cve-fixes - извлекает 'Fixes' записи и URL из метаданных всех исходных пакетов рассматриваемых репозиториев, использует gb-x-parse-vulns-from-changelog;
- cpe-map - осуществляет установление соответствия импортированных в БД названий исходных пакетов рассматриваемых репозиториев и 1) названий программных продуктов из импортированного в БД CPE словаря, а также 2) названий программных продуктов из импортированного в БД списка уязвимостей ФСТЭК;
- cve-issues - осуществляет установление соответствия между данными, внесёнными в БД с помощью модулей cve-import, cpe-map, cve-fixes, а именно - записи в БД вида "<CVE или ФСТЭК идентификатор>, <название пакета>, <Fix-status>", где <Fix-status> - значение из следующего набора:
- changelog - устранение данной уязвимости обозначено в changelog-секции пакета;
- bigger version - версия пакета в репозитории больше данной уязвимой версии;
- lesser version - версия пакета в репозитории меньше данной уязвимой версии;
- [NO FIX] - версия пакета в репозитори совпадает с уязвимой версией пакета и устранение данной уязвимости не зафиксировано;
- cve-monitor - предназначен для посылки запросов в БД и выдачи результатов, например получение списка всех пакетов с имеющимися незакрытыми уязвимостями; На данный момент (версия 0.17.0) результаты представляются в произвольной текстовой форме, в ближайшей перспективе возможность их получения в формате XML/JSON/YAML.
Все модули кроме cve-import написаны на Python, cve-import написан на C++.
Настройка
Параметры cve-manager определяются файлом ini-формата /etc/cve-manager/cve-manager.conf
. Данный ini-файл состоит из следующих секций:
- database, содержащей параметры соединения с базой данных MySQL;
- branches, содержащей метки о рассмотрении (значение 1) или не рассмотрении (значение 0) соответствующей ветви Sisyphus;
- paths, в которой указывается путь к корневому каталогу alt-сервера, а также путь к каталогу, в который cve-download загружает входные данные и откуда cve-import их импортирует в БД.
Файл настройки принадлежит пользователю root, относится к группе cve и имеет режим rw-rw----. Также группе cve принадлежат все модули, кроме модуля cve-monitor. Таким образом вносить изменения в БДУ могут только члены группы cve. При этом cve-monitor имеет свой файл настройки /etc/cve-manager/cve-monitor.conf
, позволяющий осуществлять соединение с БДУ с правом только на чтение (SELECT) пользователям, не являющимся членами группы cve - структура данного файла повторяет структуру файла cve-manager.conf
за исключением отсутствия секции paths.
Использование
Запуск cve-manager:
cve-manager [-h] [-a] [-t] [-p] [-d]
- -h, --help - Вывод справки;
- -a, --auto - Запуск модулей один за другим в автоматическом режиме;
- -s MODULE_NAME, --starting_step MODULE_NAME - Запуск работы в автоматическом режиме с указанного шага (название модуля без приставки "cve-")
- -t, --timer - Задействование таймера, который измеряет интервалы времени исполнения запускаемых модулей;
- -p, --plain - Упрощенный вывод (следует использовать, например, при записи в файл).
При запуске без параметра "-a" cve-manager работает в диалоговом режиме - на каждом шаге выводится справочная информация о возможных действиях. На первом шаге следует выбрать нужный для использования в данный момент модуль, при выборе модуля выводится справочная информация данного модуля. При начале работы с нуля следует запускать модули в том порядке, в котором они перечислены в разделе "Структура программы".
Разворачивание базы данных уязвимостей
Для работы cve-manager нет необходимости устанавливать MySQL сервер и создавать БД уязвимостей в своём окружении - в настройках cve-manager может быть указан адрес удалённого сервера. Тем не менее, это можно сделать, выполнив следующие шаги:
1) Установить MySQL сервер:
apt-get install MySQL-server
2) Внести изменения в файл настройки MySQL сервера /etc/my.cnf.d/server.cnf:
#skip-networking
bind-address = 127.0.0.1
3) Перезапустить MySQL сервер и запустить MySQL консоль:
su -l -c 'service mysqld restart'
mysql -u root
4) Задать пароль пользователя MySQL с именем root:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root-passwd');
- , где root-passwd - задаваемый пароль пользователя root;
5) Добавить пользователя MySQL, от имени которого будет осуществляться формирование БД:
mysql> GRANT ALL PRIVILEGES ON *.* to 'user-name'@'localhost' IDENTIFIED BY 'user-passwd';
- , где user-name - имя пользователя, user-passwd- пароль пользователя;
6) Добавить пользователя MySQL, от имени которого будут осуществляться запросы на чтение записей БД (мониторинг):
mysql> GRANT SELECT ON *.* TO 'monitor'@'localhost' IDENTIFIED BY 'monitor';
7) При использовании MySQL-server версии >= 5.7 может возникнуть его несовместимость с используемыми C++ и Python MySQL-фреймворками; Для исправления этого следует (например, для совместимости с версией 5.6):
- 7.1) Задать режим обратной совместимости в mysql консоли:
mysql -u root -p
mysql> set @@global.show_compatibility_56=ON;
- 7.2) Добавить в файл /etc/my.cnf.d/server.cnf строку:
show_compatibility_56 = 1