Перейти к основному содержанию

ESXi 7.0 Firewall — добавляем правила для Zabbix Agent

Firewall

Устал бороться с мониторингом дисков на ESXi серверах. Хочется, чтобы всё взяло и заработало. Возникла идея запустить zabbix-agent на гипервизоре.

Сегодня будем делать первую подготовительную часть, сделаем VIB пакет для отдельного правила Firewall для Zabbix Agent.

ESXi 7.0 Firewall — добавляем своё правило

В гипервизоре ESXi имеется встроенный Firewall. В нём предустановлен ряд правил, удовлетворяющих разработанному функционалу. Однако, имеющиеся правила не всегда покрывают все необходимые порты, иногда требуется дополнительный функционал.

ESXi 7.0 Firewall

Создание собственных правил

Процесс создания собственных правил описан здесь:

https://kb.vmware.com/s/article/2008226

Начиная с ESXi 7.0 создавать собственные наборы правил Firewall запретили. При этом предложили обходной способ:

  1. Скопировать файл с правилами на отдельный datastore.
  2. Добавить свои изменения в скопированный файл.
  3. В /etc/rc.local.d/local.sh добавить команду на копирование с заменой основного файла.
  4. Чтобы принудительно сохранить эту команду при перезагрузках хоста, команда должна быть добавлена вручную в /etc/rc.local.d/local.sh файл на сервере ESXi.

Это настолько кривое решение, что даже пробовать его не хочется. Тем более нужно отдельное хранилище.

Альтернатива — создание собственного VIB пакета для внесения изменений в Firewall.

VIB пакет для ESXi 7.0 firewall

Создадим собственный VIB пакет для дополнительных правил Firewall. Для сборки нам понадобится пакет:

ESXi Community Packaging Tools 2.4

Добавлять будем два новых правила:

  • Входящее на TCP 10050
  • Исходящее на TCP 10051

Создаём TGZ файл

Создаём структуру каталогов, она очень простая, потому как нам нужно добавить всего один файл. У меня это будет /etc/vmware/firewall/fw-zabbix-agent.xml.

zabbix

Редактируем:

<!-- Firewall configuration information for fw Zabbix Agent -->
<ConfigRoot>
  <service id='0000'>
      <id>Zabbix Agent in</id>
      <rule id='0000'>
          <direction>inbound</direction>
          <protocol>tcp</protocol>
          <porttype>dst</porttype>
          <port>10050</port>
      </rule>
      <enabled>false</enabled>
      <required>false</required>
  </service>
  <service id='0001'>
    <id>Zabbix Agent out</id>
    <rule id='0000'>
        <direction>outbound</direction>
        <protocol>tcp</protocol>
        <porttype>dst</porttype>
        <port>10051</port>
    </rule>
    <enabled>false</enabled>
    <required>false</required>
  </service>
</ConfigRoot>

Структуру XML можно посмотреть в ESXi. Идентификаторы сервисов должны быть уникальными.

:zabbix

Засовываем проект в Linux, это необходимо для правильной настройки прав доступа к файлам. Я воспользуюсь WSL2 для Windows, только мне придётся скопировать проект в home, т.к. по умолчанию права на все файлы примонтированного диска C:\ — 777. Назначаем созданному XML файлу права 444:

chmod 444 ./fw-zabbix-agent.xml

zabbix

Переходим в корневую папку проекта и собираем TGZ архив:

tar cvzf ../fw-zabbix-agent.tgz *

zabbix

TGZ файл получен. Дальше с ним буду работать из Windows.

Создаём VIB файл с помощью tgz2vib5.cmd

Переходим к ESXi Community Packaging Tools 2.4.

zabbix

Чтобы создать файл VIB из нашего файла TGZ, запускаем tgz2vib5.cmd.

zabbix

Скармливаем утилите наш TGZ файл, указываем рабочую директорию. Заполняем все поля, не забываем указать версию, VIB type — bootbank. Очень удобно, что имеется готовый пресет для firewall, который за нас проставит нужные галки. Acceptance Level для правила firewall достаточно указать "community". Run!

zabbix

VIB пакет собрался.

Создаём ZIP файл Offline Bundle с помощью tgz2vib5.cmd

В принципе, достаточно и VIB файла. Но я собираюсь с вами поделиться готовым пакетом, поэтому соберу Offline Bundle.

zabbix

Чтобы создать Offline Bundle из нашего файла VIB, запускаем vib2zip.cmd:

zabbix

Указываем директорий с файлом VIB, закидываем в неё наш VIB пакет. Указываем рабочую директорию. Заполняем поля, устанавливаем максимальный уровень совместимости. Run!

zabbix

Offline Bundle собрался.

Установка Offline Bundle

Для тестирования перевожу хост в Maintenance Mode.

Как установить VIB пакет

Копируем ZIP пакет на хост в папку /tmp.

zabbix

Запускаем службу SSH на хосте, коннектимся. Проверяем содержимое папки tmp.

zabbix

ZIP файл присутствует. Разрешаем установку программ и драйверов со сторонними сертификатами. Для этого перед установкой выполняем команду:

esxcli software acceptance set --level=CommunitySupported

Устанавливаем пакет:

esxcli software vib install -d /tmp/fw-zabbix-agent-1.0-0-offline_bundle.zip

Пакет установлен. В списке установленных VIB пакетов имеется наш новый пакет.

esxcli software vib list | grep zabbix

zabbix

Наш XML файл появился в папке /etc/vmware/firewall.

zabbix

Теперь правило firewall никуда не должно пропасть после перезагрузки хоста. Проверяю — перезагружаю хост.

Configure → System → Firewall → Edit. У нас появились два новых правила:

  • Zabbix Agent in
  • Zabbix Agent out

zabbix

Включаем их галками. OK.

Входящее на TCP 10050:

zabbix

Исходящее на TCP 10051:

zabbix

Мы добились того, чего хотели.

А зачем оно?

Собственно, пакет я назвал fw-zabbix-agent. Скачать его можно в Сборке для VMware. Пакет добавляет два правила firewall, которые нужны для работы Zabbix Agent.

Пакет для агента я ещё не делал, но планирую.

 

Похожие материалы