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
- 6126 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
--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.
- A hozzászóláshoz be kell jelentkezni
Í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 hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Szerintem ez csak a szokásos szivatás, amit az iptables elkövet a -v nélküli printoutoknál, nevezetesen hogy nincs benne az interface. Gyanús, hogy az első sor csak az lo interface. ;) Uh simén csak az iptables: vs iptables-dropped: lesz szerintem a gond.
- A hozzászóláshoz be kell jelentkezni
De mégis loggolja az eldobott csomagokat, hiszen látom, hogy beleír a /var/log/iptables fájlba jelen pillanatban is.
Így néz ki most az iptables - L:
-- Zoli
- A hozzászóláshoz be kell jelentkezni
Működik a loggolás, csak össze-vissza, nem pedig a /var/log/iptables fájlba...
-- Zoli
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Továbbra is ebbe a 3 fájlba megy a loggolás:
/var/log/syslog
/var/log/messages
/var/log/kern.log
-- Zoli
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Be tudnád ide írni a megfelelő sorrendben, hogy hogyan adjam be a parancsokat az iptables nek, hogy ugyanezt az eredményt kapjam, csak loggoljon mindent?
-- Zoli
- A hozzászóláshoz be kell jelentkezni
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/
- A hozzászóláshoz be kell jelentkezni
É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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni