Linuxi administreerimine - Labor 2 (keskse logihalduse rakendamine) protokoll: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
 
(10 intermediate revisions by the same user not shown)
Line 12: Line 12:
Luua kohalikus võrgus kahes virtuaalmasinas keskne logihaldus. Üks masin on logiserver ja teine klient, mis saadab oma logid sinna.
Luua kohalikus võrgus kahes virtuaalmasinas keskne logihaldus. Üks masin on logiserver ja teine klient, mis saadab oma logid sinna.


Server: Ubuntu Server 64bit, '''versioon'''
Server: Ubuntu Server 64bit, versioon: 12.04.3 LTS


Klient: Ubuntu client 64bit, '''versioon'''
Klient: Ubuntu client 64bit, versioon 13.04


Abimaterjal - väljavõte Sander Arnus lõputööst [http://enos.itcollege.ee/~mernits/Linux%20administreerimine/Arnus%20-%20keskne%20logilahendus.pdf|"Keskse logilahenduse rakendamine Hariduse Infotehnoologia Sihtasutuses"] ja selle IT Kolledži wiki materjal [Keskse_logilahenduse_rakendamine].
Abimaterjal - väljavõte Sander Arnus lõputööst [http://enos.itcollege.ee/~mernits/Linux%20administreerimine/Arnus%20-%20keskne%20logilahendus.pdf|"Keskse logilahenduse rakendamine Hariduse Infotehnoologia Sihtasutuses"] ja selle IT Kolledži wiki materjal [[Keskse logilahenduse rakendamine]].


= Kasutatud tarkvara =
= Kasutatud tarkvara =
Logstash, elasticsearch, kibana
Logstash versioon 1.1.12 - logiserver, mis võtab vastu ja töötleb logisid
 
Elasticsearch versioon 0.90.0 - logide talletamiseks
 
Kibana 0.2.0 - veebiliides logide sirvimiseks ja otsimiseks
 
''NB! Kasutasin samu versioone, mis on kasutanud S. Arnus, kuna Kibana versioon 3 (version 3 milestone 4) on totaalselt teistsugune varasematest ja lahendus selle versiooniga ei töötanud.''
 
= Protokoll =
 
== Serveri seadistamine ==
Uus virtuaalmasin nimega LA-logiserver-64 (kasutatud varem eksporditud masinat IT Kolledži elab keskkonnast).
 
Omistasin masinale staatilise ip 192.168.56.210 (kuna kasutusel on ka teine server (puppet), mille aadress on juba 192.168.56.200). Selleks muutsin /etc/network/interfaces failis ip aadressi eth1 võrgukaardi jaoks.
 
/etc/hostname failis asendasin masina nimeks '"logimassin"'. Koos domeeninimega on masina nimi "logimassin.planet.zz" (FQDN).
 
=== Logstash ===
Kasutatud S. Arnus lahendust
 
<source lang="bash">
apt-get install openjdk-7-jre
mkdir /etc/logstash
 
wget https://logstash.objects.dreamhost.com/release/logstash-1.1.12-flatjar.jar
mv logstash-1.1.12-flatjar.jar /etc/logstash/logstash.jar
</source>
 
Loon konfiguratsioonifaili /etc/logstash/logstash.conf sisuga:
NB! Eemaldasin windowsi ja RELP protokollide logid, kuna neid ei ole antud laboris kasutatud.
 
<source lang="bash">
input {
        #Linux/Unix süsteemidest tulevad logid
        tcp {
                type => "syslog-tcp"
                port => 10514
        }
        #Logiserveri enda logid
        file {
                type => "logserver"
                path => [ "/var/log/syslog", "/var/log/*.log" ]
        }
}
output {
        #Saadetakse andmebaasi
        elasticsearch {
        }
}
 
</source>
 
Loon automaatse käivituse jaoks kirje ''upstart''i
 
<source lang="bash">
nano /etc/init/logstash-server.conf
</source>
 
Ja faili sisu:
 
<source lang="bash">
# logstash server instance
description    "logstash server instance"
start on virtual-filesystems
stop on runlevel [06]
respawn
respawn limit 5 30
limit nofile 65550 65550
env HOME=/etc/logstash
chdir /etc/logstash
setuid logstash
setgid adm
console log
#Minimaalne ja maksimaalne javale lubatud mälumaht
#env JAVA_OPTS='-Xms512m -Xmx512m'
script
      exec java -jar /etc/logstash/logstash.jar agent -f /etc/logstash/logstash.conf
end script
</source>
 
Loon kausta /var/log/logstash ja kasutaja nimega logstash, lisan ta gruppi adm.
 
<source lang="bash">
mkdir /var/log/logstash
adduser --system --disabled-password --no-create-home --group --quiet logstash
usermod -a -G adm logstash
</source>
 
Muudan vajalike kaustade omanikuks kasutaja nimega "logstash" ja grupi "adm"
 
<source lang="bash">
chown -R logstash:adm /etc/logstash/
chown -R logstash:adm /var/log/logstash/
</source>
 
=== Elasticsearch ===
Laen internetist alla elasticsearchi binaarse paki, pakin selle lahti (installeerin) ja eemaldan faili.
 
<source lang="bash">
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.0.deb
dpkg -i elasticsearch-0.90.0.deb
rm elasticsearch-0.90.0.deb
</source>
 
Teenuse käivitamine
 
<source lang="bash">
service elasticsearch start
</source>
 
=== Kibana ===
Installeerin sõltuvused ja tõmban internetist pakitud kibana arhiivi.
 
<source lang="bash">
apt-get install ruby1.9.3 rubygems
 
wget https://github.com/rashidkpc/Kibana/archive/v0.2.0.tar.gz
tar -zxf v0.2.0.tar.gz
mv Kibana-0.2.0/ /etc/kibana
rm v0.2.0.tar.gz
cd /etc/kibana
gem install bundler
bundle install
</source>
 
Muudan faili /etc/kibana/KibanaConfig.rb ja seal sees leiduvat "KibanaHost" stringi. Stringi on vaja kirjutada masina IP-aadress, et pääseks ligi veebiserveriga Kibana kasutajakeskkonnale.
 
<source lang="bash">
KibanaHost = ‘192.168.56.210’
</source>
 
Loon upstarti kirje kibana automaatseks käivitamiseks
 
<source lang="bash">
nano /etc/init/kibana.conf
</source>
 
Faili sisu:
 
<source lang="bash">
# kibana.conf# kibana - log viewer
description    "Kibana logstash viewer"
start on virtual-filesystems
stop on runlevel [06]
respawn
respawn limit 5 30
limit nofile 65550 65550
# Environment
env HOME=/etc/kibana/
chdir /etc/kibana
setuid logstash
setgid adm
console log
# Run Kibana, which is in /etc/kibana
script
      ruby /etc/kibana/kibana.rb
end script
 
</source>
 
Töö lõppu üks korralik taaskäivitus ja olen serveri seadistamisega jõudnud lõpuni.
 
== Kliendi seadistamine ==
Kliendiks Ubuntu client 64bit. Kasutusel sama klient, mis samas aines puppeti laboris kliendina.
 
=== Rsyslog ===
Rsyslog on Linux/UNIX masina jaoks logiklient, mis saadab logisid edasi seadistatud serverile. Kui rsyslogi seadistatud poleks, saab seda teha kasutades käsku
 
<source lang="bash">
apt-get install rsyslog
</source>
 
Muudan kliendis rsyslogi konfiguratsioonifaili
 
<source lang="bash">
nano /etc/rsyslog.conf
</source>
 
Lisasin TCP kommentaaride juurde rea, mis saadab üle TCP protokolli logid määratud ip-aadressi suunas.
 
<source lang="bash">
*.* @@192.168.56.210:10514
</source>
 
Seletused:
 
<nowiki>*</nowiki>.* kõik logifailid
 
@@ - kasutades TCP protokolli (@ - UDP protokoll) - miks kasutada TCP-d? Kuna TCP on kindlam ja turvalisem, ei lase andmekaol tekkida.
 
192.168.56.210 - "logimassin" serveri ip-aadress
 
10514 - logide saatmise ja vastuvõtmise port
 
Kliendil on vaja rsyslogi jaoks teha taaskäivitus. Seda saab teha kas masinat taaskäivitades või kasutades käsku
 
<source lang="bash">
service rsyslog restart
</source>
 
= Ligipääs ja testimine =
Veebiliidesest on võimalik keskkond avada, kui trükkida sisse aadress http://192.168.56.210:5601. Mina aga lisasin kliendi masina hosts faili kirje
 
<source lang="bash">
192.168.56.210          logimassin.planet.zz        logimassin
</source>
 
Avades liidese näen nii serverist (logimassin) kui ka kliendist (client) tulnud logisid. Et asja illustreerida enda jaoks veelgi, panin käima serveri (puppet) ja läbi Kibana veebiliidese lugesin välja, mis kliendi logifailis tekkis, kui puppet saatis sinna mingeid uuendusi.
 
= Kaitsmine =
syslogng, logstash ja rsyslog
 
Logstashi installeerimine on väga lihtne ja ainukeseks piiranguks (sõltuvuseks) on java olemasolu. Logstash on väga skaleeruv ja lihtsasti hallatav. Logstashi saab saata logisid erinevatest sisenditest - ei ole piiratud ainult syslogi-saatvate operatsioonisüsteemidega.

Latest revision as of 13:24, 5 December 2013

Labor 2 protokoll - keskse logihalduse rakendamine

Sten Aus

A32

28.11.2013

Õppeaine ja ülesanne: Linuxi administreerimine#Keskne_logiserver

Ülesande püstitus

Luua kohalikus võrgus kahes virtuaalmasinas keskne logihaldus. Üks masin on logiserver ja teine klient, mis saadab oma logid sinna.

Server: Ubuntu Server 64bit, versioon: 12.04.3 LTS

Klient: Ubuntu client 64bit, versioon 13.04

Abimaterjal - väljavõte Sander Arnus lõputööst "Keskse logilahenduse rakendamine Hariduse Infotehnoologia Sihtasutuses" ja selle IT Kolledži wiki materjal Keskse logilahenduse rakendamine.

Kasutatud tarkvara

Logstash versioon 1.1.12 - logiserver, mis võtab vastu ja töötleb logisid

Elasticsearch versioon 0.90.0 - logide talletamiseks

Kibana 0.2.0 - veebiliides logide sirvimiseks ja otsimiseks

NB! Kasutasin samu versioone, mis on kasutanud S. Arnus, kuna Kibana versioon 3 (version 3 milestone 4) on totaalselt teistsugune varasematest ja lahendus selle versiooniga ei töötanud.

Protokoll

Serveri seadistamine

Uus virtuaalmasin nimega LA-logiserver-64 (kasutatud varem eksporditud masinat IT Kolledži elab keskkonnast).

Omistasin masinale staatilise ip 192.168.56.210 (kuna kasutusel on ka teine server (puppet), mille aadress on juba 192.168.56.200). Selleks muutsin /etc/network/interfaces failis ip aadressi eth1 võrgukaardi jaoks.

/etc/hostname failis asendasin masina nimeks '"logimassin"'. Koos domeeninimega on masina nimi "logimassin.planet.zz" (FQDN).

Logstash

Kasutatud S. Arnus lahendust

apt-get install openjdk-7-jre
mkdir /etc/logstash

wget https://logstash.objects.dreamhost.com/release/logstash-1.1.12-flatjar.jar 
mv logstash-1.1.12-flatjar.jar /etc/logstash/logstash.jar

Loon konfiguratsioonifaili /etc/logstash/logstash.conf sisuga: NB! Eemaldasin windowsi ja RELP protokollide logid, kuna neid ei ole antud laboris kasutatud.

input {
        #Linux/Unix süsteemidest tulevad logid
        tcp {
                type => "syslog-tcp"
                port => 10514
        }
        #Logiserveri enda logid
        file {
                type => "logserver"
                path => [ "/var/log/syslog", "/var/log/*.log" ]
        }
}
 
output {
        #Saadetakse andmebaasi
        elasticsearch {
        }
}

Loon automaatse käivituse jaoks kirje upstarti

nano /etc/init/logstash-server.conf

Ja faili sisu:

# logstash server instance
description     "logstash server instance"
 
start on virtual-filesystems
stop on runlevel [06]
 
respawn
respawn limit 5 30
limit nofile 65550 65550
 
env HOME=/etc/logstash
chdir /etc/logstash
setuid logstash
setgid adm
console log
 
#Minimaalne ja maksimaalne javale lubatud mälumaht
#env JAVA_OPTS='-Xms512m -Xmx512m'
 
script
      exec java -jar /etc/logstash/logstash.jar agent -f /etc/logstash/logstash.conf
end script

Loon kausta /var/log/logstash ja kasutaja nimega logstash, lisan ta gruppi adm.

mkdir /var/log/logstash
adduser --system --disabled-password --no-create-home --group --quiet logstash
usermod -a -G adm logstash

Muudan vajalike kaustade omanikuks kasutaja nimega "logstash" ja grupi "adm"

chown -R logstash:adm /etc/logstash/
chown -R logstash:adm /var/log/logstash/

Elasticsearch

Laen internetist alla elasticsearchi binaarse paki, pakin selle lahti (installeerin) ja eemaldan faili.

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.0.deb
dpkg -i elasticsearch-0.90.0.deb
rm elasticsearch-0.90.0.deb

Teenuse käivitamine

service elasticsearch start

Kibana

Installeerin sõltuvused ja tõmban internetist pakitud kibana arhiivi.

apt-get install ruby1.9.3 rubygems

wget https://github.com/rashidkpc/Kibana/archive/v0.2.0.tar.gz
tar -zxf v0.2.0.tar.gz
mv Kibana-0.2.0/ /etc/kibana
rm v0.2.0.tar.gz
cd /etc/kibana
gem install bundler
bundle install

Muudan faili /etc/kibana/KibanaConfig.rb ja seal sees leiduvat "KibanaHost" stringi. Stringi on vaja kirjutada masina IP-aadress, et pääseks ligi veebiserveriga Kibana kasutajakeskkonnale.

KibanaHost = ‘192.168.56.210’

Loon upstarti kirje kibana automaatseks käivitamiseks

nano /etc/init/kibana.conf

Faili sisu:

# kibana.conf# kibana - log viewer
description     "Kibana logstash viewer"
 
start on virtual-filesystems
stop on runlevel [06]
 
respawn
respawn limit 5 30
limit nofile 65550 65550
 
# Environment
env HOME=/etc/kibana/
chdir /etc/kibana
setuid logstash
setgid adm
console log
 
# Run Kibana, which is in /etc/kibana
script
      ruby /etc/kibana/kibana.rb
end script

Töö lõppu üks korralik taaskäivitus ja olen serveri seadistamisega jõudnud lõpuni.

Kliendi seadistamine

Kliendiks Ubuntu client 64bit. Kasutusel sama klient, mis samas aines puppeti laboris kliendina.

Rsyslog

Rsyslog on Linux/UNIX masina jaoks logiklient, mis saadab logisid edasi seadistatud serverile. Kui rsyslogi seadistatud poleks, saab seda teha kasutades käsku

apt-get install rsyslog

Muudan kliendis rsyslogi konfiguratsioonifaili

nano /etc/rsyslog.conf

Lisasin TCP kommentaaride juurde rea, mis saadab üle TCP protokolli logid määratud ip-aadressi suunas.

*.* @@192.168.56.210:10514

Seletused:

*.* kõik logifailid

@@ - kasutades TCP protokolli (@ - UDP protokoll) - miks kasutada TCP-d? Kuna TCP on kindlam ja turvalisem, ei lase andmekaol tekkida.

192.168.56.210 - "logimassin" serveri ip-aadress

10514 - logide saatmise ja vastuvõtmise port

Kliendil on vaja rsyslogi jaoks teha taaskäivitus. Seda saab teha kas masinat taaskäivitades või kasutades käsku

service rsyslog restart

Ligipääs ja testimine

Veebiliidesest on võimalik keskkond avada, kui trükkida sisse aadress http://192.168.56.210:5601. Mina aga lisasin kliendi masina hosts faili kirje

192.168.56.210          logimassin.planet.zz         logimassin

Avades liidese näen nii serverist (logimassin) kui ka kliendist (client) tulnud logisid. Et asja illustreerida enda jaoks veelgi, panin käima serveri (puppet) ja läbi Kibana veebiliidese lugesin välja, mis kliendi logifailis tekkis, kui puppet saatis sinna mingeid uuendusi.

Kaitsmine

syslogng, logstash ja rsyslog

Logstashi installeerimine on väga lihtne ja ainukeseks piiranguks (sõltuvuseks) on java olemasolu. Logstash on väga skaleeruv ja lihtsasti hallatav. Logstashi saab saata logisid erinevatest sisenditest - ei ole piiratud ainult syslogi-saatvate operatsioonisüsteemidega.