rsyslog külön fájlba

Fórumok

Sziasztok,

Kísérletezem az iptables -el és az rsysloggal egy ubuntu 10.04 esen.
Szeretném az eldobott csomagokat loggolni, ezért beállítottam a következőket:

létrehoztam egy új láncot:

sudo iptables -N LOGGING

hozzáfűztem az input ághoz ezt a sort, de nem működött:

sudo iptables -A INPUT -j LOGGING --log-prefix "iptables-dropped: "

aztán ezt, ezt elfogadta:

sudo iptables -A INPUT -j LOG --log-prefix "iptables-dropped: "

Utána rámentem az rsyslogd re, azért, hogy külön fájlba loggoljam az INPUT ágra érkező csomagokat:

beleírtam az /etc/rsyslog.d/50-default.conf fájlba a következőket:

# iptables logging:
:msg, contains, "iptables: " -/var/log/iptables.log
& ~

Újraindítottam az rsyslogot:

sudo service rsyslog restart

És nem működik a loggolás normálisan, külön fájlba. Hiába nézem tail -f fel az /var/log/iptables fájlt, nem történik semmi sem.
Természetesen tanulva az arch linuxos élményeimből létrehoztam egy 10-default.conf fájlt is, amibe ugyanígy beleírtam ezt a 2 sort, de akkor sem működik. Létre sem hozta az iptables fájlt az rsyslog, olyan mintha nem venné tudomásul, hogy szerkesztettem a konfig fájlt. Én hoztam létre touch -al a fájlt neki, hátha ez a baja, de nem.
Összevissza írogat mindenhova. Rákerestem az iptables szóra így: grep -Ri "iptables" /var/log/, az auth log tól kezdve mindenhova loggol, csak a /var/log/iptables fájlba nem.

Most így néz ki ezen a teszt rendszeren az iptables:

Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
LOG all -- anywhere anywhere LOG level warning prefix `iptables-dropped: '

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Van valami ötletetek?

Üdv,

Zoli

Hozzászólások

Ez lehet, hogy segít - én nem jöttem rá a hibára még:

sudo grep -Ri "18:[2-3]" /var/log/ | grep -i 'rsyslogd'

/var/log/syslog:Dec 7 18:27:06 zdell rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="2028" x-info="http://www.rsyslog.com"] exiting on signal 15.
/var/log/syslog:Dec 7 18:27:06 zdell rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="2375" x-info="http://www.rsyslog.com"] (re)start
/var/log/syslog:Dec 7 18:27:06 zdell rsyslogd: rsyslogd's groupid changed to 103
/var/log/syslog:Dec 7 18:27:06 zdell rsyslogd: rsyslogd's userid changed to 101
/var/log/syslog:Dec 7 18:27:06 zdell rsyslogd-2039: Could no open output file '/dev/xconsole' [try http://www.rsyslog.com/e/2039 ]
/var/log/messages:Dec 4 17:18:32 zdell rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="652" x-info="http://www.rsyslog.com"] (re)start
/var/log/messages:Dec 4 17:18:32 zdell rsyslogd: rsyslogd's groupid changed to 103
/var/log/messages:Dec 4 17:18:32 zdell rsyslogd: rsyslogd's userid changed to 101
/var/log/messages:Dec 7 18:27:06 zdell rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="2028" x-info="http://www.rsyslog.com"] exiting on signal 15.
/var/log/messages:Dec 7 18:27:06 zdell rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="2375" x-info="http://www.rsyslog.com"] (re)start
/var/log/messages:Dec 7 18:27:06 zdell rsyslogd: rsyslogd's groupid changed to 103
/var/log/messages:Dec 7 18:27:06 zdell rsyslogd: rsyslogd's userid changed to 101
/var/log/messages.1:Nov 26 18:25:39 zdell rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="672" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.

-- Zoli

--log-prefix "iptables-dropped: " VS. :msg, contains, "iptables: " ???

Aztán:
A legvégére fűzted a LOG szabályt. Ha az iptables szabály illeszkedik, akkor elvégzi a szükséges dolgot és kilép. Nem megy tovább. A Te esetedben pedig az első szabálynál beengedi, majd ki is lép a láncból.

Így írtam be egymás után:

sudo iptables -N LOGGING
sudo iptables -A INPUT -j LOG --log-prefix "iptables-dropped: "

Ez van az input ágon:

Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
LOG all -- anywhere anywhere LOG level warning prefix `iptables-dropped:

-- Zoli

A fentiekben csináltál egy új láncot, amire mindenképpen ráfut, majd visszalép belőle. De nem raktál bele semmit sem.
Az INPUT láncod sorrendje:
1. teljesíti a csomag az első feltételt? Honnan jön: akárhonnan = OK, hova megy: akárhova = OK, mit csináljak: ENGEDD, => KILÉPÉS a láncból
2. szabály: sosem éri el, mivel az első szabály mindenre igaz
3. szabály: már a másodikig sem fut, honnan jutna ide el???

Inkább a következőt csináld:

Default szabály az INPUT láncra: ALLOW
A végén két szabály:

n.-dik LOG (packet dropped: blahblahblah)
n+1.-dik DROP (itt dobja tényleg)

Ja és továbbra is probléma, hogy a log-prefix-ed "iptables-dropped:" , de az rsyslogban "iptables:" mintára keresel.

Szia!

Ezt tényleg elírtam, (nem vettem észre) :

"--log-prefix "iptables-dropped: " VS. :msg, contains, "iptables: " ???"

Úgyhogy átjavítottam /etc/rsyslog.d/50-default.conf fájlban, és azóta végre külön, a /var/log/iptables fájlba loggolja az INPUT ágra érkező eldobott csomagokat.

Köszönöm a segítséget!

-- Zoli

Továbbra is ebbe a 3 fájlba megy a loggolás:

/var/log/syslog
/var/log/messages
/var/log/kern.log

-- Zoli

Mivel az iptables alapból logol valamilyen facilytivel (kern.warn??? -> kern.log ; *.warn -> messages?). De ha megnézed az rsyslog.conf szabályait, akkor látni fogod, hogy melyikkel, mert olyannal, ami ebbe a háromba ír.

Mint fent is mondtam, a Te LOG rule-odra sosem fog ráfutni a láncban, mivel az első szabály kielégítő lesz minden csomagra.

A LOG-ot úgy szoktuk használni, hogy a DROP target előtt ugyanarra a szabályra csinálunk egy LOG targetet is. Pont azért, mert a LOG target speciális és nem akasztja meg a lánc további feldolgozását. És itt mindig az ELŐTT-ön van a hangsúly.

sudo iptables -A INPUT -j LOG --log-prefix "iptables-dropped: "

# iptables logging:
:msg, contains, "iptables: " -/var/log/iptables.log
& ~

Na mi a hiba?

Az rsyslog az iptables: stringet fogja keresni ami persze nemlétezik.
+ mielőtt dobod a csomagot lehetőleg ez a lánc a legvégén pontosan elé azaz utolsó előttinek kell tenni a loggolást különben nem fogja loggolni az összes dobodt csomagot.
--
A legértékesebb idő a pillanat amelyben élsz.
http://phoenix_art.webmuvek.hu/
https://sites.google.com/site/jupiter2005ster/

Értem, ezt már javítottam is. Köszi

Feltettem a pastebinre az iptables -L kimenetét. http://pastebin.com/13TZ92yu
Akkor hogyan írjam át, hogy az eredménye ugyanaz legyen, mint ami most, de loggolja az eldobott csomagokat. Egyébként most is loggol már, szépen telik a /var/log/iptables fájl, már logrotate -tal beállítottam egy 7 napos ciklust.

Változtassam meg az input ág irányelvét így?

iptables -P INPUT ACCEPT

...loggolja a bejövő csomagokat
...dobja el a NEW állapotban lévőket
...csak a a RELATED és az ESTABLISHED állapotban lévőket engedje

Így legyen a sorrendiség? Én csak az INPUT ág NEW állapotbeli bejövő csomagjait szeretném loggolni.

Az én logokám szerint , ami lehet, hogy rossz, így gondolkozom:

-csak az INPUT ággal foglalkozom
-eldobok mindent ami ide jön
-irom a kivételeket, amit engedek, ez jelen esetben a RELATED és az ESTABLISHED állapotban lévő kapcsolatok

Ezt szeretném megtoldani úgy, hogy loggolom a bejövő NEW állapotú csomagokat.

Még csak most tanulom önszorgalomból a tcp/ip-t, c és bash programozást, nincs szükségem a mindennapokban rá, csak kísérletezgetem hobbiból. Tehát nem teljesen kristálytiszta, hogy mitől NEW egy kapcsolat, talán csak TCP syn csomagokat jelent ez - nem tudom, de olvasok a témában, próbálom megérteni, amint időm engedi. Minden segítséget, tanácsot köszönök!

Találtam egy jó leírást, elég robosztus, jópár nap mire átrágom rajta magam: https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html

-- Zoli

Egy kicsit gondold át a szabályt. Mint már leírtam, ha kielégíti a szabályt a csomag, kilép a láncból. Erre azt írod, hogy azzal kezded, hogy eldobsz mindent. És onnan nem is mész tovább sehova.

Szabályrendszernek kb, ilyennek kellene lennie:

-A INPUT -m state RELATED, ESTABLISHED -j ACCEPT # ezt nem akarjuk logolni, így nincs előtte a LOG szabály
-A INPUT -m state --state NEW -j LOG # ez logolja a NEW típusú kapcsolatokat
-A INPUT -m state --state NEW -j ACCEPT # ez engedélyezi, mivel már logoltuk
-A INPUT -j DROP # a legvégén eldobunk mindent

A fentinek sok értelme nincs, hiszen minden beengedünk, így már a a NEW vagy a RELATED kapcsolatoknál kiszáll a láncból. Ha a NEW-t letiltod, akkor semmi sem fog bejönni és ki is lép a láncból, azaz kb. elérhetetlenné teszed a géped.