Helló!
Egy olyan problémával fordulok azokhoz, akik tudnak segíteni, amit már elég sokan felvetettek, de a google-zés és egyéb man-ok olvasgatása során sem tudtam megvalósítani azt, ami másoknak sikerült.
Az iptables és syslog-ng a probléma!
Nem loggol semmit, ha loggal akkor mindenhova berakja magát!
Van egy ilyen túzfal szabályom:
....
iptables -A INPUT -p tcp -m tcp --dport 33 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 33 -j LOG --log-level debug --log-prefix "iptables:"
#
....
és egy ilyen syslog-ng.conf-om:
....
source src {
# message generated by Syslog-NG
internal();
# standard Linux log source (this is the default place for the syslog()
# function to send logs to)
unix-stream("/dev/log");
# messages from the kernel
pipe("/proc/kmsg"); };
# use the following line if you want to receive remote UDP logging messages
# (this is equivalent to the "-r" syslogd flag)
# udp();
#source src { unix-stream("/dev/log"); internal(); };
destination iptables { file("/var/log/iptables"); };
filter iptables { facility(kern) and match("iptables: "); };
log { source(src); filter(iptables); destination(iptables); flags(final); };
.....
A fent bemutatott config részletek már olyan végletet képviselnek amik semmit nem loggolnak...
A syslog-ng fut, létezik a /var/log/iptables file:
0 -rw-r----- 1 root adm 0 2007-06-10 15:29 iptables
jogokkal.
Nem tudom mit rontok el vagy mi nem megy, mert ezek alapján működni kéne, az, hogy ha konnekt jön a portra, akkor azt ő logolja és elmentse az iptables fileba és csak oda.
Az iptables szabály már felcserélésre is került, mivel azt hittem hogy azért nincs log mert nincs is mit logolni, de semmi nem változott.
Ha bárkinek van működő configja a fentiek megvalósításához, nagyon boldoggá tenne, ha azt megosztaná velem.
Nagyon szépen köszönöm!
- 1720 megtekintés
Hozzászólások
nezd meg a dmesg | grep iptables -t, hogy ott megvan-e a log.
iptables -A INPUT -m tcp -p tcp --dport 33 -j LOG --log-level debug --log-prefix "iptables:"
es a
match("iptables: ");
nem jon ossze, mert ha jol tudom iptables nem rak be szokozt a prefix es a log koze szoval igy a log kb igy kezdodne: "iptables:IN.....".
De holnap reggel majd bemasolom az en mukodo configomat ide, ha nem ez lene a hiba.
- A hozzászóláshoz be kell jelentkezni
Próbáltam már más prefixel is ez már csak így az egyszeruseg kedveert lett ilyen.
Kripróbáltam, és még mindíg semmi...
Köszönöm érdeklődéssel várom!
- A hozzászóláshoz be kell jelentkezni
dmesg-ben se latsz semmit az iptables logjabol?
- A hozzászóláshoz be kell jelentkezni
4 sort találtam benne, csak nem tudom mikori bejegyzés.
- A hozzászóláshoz be kell jelentkezni
lehet, hogy az iptables sorrendje is rosz.
iptables -L -nel a LOG-nak az ACCEPT elott kell lennie mivel ha ACCEPT-et talal akkor elfogadja es nem nezi tovabb a listat.
- A hozzászóláshoz be kell jelentkezni
Igen jogos, ha drop lenne akkor kellene a végére rakni.
Igy már minden forgalom megy a dmesg-be, de a meghatározott iptables fileba még mindíg nem sikerült betenni.
- A hozzászóláshoz be kell jelentkezni
akkor nezd meg a szurofelteleket. Probald meg a legalapvetobbel. pl csak match("iptables:")
- A hozzászóláshoz be kell jelentkezni
egy apró módosítást próbálj ki: match(^iptables)
tehát idézőjelek nélkül (bár ez elvileg mindegy) és kalappal az elején (regexp).
az én működő konfigom (bár ebben nincs regexp):
példa iptables sor:
TITLE="FireWall"
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-level warn --log-prefix "$TITLE : hidded portscan "
syslog-ng részlet:
destination firewall { file("/var/log/iptables.log"); };
filter f_iptables { match(FireWall); };
log { source(src); filter(f_iptables); destination(firewall); };
#ha nem szeretnéd a messages fájlt teleszórni a tűzfalloggal, akkor pl.
filter f_messages { level(info .. warn)
and not facility(auth, authpriv, cron, daemon, mail, news) and not match(FireWall); };
- A hozzászóláshoz be kell jelentkezni
LOG 0 -- anywhere anywhere LOG level debug tcp-sequence tcp-options ip-options uid prefix `iptables '
ez az utolso bejegyzes az iptables -L -ben.
a syslog-ng.conf ide vonatkozo reszei:
source s_all {
# message generated by Syslog-NG
internal();
# standard Linux log source (this is the default place for the syslog()
# function to send logs to)
unix-stream("/dev/log");
# messages from the kernel
file("/proc/kmsg" log_prefix("kernel: "));
# use the following line if you want to receive remote UDP logging messages
# (this is equivalent to the "-r" syslogd flag)
# udp();
};
destination df_iptables { file("/var/log/iptables"); };
filter f_iptables { match("^.*iptables.*$") and level(debug);};
log {
source(s_all);
filter(f_iptables);
destination(df_iptables);
};
- A hozzászóláshoz be kell jelentkezni
Ranezesre ez jo, de valamivel hatekonyabb lenne ha a filter igy nezne ki: facility(kernel) and level(debug) and match("^kernel: iptables").
- A hozzászóláshoz be kell jelentkezni
valoban ha a feltelet megcserelnem akkor hatekonyabb lenne. viszont a match(".*iptables.*") vs match("^kernel: iptables") -bol nem vagyok biztos hogy az utobbi jon ki gyoztesen. bar nem ismerem az algoritmust ami mogotte van. de ha mar ennyire belemegyunk akkor a match(".*iptables.*") vs match("iptables") melyik a gyorsabb?
- A hozzászóláshoz be kell jelentkezni
A '.*iptables.*' eseteben az egesz log uzenetre meg kell probalni illeszteni, mig '^kernel: iptables' eseteben csak az elejere, igy SZVSZ a kerdes el is dolt az utobbi javara. '.*iptables.*' es 'iptables' gyakorlatilag ugyanaz, egyik sem eppen hatekony. Epp nincs kedvem a glibc regexec() fuggvenyenek a forrasat atnezni a precizebb valasz erdekeben :)
- A hozzászóláshoz be kell jelentkezni
a ^-ot elneztem:(
- A hozzászóláshoz be kell jelentkezni
Erdekelne, honnan szarmazik a pipe("/proc/kmsg");, merthogy erosen bad practice. file("/proc/kmsg" log_prefix("kernel: ")); a javasolt.
- A hozzászóláshoz be kell jelentkezni
Hello!
Köszönöm a gyors reakciókat, elvielg működik a loggolás...
Csak van egy furcsaság, hogy ha sokszor restartolom a syslog-ng processt akkor egy idő után már vhogy elfelejt loggolni.
Pedig fut a process, próbáltam már parancsorból futtatni, illetve init.d-ből.
De majd rájövök az a lényeg, hogy működik csak nálam van még valami gebasz.
- A hozzászóláshoz be kell jelentkezni
Esetleg próbáld frissíteni hátha van már újabb verzió syslog-ng-ből. Azt tudom, hogy a 2.x szériában sokminden változott, és még nem elég kiforrott állítólag.
- A hozzászóláshoz be kell jelentkezni
Epp ellenkezoleg, architekturalis valtozasok miatt a 2.0 szeria a javasolt, most eppen a 2.0.4 a legfrissebb.
- A hozzászóláshoz be kell jelentkezni