Мониторинг pfSense с помощью Wazuh

Для интеграции pfSense с Wazuh можно выбрать несколько путей. Наиболее простым из них является использование syslog, однако также можно воспользоваться Wazuh agent для этой цели.

В pfSense, доступной в Yandex Cloud Marketplace/VK cloud Marketplace, уже предустановлен Wazuh агент(нативный пакет для pfSense). Поэтому приступаем к настройке.

Внимание:

Не рекомендуется устанавливать пакеты для pfSense из репозиториев FreeBSD, так как это может значительно увеличить вероятность возникновения проблем и неполадок в работе pfSense.

Для начала необходимо включить автозапуск агента. Для этого отредактируйте файл /etc/rc.conf.local и замените wazuh_agent_enable="NO" на wazuh_agent_enable="YES", либо выполните следующую команду:

sysrc -f /etc/rc.conf.local wazuh_agent_enable="YES"

Далее необходимо настроить подключению агента к Wazuh Cluster. Для этого необходимо отредактировать файл /var/ossec/etc/ossec.conf и заменить IP на ip адресс или fqdn Wazuh cluster

  <client>
    <server>
      <address>IP</address>
    </server>
    <config-profile></config-profile>
    <crypto_method>aes</crypto_method>
  </client>

Теперь запускаем агент

service wazuh-agent start

Чтобы оптимизировать использование дискового пространства, рекомендуется настроить задачу в crontab для автоматической очистки старых логов агента, например, тех, которые старше 30 дней.

Выполняем команду

crontab -e

Пример команды очистки

0 4 * * * find /var/ossec/logs/ossec/ -d 1 -mtime +30 -type d -exec rm -rf {} \; > /dev/null

После старта агент, должен зарегистрировать в Wazuh, давайте проверим. Для этого необходимо подключиться к Wazuh master по ssh и выполнить команду

cd /var/ossec/bin/
./agent_control  -l 

При правильной настройке вы должны видеть состояние pfSense как ‘Active’.

Wazuh agent_control. List of available agents:
   ID: 000, Name: wazuh (server), IP: 127.0.0.1, Active/Local
   ID: 001, Name: pfsense.ru-central1.internal, IP: any, Active

Также в веб-интерфейсе Wazuh вы должны увидеть нового агента.

Первоначальная настройка завершена, теперь требуется внести изменения в Wazuh.

Настройка Suricata в pfSense с отправкой журналов в Wazuh

Для начала нужно установить Suricata

Внимание: Если вы уже используете Suricata, этот шаг можно пропустить.

Убедитесь, что установлены эти два параметра для нужных интерфейсов. Все остальные параметры eve.json на ваш выбор при их настройке.

Чтобы Wazuh начал анализировать события от Suricata. Необходимо добавить следующее в конфигурационный файл /var/ossec/etc/ossec.conf

<localfile>
    <log_format>json</log_format>
    <location>/var/log/suricata/*/eve.json</location>
</localfile>

И перезапустить агент

service wazuh-agent restart

Настройка для Firewall Logs

Добавьте следующее в файл конфигурации /var/ossec/etc/ossec.conf и перезапустите агент

<localfile>
	<log_format>syslog</log_format>
	<location>/var/log/filter.log</location>
</localfile>

Правило события отбрасывания фаервола pfSense по умолчанию не регистрируется, как указано строкой <options>no_log</options> в объявлении правила .

Внимание: Активация логирования этого правила может значительно увеличить объем журналов!

По умолчанию события блокировки нескольких запросов от фаервола pfSense из одного источника регистрируются.

Если вы хотите, чтобы событие блокировки от фаервола pfSense регистрировалось в Wazuh, вы можете изменить это поведение, и ниже показано, как это сделать.

Создайте файл пользовательских правил.

Откройте меню Wazuh и перейдите в раздел Management > Rules.

Необходимо найти правила для pfSense

Кликните, чтобы открыть правила в файле 0540-pfsense_rules.xml и скопируйте содержимое

<group name="pfsense,">
  <rule id="87700" level="0">
    <decoded_as>pf</decoded_as>
    <program_name>filterlog</program_name>
    <description>pfSense firewall rules grouped.</description>
  </rule>

  <!-- We don't log firewall events, because they go
    -  to their own log file.
    -->
  <rule id="87701" level="5">
    <if_sid>87700</if_sid>
    <action>block</action>
    <options>no_log</options>
    <description>pfSense firewall drop event.</description>
    <group>firewall_block,pci_dss_1.4,gpg13_4.12,hipaa_164.312.a.1,nist_800_53_SC.7,tsc_CC6.7,tsc_CC6.8,</group>
  </rule>

  <rule id="87702" level="10" frequency="18" timeframe="45" ignore="240">
    <if_matched_sid>87701</if_matched_sid>
    <same_source_ip />
    <description>Multiple pfSense firewall blocks events from same source.</description>
    <mitre>
      <id>T1110</id>
    </mitre>
    <group>multiple_blocks,pci_dss_1.4,pci_dss_10.6.1,gpg13_4.12,hipaa_164.312.a.1,hipaa_164.312.b,nist_800_53_SC.7,nist_800_53_AU.6,tsc_CC6.7,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
  </rule>
</group>

Вернитесь на предыдущий экран и выберите Add new rules file.

Название нового файла может быть каким угодно, например custom-pfSense-overrides.xml ниже примерное содержание

<group name="pfsense,">
  <rule id="87700" level="0">
    <decoded_as>pf</decoded_as>
    <program_name>filterlog</program_name>
    <description>pfSense firewall rules grouped.</description>
  </rule>

  <!-- We don't log firewall events, because they go
    -  to their own log file.
    -->
  <rule id="87701" level="5" overwrite="yes">
    <if_sid>87700</if_sid>
    <action>block</action>
    <description>pfSense firewall drop event.</description>
    <group>firewall_block,pci_dss_1.4,gpg13_4.12,hipaa_164.312.a.1,nist_800_53_SC.7,tsc_CC6.7,tsc_CC6.8,</group>
  </rule>

  <rule id="87702" level="10" frequency="18" timeframe="45" ignore="240">
    <if_matched_sid>87701</if_matched_sid>
    <same_source_ip />
    <description>Multiple pfSense firewall blocks events from same source.</description>
    <mitre>
      <id>T1110</id>
    </mitre>
    <group>multiple_blocks,pci_dss_1.4,pci_dss_10.6.1,gpg13_4.12,hipaa_164.312.a.1,hipaa_164.312.b,nist_800_53_SC.7,nist_800_53_AU.6,tsc_CC6.7,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
  </rule>
</group>

В примере выше я удалил <option>no_log</option> и также добавил overwrite для правила.

Далее нажимаем Save и Restart

И подтверждаем

Теперь вы должны получать события firewall для агента Wazuh на pfSense