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

UFW и firewalld

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

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

Характеристика Значение
Название Uncomplicated-Firewall-UFW
Номер (Порт) 2673
Вендор Linux
Тип Firewall
Профиль сбора tcp_input

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

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

Настройка firewalld

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

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

Настройка для 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-адрес агента сбора лог-коллектора;
  • <порт> - порт, по которому агент сбора лог-коллектора будет принимать события. Должен совпадать со значением, указанным в настройках соответствующего профиля сбора.

Перезапустите службу 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-адрес агента сбора лог-коллектора;
    • <номер порта> - порт, по которому агент сбора лог-коллектора будет принимать события. Должен совпадать со значением, указанным в настройках соответствующего профиля сбора.
  • В параметре 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-адрес агента сбора лог-коллектора;
  • <номер порта> - порт, по которому агент сбора лог-коллектора будет принимать события. Должен совпадать со значением, указанным в настройках соответствующего профиля сбора.

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

# 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(<номер порта>) log_fifo_size(1000)); };
destination d_ufw_net { tcp("<ip агента сбора лог-коллектора, на котором подключен ufw как источник>" port(<номер порта>) log_fifo_size(1000)); };

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

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

В блоке 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

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

Перейдите в веб-интерфейс платформы и включите источник Uncomplicated-Firewall-UFW.