CVE-Manager: различия между версиями
Нет описания правки |
Нет описания правки |
||
(не показано 39 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
<b>cve-manager</b> - консольная программа, предназначенная для формирования базы данных уязвимостей программ заданных репозиториев rpm-пакетов, а также для | <b>cve-manager</b> - консольная программа, предназначенная 1) для формирования базы данных уязвимостей (БДУ) программ, входящих в состав заданных репозиториев rpm-пакетов, а также 2) для осуществления анализа записей сформированной БДУ и подготовки отчётов на основе результатов этого анализа (в том числе с осуществлением рассылки по электронной почте). | ||
На данный момент поддерживается два источника списков уязвимостей - NVD (National Vulnerability Database) и ФСТЭК (Федеральная служба по техническому и экспортному контролю). | Основными входными данными программы являются списки, содержащие названия и версии исходных и бинарных пакетов рассматриваемых репозиториев, а также списки известных уязвимостей. На данный момент поддерживается два источника списков известных уязвимостей - NVD (National Vulnerability Database) и ФСТЭК (Федеральная служба по техническому и экспортному контролю). | ||
Программа имеет модульную структуру, написана на Python и C++, использует MySQL. Распространяется по лицензии GPLv3.0. | |||
== Структура программы == | == Структура программы == | ||
<i>cve-manager</i> состоит из следующих модулей: | <i>cve-manager</i> состоит из следующих модулей: | ||
# <b>cve-manager</b> - | # <b>cve-manager</b> - предоставляет пользовательский интерфейс для запуска процесса формирования БДУ и осуществляет организацию и контроль данного процесса путём последовательного запуска остальных модулей в установленном порядке в автоматическом режиме; | ||
# <b>cve-backup</b> - осуществляет резервное копирование/восстановление ранее сформированной | # <b>cve-backup</b> - осуществляет резервное копирование/восстановление ранее сформированной БДУ; | ||
# <b>cve-history</b> - осуществляет выборку незакрытых уязвимостей по текущему состоянию БДУ и сохраняет их в отдельной таблице с целью обеспечения возможности сравнения будущего состояния БДУ с этим сохранённым состоянием; | |||
# <b>cve-download</b> - осуществляет загрузку по HTTPS списков уязвимостей, предоставляемых NVD и ФСТЭК, а также CPE словаря; | # <b>cve-download</b> - осуществляет загрузку по HTTPS списков уязвимостей, предоставляемых NVD и ФСТЭК, а также CPE словаря; | ||
# <b>cve-import</b> - осуществляет для выбранных репозиториев внесение | # <b>cve-import</b> - осуществляет для выбранных репозиториев внесение данных из списков пакетов, которые могу быть размещены на alt-сервере (например, <code>alt:/ALT/p9/files/list/bin.list</code> для ветви <i>p9</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) названий программных продуктов из импортированного в БД списка уязвимостей ФСТЭК; | ||
# <b>cve-issues</b> - осуществляет установление соответствия между данными, внесёнными в БД с помощью модулей <i>cve-import</i>, <i>cpe-map</i> | # <b>cve-issues</b> - осуществляет установление соответствия между данными, внесёнными в БД с помощью модулей <i>cve-import</i>, <i>cpe-map</i> и <i>cve-fixes</i>, а именно - формирует записи в БД вида <code><CVE/ФСТЭК идентификатор>, <название пакета>, <CPE/ФСТЭК название уязвимого программного продукта>, <версия пакета>, <уязвимая версия программного продукта>, <fix-status></code>, где <code><fix-status></code> - значение из следующего набора (или комбинация из данных значений): | ||
## <i>changelog</i> - устранение данной уязвимости обозначено в changelog-секции пакета; | ## <i>changelog</i> - устранение данной уязвимости обозначено в changelog-секции пакета; | ||
## <i>bigger | ## <i>bigger ver</i> - версия пакета в репозитории больше данной уязвимой версии; | ||
## <i>lesser | ## <i>[lesser ver]</i> - версия пакета в репозитории меньше данной уязвимой версии; | ||
## <i>[NO FIX]</i> - версия пакета в репозитори совпадает с уязвимой версией программного продукта и устранение данной уязвимости не зафиксировано. | ## <i>[NO FIX]</i> - версия пакета в репозитори совпадает с уязвимой версией программного продукта и устранение данной уязвимости не зафиксировано. | ||
# <b>cve-monitor</b> - предназначен для посылки запросов выборки из таблиц БДУ и выдачи результатов, например формирование списка всех пакетов с имеющимися незакрытыми уязвимостями или списка всех закрытых уязвимостей одной ветви, которые не закрыты в другой; На данный момент (версия 0. | # <b>cve-monitor</b> - предназначен для посылки запросов выборки из таблиц БДУ и выдачи результатов (отчётов), например формирование списка всех пакетов с имеющимися незакрытыми уязвимостями или списка всех закрытых уязвимостей одной ветви, которые не закрыты в другой; Формируемые отчёты могут рассылаться на задаваемые адреса электронной почты; На данный момент (версия 0.28) отчёты предоставляются в собственном формате (см. подраздел <i>"Мониторинг уязвимостей пакетов"</i>), в перспективе возможность их получения в формате XML и JSON. | ||
Все модули кроме <i>cve-import</i> написаны на Python, <i>cve-import</i> написан на C++. | Все модули кроме <i>cve-import</i> написаны на Python, <i>cve-import</i> написан на C++. | ||
Строка 35: | Строка 36: | ||
=== Настройка серверной части === | === Настройка серверной части === | ||
Параметры <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 (<i>server, user, passwd, schema</i>); | ||
# <b><i>common</i></b>, в которой указывается | # <b><i>common</i></b>, в которой указывается путь к каталогу, в который <i>cve-download</i> загружает входные данные и откуда <i>cve-import</i> их импортирует в БД (<i>download</i>), название основной ветви, значения времени сборки пакетов которой будут учитываться при определении соответствия имён исходных пакетов и имён уязвимых программных продуктов (<i>master_branch</i>), путь к корневому каталогу alt-сервера (<i>basealt</i>), а также источники списков уязвимостей, исключаемые из рассмотрения (<i>excluded_vulsrc</i> с возможными значениями <i>nvd</i> и <i>fstec</i>), при этом первые два параметра являются обязательными. | ||
Прочие секции файла настройки воспринимаются как названия ветвей <i>Sisyphus</i>, информация об уязвимостях которых должна быть помещена в БДУ. Каждая из таких секций может включать определение следующих параметров: | Прочие секции файла настройки воспринимаются как названия ветвей <i>Sisyphus</i>, информация об уязвимостях которых должна быть помещена в БДУ. Каждая из таких секций может включать определение следующих параметров: | ||
Строка 56: | Строка 57: | ||
basealt = /space/ | basealt = /space/ | ||
download = ~/.cve-manager/ | download = ~/.cve-manager/ | ||
excluded_vulsrc = fstec | |||
master_branch = Sisyphus | |||
[Sisyphus] | [Sisyphus] | ||
Строка 70: | Строка 73: | ||
</source> | </source> | ||
Файл настройки принадлежит пользователю <i>root</i>, относится к группе <i>cve</i> и имеет режим <i>rw-rw----</i>. Также группе <i>cve</i> принадлежат все модули, кроме модуля <i>cve-monitor</i>. Таким образом вносить изменения в БДУ могут только члены группы <i>cve</i>. Добавить пользователя в группу <i>cve</i> можно с помощью следующей команды: | Файл настройки принадлежит пользователю <i>root</i>, относится к группе <i>cve</i> и имеет режим <i>rw-rw----</i>. Также группе <i>cve</i> принадлежат все модули, кроме модуля <i>cve-monitor</i>. Таким образом вносить изменения в БДУ помимо пользователя <i>root</i> могут только члены группы <i>cve</i>. Добавить пользователя в группу <i>cve</i> можно с помощью следующей команды: | ||
:<code>usermod -a -G cve <user-name></code> | :<code>usermod -a -G cve <user-name></code> | ||
=== Настройка клиентской части === | === Настройка клиентской части === | ||
<i>cve-monitor</i> имеет свой файл настройки <code>/etc/cve-manager/cve-monitor.conf</code>, позволяющий пользователям, не являющимся членами группы <i>cve</i>, осуществлять соединение с БДУ с правом только на чтение (SQL-запрос <i>SELECT</i>) - структура данного файла повторяет структуру файла <code>cve-manager.conf</code> (см. подраздел <i>Настройка серверной части</i>), при этом секция <i>common</i>, а также параметры ветвей ни на что не влияют, | <i>cve-monitor</i> имеет свой файл настройки <code>/etc/cve-manager/cve-monitor.conf</code>, позволяющий пользователям, не являющимся членами группы <i>cve</i>, осуществлять соединение с БДУ с правом только на чтение (SQL-запрос <i>SELECT</i>) - структура данного файла повторяет структуру файла <code>cve-manager.conf</code> (см. подраздел <i>"Настройка серверной части"</i>), при этом секция <i>common</i>, а также параметры ветвей ни на что не влияют, за исключением дополнительного параметра ветвей <i>seniors</i>, в котором перечисляются старшие ветви по отношению к данной, и которые будут использованы при формировании предложений по устранению существующих в данной ветви уязвимостей (при передаче флага <code>--cure</code> модулю <i>cve-monitor</i>), например: | ||
:<source> | |||
[p9] | |||
seniors = Sisyphus | |||
[p8] | |||
seniors = ${p9:seniors}, p9 | |||
</source> | |||
Для настройки почтовой рассылки <i>cve-monitor</i> существует другой конфигурационной файл - <code>/etc/cve-manager/cve-mail.conf</code>, содержащий настройки соединения с почтовым сервером и списки адресатов, которые задаются группами в секции <i>recipients</i>; При запуске <i>cve-monitor</i> с флагом <code>--mail</code> следует передать название группы адресатов; Так, например, пусть файл настройки почтовой рассылки имеет следующее содержимое | |||
:<source> | |||
[connection] | |||
host = some_host.com | |||
port = 25 | |||
username = some_mail_account | |||
passwd = password_of_the_mail_account | |||
raddress = some_mail_account@some_host.com | |||
[recipients] | |||
weekly = "some_email1@altlinux.org", "some_email2@basealt.ru", "some_email3@basealt.ru" | |||
daily = "some_email4@altlinux.org", "some_email5@basealt.ru" | |||
some_other_group_of_recipients = "some_other_email@some_other_host.com" | |||
</source> | |||
Тогда, например, для того чтобы результаты команды <code>cve-monitor --show issues unfixed --group</code> после формирования были отправлены группе адресатов <i>daily</i> следует исполнить следующую команду:<br> | |||
:<code>cve-monitor --show issues unfixed --group --mail daily</code> | |||
=== Внутренние знания cve-manager === | |||
Пакет <i><b>cve-manager-inner-knowledge</b></i> содержит ряд файлов с данными, которые могут быть отредактированы пользователем с целью оказания влияния на процесс формирования БДУ: | |||
:*<code>cpe-mapping.csv</code> (<code>/etc/cve-manager/cpe-mapping.csv</code>) - предопределяет соответствие имён на начальном этапе работы модуля <i>cpe-map</i>; | |||
:*<code>cpe-mapping-ignore.csv</code> (<code>/etc/cve-manager/cpe-mapping-ignore.csv</code>) - определяет пары имён, которые исключаются из результатов работы модуля <i>cpe-map</i>; | |||
:*<code>excluded-issues.csv</code> (<code>/etc/cve-manager/excluded-issues.csv</code>) - определяет уязвимости, которые не следует считать незакрытыми для указанного пакета указанного репозитория начиная с указанной версии пакета (используется модулем <i>cve-issues</i>). | |||
Каждая строка файлов <i>cpe-mapping.csv</i> и <i>cpe-mapping-ignore.csv</i> должна быть записана в следующем формате: | |||
:<code><название пакета>, <название программного продуката, используемое NVD></code> | |||
Каждая строка файла <i>excluded-issues.csv</i> должна быть записана в следующем формате: | |||
:<code><ветвь Sisyphus, 'all' если все ветви>, <id уязвимости>, <название пакета>, <версия пакета></code> | |||
:<code> | |||
Для того чтобы обозначенные настройки установления соответствия имён вступили в действие следует запустить модуль <i>cpe-map</i> заново для соответствующих ветвей (<code>cpe-map -b [<branch_name> ...]</code>), или для всех ветвей (<code>cpe-map -e</code>); При этом следует заново запустить модуль <i>cve-issues</i> для данных ветвей (<code>cve-issues -b [<branch_name> ...]</code>), или для всех ветвей (<code>cve-issues -b all</code>); В случае, если допустима обработка всех ветвей, запуск модулей <i>cpe-map</i> и <i>cve-issues</i> можно осуществить путём запуска автоматического формирования БДУ начиная с шага установления соответствия имён: | |||
:<code>cve-manager -b map</code> | |||
При этом | |||
== Использование == | == Использование == | ||
=== Формат списка пакетов исследуемого репозитория === | |||
<code> | Список пакетов исследуемого репозитория может быть задан в одном из двух форматов. Первый формат соответствует формату списков бинарных пакетов <i>ALT Linux</i> (<code>alt:/ALT/<branch>/files/list/bin.list</code>), а второй формат исключает всю ненужную информацию: | ||
{| class="wikitable" style="width: 100%;" | |||
|- | |||
! Формат | |||
:<code> | ! Пример | ||
:<code> | |- | ||
|<code><bin_package_short_name> <*> <*> <*> <src_package_full_name></code> | |||
|<code>libcve-manager 0.33.1-alt1 x86_64 libcve-manager-0.33.1-alt1.x86_64.rpm cve-manager-0.33.1-alt1.src.rpm</code> | |||
|- | |||
|<code><bin_package_short_name> <src_package_full_name></code> | |||
|<code>libcve-manager cve-manager-0.33.1-alt1</code> | |||
|} | |||
:<code><*></code> - любая комбинация символов, не включающая пробелы; | |||
:<code><bin_package_short_name></code> - название бинарного пакета без версии и релиза; | |||
:<code><src_package_full_name></code> - полное название исходного пакета, включающее версию и релиз (наличие расширения <i>'src.rpm'</i> не обязательно). | |||
=== Подготовка базы данных уязвимостей === | |||
Запуск процесса формирования БДУ:<br> | |||
:<code>cve-manager [-h] [-a] [-b MODULE_NAME] [-e MODULE_NAME] [-r N_REPEATED_ATTEMPTS] [-l] [--plain] [--silent]</code> | |||
{| class="wikitable" style="width: 100%;" | |||
|- | |||
! style="width: 27%" | Параметр | |||
! style="width: 73%" | Описание | |||
|- | |||
|<code>-h, --help</code> | |||
|Вывод справки | |||
|- | |||
|<code>-a, --run_all</code> | |||
|Выполнить все шаги формирования БДУ | |||
|- | |||
|<code>-b MODULE_NAME, --beginning_step MODULE_NAME</code> | |||
|Начальный шаг запускаемого процесса формирования БДУ (название модуля без приставки <code>cve-</code> / <code>cpe-</code>) | |||
|- | |||
|<code>-e MODULE_NAME, --ending_step MODULE_NAME</code> | |||
|Конечный шаг запускаемого процесса формирования БДУ (название модуля без приставки <code>cve-</code> / <code>cpe-</code>) | |||
|- | |||
|<code>-r N_REPEATED_ATTEMPTS, --retry N_REPEATED_ATTEMPTS</code> | |||
|Количество попыток перезапуска последнего выполняемого модуля в случае его неуспешного выполнения | |||
|- | |||
|<code>-l, --list_modules</code> | |||
|Вывод списка доступных модулей (вместе с их описаниями) | |||
|- | |||
|<code>--plain</code> | |||
|Упрощенный вывод (следует использовать, например, при перенаправлении вывода в файл) | |||
|- | |||
|<code>--silent</code> | |||
|Запрет вывода | |||
|} | |||
Пример команды запуска формирования БДУ, при котором автоматически, в установленном порядке, один за другим будут запущены все прочие модули: | |||
:<code>cve-manager -a --plain 2>&1 1>$HOME/cve-manager.log</code> | |||
В случае первого запуска <i>cve-manager</i>, когда БДУ не была ранее сформирована, в качестве начального шага следует указывать шаг загрузки входных данных, при этом не будет осуществлён запуск модулей, работа которых имеет смысл только при наличии сформированной БДУ (создание файла с копией текущего состояния БДУ и сохранение текущих незакрытых уязвимостей в специальной таблице БДУ): | |||
:<code>cve-manager -b download --plain 2>&1 1>$HOME/cve-manager.log</code> | |||
Каждый модуль пакета <i>cve-manager</i> является самостоятельной программой и может быть запущен напрямую, например: | |||
:<code>cve-download --everything</code> | :<code>cve-download --everything</code> | ||
:<code>cve-import --prepare</code> | :<code>cve-import --prepare</code> | ||
Строка 103: | Строка 187: | ||
:<code><module-name> --help</code> | :<code><module-name> --help</code> | ||
== Разворачивание базы данных уязвимостей == | === Мониторинг уязвимостей пакетов === | ||
Запуск модуля <i>cve-monitor</i>:<br> | |||
:<code>cve-monitor [-h] [--show WHAT_YOU_WANT_TO_SEE] [-f FIX_STATUS] [-t ISSUES_TYPE] [-o ORDER_BY] [-b BRANCH_NAME [BRANCH_NAME ...]] [-p PACKAGE_NAME [PACKAGE_NAME ...]] [-y YEAR [YEAR ...]] [-v VUL_ID [VUL_ID ...]] [--group] [--cure] [--patch] [-m REPORT_CATEGORY [REPORT_CATEGORY ...]]</code> | |||
{| class="wikitable" style="width: 100%;" | |||
|- | |||
! style="width: 27%" | Параметр | |||
! style="width: 73%" | Описание | |||
|- | |||
|<code>-h, --help</code> | |||
|Вывод справки | |||
|- | |||
|<code>--show WHAT_YOU_WANT_TO_SEE</code> | |||
|Вывод списка уязвимостей (<code>issues</code>, является значением по-умолчанию), или вывод новых незакрытых уязвимостей (<code>history</code>), или вывод сравнительного списка по уязвимостям указанных ветвей <i>Sisyphus</i> (<code>comp</code>, требует задания значения параметра <code>--branches</code>, при этом первая указанная ветвь сравнивается с последующими), или вывод полных описаний уязвимостей (<code>vul_desc</code>), или вывод установленного соответствия между названиями пакетов и названиями, используемыми в описаниях уязвимостей (<code>map</code>), или вывод примеров использования (<code>ex</code>) | |||
|- | |||
|<code>-f FIX_STATUS, --fix_status FIX_STATUS</code> | |||
|Фильтрация результатов по состоянию уязвимостей (<code>fixed</code> / <code>unfixed</code> / <code>all</code>) | |||
|- | |||
|<code>-t ISSUES_TYPE, --itype ISSUES_TYPE</code> | |||
|Фильтрация результатов по типу источника записей об уязвимостях (<code>nvd</code> / <code>fstec</code>) | |||
|- | |||
|<code>-o ORDER_BY, --order ORDER_BY</code> | |||
|Осуществление упорядочения результатов по идентификаторам уязвимостей (<code>id</code>), иманам пакетов (<code>package</code>), оценке CVSS ver.2 (<code>score2</code>), оценке CVSS ver.3 (<code>score3</code>), или текущему состоянию уязвимости (<code>fix</code>) | |||
|- | |||
|<code>-b BRANCH_NAME [BRANCH_NAME ...],<br>--branches BRANCH_NAME [BRANCH_NAME ...]</code> | |||
|Фильтрация результатов по названиям репозиториев | |||
|- | |||
|<code>-p PACKAGE_NAME [PACKAGE_NAME ...],<br>--packages PACKAGE_NAME [PACKAGE_NAME ...]</code> | |||
|Фильтрация результатов по названиям пакетов | |||
|- | |||
|<code>-y YEAR [YEAR ...], --years YEAR [YEAR ...]</code> | |||
|Фильтрация результатов по датам уязвимостей | |||
|- | |||
|<code>-v VUL_ID [VUL_ID ...],<br>--vul_ids VUL_ID [VUL_ID ...]</code> | |||
|Фильтрация результатов по идентификаторами уязвимостей | |||
|- | |||
|<code>--group</code> | |||
|Осуществление группировки результатов по именнам пакетов (работает только при запуске с параметром <code>-f unfixed</code>) | |||
|- | |||
|<code>--cure</code> | |||
|Дополнение отчёта колонкой с названиями ветвей <i>Sisyphus</i> более высокого порядка (например, <i>p9</i> для <i>p8</i>), в которых данная уязвимость не наблюдается | |||
|- | |||
|<code>--patch</code> | |||
|Список ссылок на патчи, предположительно закрывающие данную уязвимость (ссылки извлекаются из входных списков уязвимостей) | |||
|- | |||
|<code>-m REPORT_CATEGORY [REPORT_CATEGORY ...],<br>--mail REPORT_CATEGORY [REPORT_CATEGORY ...]</code> | |||
|Осуществить почтовую рассылку с формируемым результатом на адреса, указанные в соответствующем конфигурационном файле (см. <i>Настройка клиентской части</i>) | |||
|} | |||
Примеры команд и значения полей формируемых отчётов: | |||
:* <code>cve-monitor --show issues -f unfixed -b Sisyphus p9 --group --cure --mail <some_group_of_recipients></code> - запрос всех неисправленных уязвимостей ветвей <i>Sisyphus</i> и <i>p9</i> с группировкой записей по именам пакетов, с предложениями по устранению и отправкой отчёта по электронной почте группе адресатов <i><some_group_of_recipients></i>; | |||
:* <code>cve-monitor --show issues -f unfixed -b Sisyphus p9 --order package --cure --patch --mail <some_group_of_recipients></code> - запрос детального отчёта (без группировки по именам пакетов -- каждая строка отводится отдельной уязвимости, наличие которой установлено для отдельного пакета), записи которого упорядочены по именам пакетов, с предложениями по устранению и ссылками на страницы, которые могут содержать патчи для устранения соответствующих уязвимостей, также с отправкой по электронной почте; | |||
:* <code>cve-monitor --show history -b p9</code> - запрос списка новых уязвимостей пакетов ветви <i>p9</i>, обнаруженных с момента последнего запуска модуля <i>cve-history</i>. | |||
{| class="wikitable" style="width: 100%;" | |||
! style="width: 27%" | Поле | |||
! style="width: 73%" | Значение | |||
|- | |||
|<code>PACKAGE NAME-VER-REL</code> | |||
|Название пакета, его версия и релиз | |||
|- | |||
|<code>MAPPED NAME</code> | |||
|Название программного продукта, поставленное в соответствие названию данного пакета | |||
|- | |||
|<code>VULNERABLE VER</code> | |||
|Указанные уязвимые версии, или интервалы версий (наличие версии, обозначенной символом <code>*</code>, означает, что набор уязвимых версий точно не установлен) | |||
|- | |||
|<code>QTY</code> | |||
|Количество уязвимостей, наличие которых установленно для данного пакета | |||
|- | |||
|<code>CVSS2/3</code> | |||
|Оценка данной уязвимости по метрике CVSS ver.2 и CVSS ver.3 | |||
|- | |||
|<code>MAX CVSS2/3</code> | |||
|Максимальная оценка по метрике CVSS ver.2 и CVSS ver.3 из всех оценок уязвимостей данного пакета | |||
|- | |||
|<code>ACL</code> | |||
|Cписок пользователей и групп пользователей, имеющих право на сборку данного пакета в данный репозиторий с помощью git.alt | |||
|- | |||
|<code>FIX</code> | |||
|Состояние данной уязвимости (<code>[NO FIX]</code> - не закрыта, <code>changelog</code> - о закрытии говорит запись в chagelog пакета, <code>bigger ver</code> / <code>[lesser ver]</code> - версия пакета больше / меньше указанных уязвимых версий) | |||
|- | |||
|<code>CURE</code> | |||
|Ветви <i>Sisyphus</i>, в которых данный пакет не имеет всех или части (указывается особо) уязвимостей, наличие которых установлено для данного пакета | |||
|- | |||
|<code>PATCH</code> | |||
|Ссылки на страницы, которые могут содержать патчи для устранения соответствующей уязвимостей | |||
|- | |||
|} | |||
== Разворачивание инфраструктуры базы данных уязвимостей == | |||
Для работы <i>cve-manager</i> нет необходимости устанавливать MySQL сервер и создавать БДУ в своём окружении - в настройках <i>cve-manager</i> может быть указан адрес удалённого сервера. Тем не менее, это можно сделать, выполнив следующие шаги:<br> | Для работы <i>cve-manager</i> нет необходимости устанавливать MySQL сервер и создавать БДУ в своём окружении - в настройках <i>cve-manager</i> может быть указан адрес удалённого сервера. Тем не менее, это можно сделать, выполнив следующие шаги:<br> | ||
Строка 112: | Строка 285: | ||
:2. Внести изменения в файл настройки MySQL сервера <i>/etc/my.cnf.d/server.cnf</i>: | :2. Внести изменения в файл настройки MySQL сервера <i>/etc/my.cnf.d/server.cnf</i>: | ||
::< | ::<source> | ||
[mysqld] | |||
... | |||
loose-local-infile = 1 | |||
#skip-networking | |||
bind-address = 127.0.0.1 | |||
</source> | |||
:3. Перезапустить MySQL сервер и запустить MySQL консоль: | :3. Перезапустить MySQL сервер и запустить MySQL консоль: | ||
Строка 119: | Строка 298: | ||
:4. Задать пароль пользователя MySQL с именем <i>root</i>: | :4. Задать пароль пользователя MySQL с именем <i>root</i>: | ||
::<code><b><i>mysql></i></b> SET PASSWORD FOR 'root'@'localhost' = | ::<code><b><i>mysql></i></b> SET PASSWORD FOR 'root'@'localhost' = '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> GRANT ALL PRIVILEGES ON *.* to 'user-name'@'localhost' IDENTIFIED BY 'user-passwd';</code> | ::{| class="wikitable" style="width: 100%;" | ||
::, где <i>user-name</i> - имя пользователя, <i>user-passwd</i>- пароль пользователя; | |- | ||
! style="width: 50%" | MySQL server ver 8.* | |||
! style="width: 50%" | MySQL server ver 5.* | |||
|- | |||
| <code><b><i>mysql></i></b> CREATE USER 'user-name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'user-passwd';</code><br><code><b><i>mysql></i></b> GRANT ALL ON *.* TO 'user-name'@'localhost';</code> | |||
| <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> - пароль пользователя; | |||
:6. Добавить пользователя MySQL, от имени которого будут осуществляться запросы на чтение записей БД (мониторинг): | :6. Добавить пользователя MySQL, от имени которого будут осуществляться запросы на чтение записей БД (мониторинг): | ||
::<code><b><i>mysql></i></b> | ::{| class="wikitable" style="width: 100%;" | ||
|- | |||
! style="width: 50%" | MySQL server ver 8.* | |||
! style="width: 50%" | MySQL server ver 5.* | |||
|- | |||
| <code><b><i>mysql></i></b> CREATE USER 'monitor'@'localhost' IDENTIFIED WITH mysql_native_password BY 'monitor';</code><br><code><b><i>mysql></i></b> GRANT SELECT ON *.* TO 'monitor'@'localhost';</code> | |||
| <code><b><i>mysql></i></b> GRANT SELECT ON *.* TO 'monitor'@'localhost' IDENTIFIED BY 'monitor';</code> | |||
|} | |||
== Ссылки == | == Ссылки == | ||
[http://git.altlinux.org/people/alexey/packages/?p=cve-manager.git;a=summary Проект на git.altlinux.org] | [http://git.altlinux.org/people/alexey/packages/?p=cve-manager.git;a=summary Проект на git.altlinux.org]<br> | ||
[http://git.altlinux.org/gears/c/cve-manager-inner-knowledge.git cve-manager-inner-knowledge] | |||
[[Категория:Безопасность]] | [[Категория:Безопасность]] | ||
[[Категория:Admin]] | [[Категория:Admin]] |
Версия от 22:29, 23 сентября 2020
cve-manager - консольная программа, предназначенная 1) для формирования базы данных уязвимостей (БДУ) программ, входящих в состав заданных репозиториев rpm-пакетов, а также 2) для осуществления анализа записей сформированной БДУ и подготовки отчётов на основе результатов этого анализа (в том числе с осуществлением рассылки по электронной почте).
Основными входными данными программы являются списки, содержащие названия и версии исходных и бинарных пакетов рассматриваемых репозиториев, а также списки известных уязвимостей. На данный момент поддерживается два источника списков известных уязвимостей - NVD (National Vulnerability Database) и ФСТЭК (Федеральная служба по техническому и экспортному контролю).
Программа имеет модульную структуру, написана на Python и C++, использует MySQL. Распространяется по лицензии GPLv3.0.
Структура программы
cve-manager состоит из следующих модулей:
- cve-manager - предоставляет пользовательский интерфейс для запуска процесса формирования БДУ и осуществляет организацию и контроль данного процесса путём последовательного запуска остальных модулей в установленном порядке в автоматическом режиме;
- cve-backup - осуществляет резервное копирование/восстановление ранее сформированной БДУ;
- cve-history - осуществляет выборку незакрытых уязвимостей по текущему состоянию БДУ и сохраняет их в отдельной таблице с целью обеспечения возможности сравнения будущего состояния БДУ с этим сохранённым состоянием;
- cve-download - осуществляет загрузку по HTTPS списков уязвимостей, предоставляемых NVD и ФСТЭК, а также CPE словаря;
- cve-import - осуществляет для выбранных репозиториев внесение данных из списков пакетов, которые могу быть размещены на alt-сервере (например,
alt:/ALT/p9/files/list/bin.list
для ветви p9), или в произвольном каталоге файловой системы, а также внесение данных из загруженных списков уязвимостей и данных из 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/ФСТЭК идентификатор>, <название пакета>, <CPE/ФСТЭК название уязвимого программного продукта>, <версия пакета>, <уязвимая версия программного продукта>, <fix-status>
, где<fix-status>
- значение из следующего набора (или комбинация из данных значений):- changelog - устранение данной уязвимости обозначено в changelog-секции пакета;
- bigger ver - версия пакета в репозитории больше данной уязвимой версии;
- [lesser ver] - версия пакета в репозитории меньше данной уязвимой версии;
- [NO FIX] - версия пакета в репозитори совпадает с уязвимой версией программного продукта и устранение данной уязвимости не зафиксировано.
- cve-monitor - предназначен для посылки запросов выборки из таблиц БДУ и выдачи результатов (отчётов), например формирование списка всех пакетов с имеющимися незакрытыми уязвимостями или списка всех закрытых уязвимостей одной ветви, которые не закрыты в другой; Формируемые отчёты могут рассылаться на задаваемые адреса электронной почты; На данный момент (версия 0.28) отчёты предоставляются в собственном формате (см. подраздел "Мониторинг уязвимостей пакетов"), в перспективе возможность их получения в формате XML и JSON.
Все модули кроме cve-import написаны на Python, cve-import написан на C++.
Установка
cve-manager собран в репозиторий Sisyphus.
Установка полной версии (серверная и клиентская часть):
apt-get install cve-manager
Установка только клиентской части:
apt-get install cve-monitor
Настройка
Настройка серверной части
Параметры cve-manager определяются файлом ini-формата /etc/cve-manager/cve-manager.conf
. Данный ini-файл включает следующие обязательные секции:
- database, в которой указываются параметры соединения с базой данных MySQL (server, user, passwd, schema);
- common, в которой указывается путь к каталогу, в который cve-download загружает входные данные и откуда cve-import их импортирует в БД (download), название основной ветви, значения времени сборки пакетов которой будут учитываться при определении соответствия имён исходных пакетов и имён уязвимых программных продуктов (master_branch), путь к корневому каталогу alt-сервера (basealt), а также источники списков уязвимостей, исключаемые из рассмотрения (excluded_vulsrc с возможными значениями nvd и fstec), при этом первые два параметра являются обязательными.
Прочие секции файла настройки воспринимаются как названия ветвей Sisyphus, информация об уязвимостях которых должна быть помещена в БДУ. Каждая из таких секций может включать определение следующих параметров:
- base_dir - название основного каталога данного репозитория;
- src_list - путь к списку исходных пакетов (src.list) данного репозитория;
- bin_list - путь к списку бинарных пакетов (bin.list) данного репозитория;
- srpms_dir - путь к каталогу с исходными пакетами (SRPMS) данного репозитория.
По-умолчанию значения перечисленных параметров соответствуют структуре каталогов alt-сервера. ВНИМАНИЕ - названия секций должны состоять только из латинских символов и цифр. В случае, если название репозитория включает прочие символы, следует воспользоваться переменной base_dir (см. пример, секция x81).
Пример файла настройки:
[database] server = "localhost:3306" user = some_username passwd = some_passwd schema = some_dbname [common] basealt = /space/ download = ~/.cve-manager/ excluded_vulsrc = fstec master_branch = Sisyphus [Sisyphus] [p8] [x81] base_dir = /space/ALT/x8.1/ [some_custom_branch] src_list = /some_custom_branch/lists/src.list bin_list = /some_custom_branch/lists/bin.list srpms_dir = /some_custom_branch/SRPMS/
Файл настройки принадлежит пользователю root, относится к группе cve и имеет режим rw-rw----. Также группе cve принадлежат все модули, кроме модуля cve-monitor. Таким образом вносить изменения в БДУ помимо пользователя root могут только члены группы cve. Добавить пользователя в группу cve можно с помощью следующей команды:
usermod -a -G cve <user-name>
Настройка клиентской части
cve-monitor имеет свой файл настройки /etc/cve-manager/cve-monitor.conf
, позволяющий пользователям, не являющимся членами группы cve, осуществлять соединение с БДУ с правом только на чтение (SQL-запрос SELECT) - структура данного файла повторяет структуру файла cve-manager.conf
(см. подраздел "Настройка серверной части"), при этом секция common, а также параметры ветвей ни на что не влияют, за исключением дополнительного параметра ветвей seniors, в котором перечисляются старшие ветви по отношению к данной, и которые будут использованы при формировании предложений по устранению существующих в данной ветви уязвимостей (при передаче флага --cure
модулю cve-monitor), например:
[p9] seniors = Sisyphus [p8] seniors = ${p9:seniors}, p9
Для настройки почтовой рассылки cve-monitor существует другой конфигурационной файл - /etc/cve-manager/cve-mail.conf
, содержащий настройки соединения с почтовым сервером и списки адресатов, которые задаются группами в секции recipients; При запуске cve-monitor с флагом --mail
следует передать название группы адресатов; Так, например, пусть файл настройки почтовой рассылки имеет следующее содержимое
[connection] host = some_host.com port = 25 username = some_mail_account passwd = password_of_the_mail_account raddress = some_mail_account@some_host.com [recipients] weekly = "some_email1@altlinux.org", "some_email2@basealt.ru", "some_email3@basealt.ru" daily = "some_email4@altlinux.org", "some_email5@basealt.ru" some_other_group_of_recipients = "some_other_email@some_other_host.com"
Тогда, например, для того чтобы результаты команды cve-monitor --show issues unfixed --group
после формирования были отправлены группе адресатов daily следует исполнить следующую команду:
cve-monitor --show issues unfixed --group --mail daily
Внутренние знания cve-manager
Пакет cve-manager-inner-knowledge содержит ряд файлов с данными, которые могут быть отредактированы пользователем с целью оказания влияния на процесс формирования БДУ:
cpe-mapping.csv
(/etc/cve-manager/cpe-mapping.csv
) - предопределяет соответствие имён на начальном этапе работы модуля cpe-map;cpe-mapping-ignore.csv
(/etc/cve-manager/cpe-mapping-ignore.csv
) - определяет пары имён, которые исключаются из результатов работы модуля cpe-map;excluded-issues.csv
(/etc/cve-manager/excluded-issues.csv
) - определяет уязвимости, которые не следует считать незакрытыми для указанного пакета указанного репозитория начиная с указанной версии пакета (используется модулем cve-issues).
Каждая строка файлов cpe-mapping.csv и cpe-mapping-ignore.csv должна быть записана в следующем формате:
<название пакета>, <название программного продуката, используемое NVD>
Каждая строка файла excluded-issues.csv должна быть записана в следующем формате:
<ветвь Sisyphus, 'all' если все ветви>, <id уязвимости>, <название пакета>, <версия пакета>
Для того чтобы обозначенные настройки установления соответствия имён вступили в действие следует запустить модуль cpe-map заново для соответствующих ветвей (cpe-map -b [<branch_name> ...]
), или для всех ветвей (cpe-map -e
); При этом следует заново запустить модуль cve-issues для данных ветвей (cve-issues -b [<branch_name> ...]
), или для всех ветвей (cve-issues -b all
); В случае, если допустима обработка всех ветвей, запуск модулей cpe-map и cve-issues можно осуществить путём запуска автоматического формирования БДУ начиная с шага установления соответствия имён:
cve-manager -b map
Использование
Формат списка пакетов исследуемого репозитория
Список пакетов исследуемого репозитория может быть задан в одном из двух форматов. Первый формат соответствует формату списков бинарных пакетов ALT Linux (alt:/ALT/<branch>/files/list/bin.list
), а второй формат исключает всю ненужную информацию:
Формат | Пример |
---|---|
<bin_package_short_name> <*> <*> <*> <src_package_full_name>
|
libcve-manager 0.33.1-alt1 x86_64 libcve-manager-0.33.1-alt1.x86_64.rpm cve-manager-0.33.1-alt1.src.rpm
|
<bin_package_short_name> <src_package_full_name>
|
libcve-manager cve-manager-0.33.1-alt1
|
<*>
- любая комбинация символов, не включающая пробелы;<bin_package_short_name>
- название бинарного пакета без версии и релиза;<src_package_full_name>
- полное название исходного пакета, включающее версию и релиз (наличие расширения 'src.rpm' не обязательно).
Подготовка базы данных уязвимостей
Запуск процесса формирования БДУ:
cve-manager [-h] [-a] [-b MODULE_NAME] [-e MODULE_NAME] [-r N_REPEATED_ATTEMPTS] [-l] [--plain] [--silent]
Параметр | Описание |
---|---|
-h, --help
|
Вывод справки |
-a, --run_all
|
Выполнить все шаги формирования БДУ |
-b MODULE_NAME, --beginning_step MODULE_NAME
|
Начальный шаг запускаемого процесса формирования БДУ (название модуля без приставки cve- / cpe- )
|
-e MODULE_NAME, --ending_step MODULE_NAME
|
Конечный шаг запускаемого процесса формирования БДУ (название модуля без приставки cve- / cpe- )
|
-r N_REPEATED_ATTEMPTS, --retry N_REPEATED_ATTEMPTS
|
Количество попыток перезапуска последнего выполняемого модуля в случае его неуспешного выполнения |
-l, --list_modules
|
Вывод списка доступных модулей (вместе с их описаниями) |
--plain
|
Упрощенный вывод (следует использовать, например, при перенаправлении вывода в файл) |
--silent
|
Запрет вывода |
Пример команды запуска формирования БДУ, при котором автоматически, в установленном порядке, один за другим будут запущены все прочие модули:
cve-manager -a --plain 2>&1 1>$HOME/cve-manager.log
В случае первого запуска cve-manager, когда БДУ не была ранее сформирована, в качестве начального шага следует указывать шаг загрузки входных данных, при этом не будет осуществлён запуск модулей, работа которых имеет смысл только при наличии сформированной БДУ (создание файла с копией текущего состояния БДУ и сохранение текущих незакрытых уязвимостей в специальной таблице БДУ):
cve-manager -b download --plain 2>&1 1>$HOME/cve-manager.log
Каждый модуль пакета cve-manager является самостоятельной программой и может быть запущен напрямую, например:
cve-download --everything
cve-import --prepare
Вывод справочной информации модуля:
<module-name> --help
Мониторинг уязвимостей пакетов
Запуск модуля cve-monitor:
cve-monitor [-h] [--show WHAT_YOU_WANT_TO_SEE] [-f FIX_STATUS] [-t ISSUES_TYPE] [-o ORDER_BY] [-b BRANCH_NAME [BRANCH_NAME ...]] [-p PACKAGE_NAME [PACKAGE_NAME ...]] [-y YEAR [YEAR ...]] [-v VUL_ID [VUL_ID ...]] [--group] [--cure] [--patch] [-m REPORT_CATEGORY [REPORT_CATEGORY ...]]
Параметр | Описание |
---|---|
-h, --help
|
Вывод справки |
--show WHAT_YOU_WANT_TO_SEE
|
Вывод списка уязвимостей (issues , является значением по-умолчанию), или вывод новых незакрытых уязвимостей (history ), или вывод сравнительного списка по уязвимостям указанных ветвей Sisyphus (comp , требует задания значения параметра --branches , при этом первая указанная ветвь сравнивается с последующими), или вывод полных описаний уязвимостей (vul_desc ), или вывод установленного соответствия между названиями пакетов и названиями, используемыми в описаниях уязвимостей (map ), или вывод примеров использования (ex )
|
-f FIX_STATUS, --fix_status FIX_STATUS
|
Фильтрация результатов по состоянию уязвимостей (fixed / unfixed / all )
|
-t ISSUES_TYPE, --itype ISSUES_TYPE
|
Фильтрация результатов по типу источника записей об уязвимостях (nvd / fstec )
|
-o ORDER_BY, --order ORDER_BY
|
Осуществление упорядочения результатов по идентификаторам уязвимостей (id ), иманам пакетов (package ), оценке CVSS ver.2 (score2 ), оценке CVSS ver.3 (score3 ), или текущему состоянию уязвимости (fix )
|
-b BRANCH_NAME [BRANCH_NAME ...],
|
Фильтрация результатов по названиям репозиториев |
-p PACKAGE_NAME [PACKAGE_NAME ...],
|
Фильтрация результатов по названиям пакетов |
-y YEAR [YEAR ...], --years YEAR [YEAR ...]
|
Фильтрация результатов по датам уязвимостей |
-v VUL_ID [VUL_ID ...],
|
Фильтрация результатов по идентификаторами уязвимостей |
--group
|
Осуществление группировки результатов по именнам пакетов (работает только при запуске с параметром -f unfixed )
|
--cure
|
Дополнение отчёта колонкой с названиями ветвей Sisyphus более высокого порядка (например, p9 для p8), в которых данная уязвимость не наблюдается |
--patch
|
Список ссылок на патчи, предположительно закрывающие данную уязвимость (ссылки извлекаются из входных списков уязвимостей) |
-m REPORT_CATEGORY [REPORT_CATEGORY ...],
|
Осуществить почтовую рассылку с формируемым результатом на адреса, указанные в соответствующем конфигурационном файле (см. Настройка клиентской части) |
Примеры команд и значения полей формируемых отчётов:
cve-monitor --show issues -f unfixed -b Sisyphus p9 --group --cure --mail <some_group_of_recipients>
- запрос всех неисправленных уязвимостей ветвей Sisyphus и p9 с группировкой записей по именам пакетов, с предложениями по устранению и отправкой отчёта по электронной почте группе адресатов <some_group_of_recipients>;cve-monitor --show issues -f unfixed -b Sisyphus p9 --order package --cure --patch --mail <some_group_of_recipients>
- запрос детального отчёта (без группировки по именам пакетов -- каждая строка отводится отдельной уязвимости, наличие которой установлено для отдельного пакета), записи которого упорядочены по именам пакетов, с предложениями по устранению и ссылками на страницы, которые могут содержать патчи для устранения соответствующих уязвимостей, также с отправкой по электронной почте;cve-monitor --show history -b p9
- запрос списка новых уязвимостей пакетов ветви p9, обнаруженных с момента последнего запуска модуля cve-history.
Поле | Значение |
---|---|
PACKAGE NAME-VER-REL
|
Название пакета, его версия и релиз |
MAPPED NAME
|
Название программного продукта, поставленное в соответствие названию данного пакета |
VULNERABLE VER
|
Указанные уязвимые версии, или интервалы версий (наличие версии, обозначенной символом * , означает, что набор уязвимых версий точно не установлен)
|
QTY
|
Количество уязвимостей, наличие которых установленно для данного пакета |
CVSS2/3
|
Оценка данной уязвимости по метрике CVSS ver.2 и CVSS ver.3 |
MAX CVSS2/3
|
Максимальная оценка по метрике CVSS ver.2 и CVSS ver.3 из всех оценок уязвимостей данного пакета |
ACL
|
Cписок пользователей и групп пользователей, имеющих право на сборку данного пакета в данный репозиторий с помощью git.alt |
FIX
|
Состояние данной уязвимости ([NO FIX] - не закрыта, changelog - о закрытии говорит запись в chagelog пакета, bigger ver / [lesser ver] - версия пакета больше / меньше указанных уязвимых версий)
|
CURE
|
Ветви Sisyphus, в которых данный пакет не имеет всех или части (указывается особо) уязвимостей, наличие которых установлено для данного пакета |
PATCH
|
Ссылки на страницы, которые могут содержать патчи для устранения соответствующей уязвимостей |
Разворачивание инфраструктуры базы данных уязвимостей
Для работы cve-manager нет необходимости устанавливать MySQL сервер и создавать БДУ в своём окружении - в настройках cve-manager может быть указан адрес удалённого сервера. Тем не менее, это можно сделать, выполнив следующие шаги:
- 1. Установить MySQL сервер:
apt-get install MySQL-server
- Также можно воспользоваться альтернативой (все остальные пункты данного руководства при этом остаются в силе):
apt-get install mariadb-server
- 2. Внести изменения в файл настройки MySQL сервера /etc/my.cnf.d/server.cnf:
[mysqld] ... loose-local-infile = 1 #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' = 'root-passwd';
- , где root-passwd - задаваемый пароль пользователя root;
- 5. Добавить пользователя MySQL, от имени которого будет осуществляться формирование БД:
MySQL server ver 8.* MySQL server ver 5.* mysql> CREATE USER 'user-name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'user-passwd';
mysql> GRANT ALL ON *.* TO 'user-name'@'localhost';
mysql> GRANT ALL PRIVILEGES ON *.* to 'user-name'@'localhost' IDENTIFIED BY 'user-passwd';
- , где user-name - имя пользователя, user-passwd - пароль пользователя;
- 6. Добавить пользователя MySQL, от имени которого будут осуществляться запросы на чтение записей БД (мониторинг):
MySQL server ver 8.* MySQL server ver 5.* mysql> CREATE USER 'monitor'@'localhost' IDENTIFIED WITH mysql_native_password BY 'monitor';
mysql> GRANT SELECT ON *.* TO 'monitor'@'localhost';
mysql> GRANT SELECT ON *.* TO 'monitor'@'localhost' IDENTIFIED BY 'monitor';