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

UFW и firewalld

Для получения событий с межсетевого экрана uncomplicated firewall (UFW) или  firewalld его необходимо подключить как отдельный источник.

Характеристики источника в Платформе Радар:

Характеристика Значение
Название Uncomplicated-Firewall-UFW
Тип Firewall
Вендор Linux
Порт 2673
Протокол TCP

Примечание: источник ОС семейства Unix также передает события от служб firewalld и UFW.

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

Если вы хотите передавать события вместе с источником ОС семейства Unix, то в файлах конфигурации указывайте порт 2671.

Настройка источника включает в себя следующие процессы:

  1. Настройка службы firewalld.
  2. Настройка службы UFW.
  3. Настройка лог-коллектора.
  4. Включение источника на платформе.

Настройка firewalld

По умолчанию firewalld используется в следующих ОС:

  • RHEL 7 и более новые версии;
  • CentOS 7 и более новые версии;
  • Fedora 18 и более новые версии;
  • SUSE 15 и более новые версии;
  • openSUSE 15 и более новые версии.

Настройка для rsyslog

Для настройки логирования службы firewalld для ОС использующих в качестве службы протоколирования нужно rsyslog выполните следующие действия:

Запустите сервис:

# service firewalld start

Выберите тип передачи данных::

# firewall-cmd --set-log-denied=all | unicast | broadcast | multicast

Где:

  • unicast  – процесс отправки пакета от одного хоста к другому хосту;
  • multicast – процесс отправки пакета от одного хоста к некоторой ограниченной группе хостов;
  • broadcast – процесс отправки пакета от одного хоста ко всем хостам в сети.

Перезапустите службу:

# service firewalld restart

Чтобы журналирование пакетов было в отдельном файле, создайте файл /etc/rsyslog.d/10-fw_log.conf и укажите следующее содержимое:

:msg,contains,"_DROP" /var/log/firewalld.log
:msg,contains,"_REJECT" /var/log/firewalld.log
& stop

Для отправки событий firewalld на лог-коллектор, создайте файл /etc/rsyslog.d/11-fw_lc.conf и укажите следующее содержимое:

module(load="imfile" PollingInterval="5")
input(type="imfile"
      reopenOnTruncate="on"
      File="/var/log/firewalld.log"
      Tag="firewalld"
      ruleset="sendlc")
template(
    name = "logtemplate"
    type = "string"
    string = "<%PRI%> %msg%\n"
)
ruleset(name="sendlc") 
{
    action(type = "omfwd"
        Template = "logtemplate"
        Target="<IP-адрес лог-коллектора>"
        Port="<номер порта>" 
        Protocol="tcp"
        ResendLastMSGOnReconnect="on"
        action.resumeRetryCount="100"
        queue.type="linkedList"
        queue.size="10000")
    stop
}

Где:

  • <IP-адрес лог-коллектора - IP-адрес лог-коллектора;
  • <номер порта> - номер порта для подключения источника событий:
    • 2673 - если вы хотите подключить службу как отдельный источник событий;
    • 2671 - если вы хотите чтобы данные передавались вместе с источником ОС семейства Unix.

Перезапустите службу rsyslog:

service rsyslog start

Откройте соответствующий порт:

# firewall-cmd --permanent --add-port=<номер порта>/tcp

Настройка для syslog-ng

Настроите перенаправление событий службы в файл /var/log/firewalld.

В директории /etc/syslog-ng/conf.d добавьте файл firewalld_messages.conf со следующими параметрами:

destination d_firewalld_net { 
  tcp (
      "<IP-адрес лог-коллектора>" 
      port (<номер порта>) 
      persist-name(d_firewalld_for_siem)
  ); 
};
destination d_firewalld_file {
    file(
      "/var/log/firewalld.log"
    );
};

filter f_firewalld {
    message("^.*_REJECT:.*$")
};

log {
    source(s_sys);
    filter(f_firewalld);
    destination(d_firewalld_file);
};
log {
    source(s_sys); 
    filter(f_firewalld);
    destination(d_firewalld_net);
};

Где, укажите следующие параметры:

  • В параметре destination d_firewalld_net укажите:
    • <IP-адрес лог-коллектора> - IP-адрес лог-коллектора;
    • <номер порта> - номер порта для подключения источника событий:
      • 2673 - если вы хотите подключить службу как отдельный источник событий;
      • 2671 - если вы хотите чтобы данные передавались вместе с источником ОС семейства Unix.
  • В параметре destination d_firewalld_file укажите следующий путь к файлу: /var/log/firewalld.log.

Для включения отправки журналов службой firewalld выполните команду:

# firewall-cmd --set-log-denied=all

Для завершения настройки необходимо перезапустить службу firewalld и syslog-ng.

Настройка UFW

Настройка rsyslog

Проверьте статус службы UFW:

# ufw status

Если не служба не запущена, то включите ее

# ufw enable

Включите журналирование событий:

# ufw logging low | medium | high | full

Где:

  • low — регистрирует все заблокированные пакеты, не соответствующие заданной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам;
  • medium — все то, что при значении low, а также все разрешенные пакеты, не соответствующие заданной политике, все недопустимые пакеты, и все новые соединения. Все записи ведутся с ограничением скорости;
  • high — работает также как и medium. Плюс все пакеты с ограничением скорости;
  • full — также как и high, но без ограничения скорости.

Примечание: рекомендуется использовать уровень логирования medium.

Перезапустите службу:

# ufw reload

В конфигурационный файл /etc/rsyslog.conf  добавьте строку, указав IP-адрес лог-коллектора:

*:msg,contains,"[UFW " @@<IP-адрес коллектора>:<номер порта>

Где:

  • <IP-адрес лог-коллектора - IP-адрес лог-коллектора;
  • <номер порта> - номер порта для подключения источника событий:
    • 2673 - если вы хотите подключить службу как отдельный источник событий;
    • 2671 - если вы хотите чтобы данные передавались вместе с источником ОС семейства Unix.

Перезапустите службу журналирования:

# systemctl restart rsyslog

Откройте соответствующий порт:

# ufw allow <номер порта>

Настройка syslog-ng

Перед настройкой службы syslog-ng задайте фильтр f_ufw в файле:

/etc/syslog-ng/conf.d/20-ufw.conf

Примечание: в ОС Astra Linux фильтр создан по умолчанию.

Содержимое файла:

filter f_ufw {
    message("^.*UFW.*$")
};

destination d_ufw {
    file("/var/log/ufw.log");
};

log {
    source(s_src);
    filter(f_ufw);
    destination(d_ufw);
};

Для настройки службы syslog-ng добавьте в конфигурационный файл службы /usr/local/etc/syslog-ng.conf следующие параметры:

В блоке Destinations укажите пути для отправки сообщений в лог-коллектор:

# Send the messages to an other host
#
destination d_net { tcp("<ip лог-коллектора>" port(2671) log_fifo_size(1000)); };
destination d_ufw_net { tcp("<ip лог-коллектора, на котором подключен ufw как источник>" port(<номер порта>) log_fifo_size(1000)); };

Где, укажите следующие параметры:

  • В параметре destination d_net укажите:
    • <IP-адрес лог-коллектора> - IP-адрес лог-коллектора, на котором подключена ОС семейства Unix как источник;
    • 2671 - номер порта для подключения ОС семейства Unix как источник событий.
  • В параметре destination d_ufw_net укажите:
    • <IP-адрес лог-коллектора> - IP-адрес лог-коллектора, на котором подключен UFW как источник;
    • <номер порта> - номер порта для подключения источника событий:
      • 2673 - если вы хотите подключить службу как отдельный источник событий;
      • 2671 - если вы хотите чтобы данные передавались вместе с источником ОС семейства Unix.

В блоке Log path настройте фильтр для журналов от UFW:

log { source(s_src);
        if {
                filter(f_ufw);
                destination(d_ufw_net);
        } else {
                destination(d_net);
        };
};

Проверьте настройки UFW, выполнив следующие команды:

# sudo ufw enable
# sudo ufw logging on
# sudo ufw logging low | medium | high | full

Перезапустите службу syslog-ng:

# sudo service syslod-ng restart

Настройка лог-коллектора

Ниже приведена конфигурация лог-коллектора которая используется и для источника UFW:

tcp_input: &tcp_input
  id: "tcp_input"
  host: "<IP-адрес лог-коллектора>"
  port: 2673
  format: "json"
tcp_output: &tcp_output
  id: "tcp_output"
  target_host: "<IP-адрес Платформы>"
  port: 2673

collectors:
  tcp_receiver:
    - <<: *tcp_input
senders:
  port: 48001
  tcp:
    - <<: *tcp_output

route_1: &route_1
  collector_id:
    - "tcp_input"
  sender_id:
    - "tcp_output"

routers:
  - <<: *route_1

Где:

  • <IP-адрес лог-коллектора> - IP-адрес лог-коллектора;
  • 2673 - номер порта для подключения службы firewalld или UFW как источник событий;
  • <IP-адрес Платформы> - IP-адрес по которому выполняется доступ в веб-интерфейс Платформы Радар.

Включение источника на платформе

Перейдите в веб-интерфейс платформы и выполните следующие действия:

  1. Перейдите в раздел АдминистрированиеИсточникиУправление источниками.
  2. Включите источник Uncomplicated-Firewall-UFW.
  3. Нажмите кнопку Синхронизировать.
  4. Перейдите в раздел События и проверьте наличие потока событий от данного источника.