iptables logok

Fórumok

Sziasztok, egy kis segítséget kérnék, amióta loggolom a tűzfal forgalmat, erőteljesen megnövekedetek a debug, kern, és syslog fájlok, hogyan tudnám megoldani hogy ezekbe a log-fájlokba ne loggolja a tűzfal forgalmat!
Előre is köszönöm

Hozzászólások

"megnövekedetek a debug, kern, és syslog fájlok, hogyan tudnám megoldani hogy ezekbe a log-fájlokba ne loggolja a tűzfal forgalmat!"
Ha sehol sem akarod látni a tűzfal logját, akkor érdemesebb inkább a tűzfal logolását megszüntetni. Ha rendszeresen túl nagyra nő emiatt a logfile, akkor felmerül a gyanú, hogy minden logolásra kerül, és nem csak az ésszerűen megválasztott, fontosnak ítélt forgalom. A severityt állíthatod a logolást meghatározó iptables parancsban. Ennek figyelembevételével pedig az általad használt syslog démon konfigurációjában lehet meghatározni, mi hova (ne) kerüljön.

Összefoglalva: logolandó forgalom meghatározása, amennyiben szükséges, megfelelő severity, és esetleg a prefix megfelelő beállítása, ezek alapján a syslog démon beállítása.

Ez engem is érdekel.

"hogyan tudnám megoldani hogy ezekbe a log-fájlokba ne loggolja a tűzfal forgalmat!"

Nem tudom, hogy milyen konfigurációval használod az iptables-t, de én például az alábbi két paranccsal állítom be a logolást:

iptables -A INPUT -m state --state NEW -j ULOG --ulog-prefix "INPUT: " -v
iptables -A FORWARD -m state --state NEW -j ULOG --ulog-prefix "FORWARD: " -v

Ezzel megadod, hogy minden bejövő és áthaladó (route-olt) forgalom felépítéséről készüljön logbejegyzés, de a már felépült kapcsolatok csomagjait nem naplózza. Ezzel a megoldással a logok alapbeállításban a /var/log/ulog/syslogemu.log fájlba kerülnek. A mi tűzfalunkon 2 hétre visszamenőleg vannak meg a logok, ez logrotate-tel van forgatva napi szinten. Ezekkel a beállításokkal jelen pillanatban kb. 600 MB-ot foglalnak ezek a logok, és nem kerül semmilyen bejegyzés a syslog-ba vagy bármilyen más rendszerszintű logfájlba.

nekem ezek a sorok vannak a tűzfalban és ezek szerint mindent logol!
hogyan tudnám beállítani csak a létrejött kapcsolatokat logolja, és ha lehetséges egy másik helyre?

-A FORWARD -m state -o eth0 --state ESTABLISHED -j LOG --log-level 7 --log-prefix BANDWIDTH_OUT:
-A FORWARD -m state -i eth0 --state ESTABLISHED -j LOG --log-level 7 --log-prefix BANDWIDTH_IN:
-A OUTPUT -m state -o eth0 --state ESTABLISHED -j LOG --log-level 7 --log-prefix BANDWIDTH_OUT:
-A INPUT -m state -i eth0 --state ESTABLISHED -j LOG --log-level 7 --log-prefix BANDWIDTH_IN:

Induljunk ki onnan, hogy azért van ez a BANDWIDTH_IN és BANDWIDTH_OUT logprefix és a logolás, mert beleírtad, vagy beletette valami. Mi volt a cél vele? Gondolhatnék forgalomszámlálásra, de arra ott vannak az összesített számlálók szabályonként. Grafikont akartál rajzolni belőle? Ha a BANDWIDTH_IN és BANDWIDTH_OUT szerepét tudjuk, utána dönthető el az, hogy le lehet-e mondani róla, vagy javasolható-e jobb megoldás - valószínűleg igen.

"hogyan tudnám beállítani csak a létrejött kapcsolatokat logolja"
A kérdésedre abban a gergelykiss által írt hozzászólásban rejlik a válasz, amelyik a kérdésedet megelőzte.

"és ha lehetséges egy másik helyre?"
Erre pedig Elbandi és Kiskübi írásaiban, valamint a fenti gergelykiss-féle hozzászólásban találsz konkrétumokat.

Igazából végül is kiderült hogy a webmin bandwith monitor nevű modulja használja a BANDWIDTH_IN és BANDWIDTH_OUT logprefixet.
Mindenképpen szeretném a legrészletesebben loggolni a szerver forgalmamat, ehhez mindenképpen a syslog-ng a jó választás vagy rsyslog-al is megoldható?

"a webmin bandwith monitor nevű modulja használja"
Tehát a Bandwidth Monitoring modul illesztette be. Szükséged van egyáltalán erre a modulra? Hasznos ez neked? Látsz a kimutatásaiban olyan információt, amit hasznosítani tudsz? Ha igen, akkor maradjon. Nézd meg, melyik logfile-ból dolgozik, azt az egyet hagyd meg, a többibe való logolást pedig vedd ki. Ezt el tudja intézni valamelyik syslog démon.

"a legrészletesebben loggolni a szerver forgalmamat"
Akkor el kellene dönteni, hogy mit is akarsz logolni és miért. Hogy mit értesz az alatt, hogy "szerver forgalmamat"? Az összes csomag kell az SSH, HTTP, HTTPS, SMTP, POP3, IMAP és minden egyéb protokollon is? Jó ez neked?

Azt próbáld megérteni, hogy az összes bejövő és kimenő csomag logolásának nincs értelme, ha nem tudod felhasználni a keletkezett infornmációt, és még a tárolása is gondot okoz. Mindamellett nem elhanyagolható teljesítménykihatása is van ennek, természetesen negatív irányba. Emiatt akár támadhatóvá is válhat a rendszer (pl. DOS).

Logolni akkor érdemes csak, ha szükség esetén egyértelműen ki is tudod nyerni a nagy adatmennyiségből a téged érdeklő információt.

Határozd meg, hogy mire vagy kíváncsi. Ehhez arra van szükség, hogy tudd, milyen információt akarsz a végén megszerezni. Koránt sem biztos, hogy a csomagok egyedi logolása a célszerű. Ezt neked kell tudnod, nekem ilyen opció jutnak eszembe:
a) új kapcsolatok
b) lebomló kapcsolatok (ahol ez értelmezett)
c) meghatározott protokollok és portok forgalma
d) a nem be- és átengedett, azaz tiltott csomagok
e) csak a bejövő, vagy csak a kimenő kapcsolatok forgalma
e) minden csomag

Egy csomó más és bonyolult feltétel alapján lehet logolni - pont ugyanúgy, ahogy csomagszűrni.

Ismét: ennyi információ alapján ne várd, hogy az egyedüli és üdvözítő megoldást leírják, mert neked kell eldöntened, mire és miért van szükséged.

Az, hogy syslogd, syslog-ng, rsyslog, vagy egyéb syslog démon, csak ezután jön. Tehát: feleslegesen nem logolunk, de ami pedig fontos, azt szabályozhatjuk, hogy hova kerüljön.

vagy ULOG targetet hasznalsz akkor kell egy kulon progi (pl ulogd, specter, stb), vagy siman LOG targetet hasznalsz, es valami ertelmes syslog progival (syslog-ng tudja) kifilterezed a kern.*-bol az iptables logot a log-prefix alapjan. vagy lasd az errol szolo blogom.

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Én váltottam syslog-ng-re, mert nem találtam elégnek, hogy a facility-vel és a priority-vel szűrjem a tűzfal bejegyzéseit (amik különben sem erre valók).

syslog-ng-vel definiálhatsz saját szűrőket pl. reguláris kifejezésre, saját kimeneti célokat, miegymás... jó cucc.

Első lépés, az legyen, hogy a syslog-ng -t feltelepíted.
Azután egy kis config:


1. a syslog-gn.conf ~170. sora körül telálod a filtereket tegyél be két újat közéjük:
   filter f_not_firewall {
      not match("FIREWALL_" value("MESSAGE"));
   };
   filter f_firewall {
      match("FIREWALL_" value("MESSAGE"));
   };
2. a syslog-ng.conf 130. sora körül találod a destination -öket tegyél be egy újat:
   destination d_firewall {
      file("/var/log/firewall/${YEAR}/${MONTH}/${YEAR}-${MONTH}-${DAY}-${HOUR}-firewall.log"
           template("${YEAR}-${MONTH}-${DAY} ${HOUR}:${MIN}:${SEC} ${TZ}  [${PRIORITY}.${FACILITY}]  ${MSG}\n")
           template_escape(no));
   };
3. Valamint a 230. sor körül a logokat vedd fel a saját logodat:
   log {
        source(s_all);
        filter(f_firewall);
        destination(d_firewall);
       };
4. Végül keresd meg a syslog, messages és kernel log sorait a log{}; direktívák között és az f_not_firewall szűrőt tedd be a destination(); direktíva elé

Így az összes firewall log a firewall saját logfilejaiba fog menni, mégpedig évenként és havonként külön mappába és óránként külön fileba
Nagyjából ennyi, ha kérdésed van akkor kérdezz.

----
올드보이
http://molnaristvan.eu/

rsyslog eseteben a kovetkezo rituale alkalmazando:

# $pkgmanager purge rsyslog
# $pkgmanager install syslog-ng

Mas nem segit, kiveve ha van keznel par felaldozhato barany, vagy almodbol felkelve is tudsz brainfuckban programozni, mert akkor van ra esely, hogy valami csekely ertelmet lass a configjaban (es esetleg meg ugy is mukodjon, ahogy kene neki).

Egyebkent, hogy a kerdesre is valaszoljak: igen, lehet. De sokkal egyszerubb kidobni az rsyslogot az ablakon.

--
|8]

Kell egy create_dirs(yes) a 2. pontban leirt destination-hoz, valahogy igy:


 destination d_firewall {
      file("/var/log/firewall/${YEAR}/${MONTH}/${YEAR}-${MONTH}-${DAY}-${HOUR}-firewall.log"
           template("${YEAR}-${MONTH}-${DAY} ${HOUR}:${MIN}:${SEC} ${TZ}  [${PRIORITY}.${FACILITY}]  ${MSG}\n")
           template_escape(no)
           create_dirs(yes));
   };

(Egyebkent javaslom a syslog-ng dokumentacio atfutasat, hosszu, amde hasznos es jo. Raadasul egesz jol lehet keresni benne.)

--
|8]

4. Végül keresd meg a syslog, messages és kernel log sorait a log{}; direktívák között és az f_not_firewall szűrőt tedd be a destination(); direktíva elé

Ehhez hasonloan megkeresed a debug log sorait, es beirod oda is a filter(f_not_firewall) sort a destination() ele.

--
|8]