Регистрация iptables в другом файле через syslog-ng

У меня есть следующие настройки в моих файлах iptables и syslog:

IPTABLES

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 222 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

-A INPUT -j DROP

-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

SYSLOG-NG

destination d_iptables { file("/var/log/iptables/iptables.log"); };

filter f_iptables { facility(kern) and match("IN=" value("MESSAGE")) and match("OUT=" value("MESSAGE")); };

filter f_messages { level(info,notice,warn) and
                    not facility(auth,authpriv,cron,daemon,mail,news) and not 
filter(f_iptables); };

log { source(s_src); filter(f_iptables); destination(d_iptables); };`

Я перезапускаю syslog-ng и журнал не пишется.

2 ответа

Решение

Ваша конфигурация syslog-ng мне подходит, а ваша конфигурация iptables - нет. -j LOG строка появляется после строки, которая УДАЛЯЕТ все, следовательно, она никогда не будет достигнута.

Вы должны переместить строку LOG непосредственно перед тем событием, которое вы хотите зарегистрировать. Если вы хотите все записать, поставьте сначала. Если вы хотите регистрировать все, что НЕ ПРИНЯТО, поместите его после всех ПРИНЯТ.

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

Iptables

    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :LOGNDROP - [0:0]
    :OUTPUT ACCEPT [63:18352]
    -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 222 -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT 
    -A INPUT -s 85.25.146.0/24 -j DROP 
    -A INPUT -j DROP

syslog.confg

destination d_iptables { file("/var/log/iptables.log"); };
filter f_iptables { match("iptables denied" value("MESSAGE")); };
filter f_debug { level(debug) and not facility(auth, authpriv, news, mail) and not filter(f_iptables); };
#       not facility(auth,authpriv,cron,daemon,mail,news) and not filter(f_iptables); };
filter f_kern { facility(kern) and not filter(f_iptables); };
log { source(s_src); filter(f_iptables); destination(d_iptables); };
Другие вопросы по тегам