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

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

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

Внимание:

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

  1. Для начала необходимо включить автозапуск агента. Для этого следует отредактировать файл /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>
  1. Следующим шагом требуется запустить агент, выполнив команду:
service wazuh-agent start
  1. Чтобы оптимизировать использование дискового пространства, рекомендуется настроить задачу в 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 пользователь должен увидеть нового агента.

Рис. 1. Веб-интерфейс Wazuh с добавленным агентом

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

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

В первую очередь требуется установить Suricata

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

Пользователю следует убедиться, что установлены два параметра для нужных ему интерфейсов:

  • EVE Json Log - отмечен чекбоксом;
  • EVE Output Type - выбран тип “File.

Рис. 2. Eve output setting

Остальные параметры eve.json можно установить по усмотрению пользователя во время настройки.

  1. Чтобы 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, вы можете изменить это поведение. Ниже показано, как это сделать.

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

  1. Необходимо открыть меню Wazuh и перейти в раздел Management > Rules.

Рис. 3. Панель управления Wazuh

  1. В открывшемся окне необходимо найти правила для pfSense:

Рис. 4. Список правил

  1. Чтобы открыть правила в файле 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>
  1. Следующим шагом требуется вернуться на предыдущий экран и выбрать 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 для правила.

  1. Далее следует нажать Save, а затем Restart, как это показано на рисунке 5.

Рис 5. Окно сохранения настроек и перезапуска

  1. Необходимо подтвердить применяемые настройки, как это показано на рисунке 6.

Рис. 6. Окно подтверждения настроек

Теперь пользователь будет получать события firewall для агента Wazuh на pfSense. Окно событий представлено на рисунке 7.

Рис. 7. Окно событий firewall для агента Wazuh на pfSense

На этом настройка закончена.