Журналирование IPtables не работает в CentOS 7

Вопрос или проблема

Я хочу записывать весь трафик, который входит и выходит через порт X. Я выполнил следующие шаги.

  1. Отредактировал файл /etc/syslog.conf, /etc/rsyslog.conf, /etc/systemd/system/rsyslog.service.d/rsyslog.conf для изменения kern.warning /var/log/iptables.log
  2. sudo systemctl daemon-reload
  3. iptables -I INPUT -p tcp --dport **X** -j LOG --log-level 7
  4. iptables -I OUTPUT -p tcp --dport **X** -j LOG --log-level 7
  5. tail -f /var/log/iptables.log
  6. Я попытался подключиться к порту x с другого сервера.

Но мне не удалось получить никаких логов в /var/log/iptables.log.

После быстрого воспроизведения этой настройки, я думаю, ваша проблема связана с небольшой недоразумением.

Ваша команда iptables -I INPUT -p tcp --dport **X** -j LOG --log-level 7 не устанавливает уровень логирования на WARNING, а на уровень логирования DEBUG. Чтобы установить уровень предупреждения, используйте --log-level 4.

Это приводит к использованию неправильного уровня логирования в вашей конфигурации syslog. Используя --log-level 7 в команде iptables, вам нужно использовать kern.debug в /etc/rsyslog.conf. Используйте kern.warning в rsyslog, когда используете --log-level 4 в iptables.

Убедитесь, что вы перезапустили сервис rsyslog (systemctl restart rsyslog) после изменения /etc/rsyslog.conf. Также обратите внимание, что файл /var/log/iptables.log не будет создан, пока не появится входящий трафик на нужный порт для записи.

Ответ или решение

Конечно, давайте подробно разберем вашу проблему с логированием в iptables на CentOS 7 и предложим возможные пути ее решения.

Теоретическая часть (Теория)

Для логирования сетевого трафика с помощью iptables необходимо правильно настроить несколько элементов, включая правила iptables, системное журналирование (rsyslog) и структуру каталогов, где будут храниться логи. В iptables для записи логов используется специфическое правило с указанием уровня логирования, а rsyslog обрабатывает эти сообщения и записывает их в указанный файл лога.

Настройка iptables и уровней логирования: В iptables можно использовать разные уровни логирования, которые соответствуют уровням приоритета syslog. Наиболее часто используемые уровни включают:

  • 0 (emerg) – аварийное сообщение
  • 1 (alert) – сообщение тревоги
  • 2 (crit) – критическое сообщение
  • 3 (err) – ошибка
  • 4 (warning) – предупреждение
  • 5 (notice) – заметка
  • 6 (info) – информационный уровень
  • 7 (debug) – отладочная информация

Пример (Example)

В вашем случае вы установили уровень 7 (debug) в правилах iptables:

iptables -I INPUT -p tcp --dport X -j LOG --log-level 7
iptables -I OUTPUT -p tcp --dport X -j LOG --log-level 7

В то же время вы настроили файл /etc/rsyslog.conf на прием сообщений уровня kern.warning, что соответствует уровню 4. Это означает, что ваш конфигурационный файл rsyslog ориентирован на прием более высокого уровня сообщений, чем вы отправляете.

Применение (Application)

Чтобы устранить вашу проблему, следуйте следующим шагам:

  1. Измените уровень логирования в файлах конфигурации: Поскольку вы используете --log-level 7 в iptables, необходимо убедиться, что rsyslog тоже настроен на прием сообщений уровня debug.

    В файле /etc/rsyslog.conf убедитесь, что у вас есть следующая строка:

    kern.debug /var/log/iptables.log

    Если вы хотите использовать kern.warning, измените уровень логирования в iptables на --log-level 4:

    iptables -I INPUT -p tcp --dport X -j LOG --log-level 4
    iptables -I OUTPUT -p tcp --dport X -j LOG --log-level 4
  2. Обновите и перезапустите систему логирования: После внесения изменений, выполните:

    sudo systemctl restart rsyslog

    Это позволит применить изменения в конфигурации rsyslog.

  3. Проверка работы правил iptables: Убедитесь, что ваши правила добавлены правильно. Используйте:

    iptables -L -n -v

    Это даст вам список всех текущих правил с указанием статистики.

  4. Создание файла лога: Убедитесь, что файл /var/log/iptables.log может быть создан. Проверьте права доступа к каталогу /var/log, чтобы политике безопасности SELinux или другие ограничения не препятствовали созданию файла.

  5. Тестирование: Попробуйте снова отправить трафик на порт X с другого сервера и проверьте, появляются ли записи в /var/log/iptables.log.

Дополнительные рекомендации

  • SELinux: В случае, если SELinux включен, он может блокировать создание лога. Выполните в командной строке:

    sudo setenforce 0

    Это временно отключит SELinux. Протестируйте, работает ли логирование. Если работает, возможно, потребуется настроить контексты SELinux.

  • Поток трафика: Убедитесь, что действительно есть сетевой трафик на заданный порт. Можно использовать инструменты вроде nc (netcat) для генерации трафика.

  • Мониторинг и отладка: Используйте инструменты мониторинга системных журналов для анализа возможных ошибок конфигурации или других сбоев.

Следуя вышеуказанным инструкциям, вы должны успешно разрешить проблему с логированием посредством iptables на CentOS 7. Таким образом вы не только устраните конкретную неполадку, но и улучшите свои навыки управления системным журналированием в Linux-системах.

Оцените материал
Добавить комментарий

Капча загружается...