Вопрос или проблема
Я пытаюсь настроить ведение журналов на сервере Ubuntu 20.04.4 с использованием ufw, но я приму советы и без использования ufw.
Я запускаю тестовый HTTPS-сервер на порту 20000 и хочу записывать все подключения к нему. Вот что я сделал.
ufw allow log-all 20000/tcp
Вот мой статус ufw:
To Action From
-- --------- -----
20000/tcp ALLOW IN Anywhere (log-all)
Теперь единственные записи, которые я вижу в своем журнале (/var/log/ufw.log), — это “блокировки”, генерируемые другими правилами. Я могу подключиться к серверу извне, и мой тестовый сервер работает нормально (поставляет требуемый контент). Но я просто не вижу никаких записей, относящихся к этому правилу, в журналах ufw.
Что я мог пропустить?
Правка 1: Поскольку я еще не могу комментировать, я реагирую на совет @mashuptwice здесь.
Мое ведение журналов ufw включено (низкий уровень).
Если я сделаю
ufw logging medium
разве это не будет применяться ко всем правилам? Мне нужно дополнительное ведение журналов только для этого конкретного правила.
Вам нужно включить ведение журналов для ufw. Вы можете сделать это следующим образом:
ufw logging on
И установить уровень ведения журнала с помощью:
ufw logging <loglevel>
Разные уровни ведения журнала согласно man ufw
:
LEVEL может быть 'off', 'low', 'medium', 'high' и 'full'. Уровни ведения журналов определяются как:
off отключает ведение журналов ufw
low ведет журнал всех заблокированных пакетов, которые не соответствуют определенной политике (с ограничением по скорости), а также пакетов, соответствующих записанным правилам
medium уровень журнала low, плюс все разрешенные пакеты, не соответствующие определенной политике, все INVALID пакеты и все новые соединения. Все ведение журналов осуществляется с ограничением по скорости.
high уровень журнала medium (без ограничения по скорости), плюс все пакеты с ограничением по скорости
full уровень журнала high без ограничения по скорости
Вы можете проверить текущий статус ведения журналов с помощью ufw status verbose
╭─root@someserver ~
╰─# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
Я думаю, я разобрался.
У меня было другое правило в брандмауэре перед моим правилом log-all.
To Action From
-- ------ -----
20000 ALLOW IN Anywhere
20000/tcp ALLOW IN Anywhere (log-all)
Мое правило log-all даже не срабатывало. Как только я удалил предыдущее правило, ведение журналов заработало как ожидалось.
Спасибо всем за ваше внимание.
Ответ или решение
Решение проблемы с логированием UFW на сервере Ubuntu 20.04.4
Если вы настраиваете логирование на вашем сервере Ubuntu 20.04.4 с использованием UFW (Uncomplicated Firewall) и сталкиваетесь с тем, что подключения не записываются в журнал, это может быть связано с несколькими факторами. Давайте рассмотрим ключевые этапы диагностики и настройки.
1. Проверка уровня логирования
Первым делом, убедитесь, что логирование UFW включено и установлено на соответствующий уровень. Как указано в вашем описании, уровень логирования был настроен на «низкий» (low
), что предполагает запись только заблокированных пакетов и пакетов, совпадающих с правилами логирования. Чтобы проверить текущий уровень, используйте команду:
ufw status verbose
Если логирование установлено на low
, вы можете рассмотреть возможность повышения уровня логирования до medium
:
ufw logging medium
2. Определение правил UFW
Важно помнить, что порядок правил в UFW имеет значение. В вашем случае наличие другого правила, разрешающего трафик на порт 20000, отменяет действие правила логирования. Если вы указали правило ALLOW
перед log-all
, то UFW не будет применяться к этому соединению в контексте логирования.
Чтобы проверить порядок применения правил, выполните:
ufw status numbered
Удалите правило, разрешающее трафик, если оно предшествует вашему правилу логирования:
ufw delete <номер правила>
Теперь, когда вы оставили только правило логирования, UFW должен начать записывать подходящие соединения.
3. Проверка логов
После настройки убедитесь, что ваш сервер записывает соответствующие события. Лог-файл UFW обычно находится по адресу:
/var/log/ufw.log
Используйте следующую команду для просмотра логов:
tail -f /var/log/ufw.log
При соединении с тестовым сервером на порту 20000 вы должны увидеть записи, связанные с этим правилом.
4. Альтернативные подходы к логированию
Если UFW не предоставляет достаточный уровень детализации, рассмотрите возможность использования других инструментов для мониторинга сетевых соединений. Например, iptables
, который стоит за UFW, также может быть настроен для более детализированного логирования. Но учтите, что это потребует больше ручной настройки.
Можно добавить правило для iptables
, чтобы логировать всю активность на определенных портах:
iptables -A INPUT -p tcp --dport 20000 -j LOG --log-prefix "PORT 20000: "
После этого вы сможете видеть логи в /var/log/syslog
.
Заключение
Ваши проблемы с логированием UFW, скорее всего, были вызваны конфликтующими правилами, а не ошибками настройки самого UFW. Убедившись, что журналирование активно и правильно сконфигурировано, а также что правила установлены в нужном порядке, вы сможете получать необходимые записи о подключениях к вашему серверу.
Если у вас возникнут дополнительные сложности, рассмотрите возможность обращения к сообществу или профессиональным специалистам по IT для более глубокого анализа вашей конфигурации.