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

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

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 2463
  • Исходящее на TCP 25

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

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

firewall

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

<!-- Firewall configuration information for fw LSA -->
<ConfigRoot>
  <service id='0000'>
      <id>LSA UI</id>
      <rule id='0000'>
          <direction>inbound</direction>
          <protocol>tcp</protocol>
          <porttype>dst</porttype>
          <port>2463</port>
      </rule>
      <enabled>false</enabled>
      <required>false</required>
  </service>
  <service id='0001'>
    <id>LSA Mail</id>
    <rule id='0000'>
        <direction>outbound</direction>
        <protocol>tcp</protocol>
        <porttype>dst</porttype>
        <port>25</port>
    </rule>
    <enabled>false</enabled>
    <required>false</required>
  </service>
</ConfigRoot>

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

firewall

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

chmod 444 ./fw-lsa.xml

firewall

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

tar cvzf ../fw-lsa.tgz *

firewall

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

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

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

firewall

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

firewall

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

firewall

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

firewall

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

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

firewall

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

firewall

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

firewall

Offline Bundle собрался.

firewall

Установка Offline Bundle

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

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

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

firewall

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

firewall

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

esxcli software acceptance set --level=CommunitySupported

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

esxcli software vib install -d /tmp/fw-lsa-1.0-2-offline_bundle.zip

firewall

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

esxcli software vib list | grep lsa

firewall

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

firewall

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

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

  • LSA Mail
  • LSA UI

firewall

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

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

firewall

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

firewall

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

А зачем оно?

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

Установка LWA VMware на ESXi 7.0

Первое правило разрешает нам открывать страничку LSA UI, второе позволяет отправлять уведомления на внешний почтовый сервер.

Теги

 

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