W takim przypadku informacje zostaną zapisane w /var/log/iptablesi również w /var/log/messages. Chcę tylko jedną kopię z tych danych wiptables.log
Abid
1
Dodałem własną odpowiedź, aby zakryć również pytanie Abida, a także brakującą konfigurację logrotate. „stop” lub „& ~” zapobiegają dalszemu przechodzeniu wiadomości przez reguły rsyslog, aby dostać się również do / var / log / messages.
Peter
6
Zakłada się, że zapora już tworzy dzienniki, jak każda rozsądna zapora ogniowa. W niektórych przykładach wymaga rozpoznawalnego komunikatu, takiego jak „NETFILTER” w przykładzie slm.
utwórz plik w rsyslog.d
vim /etc/rsyslog.d/10-firewall.conf
Działa to w CentOS 7. Nie wiem, jak zweryfikować, że pochodzi z zapory, oprócz szukania IN i OUT ... CentOS jest dziwny. Nie używaj tego, chyba że następna wersja nie działa.
# into separate file and stop their further processing
if ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
Działa to w CentOS 7 i sprawdza również zawartość wiadomości (zamień „Shorewall” na cokolwiek, co masz w wiadomości reguły -j LOG):
# into separate file and stop their further processing
if ($msg contains 'Shorewall') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
Działa to w innych (Ubuntu, Debian, openSUSE). I to jest najlepszy sposób, aby to zrobić. Brak wyszukiwania ciągów w wiadomości:
# into separate file and stop their further processing
if ($syslogfacility-text == 'kern') and \\
($msg contains 'IN=' and $msg contains 'OUT=') \\
then -/var/log/firewall
& ~
I oto, co ma domyślna maszyna openSUSE (którą, jak sądzę, powinna mieć i której brakuje każda dystrybucja) (różnica wydaje się być tylko „stop” zamiast „& ~”; nie wszystkie systemy obsługują obie składnie):
if ($syslogfacility-text == 'kern') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
stop
}
Poza tym nie zapomnij też pliku logrotate.d:
vim /etc/logrotate.d/firewall
zawierający:
/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
}
Odpowiedzi:
syslog
Zajrzyj na stronę podręcznika użytkownika
iptables
. Pokazuje cel zwany,LOG
który może robić, co chcesz.Przykład
Ustaw poziom rejestrowania na
LOG
4.Skonfiguruj,
syslog.conf
aby zapisywać te wiadomości w osobnym pliku.Uruchom ponownie syslogd.
Debian / Ubuntu
Fedora / CentOS / RHEL
UWAGA: Ta metoda rejestrowania nazywa się stałymi priorytetami. Są to liczby lub imiona (1,2,3,4, ..) lub (DEBUG, WARN, INFO itp.).
rsyslog
Jeśli przypadkiem używasz
rsyslog
, możesz utworzyć filtr oparty na właściwościach, taki jak:Następnie dodaj przełącznik Thils do reguł iptables, które chcesz zalogować:
Alternatywnie można również rejestrować wiadomości przy użyciu tego typu filtru właściwości:
UWAGA: Ta druga metoda nie wymaga żadnych zmian w
iptables
.Bibliografia
źródło
/var/log/iptables
i również w/var/log/messages
. Chcę tylko jedną kopię z tych danych wiptables.log
Zakłada się, że zapora już tworzy dzienniki, jak każda rozsądna zapora ogniowa. W niektórych przykładach wymaga rozpoznawalnego komunikatu, takiego jak „NETFILTER” w przykładzie slm.
utwórz plik w rsyslog.d
Działa to w CentOS 7. Nie wiem, jak zweryfikować, że pochodzi z zapory, oprócz szukania IN i OUT ... CentOS jest dziwny. Nie używaj tego, chyba że następna wersja nie działa.
Działa to w CentOS 7 i sprawdza również zawartość wiadomości (zamień „Shorewall” na cokolwiek, co masz w wiadomości reguły -j LOG):
Działa to w innych (Ubuntu, Debian, openSUSE). I to jest najlepszy sposób, aby to zrobić. Brak wyszukiwania ciągów w wiadomości:
I oto, co ma domyślna maszyna openSUSE (którą, jak sądzę, powinna mieć i której brakuje każda dystrybucja) (różnica wydaje się być tylko „stop” zamiast „& ~”; nie wszystkie systemy obsługują obie składnie):
Poza tym nie zapomnij też pliku logrotate.d:
zawierający:
źródło