Keskne logihaldus Rsyslog ja SEC näitel: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Kroom (talk | contribs)
Vrooda (talk | contribs)
 
(24 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Autorid =
*Kristjan Rõõm A41
*Viljar Rooda A31
= Sissejuhatus =
SEC on vabavaraline sündmuse korrelatsiooni vahend, mida on võimalik ära kasutada logi järelevalve, võrgu-ja julgeolekupoliitika juhtimiseks, pettuste avastamiseks ning mis tahes muude ülesanneteks, mis on seotud sündmuste korrelatsiooniga. SEC'i peamisteks eeliseks võib pidada spetsiifiliste retseptide tegemise (mida kerge reaalajas jälgida). Samuti on SEC'i eelis tema võimalus jälgida mustrid (ehk sarnaste logide korduvusi) ning selle tuvastamisel teha kasutaja poolt defineeritud tegevusi.
SEC'i miinusteks võib pidada igapäevast logianalüüsi, kuna seda on väga raske korraldada. Puuduvad statistika ning SEC kasutab peamiselt teavitusmeetodit, siis ei ole mõtet üksikuid sündmusi kogu aeg teavitada. SEC sobib tagataustal jooksva mustrite otsingu ja nendest teavitamise mehanismina.
SEC'ile on ka alternatiive. Näiteks on Microsofti Log Parser [http://www.microsoft.com/en-us/download/details.aspx?id=24659],Log-Expert[http://www.log-expert.de/] ja Splunk[http://www.splunk.com/].
= Ülesande püstitus =  
= Ülesande püstitus =  
Juhendi eesmärgiks on luua keskne logihaldus Rsyslog ja SEC näitel ning esmane logi seire.
Juhendi eesmärgiks on luua keskne logihaldus Rsyslog ja SEC näitel ning esmane logi seire.
Line 13: Line 21:
IP aadress: 192.168.56.101
IP aadress: 192.168.56.101
= Logiserveri seadistamine =
= Logiserveri seadistamine =
== Rsyslog [http://www.canonical.com/sites/default/files/active/Whitepaper-CentralisedLogging-v1.pdf]==
== Rsyslog [http://www.thegeekstuff.com/2012/01/rsyslog-remote-logging/]==
1) Luua uus virtuaalmasin unikaalse IP-aadressiga.<br/>
1) Luua uus virtuaalmasin unikaalse IP-aadressiga.<br/>
<br/>
<br/>
Line 56: Line 64:
</source>
</source>


== SEC [http://www.occam.com/sa/CentralizedLogging2012.pdf] ==
== SEC [http://simple-evcorr.sourceforge.net/SEC-tutorial/article.html] ==
SEC on PERLil põhinev skriptide kogum, kus saab reeglitega defineerida logimise mustreid. Järgneval on kirjeldatud, kuidas paigalda SECi ja defineerida ühte reeglit.
SEC on vabavaraline sündmuste logija, kus saab reeglitega defineerida logimise mustreid. Järgnevalt on kirjeldatud, kuidas paigaldada SECi ja defineerida reegleid.




1) Installige SEC
1) Installige SEC logiserverisse
<source lang="bash">
<source lang="bash">
apt-get update
apt-get update
Line 79: Line 87:
pattern=sshd\[\d+\]: Failed .+ for (\S+) from ([\d.]+) port \d+ ssh2 # muster, mida otsitakse
pattern=sshd\[\d+\]: Failed .+ for (\S+) from ([\d.]+) port \d+ ssh2 # muster, mida otsitakse
desc=User $1 has been unable to log in from $2 over SSH during 1 minute # kirjeldus
desc=User $1 has been unable to log in from $2 over SSH during 1 minute # kirjeldus
action=pipe ' %t: %s' /bin/echo %t: %s >> /etc/test
action=pipe ' %t: %s' /bin/echo %t: %s >> /etc/test #suunatakse väljund kausta
ptype2=RegExp
ptype2=RegExp
pattern2=sshd\[\d+\]: Accepted .+ for $1 from $2 port \d+ ssh2  
pattern2=sshd\[\d+\]: Accepted .+ for $1 from $2 port \d+ ssh2  
Line 92: Line 100:
perl /usr/bin/sec -conf=/etc/sec/rule1.conf -input=/var/log/remote/192.168.56.101/syslog.log
perl /usr/bin/sec -conf=/etc/sec/rule1.conf -input=/var/log/remote/192.168.56.101/syslog.log
</source>
</source>
<source lang="bash">
 
Feeding event ' Wed Jan  8 14:35:05 2014: User student has been unable to log in from 192.168.56.1 over SSH during 1 minute' to shell command '/bin/echo Wed Jan  8 14:35:05 2014: User student has been unable to log in from 192.168.56.1 over SSH during 1 minute >> /etc/test'
Näide sündmusest:
</source>
 
<pre>
Feeding event ' Wed Jan  8 14:35:05 2014: User student has been unable to log in from 192.168.56.1 over SSH during 1 minute' to shell command '/bin/echo  
Wed Jan  8 14:35:05 2014: User student has been unable to log in from 192.168.56.1 over SSH during 1 minute >> /etc/test'
</pre>


== SEC reegli teine näide ==
== SEC reegli teine näide ==
Järgnev reegel logib Puppeti kleindi sulgemist
Järgnev reegel logib Puppeti kliendi sulgemist


1) Loome reegli faili
1) Loome reegli faili
Line 107: Line 119:
type=SingleWithThreshold #üks muster
type=SingleWithThreshold #üks muster
ptype=RegExp
ptype=RegExp
pattern=puppet-agent\[\d+\]: Puppet client disabled
pattern=puppet-agent(\[\d+\]): Puppet client disabled
desc=Puppeti klient forced to close by $1
desc=Puppeti klient forced to close PID $1
action=pipe '%t : %s' /bin/mail 'puppet error' root@localhost # saadetakse mail
action=pipe '%t : %s' /bin/mail 'puppet error' root@localhost # saadetakse mail
window=3600 #intervall
window=3600 #intervall
Line 114: Line 126:
</source>
</source>


Kontrollida saab kliendi masinas antud käslusega
Kontrollida saab kliendi masinas antud käslusega[https://wiki.itcollege.ee/index.php/Logger]
<source lang="bash">
<source lang="bash">
logger -t puppet-agent -i Puppet client disabled
logger -t puppet-agent -i Puppet client disabled
Line 123: Line 135:


= Kasutatud kirjandus =  
= Kasutatud kirjandus =  
http://www.canonical.com/sites/default/files/active/Whitepaper-CentralisedLogging-v1.pdf <br/>
1. http://www.thegeekstuff.com/2012/01/rsyslog-remote-logging/ <br/>
http://www.thegeekstuff.com/2012/01/rsyslog-remote-logging/ <br/>
2. http://simple-evcorr.sourceforge.net/SEC-tutorial/article.html <br/>
http://www.occam.com/sa/CentralizedLogging2012.pdf
3. http://www.occam.com/sa/CentralizedLogging2012.pdf
http://simple-evcorr.sourceforge.net/SEC-tutorial/article.html

Latest revision as of 15:37, 17 January 2014

Autorid

  • Kristjan Rõõm A41
  • Viljar Rooda A31

Sissejuhatus

SEC on vabavaraline sündmuse korrelatsiooni vahend, mida on võimalik ära kasutada logi järelevalve, võrgu-ja julgeolekupoliitika juhtimiseks, pettuste avastamiseks ning mis tahes muude ülesanneteks, mis on seotud sündmuste korrelatsiooniga. SEC'i peamisteks eeliseks võib pidada spetsiifiliste retseptide tegemise (mida kerge reaalajas jälgida). Samuti on SEC'i eelis tema võimalus jälgida mustrid (ehk sarnaste logide korduvusi) ning selle tuvastamisel teha kasutaja poolt defineeritud tegevusi. SEC'i miinusteks võib pidada igapäevast logianalüüsi, kuna seda on väga raske korraldada. Puuduvad statistika ning SEC kasutab peamiselt teavitusmeetodit, siis ei ole mõtet üksikuid sündmusi kogu aeg teavitada. SEC sobib tagataustal jooksva mustrite otsingu ja nendest teavitamise mehanismina. SEC'ile on ka alternatiive. Näiteks on Microsofti Log Parser [1],Log-Expert[2] ja Splunk[3].

Ülesande püstitus

Juhendi eesmärgiks on luua keskne logihaldus Rsyslog ja SEC näitel ning esmane logi seire.

Kasutatud tarkvara ja virtuaalmasinad

Tarkvara

Rsyslog 5.8.6
SEC 2.5.3

Virtuaalmasinad

1) Keskne logiserver: Ubuntu Server 64bit versioon 12.04.3 LTS.
IP aadress: 192.168.56.201
2) Klient: Ubuntu Desktop 64bit versioon 13.
IP aadress: 192.168.56.101

Logiserveri seadistamine

Rsyslog [4]

1) Luua uus virtuaalmasin unikaalse IP-aadressiga.

2) Seejärel tuleks luua kaust logide jaoks.
NB! Kõik käsklused peaksid olema SUDO õigustes

mkdir /var/log/remote

3) Pärast seda tuleks anda kaustale grupi automaatse kirjutamise õigus

chmod g+ws /var/log/remote/

4) Samuti tuleks ka kausta omanik ära vahetada, et syslogil oleks täiendavad õigused.

chown syslog:adm /var/log/remote/

5) Seejärel tuleks lisada konfiguratsioonifaili(/etc/rsyslog.conf) järgnevad read:

# provides TCP syslog reception
$ModLoad imtcp
#default port 514 do not work untill rsyslog has been updated.
$InputTCPServerRun 1025

# This one is the template to generate the log filename dynamically, depending on the client's IP address.
$template FILENAME,"/var/log/remote/%fromhost-ip%/syslog.log"

# Log all messages to the dynamically formed file. Now each clients log (192.168.56.*), will be under a separate directory which is formed by the template FILENAME.
*.* ?FILENAME

6) Pärast seda tuleks kliendi masina konfiguratsioonifaili(/etc/rsyslog.conf) lisada.

# provides TCP syslog reception
$ModLoad imtcp
#default port 514 do not work untill rsyslog has been updated.
$InputTCPServerRun 1025

# Provides TCP forwarding.
#default port 514 do not work untill rsyslog has been updated.
 *.* @@192.168.56.201:1025

SEC [5]

SEC on vabavaraline sündmuste logija, kus saab reeglitega defineerida logimise mustreid. Järgnevalt on kirjeldatud, kuidas paigaldada SECi ja defineerida reegleid.


1) Installige SEC logiserverisse

apt-get update
apt-get install sec

2) Seejärel tuleks luua kaust

mkdir /etc/sec

3) Pärast seda tuleks luua reegli fail

vim /etc/sec/rule1.conf

4) Reegli faili sisuks tuleks lisada

type=PairWithWindow # Kasutatakse kahte tingimust (mustrit)
ptype=RegExp # mustri tüüp
pattern=sshd\[\d+\]: Failed .+ for (\S+) from ([\d.]+) port \d+ ssh2 # muster, mida otsitakse
desc=User $1 has been unable to log in from $2 over SSH during 1 minute # kirjeldus
action=pipe ' %t: %s' /bin/echo %t: %s >> /etc/test #suunatakse väljund kausta
ptype2=RegExp
pattern2=sshd\[\d+\]: Accepted .+ for $1 from $2 port \d+ ssh2 
desc2=SSH login successful for %1 from %2 after initial failure
action2=logonly
window=60 #ajaintervall sekundites

Antud reegel logib SSH pordi pihta tehtud ebaõnnestunuid päringuid.

5) Käivitage reegel järgmise käsuga

perl /usr/bin/sec -conf=/etc/sec/rule1.conf -input=/var/log/remote/192.168.56.101/syslog.log

Näide sündmusest:

Feeding event ' Wed Jan  8 14:35:05 2014: User student has been unable to log in from 192.168.56.1 over SSH during 1 minute' to shell command '/bin/echo 
Wed Jan  8 14:35:05 2014: User student has been unable to log in from 192.168.56.1 over SSH during 1 minute >> /etc/test'

SEC reegli teine näide

Järgnev reegel logib Puppeti kliendi sulgemist

1) Loome reegli faili

vim /etc/sec/puppetcheck.conf

2) Defineerime reegli

type=SingleWithThreshold #üks muster
ptype=RegExp
pattern=puppet-agent(\[\d+\]): Puppet client disabled
desc=Puppeti klient forced to close PID $1
action=pipe '%t : %s' /bin/mail 'puppet error' root@localhost # saadetakse mail
window=3600 #intervall
thresh=1  # kordade arv enne saatmist

Kontrollida saab kliendi masinas antud käslusega[6]

logger -t puppet-agent -i Puppet client disabled

Kokkuvõte

Lõpptulemusena on valmis logiserver koos seadistatud Rsyslogi ning kahe SECi reegliga.

Kasutatud kirjandus

1. http://www.thegeekstuff.com/2012/01/rsyslog-remote-logging/
2. http://simple-evcorr.sourceforge.net/SEC-tutorial/article.html
3. http://www.occam.com/sa/CentralizedLogging2012.pdf