“”/
 
30 ноября 2022

Базовая конфигурация Skyline

CheckPoint Skyline
Всем доброго дня, коллеги. В этой статье мы продолжим разбирать Skyline и на этот раз перейдём сразу к делу — рассмотрим базовую конфигурацию для Skyline «с нуля» до первых данных в Dashboard Grafana. Все настройки будут выполняться на тестовом стенде с Gaia R81.10, сконфигурированном на ESXi. Схема стенда ниже.
Запросить триальные лицензии вы можете заполнив форму
Всю конфигурацию можно разбить на четыре шага:

  1. По умолчанию Open Telemetry Agent / Collector должны быть установлены на машине с Gaia, если ранее администратор разрешил автоматическую загрузку обновлений. Проверить последнее можно через SmartConsole, открыв в ней меню Global Properties и вкладку Security Management Access:
Обычно этот чекбокс устанавливается первоначально во время First Time Configuration. Если же вы проверили через Global Properties и этот чекбокс не стоял, то лучше его поставить и установить политику на все шлюзы, а также сделать Install Database для менеджмента. После следует установить Open Telemetry Agent / Collector вручную как часть крайнего Jumbo Hotfix. Так как Skyline мониторинг можно сконфигурировать только для поддерживаемых версий Gaia, то посмотреть информацию по Jumbo Hotfix’ам вы можете по следующим ссылкам:


В нашем случае на испытательном стенде имеется Gaia R81.10 без необходимости в HF Take, поэтому мы установим хотфикс через CPUSE. Открыв Gaia portal необходимо перейти на вкладку Upgrades (CPUSE) > Status and Actions. После нужно нажать кнопку «Add hotfix from Cloud» и ввести имя необходимого tgz пакета с хотфиксом, в случае R81.10 это пакет с именем - Check_Point_R81_10_JUMBO_HF_MAIN_Bundle_T79_FULL.tgz. Когда пакет добавится в список обновлений, по нему необходимо нажать правой кнопкой мыши и начать установку «Install Update».
После установки хотфикса устройство с Gaia будет автоматически перезагружено и можно перейти к следующему шагу. В нашем случае Open Telemetry Agent / Collector устанавливались как часть хотфикса и на менеджмент, и на шлюз.

2.Перейдём к настройке Prometheus на внутреннем сервере с установленным Debian 11. Для этого с создадим отдельную системную группу и системного пользователя с shell - nologin:
sudo groupadd -r prometheusGroup

sudo useradd -s /sbin/nologin --system -g prometheusGroup prometheusUser
Создадим необходимые директории:
sudo mkdir /etc/prometheus

sudo mkdir /var/lib/prometheus
Теперь загрузим необходимый пакет с самим Prometheus, в CheckPoint поддерживаются версии начиная с 2.37.1 и новее. Для этого перейдём на официальный сайт: https://prometheus.io/download/ и скачаем версию под linux, т.к. используется Debian, либо вы можете загрузить версию под вашу платформу:
Затем мы распакуем tar.gz пакет и переместим его в необходимую директорию:
tar -xvf prometheus-2.37.2.linux-amd64.tar.gz
sudo mv prometheus-2.37.2.linux-amd64 /etc/prometheus
Зададим привилегии для созданного ранее пользователя prometheusUser в группе prometheusGroup:
sudo chown prometheusUser:prometheusGroup /etc/prometheus
sudo chown prometheusUser:prometheusGroup /var/lib/prometheus
sudo chown -R prometheusUser:prometheusGroup /etc/prometheus/prometheus-2.37.2.linux-amd64/consoles
sudo chown -R prometheusUser:prometheusGroup /etc/prometheus/prometheus-2.37.2.linux-amd64/console_libraries
Скопируем необходимые утилиты в /usr/local/bin/
sudo cp /etc/prometheus/prometheus-2.37.2.linux-amd64/prometheus /usr/local/bin/
sudo cp /etc/prometheus/prometheus-2.37.2.linux-amd64/promtool /usr/local/bin/
Теперь создадим конфигурационный файл с именем prometheus.service для systemd, чтобы наш Prometheus стартовал при запуске Debian автоматически. Файл нужно поместить в директорию /etc/systemd/system/. Содержимое файла:
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
User=prometheusUser
Group=prometheusGroup
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus-2.37.2.linux-amd64/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/prometheus-2.37.2.linux-amd64/consoles \
--web.console.libraries=/etc/prometheus/prometheus-2.37.2.linux-amd64/console_libraries \
--web.enable-remote-write-receiver
[Install]
WantedBy=multi-user.target
Последним действием на этом шаге будет запуск Prometheus:
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
systemctl status prometheus
Как мы можем убедиться, Prometheus доступен через веб-интерфейс: http://localhost:9090
На Debian в нашем случае настроен DNS сервер Bind для локальной сети, поэтому мы можем получить доступ по доменному имени http://prometheus.srv:9090. Вы можете сконфигурировать «A» запись используя свой внутренний DNS сервер, приводить здесь подробно настройку Bind мы не будем.
Теперь имея изначально сконфигурированный Prometheus настроем базовую аутентификацию по логину с паролем, затем TLS шифрование, так как это требует CheckPoint. Для первого нам необходим следующий python скрипт с помощью которого мы сгенерируем bcrypt хеш пароля. Сам скрипт:
import getpass
 import bcrypt
 password = getpass.getpass("password: ")
 hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
 print(hashed_password.decode())
Сохраним этот скрипт в файл gen-pass.py и запустим с помощью команды (на машине с Debian установлен именно python3.9, а также через pip модуль bcrypt, который нужен для скрипта):
python3.9 gen-pass.py
Скрипт попросит ввести нам пароль и в результате выведет хеш пароля. Для испытательного стенда мы используем пароль Chkp2345, получим для него хеш: $2b$12$EjRntxCfwF1HVzblEXKk5OdmNnaXJm8FV.QcD3yN1mpuWogWWHVXm

Дальше создадим файл с именем web.yml в папке /etc/prometheus/prometheus-2.37.2.linux-amd64/, содержимое файла будет следующее:
basic_auth_users:
               herman: $2b$12$EjRntxCfwF1HVzblEXKk5OdmNnaXJm8FV.QcD3yN1mpuWogWWHVXm
В файл prometheus.service, который мы создавали ранее, перед строчкой [Install] необходимо добавить:
--web.config.file=/etc/prometheus/prometheus-2.37.2.linux-amd64/web.yml
После перезапустим сервис командами:
systemctl daemon-reload
systemctl restart prometheus
Теперь можем проверить базовую аутентификацию с шлюза CheckPoint:
curl_cli -u herman http://prometheus.srv:9090/metrics
Вы должны увидеть приглашение к вводу пароля, а после ввода ответ, отданный от сервера Prometheus.
Для настройки TLS шифрования нам потребуется самоподписанный сертификат. Для этого создадим файл openssl.conf со следующим содержимым (в секциях [ dn ] и [ alt_names ] указать Ваши данные):
[ req ]
 default_bits = 4096
 default_md = sha256
 req_extensions = v3_req
 distinguished_name = dn
 prompt = no
 [ v3_req ]
 subjectAltName = @alt_names
 [ dn ]
 C = RU
 ST = Volgograd
 L = Russia
 O = TSSolution
 OU = Engineers
 CN = prometheus.srv
 [ alt_names ]
 DNS = prometheus.srv
 IP = 192.168.10.6

 
Затем данный файл необходимо поместить на шлюз CheckPoint и выполнить команду:
cpopenssl req -x509 -newkey rsa:4096 -nodes -config openssl.conf -keyout mykey.key -out mycert.crt -extensions v3_req
В результате получим два файла, сам сертификат - mycert.crt и текстовый файл с закрытым ключом сертификата - mykey.key. Для удобства два файла переименуем соответвенно - prometheusTLS.crt и prometheusPrivate.key. Оба файла перенесём на сервер с Prometheus, в директорию /etc/prometheus/prometheus-2.37.2.linux-amd64. Далее откроем в той же директории файл web.yml и добавим в него следующие строки:
tls_server_config:
 cert_file: /etc/prometheus/prometheus-2.37.2.linux-amd64/prometheusTLS.crt
 key_file: /etc/prometheus/prometheus-2.37.2.linux-amd64/prometheusPrivate.key
После сообщим серверу Prometheus, что теперь мы будем использовать TLS шифрование. В файл /etc/systemd/system/prometheus.service, который мы создавали ранее, перед строчкой [Install] необходимо добавить:
--web.external-url=https://prometheus.srv:9090
После перезапустим сервис командами:
systemctl daemon-reload
systemctl restart prometheus
Теперь если мы попробуем с машины с Windows обратиться к серверу по https, то увидим предупреждение о небезопасном сертификате (т.к. это наш самоподписанный сертификат). Если мы согласились продолжить, сервер дополнительно попросит нас предоставить сведения для basic authentication.
На этом моменте конфигурацию сервера Prometheus можно считать выполненной.

3.На третьем шаге мы приступим к установке и конфигурированию Grafana. Для работы с CheckPoint нам требуется версия не ниже V9. Скачать Grafana можно на официальном сайте - https://grafana.com/grafana/download?edition=enterprise&pg=get&plcmt=selfmanaged-box1-cta1, здесь нам нужно выбрать соответствующую версию и тип лицензии (выберем OSS, полный текст лицензии также представлен по ссылке), платформу под которую будет устанавливаться Grafana. После выбора параметров нам сразу будут показаны команды для установки необходимых пакетов:
sudo apt-get install -y adduser libfontconfig1
 wget https://dl.grafana.com/oss/release/grafana_9.2.3_amd64.deb
 sudo dpkg -i grafana_9.2.3_amd64.deb
Далее требуется выполнить следующие команды:
systemctl daemon-reload
 systemctl enable grafana-server
 systemctl start grafana-server
Теперь Grafana доступна через порт 3000, т.е. в нашем случае http://localhost:3000. При первом входе в систему мы увидим приглашение ввести логин/пароль. По умолчанию это admin/admin, после ввода система сразу же попросит ввести новый пароль для пользователя admin.
После входа в Grafana и установки пароля нам необходимо в левом меню выбрать Configuration → Data sources → нажать кнопку «Add data source» → далее выбрать Prometheus и ввести соответвующие параметры поключения.
В нашем случае мы задали следующие параметры:
После первичной конфигурации Grafana мы добавим готовый Dashboard от CheckPoint, скачать его можно здесь. Для этого перейдём на вкладку Dashboards в левом меню → выберем Import → нажмём на кнопку «Upload JSON file», выберем наш источник данных Prometheus. В итоге Dashboard будет выглядеть как на скриншоте ниже, но он не будет содержать нужных для мониторинга данных, т.к. сервер Prometheus пока не получает данных от OpenTelemetry Collector, который находится на машине с Gaia и передаёт эти данные непосредственно Prometheus’у.
4.  Финальным этапом конфигурации Skyline является настройка OpenTelemetry Collector. В нашем случае имеется Distributed конфигурация с одним шлюзом управляемым одним менеджментом. Мы будем выполнять настройку на шлюзе. Однако у вас может быть кластер, либо Maestro, либо Management High Availability окружение, а для перечисленных вариантов есть особенности настройки:

  • Для кластера на каждой ноде должны быть выполнены аналогичные настройки.
  • Для Maestro настройка должна быть выполнена только на оркестраторе.
  • Для Management High Availability настройку рекомендуется выполнить на каждом менеджмент сервере.

Перед выполнением необходимой конфигурации нам нужно создать json файл с параметрами (в секциях "client-auth", "server-auth" и "url" указать ваши данные):
 {

   "enabled": true,

   "export-targets": {"add": [

       {

           "client-auth": {

               "basic": {

                   "username": "herman",

                   "password": "Chkp2345"

               }

           },

           "enabled": true,

           "server-auth": {

               "ca-public-key": {

                   "type": "PEM-X509",

                   "value": "-----BEGIN CERTIFICATE----- MIIFmTCCA4GgAwIBj2q6Gv..."

               }

           },

           "type": "prometheus-remote-write",

           "url": "https://prometheus.srv:9090/api/v1/write"

       }

   ]}

}  
Назовём данный файл payload.json и поместим в директорию на шлюзе /home/admin, затем выполним команду. В выводе должно появится сообщение об успешном завершении команды:
/opt/CPotelcol/REST.py --set_open_telemetry “$(cat payload.json)”
Через минуту-две мы увидим в Dashboard Grafana данные получаемые с OpenTelemetry Collector на шлюзе.
Наконец мы имеем полностью сконфигурированный Skyline.

Следующая статья будет заключительной. Рассмотрим некоторые проблемы, которые могут возникнуть, а также способы их траблшутинга. Оставайтесь с нами, до скорых встреч!

Автор: Герман Чурилин, инженер TS Solution