Как я могу настроить syslog.conf файл, для входа сообщений iptables в отдельном файле?

На самом деле я полагаю, что существует локаль, которая соответствует Вашим требованиям лучше, чем en_IE. Это неофициально, но это en_SE.UTF-8. Это - ссылка, которая указывает на файл локали.

Это в основном копирует sv-SE, который должен получить Вас все, что Вы хотите (хотя я не перепроверил), но дает Вам английские системные сообщения, меню, и т.д. Я использовал его прежде, и это работало очень хорошо на меня на практике несмотря на протесты в блоке комментария наверху файла.

Устанавливать:

  1. загрузите так, чтобы файл локали был доступен как /usr/share/i18n/locales/en_SE
  2. выполненный sudo localedef -i en_SE -f UTF-8 en_SE.UTF-8
  3. добавьте к /var/lib/locales/supported.d/local строка en_SE.UTF-8 UTF-8 (могло бы отличаться на основе распределения; Debian Сжимают/6.0, кажется, доволен /etc/locale.gen)
  4. выполненный sudo locale-gen
  5. установите свою систему или локаль значения по умолчанию учетной записи к en_SE.UTF-8 (например, через /etc/default/locale в подобных Debian системах)
  6. перезагрузка или выход и назад на, для активации новой локали

10
17.10.2013, 18:09
2 ответа

системный журнал

Смотрите в странице справочника для iptables. Это показывает названную цель LOG который может сделать то, что Вы хотите.

Пример

  1. Установите регистрирующийся уровень для LOG к 4.

    # DROP everything and Log it
    iptables -A INPUT -j LOG --log-level 4
    iptables -A INPUT -j DROP
    
  2. Настроить syslog.conf записать эти сообщения в отдельный файл.

    # /etc/syslog.conf
    kern.warning     /var/log/iptables.log
    
  3. Перезапуск syslogd.

    Debian/Ubuntu

    $ sudo /etc/init.d/sysklogd restart
    

    Fedora/CentOS/RHEL

    $ sudo /etc/init.d/syslog restart
    

Примечание: Этот метод входа называют фиксированными приоритетами. Они - или числа или имена (1,2,3,4..) или (ОТЛАДКА, ПРЕДУПРЕДИТЕ, ИНФОРМАЦИЯ, и т.д.).

rsyslog

Если случайно Вы используете rsyslog, можно создать основанный на свойстве фильтр как так:

# /etc/rsyslog.conf
:msg, contains, "NETFILTER"       /var/log/iptables.log
:msg, contains, "NETFILTER"     ~

Затем добавьте, что оглобли переключаются на Ваши правила iptables, что Вы хотите зарегистрироваться:

–log-prefix NETFILTER

Как альтернатива Вы могли также зарегистрировать сообщения с помощью этого типа фильтра свойства:

:msg, startswith, "iptables: " -/var/log/iptables.log
& ~
:msg, regex, "^\[ *[0-9]*\.[0-9]*\] iptables: " -/var/log/iptables.log
& ~

Примечание: Этот 2-й метод не требует никаких изменений в iptables.

Ссылки

12
27.01.2020, 20:01
  • 1
    В этом случае информация будет сохранена в /var/log/iptables и также в /var/log/messages. Я хочу только одну копию с этих данных в iptables.log –  Abid 18.10.2013, 10:26
  • 2
    я добавил свой собственный ответ, чтобы также покрыть вопрос Abid плюс пропавшие без вести logrotate конфигурация. "остановка" или "и ~" препятствует тому, чтобы сообщения продолжили вниз правила rsyslog добраться до/var/log/messages также. –  Peter 09.01.2015, 16:53

Это предполагает, что ваш брандмауэр уже делает журналы, поскольку любой простой брандмауэр должен. Для некоторых примеров требуется идентифицируемое сообщение, такое как «NetFilter» в примере SLM.

Составьте файл в RSYSLOG.D

vim /etc/rsyslog.d/10-firewall.conf

Это работает в Centos 7. Я не знаю, как убедиться, что он пришел из брандмауэра, отличного от того, чтобы искать и выйти ... CentOS странно. Не используйте это, если только следующая версия не работает.

# into separate file and stop their further processing
if  ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
    -/var/log/firewall
    & ~
}

Это работает в CentOS 7 и проверяет на содержание сообщения (заменить «Shorewall» с тем, что у вас есть в сообщении правила журнала «Дж»):

# into separate file and stop their further processing
if  ($msg contains 'Shorewall') and \
    ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
    -/var/log/firewall
    & ~
}

Это работает в других (Ubuntu, Debian, OpenSuse). И это лучший способ сделать это. Никаких поисков строк в сообщении:

# into separate file and stop their further processing
if  ($syslogfacility-text == 'kern') and \\
($msg contains 'IN=' and $msg contains 'OUT=') \\
then    -/var/log/firewall
    &   ~

и вот какое устройство OpenSUSE по умолчанию имеет (что, я думаю, каждый дистрибутив должен иметь и отсутствует) (разница, кажется, только «останови» вместо «& ~»; не все Системы поддерживают как синтаксики):

if  ($syslogfacility-text == 'kern') and \
    ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
    -/var/log/firewall
    stop
}

и для всех вышеперечисленных, не забудьте файл logrotate.d тоже:

vim /etc/logrotate.d/firewall

, содержащий:

/var/log/firewall {
    rotate 7
    size 500k
    postrotate
        # before using this, run the command yourself to make sure 
        # it is right... the daemon name may vary
        /usr/bin/killall -HUP rsyslogd
    endscript
}
6
27.01.2020, 20:01

Теги

Похожие вопросы