iptables (-j LOG) in eine Datei umleiten (/var/log/firewal)

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Friesi
Beiträge: 582
Registriert: 07.07.2003 20:40:11
Wohnort: Stromberg
Kontaktdaten:

iptables (-j LOG) in eine Datei umleiten (/var/log/firewal)

Beitrag von Friesi » 05.10.2004 10:47:09

Ich würde gerne den Output von "-j LOG" in eine Datei /var/log/firewall umleiten.
Wie könnte ich das einstellen? Wenn ich in der syslog ja was umstelle, loggt er ja auch andere Meldungen in die firewall, ich will aber nur den Output der Firewall und nichts anderes :)

Benutzeravatar
Hendri
Beiträge: 586
Registriert: 23.08.2003 12:17:43
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Hendri » 05.10.2004 11:59:55

Hallo,
du solltest zuerst bei all deinen Log Regeln ein

Code: Alles auswählen

--log-level debug
einbauen.

Im Syslog mußt du dann ein

Code: Alles auswählen

kern.=debug             /var/log/firewall
einfügen um alle Kernel debug Meldungen in das Firewall log zu schreiben...
Ciao, Hendri

Friesi
Beiträge: 582
Registriert: 07.07.2003 20:40:11
Wohnort: Stromberg
Kontaktdaten:

Beitrag von Friesi » 05.10.2004 13:16:04

ah ok :) sowas hab ich gesucht.

Könnte ich auch ein "--log-level firewall" und dann

kern.=firewall /var/log/firewall

Benutzeravatar
Hendri
Beiträge: 586
Registriert: 23.08.2003 12:17:43
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Hendri » 05.10.2004 22:05:50

Nee, ich glaube nicht das das funkt... :?
Ciao, Hendri

Benutzeravatar
McAldo
Moderator
Beiträge: 2064
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

Beitrag von McAldo » 05.10.2004 22:56:46

Hm..., bei mir hat das leider nicht funktioniert.
Geholfen hat dieses:
http://channel.debian.de/faq/ch-config.html#s-klogdspam

McAldo
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

stargaizer
Beiträge: 152
Registriert: 01.04.2004 10:09:25
Kontaktdaten:

Beitrag von stargaizer » 06.10.2004 09:54:46

Ich habe da gute Erfahrungen mit dem ulogd gemacht:

Code: Alles auswählen

apt-get install ulogd
und dann noch

Code: Alles auswählen

iptables ... -j ULOG ....
Das steht auch im man von iptables. Der ulogd kann sogar in SQL loggen. In wieweit das sinnvoll ist, muß jeder selbst entscheiden.

stargaizer

Friesi
Beiträge: 582
Registriert: 07.07.2003 20:40:11
Wohnort: Stromberg
Kontaktdaten:

Beitrag von Friesi » 06.10.2004 10:09:17

Ah klasse.
Danke für die ganzen Tipps. Werd mir das alles mal anschauen.

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 26.10.2004 07:54:53

Hendri hat geschrieben:Hallo,
du solltest zuerst bei all deinen Log Regeln ein

Code: Alles auswählen

--log-level debug
einbauen.

Im Syslog mußt du dann ein

Code: Alles auswählen

kern.=debug             /var/log/firewall
einfügen um alle Kernel debug Meldungen in das Firewall log zu schreiben...
Ich hab das jetzt so gemacht:

Code: Alles auswählen

ptables -A OUTPUT -j LOG --log-prefix "OUTPUT geblockt: " --log-level debug
          iptables -A FORWARD -j LOG --log-prefix "FORWARD geblockt: " --log-level debug
          iptables -A INPUT -j LOG --log-prefix "INPUT geblockt: "  --log-level debug
und in der /etc/syslog.conf

Code: Alles auswählen

kern.=debug                     /shared/log/firewall.txt
Dann Firewall und syslogd restarten, und es sollte gehen. Es geht aber nicht, d.h. er erstellt die Datei, diese ist aber leer.

Was mache ich falsch ?
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 26.10.2004 18:15:22

Ich hab überall im Internet die selbe beschreibung gefunden, und genau nach der hab ich es gemacht:
In meinem Script steht folgendes:

Code: Alles auswählen

iptables -A OUTPUT -j LOG --log-level info --log-prefix "OUTPUT:"
        iptables -A FORWARD -j LOG --log-level info --log-prefix "FORWARD:"
        iptables -A INPUT -j LOG --log-level info --log-prefix "INPUT:"
und er nimmt das auch an:

Code: Alles auswählen

localhost:~# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
DROP       tcp  --  anywhere             anywhere            tcp flags:!SYN,RST,ACK/SYN state NEW
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
DROP       all  --  localhost/8          anywhere
DROP       all  --  localhost/12         anywhere
DROP       all  --  localhost/24         anywhere
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            multiport dports ftp,www,https,2001,4662,6881,6882,6883,6884,6885,6886
ACCEPT     udp  --  anywhere             anywhere            multiport dports ntp,2001,3998,4672,ipp,8767
LOG        all  --  anywhere             anywhere            LOG level info prefix `INPUT:'

Chain FORWARD (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             localhost           multiport dports 8889,9089,ircd,27900,28900,29900,29901,32772,33114
ACCEPT     udp  --  anywhere             localhost           multiport dports 6500,13139,27900,32772,32790,33114
LOG        all  --  anywhere             anywhere            LOG level info prefix `FORWARD:'

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
LOG        all  --  anywhere             anywhere            LOG level info prefix `OUTPUT:'
in der /etc/syslog.conf hab ich folgende Zeile hinzugefügt:

Code: Alles auswählen

kern.=info              -/shared/log/firewall.txt
Und er erstellt das Logfile, aber es ist leer. Das kann aber nicht sein, ansonsten hat die firewall mir die Konsole zugespammt, also sind logdaten da !

Weiß da irgendwer was ?
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
Hendri
Beiträge: 586
Registriert: 23.08.2003 12:17:43
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Hendri » 27.10.2004 00:19:37

Hatte so ein Verhalten des Logging prozesses auch schon einmal, dann hat er aber garnichts mehr gelogged... :?
Erst ein wechsel in den Runlevel 6 hat geholfen... :D
Ciao, Hendri

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 27.10.2004 20:22:18

Runlevel 6 ? wie stell ich das ein ?
dann hat er aber garnichts mehr gelogged...
Das kann man bei mir auch sagen, wenn ich das firewallscript und die /etc/syslog.conf wie oben habe erstellt er zwar die Logdatei an sich wenn ich den syslogd neustarte, aber diese ist eben leer.
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
QT
Beiträge: 1235
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 27.10.2004 20:34:20

knecht hat geschrieben:Runlevel 6 ? wie stell ich das ein ?
Runlevel 6 ist reboot, das geht mit /sbin/reboot :lol:

Ansonsten wechselt man mit "telinit <num>" in einen runlevel <num> im laufenden System und den default beim Booten stellt man in /etc/inittab ein.

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 27.10.2004 20:48:42

ach so :oops:

aber trotz reboot ist nichts anders . . . ich hab auch ulog schon probiert, was mache ich den falsch ???????
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
Hendri
Beiträge: 586
Registriert: 23.08.2003 12:17:43
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Hendri » 27.10.2004 22:51:32

Poste doch bitte einmal deine /etc/syslog.conf
bzw. wird ins syslog gelogged?
Ciao, Hendri

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 27.10.2004 23:41:20

also ich hab

Code: Alles auswählen

*.*;auth,authpriv.none          -/var/log/syslog
in der /etc/syslog.conf

in der /var/log/syslog stehen nur Meldungen meiner Cronjobs

Code: Alles auswählen

Oct 27 23:31:01 localhost /USR/SBIN/CRON[25968]: (root) CMD (/root/pppd-checker.sh)
Oct 27 23:32:01 localhost /USR/SBIN/CRON[25975]: (root) CMD (mysqldump -u root --password=**** -B forum > /shared/temp/forum-mysql/forumDB.sql)
Oct 27 23:32:01 localhost /USR/SBIN/CRON[25976]: (root) CMD (/root/pppd-checker.sh)
Oct 27 23:33:01 localhost /USR/SBIN/CRON[25995]: (root) CMD (mysqldump -u root --password=**** -B forum > /shared/temp/forum-mysql/forumDB.sql)
Oct 27 23:33:01 localhost /USR/SBIN/CRON[25997]: (root) CMD (/root/ip.sh)
Oct 27 23:33:01 localhost /USR/SBIN/CRON[25998]: (root) CMD (/root/pppd-checker.sh)
Oct 27 23:34:01 localhost /USR/SBIN/CRON[26014]: (root) CMD (mysqldump -u root --password=**** -B forum > /shared/temp/forum-mysql/forumDB.sql)
Oct 27 23:34:01 localhost /USR/SBIN/CRON[26016]: (root) CMD (/root/pppd-checker.sh)
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

ChandlerBing
Beiträge: 95
Registriert: 01.06.2004 13:54:02

Beitrag von ChandlerBing » 11.05.2005 14:37:01

*Leiche ausgrab*

Ich habe exakt das selbe Problem:
Ich möchte die iptables Meldungen in /var/log/iptables haben, nicht in syslog oder messages.
Ich habe in meiner /etc/init.d/firewall die log-Einträge um "--log-level debug" ergänzt (und dann /etc/init.d/firewall restart), z.B. so:

Code: Alles auswählen

iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-level debug --log-prefix "REJECT TCP "
Dann habe ich /etc/syslog.conf ergänzt um:

Code: Alles auswählen

kern.debug    /var/log/iptables
(dann ein /etc/init.d/sysklogd restart)

Ergebnis:
Die Meldungen von iptables erscheinen weder in messages noch in syslog, aber sie erscheinen eben auch nicht in /var/log/iptables. Die Datei wird angelegt, bleibt aber leer.

Ich habe x Howtos im Netz gefunden, die genau diesen Weg vorschlagen, bei mir gehts nicht, ich bin mit meinem Latein am Ende.
Weiß jemand Rat?

Danke,
Chandler

P.S.: Ich weiß, dass sich das auch anders mit syslog-ng lösen lässt, ich würde aber gern bei syslogd bleiben.
P.P.S.: init 6 kommt nicht in Frage! 8)

Benutzeravatar
rolo
Beiträge: 2697
Registriert: 29.08.2002 12:12:25
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: hannover

Beitrag von rolo » 11.05.2005 14:50:58

> *Leiche ausgrab*
ich versteh sowas nicht, zumal sogar in den forums-regeln was dazu steht.

ChandlerBing
Beiträge: 95
Registriert: 01.06.2004 13:54:02

Beitrag von ChandlerBing » 11.05.2005 15:00:29

Entschuldige, ich wusste nicht, dass das hier so gehandhabt wird.
Ich will mich nicht über den Sinn dieser Regelung auslassen, scheinbar ist man da anderer Meinung.
Wie dem auch sei, die Mods können diesen Beitrag gern löschen, dann erstelle ich einen neuen (wenn euch das lieber ist)

Benutzeravatar
chu-i
Beiträge: 157
Registriert: 10.11.2005 23:29:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

Beitrag von chu-i » 31.12.2005 04:11:03

Da die Log Datei erstellt wird, gehe ich davon aus das der syslog richtig funtzt.
Eine Bestätigung dieser Vermutung wäre auch, das die normalen Log Dateien weiterhin beschrieben werden.
Somit bleiben nur die iptables Regeln als Schuldiger übrig.

...kurz mal abgeschweift
Zusätzlich würde ich noch ein Minuszeichen in die /etc/syslog.conf eintragen.
Damit werden die Nachrichten nicht gecachet sonder sofort gelogt.

Code: Alles auswählen

kern.debug              -/var/log/iptables
Sollte jedoch nicht zu deinem Problem führen.
daher weiter im Text...

Bei den iptables vermutet ich einen inhaltichen Fehler.
Die erste Regel die greift, gilt.
Das ist die Faustformel für iptables.

Wenn also deine Regeln alle Eventualitäten abfangen bevor es zum Log kommt,
gibt´s auch kein Log. bzw. es wird nur noch das gelogt was übrig bleibt.

BSP:

Code: Alles auswählen

iptables blabla 
(deine Standart Ketten)
...

Code: Alles auswählen

iptables -A INPUT -j DROP 
(Alles was bis jetzt nicht gegriffen hat, wird gelöscht)
...

Code: Alles auswählen

iptables -A INPUT -j LOG --log-level info --log-prefix "INPUT:"  
(bekommt nix mehr zum loggen ab, weil vorher alles gedropt wurde!)

:wink:
Thx & cya Chu-i

„Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
Benjamin Franklin (1706-1790†)

Antworten