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

> Пошаговая настройка Wazuh Agent в pfSense для мониторинга безопасности - установка агента, пересылка логов и интеграция с Yandex Cloud или VK Cloud

Source: https://opennix.org/docs/pfsense/pfsense-wazuh-integration/


Для интеграции 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"`, либо выполнить следующую команду:

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

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

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

```
2. Следующим шагом требуется запустить агент, выполнив команду:
   
```shell
service wazuh-agent start
```
3. Чтобы оптимизировать использование дискового пространства, рекомендуется настроить задачу в crontab для автоматической очистки старых логов агента, например, тех, которые старше 30 дней.

Для этого требуется выполнить следующую команду: 
```shell
crontab -e

```
Пример команды очистки:
```text
0 4 * * * find /var/ossec/logs/ossec/ -d 1 -mtime +30 -type d -exec rm -rf {} \; > /dev/null
```
После старта агент должен зарегистрировать в Wazuh. Для проверки необходимо подключиться к Wazuh master посредством ssh и выполнить следующую команду:

```shell
cd /var/ossec/bin/
./agent_control  -l 
```
При правильной настройке пользователь должны видеть состояние pfSense как ‘Active’.

```shell
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 с добавленным агентом pfSense](/img/pfsense-wazuh.webp)
<p style="text-align: center;">Рис. 1. Веб-интерфейс Wazuh с добавленным агентом</p>

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

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

В первую очередь требуется установить [Suricata](/docs/yc/pfsense/suricata-integration/) 

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

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

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

![Настройка EVE Output в Suricata для Wazuh](/img/suricata-eve-wazuh.webp)
<p style="text-align: center;">Рис. 2. Eve output setting</p>

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

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

```xml
<localfile>
    <log_format>json</log_format>
    <location>/var/log/suricata/*/eve.json</location>
</localfile>
```
И перезапустить агент следующей командой: 

```shell
service wazuh-agent restart
```

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

В файл конфигурации `/var/ossec/etc/ossec.conf` необходимо добавить следующие строки: 

```xml
<localfile>
	<log_format>syslog</log_format>
	<location>/var/log/filter.log</location>
</localfile>
```
После чего перезапустить агент. 

Правило события отбрасывания фаервола pfSense по умолчанию не регистрируется, как указано строкой `<options>no_log</options>` в объявлении [правила](https://github.com/wazuh/wazuh/blob/master/ruleset/rules/0540-pfsense_rules.xml?ref=benheater.com#L22).

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

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

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

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

![Панель управления правилами Wazuh](/img/wazuh-pf-rules.webp)
<p style="text-align: center;">Рис. 3. Панель управления Wazuh</p>

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

![Список правил pfSense в Wazuh](/img/wazuh-default-pf-rules.webp)
<p style="text-align: center;">Рис. 4. Список правил </p>

3. Чтобы открыть правила в файле `0540-pfsense_rules.xml`, необходимо кликнуть на нужное и скопировать содержимое:

```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>

```
3. Следующим шагом требуется вернуться на предыдущий экран и выбрать `Add new rules file`.
   
Название нового файла может быть любым, например `custom-pfSense-overrides.xml`. Ниже приведено его примерное содержание:

```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` для правила.

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

![Окно сохранения пользовательских правил Wazuh](/img/wazuh-pf-custom-rule.webp)
<p style="text-align: center;">Рис 5. Окно сохранения настроек и перезапуска </p>

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

![Окно подтверждения применения правил Wazuh](/img/wazuh-pf-custom-rule-confirm.webp)
<p style="text-align: center;">Рис. 6. Окно подтверждения настроек </p>

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

![События firewall агента Wazuh на pfSense](/img/pfsense-wazuh-result.webp)
<p style="text-align: center;">Рис. 7. Окно событий firewall для агента Wazuh на pfSense
 </p>
 На этом настройка закончена. 
