Lucrez la centralizarea jurnalelor mele pe un server syslog și voi avea un fortigate și servere Windows (2016) care trimit syslog-uri la un singur server Linux care rulează rsyslog și le stochează în mysql.Am configurat fortigate să trimită syslog-uri, dar rândurile din mysql din fortigate nu au aceleași nume de câmp, deci datele nu sunt înregistrate în toate coloanele din mysql.
De exemplu, un syslog de la serverul Linux conține următoarele:
2 noiembrie 11:15:25 fps-linux-01 kernel: [3716995.353386] audit: type=1400 audit(1635869725.570:17): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/ sbin/tcpdump" pid=25552 comm="apparmor_parser"
Ceea ce rezultă în câmpurile bazei de date „FromHost” să aibă o valoare „fps-linux-01”. Dar, o intrare din fortgate spune:
3 noiembrie 09:04:46. date=2021-11-03 time=09:03:56 devname="Frederick-200F" devid="FG200FT920907269" eventtime=1635948236739611958 tz="-0500" logid="0000000="forward" type="0000000="forward" level="notice" vd="root" srcip=xxxxxxx srcport=59142 srcintf="lan" srcintfrole="lan" dstip=172.98.64.173 dstport=443 dstintf="port16" dstintfrole="wan" srccountry="dstcountry="rezervat" ="Statele Unite ale Americii" sessionid=408405616 proto=6 action="start" policyid=8 policytype="policy" poluuid="2f7b990a-a844-51eb-73cf-8a7dcbe631da" policyname="Filtru - Personal" user="xxxxxx" grup ="xxxxxxxx" authserver="xxxx" service="HTTPS" trandisp="snat" transip=xxxxxxxxx transport=59142 duration=0 sentbyte=0 rcvdbyte=0 sentpkt=0 rcvdpkt=0 appcat="unscanned"
Din aceasta, FromHost este necompletat în DB, deoarece (presupun) intrarea fortgate are un punct în câmpul nume de gazdă.
Iată configurațiile relative:
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
. ?RemoteLogs & ~
modul (încărcare="ommysql")
*.* action(type="ommysql" [Informații de conectare])
Am văzut că pot obține proprietățile mesajului și să-l formatez după cum este necesar, dar execuția îmi depășește, momentan (adică nu știu cum să-l implementez).
Iată cea mai bună presupunere a mea în acest moment, vă rugăm să corectați orice este greșit sau lipsește:
template(name="RSYSLOG_StdFmt" type="list") {
proprietate(name="devname")
constant(valoare=" ")
proprietate(nume="tip")
constant(valoare=": ")
*** Pune restul mesajului aici ****
}
Este posibil ca restul datelor după ce câmpul „tip” să fie pur și simplu regurgitat la ieșire din acel moment? Dacă da, cum fac asta?
Aceasta ar trebui să pună intrarea în fișierul jurnal similar cu Syslog nativ. rsyslog-mysql îl va ridica și îl va pune în baza de date corect sau trebuie să fac și un șablon specific pentru mysql? Dacă da, cum îmi aplic șablonul numai la jurnalele care vin de la fortigate și nu la intrările locale sau la cele de pe serverele Windows?