Linux Gazette Prevodi
Registrovanje dogadjaja (logging) "zidnog programa" (firewall) u MySQL - brz i jednostavan način
By Anonymous
Bezbednost je putovanje, ne krajnji cilj. Dobra stvar tokom ovog putovanja je redovan pregled i analiza dnevnika (ili što bi neki rekli "log fajlova") "firewall"-a. (Napomena prevodioca - u daljem tekstu ću koristiti "firewall" pošto nemam inspiraciju da nađem dobru srpsku reč).

Na žalost, program "syslog" proizvodi tekstualne log fajlove koji nisu laki za analizu. Takođe, ako ne koristiš program syslog-ng, tvoji firewall logovi su verovatno razbacani i učitane u razne log fajlove.

Ovaj članak ti pokazuje kako da za 10-tak minuta pošalješ firewall logove iz syslog-ovih fajlova u MySQL bazu. Primer je rađen na SuSE 10.0 ali može se ponoviti na ostalim Linux-ima.

1. Potvrda podešenost kernela

Ovaj korak možeš preskočiti ako koristiš standardni SuSE 10.0 kernel. Standardni kerneli koji su deo Linuksa bi trebali da rade, ali proveri da ti je kernel kompajliran (ili sabran) sa opcijama CONFIG_NETFILTER, CONFIG_IP_NF_IPTABLES, CONFIG_IP_NF_FILTER i CONFIG_IP_NF_TARGET_ULOG. Većina firewall-a će takođe zahtevati CONFIG_IP_NF_CONNTRACK, CONFIG_IP_NF_FTP i CONFIG_IP_NF_IRC.

Ako imaš fajl /proc/config.gz, znači da ti je kernel sabran sa IKCONFIG opcijom.

Fajl /proc/config.gz je kompresovana verzija fajla .config koji je korišćen za pravljenje kernela, tako da možeš proveriti ako imaš neophodne opcije za "netfilter" i "ulog".

gunzip -c /proc/config.gz | grep -E 'CONFIG_(NETFILTER|(IP_NF_ (IPTABLE|FILTER|TARGET_ULOG)))'
Ako pomenute opcije nisu moduli ili sabrane u kernel, onda moraš ponovo sabrati kernel. Postavi sledeće opcije u "menuconfig":
Networking options > Network packet filtering
Networking options > Netfilter Configuration > IP tables support
Networking options > Netfilter Configuration > Packet filtering
Networking options > Netfilter Configuration > ULOG target support
Takođe možda hoćeš da proveriš da je "iptables" sabran sa "ulog" podrškom.

2.1. Instalacija MySQL

Idi na tačku 2.2 ako već imaš podešen MySQL. U protivnom:
apt install mysql
/etc/init.d/mysql restart
chkconfig mysql on
Ako radiš na SuSE i nemaš instaliran "apt4rpm", ja predlažem da ga instaliraš jer će ti baš pomoći u organizovanju paketa.

Takođe treba podesiti MySQL lozinku za root korisnika.

mysqladmin -u root password 'yourpassword'

2.2. Početna postavka baze podataka

Kucaj:

mysql -p -u root

onda kucaj lozinku. Kada si se nakačio na MySQL dazu, kucaj sledeće komande kako bi pripremio bazu da prima firewall-ove dnevnike iz "ulog".
create database ulogdb;
use ulogdb;
source /path/to/nulog/scripts/ulogd.mysqldump;
grant select,insert,update,drop,delete,create temporary tables, on ulogdb.* to ulog@localhost identified by 'ulogpass';
flush privileges;
quit;
Pa, šta se ovde izdešavalo?
  • Kreirali smo bazu podataka "ulogdb" koja će čuvati dnevnike
  • Pokrenuli smo SQL skript "ulogd.mysqldump", pripremili bazu za nulog-php, ona sada može sadržati više informacija nego MySQL tabele obezbeđene sa ulogd, i mogu se naći u direktorijumu sa skriptovima ili ovde .
  • Kreirali smo korisnika "ulog" (sa lozinkom "ulogpass") koji ima čitaj/piši pristup na bazi. Ja preporučujem sa koristiš drugačiju lozinki nego u ovom primeru.
3.1. Instalacija ulogd

Treba da instaliraš demon "ulogd":

apt install ulogd-mysql

3.2. Konfigisanje ulogd.conf

Promeni /etc/ulogd.conf da se podudara sa našom postavkom od ranije :
[MYSQL]
table="ulog"
pass="ulogpass"
user="ulog"
db="ulogdb"
host="localhost"
Najbolje je da promeniš lozinku "ulogpass" na lozinku koju si postavio u GRANT komandi u tvojoj MySQL bazi. Sada isključi iz komentara sledeće linije, da bi poslao podatke u MySQL:

plugin /usr/lib/ulogd/ulogd_MYSQL.so

i komentiraj sledeće dve linije kako bi sprečio upisivanje dnevnika u tekst fajl:

#syslogfile /var/log/ulogd.syslogmenu
#plugin /usr/lib/ulogd/ulogd_LOGEMU.so

Sada re-startuj "logd" demon i podesi da se automatski pokrene pri startovanju sistema sa "chkconfig":

/etc/init.d/ulogd restart
chkconfig ulogd on

4. Prosleđivanje iptables dnevnika

Sledeća "sed" komanda prebacuje sva tvoja "iptables" pravila da se loguju kroz ULOG, predpostavićemo da ti imaš "iptables" pravila u fajlu "iptables" (obično u /etc/sysconfig/ ili /var/lib/).

sed 's/LOG/ULOG/'; /etc/sysconfig/iptables > /etc/sysconfig/uiptables
iptables-restore < /etc/sysconfig/uiptables

I završio si sa konfiguracijom! Svi dnevnici is "firewall"-a sada idu u MySQL bazu podataka. Ne zaboravi da promeniš "firewall" skript za startovanje, tako da su nova "iptables" pravila uzeta u obzir.

5. Ubaci stare dnevnike

Za sada je sve dobro, ali verovatno hoćeš takođe da imaš stare dnevnike u MySQL bazi. Evo malog Perl skripta koji ti ovo omogućava. Neke regularne ekspresije (ili patenti za pretragu teksta) su preuzete iz adcfw-log . Ti možeš naći tvoje dnevnike u /var/log/firewall-XXXXXX.gz ili /var/log/messages-XXXXXX.gz.

Ubacivanje sledi:

gunzip -c /var/log/firewall-XXXXXX.gz | nf2sql.pl

Ponovi ovo za sve stare dnevnike. Za ubacivanje postojećih dnevnika (ili drugih ne-kompresovanih dnevnika) kao što su /var/log/messages ili /var/log/firewall uradi:

nf2sql.pl < /var/log/messages

To je to.

6. Analiza rezultata

Za analizu dnevnika iz MySQL možeš koristiti nulog ili webfwlog .

Linkovi

Inspiracija za ovaj dokument je bila strana . (na Španskom jeziku).

Evo razloga da ne koristiš dnevnike u obliku teksta.

Ako već nemaš svoje "iptables", možeš lako napraviti dobre sa shorewall , firehol ili firestarter .
Napomena prevodioca:
Ја sam 100% amater u prevođenju i veoma se dvoumim kada treba da prevedem neke reči karakteristične za oblast računara.
Biće mi drago ako ima onih koji su veštiji u prevođenju i voljni da razvijaju ovaj sajt.