You are on page 1of 145

20/80 Linux rendszerek alapvet belltsai, zemeltetse

Mdszertan s tartalmi tervek: Mt Pter, Varga Csaba Sndor, Zahemszky Gbor


rtk: Mt Pter, Rzsr Gbor, ry Mt, Varga Csaba Sndor, Zahemszky Gbor:
0.9-es vltozat, 2014. prilis 11., elektronikus kiads
Kiad: E-kzigazgatsi Szabad Szofver Kompetencia Kzpont
Honlap, javtot kiadsok: htp://szabadszofver.kormany.hu/sajat-oktatasi-anyagok/.
ISBN 978-963-08-8299-6

Szerzi jog
Ez a knyv a Creative Commons Atribution-ShareAlike 3.0 Unported (CC-BY-SA 3.0) licenc
szerint szabadon terjeszthet s mdosthat.
Tovbbi informcik: htp://creativecommons.org/licenses/by-sa/3.0/
A dokumentumban tallhat sszes vdjegy azok jogos tulajdonosait illeti meg.

Tartalomjegyzk
Elszcska..................................................................................................................................................................7
Virtualizcirl dihjban, mini virtulis tesztlabor kialaktsa.................................................................8
KVM hasznlat natv eszkzei.......................................................................................................................11
KVM a libvirt sajt virsh parancsval.........................................................................................................12
A fenti VM XML-formtum konfgfjlja.............................................................................................12
Lemezkezels. Partcik, LVM, RAID, md-eszkzk.....................................................................................15
Nevezktan.........................................................................................................................................................15
Kitr - Tesztkrnyezet ltrehozsa.............................................................................................................16
Diszkek hasznlata...........................................................................................................................................17
mdadm............................................................................................................................................................17
lvm...................................................................................................................................................................18
cryptsetup......................................................................................................................................................19
Fjlrendszerek tpusai s kezelse, swap hasznlata.....................................................................................21
Fjlrendszerek....................................................................................................................................................21
Fjlrendszer ltrehozsa............................................................................................................................21
Fjlrendszer csatolsa.................................................................................................................................22
Fjlrendszerek lecsatolsa.........................................................................................................................22
Mi fogja a fjlrendszert?............................................................................................................................22
Fjlrendszer-ellenrzs..............................................................................................................................23
Automatikus csatols.................................................................................................................................23
Mennyi helyem van?..................................................................................................................................23
Fjlrendszer tmretezs...........................................................................................................................24
Swap.....................................................................................................................................................................24
Az opercis rendszer teleptse........................................................................................................................26
A telepts elt.................................................................................................................................................26
Telepts optikai lemezrl, USB kulcsrl....................................................................................................27
A telepts menete............................................................................................................................................27
Csomagkezels........................................................................................................................................................29
Csomag metainformcik...............................................................................................................................29
DEB-csomagok alapszint kezelse.............................................................................................................30
RPM csomagok alapvet kezelse................................................................................................................30
Magasabb szint csomaghasznlat: repk.................................................................................................31
APT alapszint hasznlata.............................................................................................................................32
YUM alapszint hasznlata............................................................................................................................33
Zypper alapszint hasznlata........................................................................................................................34
Alap hlzati infrastruktra................................................................................................................................35
Az IP parancs.....................................................................................................................................................35
Az IP parancs felptse..................................................................................................................................36
Interfsz IP cmnek statikus belltsa......................................................................................................36
tvlaszts (routing) belltsa.....................................................................................................................37
Hlzati paramterek dinamikus belltsa...............................................................................................38
Name Service Switch (NSS)............................................................................................................................38
Egy szerver alapvet belltsai.........................................................................................................................40
Hlzatal sszefgg teendk......................................................................................................................40
Lemezkezelssel sszefgg teendk..........................................................................................................40
Az id krdse...................................................................................................................................................43
Tudjunk a hibkrl, avagy legalbb minimlis levelezs legyen..........................................................44
temezs, Cron.................................................................................................................................................44
Tvoli elrs: ssh....................................................................................................................................................46

Trtneti tekints..........................................................................................................................................46
SSH.......................................................................................................................................................................46
Fontosabb ajnlhat hasznlati mdozatok..........................................................................................47
zemeltetst segt alkalmazsok...........................................................................................................52
Nmap.........................................................................................................................................................52
Sudo...........................................................................................................................................................52
GPG...........................................................................................................................................................53
tsocks........................................................................................................................................................53
sshutle......................................................................................................................................................54
Hlzati monitoroz szofverek.........................................................................................................55
Jelszkezels............................................................................................................................................55
Editor.........................................................................................................................................................55
Shell program..........................................................................................................................................55
Apt-Dater.................................................................................................................................................56
Screen........................................................................................................................................................58
Tvoli asztal alkalmazsok.............................................................................................................................58
A naplz alrendszer, naplk elemzse............................................................................................................61
Syslogd.................................................................................................................................................................62
Rsyslog.................................................................................................................................................................63
Syslog-ng............................................................................................................................................................64
snoopy.................................................................................................................................................................65
RAID fgyel megoldsok...............................................................................................................................66
smartmontools...................................................................................................................................................66
HW RAID fgyelse.....................................................................................................................................68
A hlzati szolgltatsok monitorozsa: Nagios...........................................................................................69
Mirt monitorozzunk?....................................................................................................................................69
Mkd kpessg monitorozsa...................................................................................................................70
A Nagios alapvet jellemzi...........................................................................................................................70
A Nagios technolgiai megkzeltsbl......................................................................................................71
Telepts, belltsok........................................................................................................................................72
Indts, lellts, jrakonfgurls.................................................................................................................73
Az Apache belltsa........................................................................................................................................73
A bellt fjlok felptse..............................................................................................................................74
Felhasznlk s csoportok..............................................................................................................................75
Parancsok............................................................................................................................................................75
rtestsek, idintervallumok........................................................................................................................76
Gpek s csoportok..........................................................................................................................................76
Szolgltatsok ellenrzse..............................................................................................................................78
Tvol ellenrizhet szolgltatsok...............................................................................................................80
Mentsek s archivls.........................................................................................................................................81
A fbb mentsi mdszerek.............................................................................................................................81
A legfontosabb teendk a ments kialaktsban....................................................................................82
Szofverek a ments megvalstsra..........................................................................................................83
DD...................................................................................................................................................................83
Tar, CP, CPIO................................................................................................................................................83
Partimage.......................................................................................................................................................83
Rsync..............................................................................................................................................................84
Rsnapshot......................................................................................................................................................85
Amanda Backup...........................................................................................................................................86
Bacula.............................................................................................................................................................87
Dirvish............................................................................................................................................................87
mysqldump..............................................................................................................................................90
Mysqlhotcopy.........................................................................................................................................92

Dirvish pre szkript vagy temezet ments az SQL gpen?.......................................................92


Hogyan mentsnk, melyiket hasznljuk s mikor?................................................................................93
Pull vagy Push?...........................................................................................................................................94
Kliensek mentse..............................................................................................................................................94
Grync..............................................................................................................................................................95
Windowsos munkallomsok mentse.......................................................................................................96
Robocopy.......................................................................................................................................................96
Windows Backup VHD image.................................................................................................................96
Adatmegsemmists.........................................................................................................................................96
Rendszerindts, init, rendszerkomponensek konfgurlsa (/etc)............................................................97
A bootloader.......................................................................................................................................................97
Init.........................................................................................................................................................................98
SysV init.........................................................................................................................................................99
Upstart..........................................................................................................................................................100
Systemd........................................................................................................................................................100
Alapszint hlzati hibakeress.......................................................................................................................101
Hlzati problmk........................................................................................................................................101
getent.................................................................................................................................................................101
nslookup, host, dig.........................................................................................................................................102
ping, tcpspray..................................................................................................................................................102
traceroute, tracepath......................................................................................................................................102
iptraf, vnstat.....................................................................................................................................................103
tcpdump, tshark, Wireshark........................................................................................................................103
Tovbbi hibakeressi megoldsok..............................................................................................................103
IP-multiplexing, Bridge, VLAN, Bonding, s a hlzatkonfgurls 3-fle mdja..............................106
Virtulis interfsz ltrehozsa.....................................................................................................................106
Interfsz konfgurlsa..................................................................................................................................106
Pont-pont kapcsolat ltrehozsa.................................................................................................................107
Statisztika s rszletesebb informcik lekrdezse..............................................................................107
Tbb IP-cm egy interfszen (IP-multiplexing/IP-aliasing)..................................................................107
VLAN ltrehozsa...........................................................................................................................................108
Ethernet Bridge...............................................................................................................................................110
TUN/TAP virtulis interfsz........................................................................................................................111
Svszlessg szablyozs....................................................................................................................................113
Hlzati kapcsolatok......................................................................................................................................113
Protokollok.......................................................................................................................................................114
Az ICMP s UDP fontosabb jellemzi..................................................................................................115
A TCP jellemzi.........................................................................................................................................115
A legfontosabb hlzati protokollok svszlessg jellemzi.........................................................117
A svszlessg-menedzsmentrl................................................................................................................118
A forgalom szablyzsnak mdszerei................................................................................................118
A Linux TC alapjai.........................................................................................................................................118
A Linux TC kernel rszei........................................................................................................................119
Besorolsi mdszerek (qdisc).................................................................................................................120
Osztlymentes qdisc-ek (classless).......................................................................................................120
pffo_fast................................................................................................................................................120
TBF Token Bucket Filter.................................................................................................................120
SFQ Stochastic Fairness Qeueing..............................................................................................121
Osztly alap qdisc-ek (classful)...........................................................................................................121
A forgalom osztlyozsa.........................................................................................................................122
A kimen forgalom szablyozsa...............................................................................................................122
A bejv forgalom szablyozsa.................................................................................................................123
Hatrvdelem, alapvet tzfal belltsok (netflter s elttjei)............................................................124

A tzfalakrl ltalban..................................................................................................................................124
A tzfalak fajti...............................................................................................................................................124
Csomagszr (packet flter, screening router)...................................................................................124
llapotart csomagszr (stateful packet flter, SPF).....................................................................125
Alkalmazs szint tzfal vagy proxy...................................................................................................125
Hibrid tzfalak...........................................................................................................................................126
Egyb tzfal funkcik: a NAT.....................................................................................................................126
Linuxon hasznlhat tzfalak.....................................................................................................................127
A Netflter keretrendszer alapjai................................................................................................................127
Nhny egyszer belltsi plda...............................................................................................................129
Magas rendelkezsre lls alapok....................................................................................................................131
Megbzhatbb eszkzk................................................................................................................................131
Klaszter..............................................................................................................................................................132
Heartbeat.....................................................................................................................................................132
Virtulis IP cm..........................................................................................................................................132
Osztot tr...................................................................................................................................................133
A PAM hitelestsi keretrendszer.....................................................................................................................134
Az azonostsi rendszerek gyenge pontja................................................................................................134
ltalnos megolds: a PAM rendszer........................................................................................................134
A PAM lehetsgei.........................................................................................................................................134
A PAM belltsa.............................................................................................................................................135
A PAM rendszer fontosabb alapmoduljai.................................................................................................136
ltalnos PAM hibakeress: a debug paramter....................................................................................136
A PAM rendszer fontosabb alkotrszei...................................................................................................136
A pam_unix modul...................................................................................................................................136
A pam_deny s a pam_nologin modul................................................................................................137
A pam_securety s a pam_shells modul............................................................................................137
A pam_listfle modul................................................................................................................................137
A pam_limits modul.................................................................................................................................138
Egyb hasznos modulok...............................................................................................................................139
A PAM extra moduljai...................................................................................................................................140
A pam_cracklib modul.............................................................................................................................140
A pam_ldap modul....................................................................................................................................141
Egy plda rendszer belltsai.....................................................................................................................142
Hivatkozsok...................................................................................................................................................144

Elszcska

Elszcska
Ezzel a knyvvel s testvreivel az a clunk, hogy viszonylag tmren sszefoglaljuk azokat az
informcikat, amiket egy szabad szofvereket hasznl szakembereknek tudnia illik.
20/80. Mit akar ez jelenteni? Tapasztalatunk szerint a ltez eszkzknek s informciknak
csak egy kis rsze szksges a mindennapok tipikus feladatainl. Igyekeztnk kivlogatni nektek
a tudsnak azt a 20%-t, ami az ltalban elfordul feladatok 80%-nl elegend lesz. Clunk ezen
elv alapjn sszeszedni, rendszerezni s tadni a leghasznosabb dolgokat. Hiba prblnnk mindent elmondani neknk nincs idnk mindent lerni, nektek meg nincs idtk elolvasni. Ezrt
sok minden kimarad. Ha gy gondolod, hogy fontos, kimaradt vagy bvebben kellene beszlni
rla, szlj! Ha valami hibs, szlj! E-mail cmnk: esz2k2@gmail.com. De ha rsz, lgy trelemmel, valsznleg 200 msik levl is vr mg megvlaszolsra. A tovbbfejleszts sorn minden
konstruktv javaslatot igyeksznk majd az anyagba pteni.
A trgyalt megoldsok s szabad szofverek legtbbszr tbb opercis rendszer alat is hasznlhatak. Amikor viszont opercis rendszer szintrl esik sz (telepts, csomagkezels vagy finomhangols), akkor ez most npszersge miat nlunk Linuxot jelent.
A knyvben idnknt krdseket tesznk fel, de nha nyitva hagyjuk a vlaszt. A cl: gondolkozz, olvass utna, hasznld az agyadat! Ha egy tmt alaposabban meg akarsz ismerni, akkor
nincs mese, alaposabban utna kell olvasnod. Minden terletnek megvannak a maga tlnk sokkal mlyebb ismereteket trgyal szakknyvei, eltk azrt rdemes a mi sszefoglalnkat elolvasni, mert ezekben remnyeink szerint az adot terlet esszencija tallhat. Ez alapjn mr
knnyebben eligazodsz majd a 6-700 oldalas, lnyegesen kimertbb anyagokban is.

Virtualizcirl dihjban, mini virtulis tesztlabor kialaktsa

Virtualizcirl dihjban, mini virtulis


tesztlabor kialaktsa
A ma kaphat legkisebb teljestmny szmtgp is olyan ers processzorral, annyi memrival
rendelkezik, hogy knnyedn el tud ltni tbb fggetlen feladatot is. Klnsen akkor tudjuk optimlisan kiterhelni a rendszert, ha olyan feladatokat tudunk rbzni, melyek nem egy idben
okoznak nagyobb terhelst. Pldul egy gpen remekl egyms mellet futhat a pnzgyi rendszer
adatbzis kezelje, mely fknt hnap vgn, munkaidben kap nagyobb terhelst, s a bels
rendszerek mentsre szolgl szofver, mely fkpp jszaka dolgozik. De ezeket a funkcikat rdemes lenne biztonsgi s knyelmi okokbl is elvlasztani. A virtualizci segtsgvel egy szmtgp erforrsait gy oszthatjuk meg, hogy a virtualizcis szofver valamilyen mdon
klnll krnyezetet hoz ltre a szeparland szolgltatsnak.
Erre alapveten ktfle mdszer van. Az egyik, hogy a szofver lnyegben egy teljes szmtgpet szimull vagy emull. Ezt nevezzk virtulis gpnek (VM, virtual machine). A VM-ek a rajtuk
fut opercis rendszerek s szofverek szempontjbl ltszlag ugyanolyan felptsek mint egy
ltalnos cl asztali szmtgp, van bennk processzor, memria, htrtr s hlzati eszkz,
termszetesen akr tbb is. A virtualizcis szofvert futat gpet ltalban host-nak nevezik, a
virtulis gpeket pedig guest-nek. Ekkor teht a virtulis gpen lnyegben egy teljesen fggetlen
opercis rendszer indul el, azt fel kell telepteni, be kell lltani s utna a host futsa kzben tetszlegesen elindthat vagy lellthat, a benne lv virtulis eszkzk kikapcsolt llapotban (bizonyos esetekben bekapcsolva is) mdosthatk. Pldul nagyon gyorsan lehet egy VM-be tbb
memrit tenni.
A msik mdszer egy szeparlt krnyezet ltrehozsa az adot szmtgp krnyezetben, ekkor
nem egy fggetlen opercis rendszer indul el, hanem a host kerneln fognak futni a processzek,
csak ltalban levlasztot fjlrendszert hasznlnak s a legtbbszr fggetlen hlzati eszkzk
van (akr valdi, akr virtulis). Ez megvalsthat az Linux alaprendszer rszt kpez chroot
rendszerhvssal, de ilyen funkcit nyjt pldul az LXC is. Ha az azonos kernel hasznlata elfogadhat, akkor j vlaszts lehet, mert teljestmnyben valamivel jobbak, mint a virtualizlt gpek
hasznlta. Mivel azonban hasznlatuk kiss nehzkesebb, mint a virtulis gpek hasznlata, mi azt
ajnljuk, hogy szerencssebb virtulis gpeket hasznlni.
Linuxos krnyezetben tbb klnbz lehetsgnk is van virtulis gpeket hasznlni. Van szabad s tulajdonosi szofver, ingyenes s pnzes megolds is. Nhny ezek kzl:
KVM s QEmu a KVM a Linux kernel rsze, a QEmu pedig egy korbbi fggetlen virtualizcis eszkz mely a KVM-hez is hasznlhat. Ez a kt eszkz kivlan hasznlhat szerveren s
munkallomson egyarnt, br a virtulis gpek menedzsmentjre tovbbi szofvereket kell
majd hasznlni.
VirtualBox (OSE) a VirtualBox kereskedelmi termk, aminek az OSE (Open Source Edition)
verzija nylt forrskd, de kevesebb funkcija van, mint a zrt verzinak. Knyelmes felhasznli fellete, tbb platform tmogatsa s praktikus funkcii miat desktop felhasznlsra nagyon ajnlot.
VMware Player/Workstation/szerver csald tr, piacvezet zrt forrs szofver csald. A
Player ingyenesen hasznlhat freeware. Noha sok tulajdonsgban fejletebb szabad konku8

Virtualizcirl dihjban, mini virtulis tesztlabor kialaktsa


renseinl, kzepes mret vllalatig ezek a funkcik ltalban nem kritikusak. Specilis ignyek esetn, amennyiben a szabad szofverek valamilyen problmra nem tudnak megnyugtat
megoldst nyjtani, beszerzse megfontoland.
s mg sokan msok. Nhny nv a jelentsebb tovbbi versenyzk kzl: XEN, Proxmox
(mely egy knyelmes eltt a KVM-hez s az LXC-hez)
Ezek kzl az els 3 egszen ms kategrit kpvisel, mint az utols 2:
A QEmu egy ltalnos cl emulcis rendszer, amely tbbek kzt x86 architektra emulcijt is kpes megvalstani (illetve megfelel hardveres tmogats esetn virtualizcira is
kpes);
a VirtualBox kereskedelmi termk, aminek az OSE (Open Source Edition) verzija nylt forrskd, de nmileg kevesebb funkcija van, mint a zrt verzinak;
a VMware Player s a VMware Workstation szintn kereskedelmi termkek, melyeket (hasonlan a QEmuhoz s a VBoxhoz) elssorban asztali felhasznlsra szntak. Ezek is a kezdetektl
hasznlhatk Linux rendszerek alat.
A XEN s a KVM sokkal inkbb javasolhat szerver felhasznlsra1. Mg a XEN egy paravirtualizcis technolgia segtsgvel a processzorok hardveres tmogatsa nlkl is kpes virtualizcira, addig a KVM mkdtetshez felttlenl szksges a processzorok hardveres virtualizcis
tmogatsa. Ma ez azrt mr nem akkora problma, mivel mind az Intel, mind az AMD ltal gyrtot modern processzoroknl j pr ve megtallhat ez a tmogats (Intel VT vagy VMX, illetve
AMD-V vagy SVM nven nevezet processzor tulajdonsgok).2 Ennek ellenre fontos tudni, hogy
ha valahol olyan x86-alap gpen szeretnnek szerver virtualizcit, amely gp processzora hardveresen nem tmogatja azt, akkor nekik a KVM nem alkalmas.
A mi vlasztsunk ennek ellenre a KVM-re eset. Az ok: XEN esetn egy kifejezeten a XEN
hasznlatra elksztet msik kernelt kell hasznlni a virtualizcis tmogatshoz, mg KVM
esetn elegend egyetlen3 kernel modul betltse, s mris rendelkezsnkre ll a virtulis gpek
hasznlatnak lehetsge. A KVM tmogats egy ideje (2.6.20-as kernelverzi ta) rsze a hivatalos Linux kernelnek, radsul egyre tbb disztribci szlltja alaprtelmezet virtualizcis eszkzknt (esetleg egyedliknt, mint pl. a kereskedelmi RedHat s klnjai: CentOS, Scientifc
Linux a 6-os verzi ta).
Virtualizci esetn elterjedt kifejezs a gazda (host) s vendg (guest) szmtgp (esetleg opercis rendszer) az elz a fzikai gpet, az utbbi a virtulis gpet (vagy az abban fut oprendszert) jelenti. KVM hasznlata esetn a gazda gpen fut egy teljesen ltalnos Linux disztribci 4,
amelynl amennyiben hasznlni szeretnnk a virtulis gpeinket, akkor csak betltjk a kvm nev kernel-modult.
Virtulis gpek hasznlathoz ltre kell hozni azokat, majd az gy ltrehozot VM-ekbe opercis
rendszert kell telepteni (ez utbbi nem lnyegesen tr el a valdi hardveres teleptstl). Ahogyan
1 1. A dokumentci rsakor a XEN kicsit tbbfle architektrn mkdik, mint a KVM, de mivel jelenleg az x86 (s
a 64-bites x86_64) alap gpek a legelterjedtebbek mg a kzepes mret vllalatoknl is, ez nem jelent valdi
problmt.
1 2. Mkd Linux rendszerben a grep -E vmx|svm /proc/cpuinfo paranccsal ellenrizhet a meglte (ha XEN-kernel
all prbljuk lekrdezni, akkor nem ltszik; ezen kvl nha a gpek hardveresen tmogatjk, de a BIOS-ban
alapbl le van tiltva a funkci)
1 3. igazbl ket, mert a f (kvm nev) modul mellet kell mg egy, amely a hasznlt processzortl fgg vagy
kvm_intel, vagy kvm_amd nvre hallgat; ez utbbiak kzl a megfelelt a kvm modul automatikusan betlti
1 4. amennyiben szervereket virtualizlunk, akkor erteljesen javasolt a host rendszer funkciit minimalizlni, s
tnylegesen csak a nlklzhetetlen szolgltatsokat futatni rajta (pl. NTP s SSH)

Virtualizcirl dihjban, mini virtulis tesztlabor kialaktsa


a valdi szmtgpek, gy a virtulis gpek is a kvetkez f komponensekbl llnak, a VM ltrehozsnl ezekre kell odafgyelni:
CPU a processzorral sok gond nincs, a gpben fzikailag meglev processzort fogjk a VM-ek
ltni, legfeljebb azt kell belltani, hogy hny darab, hny magos, hny szlnak lssa a VM.
Egy VM-be sem konfgurlhatunk tbb processzort, mint amennyi a gazda szmtgpben ltezik (ebbe viszont mr beletartozik a gazda gp HyperTreading, illetve multi-core tulajdonsga
is). Azaz egy 2 fzikai processzoros, amgy processzoronknt duplamagos (dual-core), radsul
Intel gyrtmny (gy HyperTreading tmogatssal rendelkez) gazdagp esetn, mivel ez ltszlag 8 processzor, ezrt maximum 8 processzoros virtulis gp hozhat ltre. (Igaz, akr tbb
is.)
memria termszetesen it is a gazdagp ltal elrhet memria szab hatrt
htrtr egy virtulis gphez egy vagy tbb, IDE (ATA), SATA, esetleg SCSI, SAS-interfszen
keresztl elrhet virtulis diszket, s elssorban a teleptshez valamilyen CD/DVD eszkzt
kell konfgurlni. Ezek a virtulis diszkek lehetnek a akr gazda szmtgp csak erre a clra
fenntartot fzikai eszkzei, vagy a gazda szmtgp fjlrendszerben ltrehozot un. diszkkpek (disk image). (Termszetesen a virtulis diszkekhez virtulis htrtr-vezrlre is szksgnk van s az egyes virtualizcis rendszerek kzt elg nagy eltrsek lehetnek, hogy
milyen vezrlket szimullnak.)
hlzati hozzfrs valdi gpek esetn (szerver krnyezetben) jellemzen hagyomnyos
Ethernet-vezrlket hasznlunk. A virtulis gpek elrshez szksges hlzatot pedig a VMhez ltrehozot virtulis hlzati interfszek szolgltatjk.
egyebek a valdi szmtgpekben ezen kvl el-elfordulnak egyb hardverelemek, mint a
gppel val kapcsolatartsra jellemzen hasznlt billentyzet, egr, grafkus krtya, soros, prhuzamos s USB-csatlakozk, egyebek.
A virtulis gpek kezelsre tbb eszkz is rendelkezsre ll. ltalban van egy specializlt parancskszlet, aminek segtsgvel az adot virtualizcis eszkz specilis szolgltatsai rhetek el.
Ez tipikusan parancssoros eszkz (pl. a XEN-hez tartozik egy xm nev eszkz, a VirtualBox-hoz
egy VBoxManage nev segdprogram, s . t.), de sokszor grafkus fellet adminisztrcis szofver
is ltezik. A KVM praktikus okokbl a fent emltet QEmu parancssoros eszkznek mdostot
verzijt hasznlja. A hasznlt terjesztstl nmileg fgg mdon, ez a parancs hol qemu-kvm, hol
csak egyszeren kvm nven rhet el Ubuntu 12.04 LTS alat kvm a neve. (A KVM-hez elrhet
klnbz menedzsment eszkzk listja a http://www.linux-kvm.org/page/Management_Tools cmen tallhat, innen mindenki vlaszthat magnak, ha a mi javaslataink nem nyertk el a tetszst.)
Ezeknek a fent emltet egyedi eszkzknek a hasznlata ma egyre ritkbban szksges, ugyanis
folyamatos fejleszts alat ll egy libvirt5 nev eszkz, mely az elterjedtebb virtualizcis krnyezeteket tmogatja egysges felletet biztostva hozzjuk. Azaz ha valamely eszkz a libvirtre pt,
akkor gyakorlatilag mindegy, hogy a htrben milyen virtualizcit hasznlunk, ugyanazon a felleten keresztl kell karbantartani. A libvirt pozitvumai kz tartozik, hogy ha szksgnk van
r, akr a loklis, akr a tvoli gpen fut virtualizcis szofverrel kpes kommuniklni (tvoli
gp esetn termszetesen biztonsgos kapcsolat kiptsvel).
Kt ilyen libvirtre pl eszkz a libvirt terjeszts szerves rszt kpez virsh, valamint a Python-nyelven rt Virtual Machine Manager (vagy virt-manager)6. Mg az els parancssoros eszkz,
addig az utbbi egyrszt nyjt parancssoros eszkzt (virt-install) msrszt egy knyelmes grafkus
1 5. http://libvirt.org
1 6. http://virt-manager.org/

10

Virtualizcirl dihjban, mini virtulis tesztlabor kialaktsa


fellet alkalmazst ez maga a VMM. (A libvirt-rl tudni kell, hogy a virtulis gpekre vonatkoz
informcikat XML-formj fjlokban trolja. Ez elssorban akkor kellemetlen, amikor az ember
lete els virtulis gpt kszti el kzzel.)

KVM hasznlat natv eszkzei


Lssunk egy virtulis gp ltrehozst s indtst a KVM natv eszkzeivel:
Els lpsknt hozzuk ltre a virtulis gp diszkjt. (A pldhoz nyilvn elg a 100MB, normlis
esetben valsznleg nagyobb diszk kellene.)
qemu-img create -f qcow2 vm1diszk1.img 100m

A pldban szerepl qcow2 elg hasznos paramter, ez a virtulis diszkformtum nyjtja a legtbb hasznos szolgltatst, ha lehetsgnk van r, hasznljuk mindig ezt. (A dokumentci rsakor pl. a grafkus fellet VMM-ben sajnos ezt nem lehet a ltrehozs pillanatban belltani,
hanem trkkzni kell vele remlhetleg ezt a hinyossgot a kzeljvben megszntetik.)
A ltrehozot 100 MB-os diszket odaadjuk a virtulis gpnek, ami kap egy korbban letltt
DVD-kpet amirl bootolhat, kap 768MB memrit, 1 db duplamagos, HyperTread-tmogats
processzort7 s 1 db Pcnet tpus hlzati interfszt (a Pcnet egy nagyon rgi hlzati krtya tpus,
sok vvel ezelti opercis rendszerek esetn jhet jl ma az alaprtelmezet Intel e1000 tpus
krtya szinte biztosan jobb vlaszts). Boot eszkzknt a DVD-t ( d ) s a diszket ( c ) lltjuk be
kvm -name vm1 -m 768 -smp 4,cores=2,sockets=1 -hda vm1diszk1.img -cdrom DVD.iso
-net nic,model=pcnet -boot order=dc

A paramterknt megadot nv a virtulis gpben semmilyen szerepet nem ltszik, csak az adminisztrci megknnytsre szolgl, s termszetesen ot vlik majdnem ktelez egyedi paramterr, amikor nem egyetlen plda virtulis gpnk, hanem sok (10, 100) VM fut ugyanazon a
gazdagpen, s ezeket kell valamilyen mdon megklnbztetni. rtelemszeren ilyen esetekben
valami ennl jobb nvvlasztsi konvenci javasolt aki sok oprendszert ki szeret prblni, az
hasznlja az OS-nevt, verziszmt; aki klnbz funkcij M-ket hoz ltre, az hasznlhat
funkci alap nevezktant ezt mindenki maga dnti el, de rdemes valami vm1, vm2, vm3, stb.nl logikusabbat hasznlni.
Termszetesen mind a qemu-img, mind a kvm parancs ennl sokkal bonyolultabb lehet, atl
fggen, hogy milyen egyb dolgokat szeretnnk belltani (pldul ha a gpnkn ahonnan a
VM-et el fogjuk rni magyar billentykioszts van rvnyben, akkor knyelmesebb, ha a VM-ben
is olyat konfgurlunk be a -k hu paramterrel). Mint lthat, a dolog nem tl bonyolult, br ktsgtelen, hogy ha a ksbbiekben is szeretnnk ezt a virtulis gpet hasznlni, akkor nem tl knyelmes indtsonknt mindig ezt a hossz (vagy esetleg mg ennl is sokkal hosszabb)
parancssort begpelni. Radsul mg csak nem is pont ez kell, hiszen a ksbbiekben mr nem
valszn, hogy a telept CD/DVD-kprl szeretnnk indtani a virtulis gpet, hanem valsznleg a diszkre teleptet opercis rendszerrl (azaz napi hasznlathoz valsznleg -boot order c
kell. Ha a DVD-kpet a telepts utni futsokkor vltozatlanul odaadjuk a VM-nek, akkor az gy
ltja, mintha a telept CD/DVD mindig rendelkezsre llna ez akkor rdekes, ha esetleg jabb
alkalmazsokat szeretnnk a ksbbiekben a CD/DVD-rl telepteni) . Hossz tvon teht jl j1 7. mivel egy processzorfoglalatot s processzoronknt 2 magot rtunk el, muszj HyperTreadnek lenni, klnben
nem lenne meg a szintn elrt 4 (virtulis) processzor, de persze el is rhat a pldban nem szerepl threads=2
paramterrel

11

Virtualizcirl dihjban, mini virtulis tesztlabor kialaktsa


het, ha a megfelelen mdostot parancssort egy egyszer szveges parancsfjlba elmentjk
mondjuk startvm1.sh nven.

KVM a libvirt sajt virsh parancsval


Most nzznk egy virtulis gpet a libvirtre pl virsh segtsgvel.
Pr szakkifejezs8: :
node a korbbiakban host gpknt aposztroflt fzikai gp
hypervisor a virtualizcis szofverrteg
domain egy opercis rendszer (vagy alrendszer) egy pldnya, amely valamely hypervisor
ltal szolgltatot virtulis gpben fut (korbban vendg-knt emltetk)
Ha a libvirtel dolgoznnk, elsknt teleptennk kell a libvirtet s a hozz tartoz segdeszkzket. (Ubuntu 12.04 LTS esetn ez a sudo apt-get install libvirt0 libvirt-bin.) Ez nyilvn egyszeri feladat. A tovbbiakban mr els lpsknt mindig kapcsoldni kell a konkrt virtualizcis
alrendszerhez ez lehet a helyi gp vagy a hlzat egy msik gpn fut hypervisor majd a mr
l kapcsolatot felhasznlva kezelhetjk virtulis gpeinket. Az alapbellts ellenrzshez adjuk
ki a
virsh uri

parancsot. Loklis gpen fut KVM esetn a qemu:///system a megfelel. Ha esetleg nem az, akkor
csatlakozzunk a
virsh connect qemu:///system

paranccsal. Ubuntun ez az alaprtelmezet hely, ezrt ot ez el is hagyhat. (Mint korbban elhangzot, a KVM ersen pt a QEmu egyes rszeire, ezrt kell KVM esetn is qemu-tpus kapcsolatot felpteni.) j virtulis gp ltrehozsakor a kvetkez lpsknt ltre kell hozni a
virtulis gpet ler XML-fjlt.

A fenti VM XML-formtum konfigfjlja


<domain type=kvm id=1>
<name>vm1</name>
<memory>786432</memory>
<vcpu>4</vcu>
<cpu>
<topology sockets=1 cores=2 threads=2 />
</cpu>
<devices>
<disk type=file device=disk>
<source file=/path/to/vm1diszk1.img/>
<target dev=hda />
</disk>
<disk type=file device=cdrom>
<source file=/path/to/DVD.iso />
<target dev=hdc />
1 8. http://libvirt.org/goals.html

12

Virtualizcirl dihjban, mini virtulis tesztlabor kialaktsa


<readonly/>
</disk>
<interface type=network>
<source network=default/>
<model type=pcnet/>
</interface>
</devices>
<os>
<type>hvm</type>
<boot dev=cdrom/>
<boot dev=hd/>
</os>
</domain>

Szerencsre a kzi XML-fjl ltrehozson kvl vannak ms lehetsgek is.


Ha mr ltezik egy libvirt ltal kezelt virtulis gpnk, akkor knny helyzetben vagyunk, mert
a
virsh dumpxml VM-neve > vm1.xml

paranccsal legalbb egy szintaktikailag megfelel, a fontosabb informcikat tartalmaz sablonhoz juthatunk.
Msik lehetsg, hogy ha mint ebben a pldban kszen van a parancssorbl elindtot
QEmu/KVM virtulis gp (s adot a futat parancssor, amivel a virtulis gpet indtjuk), akkor a
virtulis gpet indt parancssort a virsh kpes XML-fjll konvertlni, azaz nem kell teljesen nullrl indulnunk. Teht, ha a fenti indt parancsot egy startvm1.sh nev fjlba tetk, akkor a
virsh domxml-from-native qemu-argv startvm1.sh

parancs eredmnye az elz virtulis gp XML-formtum lersa lesz. Ha a parancs kimenett


egy fjlba tirnytjuk, akkor akr azonnal hasznlhatjuk is azt, vagy kzzel (vagy esetleg msik
libvirt-eszkzzel) ksbb mdosthatjuk. (Annyit hozzfznnk, hogy a parancs mg messze nem
tkletes, pl. a CPU-topolgit ler -smp 4,cores=2,sockets=1 paramtert nem ismeri, azt ki kell trlni ahhoz, hogy egyltaln mkdjn a konverzi. A ltrehozot XML-fjlbl aztn nem lehetet
ltrehozni a virtulis gpet, mert hinyolta a kvm binrist. Azaz elindulsnak ppen j lehet, de
tkletes eredmnyt ne felttlenl kell vrni tle.)
Ha kszen vagyunk a virtulis gpet ler XML-lel, biztostani kell, hogy a lerfjlban szerepl
fjlok ltezzenek, Mivel a diszket reprezentl fjl mg nincs meg, azt most ltre kell hozni:
touch /path/to/vm1diszk1.img

s ha ez ksz, mr indthatjuk is:


virsh create vm1.xml

Ez a parancs tulajdonkpp kt dolgot mvel: ltrehozza a virtulis gpet, s egytal el is indtja


azt. Ha nem szeretnnk a ltrehozs pillanatban el is indtani, akkor a ltrehozs helyet csak
defnilni kell:
virsh define vm1.xml

(A virsh define-nal defnilt s nem virsh create-tel ltrehozot virtulis gpeket a ksbbiek sorn a virsh start vm1 paranccsal lehet elindtani.)
Amennyiben a VM ltrehozsa/indtsa (vagy brmely egyb VM-mvelet) hibazenetet ad, rdemes megnzni a naplfjlokat. Egyrszt van egy globlis a libvirthez, msrszt van egy a konk13

Virtualizcirl dihjban, mini virtulis tesztlabor kialaktsa


rt virtulis gphez tartoz fjl. Az elbbi fjl (Ubuntu 12.04 LTS alat) a /var/log/libvirt/libvirtd.log, mg a VM-specifkus a /var/log/libvirt/qemu knyvtrban tallhat, a fjl neve megegyezik a
VM nevvel egy .log hozzfzsvel (azaz mivel a pldban vm1-nek hvtuk a gpet, ez
/var/log/libvirt/qemu/vm1.log). Rszletesen lthat, hogy milyen mveletek hajtdtak vgre, s
pontosan mi is a hiba. Pl. ha nem hoztuk ltre a virtulis diszkknt mkd fjlt (fenti touch parancs), akkor a No such fle or directory vagy ms nyelv belltsa esetn az adot nyelven a
fjl hinyra utal hibazenet segthet. Elgg tipikusak a klnbz jogosultsgkezelsbl add problmk. Sok Linux-terjeszts alaprtelmezeten bekapcsolt llapotban szllt valamilyen
hozzfrs-szablyoz alrendszert, mint pl. a Selinux, vagy pp az AppArmor. Ezek lehetnek oly
mdon konfgurlva, hogy a virtulis gpekhez tartoz fjlok (pl. a diszkek) csak bizonyos knyvtrakban rhetek el. Elfordulhat, hogy a VM fjljainak sajt fjljogosultsga nem teszi lehetv
a hozzfrst, vagy ad absurdum az, hogy a VM-hez tartoz diszkfjlt egy msok ltal nem kereshet knyvtrban hoztuk ltre (pl. elgg elterjedt, hogy a felhasznl sajt knyvtrhoz msoknak semmifle hozzfrse nincs, gy a $HOME-ban ltrehozot diszkkp fjlhoz a libvirt
alrendszer sem fr hozz).
A sikeres virsh defne vagy virsh create paranccsal ltrehozot (teht ll vagy fut) virtulis gpnknek immr ltszania kell a virtulis gpek listjban:
virsh list --all

A meglev virtulis gpeinkkel pedig szintn a virsh paranccsal tovbbi mveleteket hajthatunk
vgre:
egy fut gpet szablyosan lellthatunk: virsh shutdown GPNV
egy ll gpet elindthatunk: virsh start GPNV
egy fut gpet jraindthatunk: virsh reboot GPNV
egy virtulis gpet nem szablyosan lelltunk: virsh destroy GPNV
majd pedig megszntetse: virsh undefine GPNV
A felsorolt parancsok a jghegy cscsa, rszletesebb lers a virsh dokumentcijban (s a libvirt.org oldalon) tallhatak.

14

Lemezkezels. Partcik, LVM, RAID, md-eszkzk

Lemezkezels. Partcik, LVM, RAID, mdeszkzk


Nevezktan
Linux alat a lemezes htrtrakat, diszkeket blokkos eszkzfjlokon keresztl rjk el. (Rszletek az eszkzfjlokrl a Hardverek kezelse rszben.) Kln eszkzfjl van maghoz a teljes
diszkhez, s a diszk egyes partciihoz. A rendszerben lev diszkek s azok partcii lekrdezhetk
az
fdisk -l

paranccsal.
Rgebben az ATA, ATAPI eszkzk korban a merevlemezeket (hard disc drive) hdX s hdXY
nven lehetet elrni:
/dev/hda
/dev/hdb
/dev/hdc
/dev/hdd
s gy tovbb.

az els vezrln (primary) keresztl elrhet n. master diszk


az els vezrl n. slave (szolga) diszkje
a msodik vezrl (secondary) master diszkje
a msodik vezrl slave diszkje

A diszkeket a klasszikus PC-n megszokot particionlsi md szerint osztjk logikai rszekre,


ebben van n. elsdleges partci (primary partition), s bvtet partci (extended partition),
amelyet tovbb lehet osztani logikai meghajtkra. Az elsdleges partcik 1-4-ig szmozotak, mg
a bvtet partciban lev logikai eszkzk 5-tl flfel kapjk meg a szmokat. gy valamely
diszken lev partcik neve:
/dev/hda1
a hda diszk els elsdleges partcija
/dev/hdc3
a hdc diszk harmadik elsdleges partcija
/dev/hdd6
a hdd diszk bvtet partcijban lev msodik logikai meghajt
Ebben a furcsa elnevezsi konvenciban a lukak termszetesek: lehet, hogy nincs az elsdleges
vezrln slave eszkz, atl mg a msodik vezrl master eszkze hdc lesz. Hasonlan, lehet,
hogy csak egy elsdleges s egy bvtet partci van a hdb diszken, a bvtet partciban 2 logikai meghajtval, akkor /dev/hdb1, /dev/hdb5 s /dev/hdb6 lesz a nevk.
A SCSI, SATA, SAS vezrlkn s az USB-n keresztl elrhet diszkeket hdXY helyet sdXY-nak
hvjuk, ahol is az els perifria amit a rendszer felismer sda, a kvetkez sdb, sdc, s . t. nven jelenik meg. Azaz ma ez a jellemz:
/dev/sda
/dev/sdc3

15

Lemezkezels. Partcik, LVM, RAID, md-eszkzk


A diszkeket hasznlathoz elszr is particionlni kell, erre j a parancssoros fdisk s parted parancsok, illetve a grafkus fellet gparted.
A particionls sorn az egyes partcik tpust is be kell lltani. Ezt linuxos fjlrendszer esetn
a hexadecimlis 83, mg a Linux ltal hasznlt swappartci esetn 0x82 rtkre kell belltani.
A diszkek egyrtelm azonostsa miat egyre elterjedtebb egy, a fenti elnevezsnl bonyolultabb konvenci hasznlata:
/dev/disk/disk-by-uuid/c5b875fc-50eb-41c4-af76-af37cead305a

Megjegyezni ugyan nem nagyon lehet ezt a fajta nevet, de mint az elrsi tban ltszik, alapja az
adot eszkzhz tartoz UUID9 azaz teljesen egyedi nv. Egyre inkbb gy tnik, hogy ez a nvkonvenci terjed az egyes terjesztsekben. Mivel viszont ilyen hossz neveket senki nem szeret
begpelni, ltalban elrhetk a diszkek a rgi nven is. A kt nv kzti sszerendelsre a
blkid

nev parancs szolgl.

Kitr - Tesztkrnyezet ltrehozsa


Amennyiben valaki a kvetkezket ki szeretn prblni, de nem clja az esetlegesen mkd
rendszernek sztrombolsa, akkor egy lehetsges mdszer a kvetkez. Ha van mkd Linux (e
nlkl nem fog menni), aminek van egy kis szabad hely valamelyik fjlrendszerben, akkor hasznljuk ki az n. hurok (loop) eszkz nyjtota lehetsgeket. A /dev/loopX arra szolgl, hogy egy
kznsges fjlt a rendszer szmra virtulisan gy ltassunk, mintha valdi blokkos eszkz lenne. Hasznlata:
ltrehozunk egy, a virtulis diszk adatait majdan trol fjlt. Pl. a dd paranccsal:
dd if=/dev/zero of=fle0 bs=1M count=32
Ekkor lesz egy 32 MB mret, csupa 0-kkal feltltt, fle0 nev fjlunk.
ebbl a fjlbl megcsinljuk a virtulis diszkeszkzt:
losetup -v -f fle0
A -f opci hatsra a losetup kikeresi az els szabadon hasznlhat eszkzt a loop0, loop1, loop2, stb listbl, s ltrehozza a (pl.) /dev/loop0 nev virtulis diszket. (Ha biztosan egy konkrt eszkzt szeretnnk hasznlni, a -f helyet megadhatjuk annak nevt is paramterknt a
losetup-nak.) A fle0 paramter pedig azt adja meg, hogy melyik fjl jtssza el a diszk szerept.
Valjban a loop0-n keresztl ezt a fle0-t kezeljk, de immr diszkknt. Fontos, hogy a tovbbiakban a fle0-t ne piszkljuk, csak a loop-eszkzt! A -v opci pedig megmutatja, hogy melyik
eszkzt konfgurlta fel. (Ez sajnos nem minden verzij losetup paranccsal mkdik, ilyenkor
a losetup -a paranccsal lehet lekrdezni a hozzrendelst.)
Etl a pillanatl kezdve a rendszerben ltszik egy /dev/loop0 nven elrhet jabb diszk. Ezzel
a diszkkel aztn mr ugyangy dolgozhatunk, mint a valdiakkal.

1 9. http://en.wikipedia.org/wiki/Universally_unique_identifier

16

Lemezkezels. Partcik, LVM, RAID, md-eszkzk

Diszkek hasznlata
A gpben lev valdi (vagy virtulis, mint az elzekben ltrehozot loopX-eszkz) diszkeket
hasznlhatjuk immr magukban (azaz rakhatunk r fjlrendszert vagy konfgurlhatunk r swapet), de a Linux-kernelben elrhet funkcik hasznlatval bonyolultabb virtulis diszk-alrendszereket is kipthetnk.

mdadm
Az n. md (multi-device, multi disk) segtsgvel tetszleges RAID-tmbket pthetnk. Az elterjedtebbek kzl elrhet pl. RAID0 (stripe), RAID1 (mirror) s RAID5 illetve ezek kombincija. A konfgurlshoz az mdadm nev eszkz hasznlatt kell elsajttani. Nzzk sorban a
lpseket:
fdisk-kel 0xfd tpus partcikat csinlunk
fdisk /dev/sda

mdadm-mel ltrehozzuk a RAID-tmbt a pldban RAID1-et (a szgletes zrjelek kzt ll opcik ugyanazt jelentik, rtelemszeren csak az egyik megadsra van szksg)
mdadm [ -C | --create ] /dev/md0 \
[ -l 1 | --level=1 ] \
[ -n 2 | --raid-devices=2 ] \
[ -x 1 | --spare-devices=1 ] \
/dev/sda1 missing missing

A fenti mdadm paranccsal ltrehoztunk egy, a tovbbiakban /dev/md0 nven elrhet, elvben 3
diszkbl ll, tkrzt diszktmbt, amibe jelenleg csak egyetlen diszket konfgurltunk be, az
sda1-et a kt missing nev diszk a szintaxis miat szksges. (Tesztkrnyezetnkben ez nyilvn a loop0, majd a tovbbiakban jabb s jabb loop-eszkzket hasznljunk ezek helyet.)
Ha lekrdezni szeretnnk, akkor hasznljuk a
mdadm --detail /dev/md0

parancsot, vagy pedig a


mdadm --detail --scan [--verbose]

formt (ez utbbi esetben majd az mdadm megkeresi nekem, hogy milyen eszkzk llnak rendelkezsre).
Mivel ez a tkr jelenleg elgg fllb, s nem kifejezeten az adatbiztonsg netovbbja, egsztsk ki, adjunk hozz jabb diszkeket. A tovbbi
mdadm [ --manage ] /dev/md0 -a /dev/sdb1
mdadm [ --manage ] /dev/md0 --add /dev/sdc1

parancsok eredmnyeknt a virtulis md0 eszkznk szpen kiegszl ezzel a kt diszkkel, teljess vlik a tkr s a tartalk is hadrendbe llt.
Amennyiben egy hardver meghibsodik, azt el kell tvoltani, s jt rakni a helyre. Ezt a tesztkrnyezetben az
mdadm /dev/md0 -f /dev/sdb1

17

Lemezkezels. Partcik, LVM, RAID, md-eszkzk


paranccsal tudjuk megtenni. (A -f opci hatsra hibs (faulty) llapotba kerl a diszk.) Ekkor a
tartalk a helyre lp, a htrben megindul az adatszinkronizci a j s a tartalk diszk kzt.
Ezt kveten tvoltsuk el a hibsat (-r, mint remove):
mdadm /dev/md0 -r /dev/sdb1

Majd tegynk bele egy jat :


mdadm /dev/md0 -a /dev/sdd1

Ha akarjuk, ezeket akr mind, egyetlen lpsben is megtehetjk:


mdadm /dev/md0 -f /dev/sdb1 -r /dev/sdb1 -a /dev/sdd1

(Az utbbi parancsokban egybknt mindent kihagytuk a --manage opcit. Mert megtehetk.)

lvm
A dm (device mapper) alrendszer segtsgvel igen rugalmasan hasznlhat virtulis diszkeket
lehet ltrehozni (akr az elzekben trgyalt dm-eszkzn is). Fleg a hagyomnyos particionls
rugalmatlansgnak kikszblse a hasznos funkcija. Ha lehet egy javaslatunk, akkor: ptsnk
RAID tmbket a diszkjeinkbl, majd az gy ltrejt tmbre rakjunk LVM-et, s csak utna akarjunk fjlrendszert rtenni.
Az LVM (Logical Volume Manager, logikai ktetkezel) felptse a kvetkez: diszkbl (ami
persze RAID-tmb is lehet), partcibl n. fzikai ktetet (physical volume) kell csinlni. Ebbl
aztn prat sszefogunk, s ktetcsoportot (volume group) hozunk ltre. Ez kb. egy virtulis
diszknek felel meg. Ahogyan a vals diszkeket logikailag klnll rszre bontjuk a particionlssal, ugyangy kisebb rszekre bontjuk a virtulis diszkeket is. Csak nem particionlunk, hanem
logikai kteteket (logical volume) hozunk ltre. Ezzel az utols lpssel aztn kszen vagyunk, a
logikai ktet ugyangy hasznlhat, mint egy rendes diszkpartci. Nzzk a lpseket:
fdisk-kel 0x8e tpus partcikat csinlunk
fdisk /dev/sda

pvcreate a diszkpartcibl fzikai ktetet csinlunk


pvcreate /dev/sda1

vgcreate tbb PV-bl nvvel elltot ktetcsoportot csinlunk (ltrejn a virtulis diszk)
vgcreate volgroup1 /dev/sda1 /dev/sdb1 /dev/sdc1

lvcreate VG-bl kivgunk egy a pldban 100 MB-os szeletet (ez lesz a virtulis diszkpartci)
lvcreate -L 100 -n logvol0 volgroup1

Kszen is vagyunk: az eredmny a /dev/volgroup1/logvol0 nev virtulis eszkz (ms nven :


/dev/mapper/volgroup1-logvol0).
Az gy ltrejt eszkz felhasznlsra ksz. Minden olyasmit csinlhatunk vele, amit valdi
diszkkel megtehetnnk10. Viszont vannak specilis parancsok a kezelsre.
Ez a kszlet a nvbl egyrtelmen kikvetkeztethet tpus objektum jellemzinek megjelentsre, feltrkpezsre szolgl:
1 10. htp://linuxgazete.net/114/kapil.html

18

Lemezkezels. Partcik, LVM, RAID, md-eszkzk


pvdisplay / vgdisplay / lvdisplay
pvs / vgs / lvs
pvscan / vgscan / lvscan

Az LVM diszkekkel nhny hasznos dolgot meg lehet csinlni, amit valdi diszkelle mr nem
valamely objektum eltvolthat, ha nincs hasznlatban
lvremove / vgremove / pvremove

Ha van szabad hely a ktetcsoportban, nem csak j logikai ktet hozhat ltre, de egy meglevt
ki is bvthetnk azaz tmretezhetjk azt. (Vigyzat, ez a rajta lev fjlrendszert nem mretezi t, az egy klnll lps.) Ha pedig nincs szabad hely a ktetcsoportban, a ktetcsoportot
is kibvthetjk jabb fzikai diszkekkel.
vgextend/ l vextend

Az elzk fordtotja is lehetsg. Azaz egy logikai ktet mrete cskkenthet, illetve egy res
fzikai ktet a ktetcsoportbl eltvolthat.
vgreduce / lvreduce

Ha a logikus elnevezs, egyes objektumok kezelsre szolgl parancskszletet kicsit soknak


tartannk, ot van helyete a mindent tud lvm parancs. Annak hasznlata esetn is ismerni kell az
LVM elvi felptst, de parancsbl csak egyet kell megjegyezni :-)

cryptsetup
Titkostot diszkeket is csinlhatunk, ehhez a dm-crypt alrendszer s az un LUKS szolgltatja a
hteret. A kiindulsi llapot egy diszk, amin szeretnnk az adatokat titkostva trolni. Ebben az
esetben els lpsknt bekonfgurljuk:
cryptsetup luksFormat /dev/sda1

A titkostshoz kr egy jelszt, a tovbbiakban a jelsz nlkl az adatok nem nagyon rtelmezhetk. Ezt csak egyetlen egyszer kell megtenni.
A hasznlathoz a kvetkez lpsben a bekonfgurlt eszkzt elrhetv kell tenni:
cryptsetup luksOpen /dev/sda1 valami

Ekkor jra bekri a jelszt, hisz hozz szeretnnk frni a titkostot tartalomhoz. Ha sikerl, innentl kezdve megjelenik egy /dev/mapper/valami nev virtulis diszkeszkz. Ugyangy hasznlhat, mintha valdi diszk lenne, csak pp a valdi diszket olvasva az adatok
rtelmezhetetlenek.
A kvetkez lpst szintn egyszer, a legels luksOpen utn szabad csak megcsinlni. Telerjuk a
virtulis diszknket nullkkal, azaz a valdi diszknket titkostot nullkkal gy az egsz diszk
vletlenszer adatokat fog tartalmazni.
dd if=/dev/zero of=/dev/mapper/valami

Az elksztssel vgeztnk, hasznlhatjuk az eszkzt. Ha fjlrendszert akarunk, akkor mkfs-sel


csinlunk r egyet, ha swapknt, akkor engedlyezzk a hasznlatt. (Rszletekrt lsd a Fjlrendszerek, swap fejezetet.)
Amikor mr nem hajtjuk az eszkzt hasznlni, akkor
cryptsetup luksClose valami

19

Lemezkezels. Partcik, LVM, RAID, md-eszkzk


paranccsal elengedjk. A ksbbiekben valahnyszor hasznlni szeretnnk, akkor elegend a
cryptsetup luksOpen parancs s a jelsz begpelse, s az eszkz hasznlatra ksz. Amennyiben automatikusan szeretnnk rendszerindtskor elrhetv tenni a titkostot eszkzt, akkor a
/etc/cryptab nev fjlban fel kell venni a jellemzit s mris automatikusan elrhetv vlik.

20

Fjlrendszerek tpusai s kezelse, swap hasznlata

Fjlrendszerek tpusai s kezelse, swap


hasznlata
A diszkekre, illetve a diszkpartcikra vagy valamilyen adatot tesznk, vagy a fzikai memria
kiegsztsre hasznljuk, swap-et konfgurlunk r. Ha adatot akarunk trolni, ahhoz jellemzen
fjlrendszert kell ltrehozni. Linux alat a bsg zavarval kzd az tlag kezd; annyifle fjlrendszer van, hogy nehz dnteni.

Fjlrendszerek
Taln a legelterjedtebb az ext2 / ext3 / ext4 csald (s igen, volt ext nev is, de az vgkpp kihalt). Ezek kzl az ext3 s ext4 naplz fjlrendszer, ami azt jelenti, hogy egy nem szablyos
rendszerlells utn a fjlrendszer hasznlhat llapotba hozsa elhanyagolhat ideig tart 11. Stabil,
megbzhat, a legnagyobb kereskedelmi Linux-terjeszts gyrtja igen rgta ezt szlltja alaprtelmezeten. Rgebben az ext3-t, jabban az ext4-et ez mindenkppen bizakodsra adhat okot.
Rendkvl sokat tud, fjlokhoz pl. trlst meg fellrst megtilt jellemzt is lehet rendelni, ACLek s kibvtet atributumok kezelse tmogatot rajta (ez utbbiakrl rszletesebben olvashatsz a
Jogosultsgkezels c. rszben).
A msik mostani slger a btrfs. Egyetlen negatvumt lehet felhozni. Fiatal. Noha tbb terjesztsben is elrhet, mostanra mr stabilnak is minstetk, egyelre korbl addan nyilvn
nincs annyira kitesztelve.
(Ezen kvl elrhet az IBM JFS-fjlrendszere, az SGI-fle XFS, a Sun ZFS-e, s noha mr nem
fejlesztik, mg mindig sok rajongja van a ReiserFS nev fjlrendszernek. A kereskedelmi knlatbl valsznleg a valamikori Veritas VxFS fjlrendszere a legkomolyabb de a sor folytathat.)
Mivel alapveten nem kvnunk javaslatot tenni, legyen ez az alapelv: hasznljuk azt, amit az ltalunk vlasztot terjeszts alaprtelmezeten felknl. Ha ilyen nincs, akkor ltalnos clokra taln az ext4 javasolhat, specilis esetekben viszont mindenkppen prbljuk tzetesen letesztelni
az alternatvkat.

Fjlrendszer ltrehozsa
Fjlrendszerek ltrehozsra a mkfs parancs szolgl. Kt paramtert ignyel: az eszkzt, amin a
fjlrendszert ltre kell hozni, s azt az informcit, hogy milyen tpus fjlrendszert hozzon ltre.
Ez utbbit a -t opci utn kell megadni.
mkfs -t ext4 /dev/sdb1

Helyete gyakran hasznljk a mkfs.FSTYPE jelleg parancsnevet:


mkfs.btrfs /dev/sdc2
1 11. Nem, most szlunk a naplz fjlrendszer nem azt jelenti, hogy nem lehet adatveszts. Lehet. De legalbb
gyorsan kiderl.

21

Fjlrendszerek tpusai s kezelse, swap hasznlata


(Nmelyik fjlrendszernl hasznlhatk e mellet mindenfle egzotikus nevek is, mint mondjuk
az mke2fs; sejtheten az ext2-hz meg a csald tbbi tagjhoz is.)

Fjlrendszer csatolsa
A fjlrendszeren trolt adatok elrshez a fjlrendszert csatolni kell azaz a mr lthat
knyvtrfa egy knyvtrra gymond rlgatni. Ez persze felvet egy rdekes krdst hogyan lesz elrhet a legels knyvtr: a gykrknyvtr 12. Egy fjlrendszer felcsatolsa angolul
mountolsa a kvetkez elkszleteket ignyli: legyen egy ismert nev eszkzfjlon egy ismert
tpus elksztet fjlrendszer (ltrehozni az elz pontban emltet mkfs paranccsal lehet), s legyen egy lehetleg res13 knyvtr (ltrehozni a jl ismert mkdir paranccsal lehet), amin keresztl
a fjlrendszert a ksbbiek sorn elrhetjk. Ha ezek adotak, akkor egyetlen parancs:
mount -t FSTYPE /dev/eszkz /knyvtr

utn az adatok elrhetek. Fenti parancsbl a tpus megadsa elhagyhat, ekkor majd a mount kitallja, hogy milyen az a fjlrendszer. A csatolsnl megadhatk klnbz opcik, amelyek egy
rsze minden tpus esetn rvnyes (pldul: -r, vagy msknt -o ro; jelentse csak olvashat md csatols) msok az adot fjlrendszer sajtossgainak belltsra szolglnak (pl. ext4 esetn a
-o discard opcival krhetjk, hogy a kernel adatblokk felszabadtsakor kldjn errl rtestst
a hardvernek ez SSD hasznlata esetn jhet jl). Plda 14: :
mount -t ext4 -r -o discard /dev/sdb1 /backup

A tovbbiakban a /dev/sdb1 partcin lev EXT4-tpus fjlrendszer tartalma elrhet a /backup


knyvtron keresztl.

Fjlrendszerek lecsatolsa
Egy felcsatolt fjlrendszer csatolsnak megszntetsre az umount parancs szolgl. (Hiba hallatszik gy, nincs a parancs nevben az u utn egy n.)
umount /backup
umount /dev/sdb1

Mi fogja a fjlrendszert?
A lecsatolshoz az szksges, hogy a fjlrendszer ppen ne legyen hasznlatban 15. Ha mgis
megprbljuk, akkor a Fjlrendszer elfoglalt (Filesystem is busy) hibazenetet kapjuk. Ekkor rdemes megkeresni, hogy mely processzek hasznljk:
fuser -c /backup

A kimenetben lthat PID-ekkel azonostot folyamatokat rdemes vallatra fogni, hogy mi dolguk az adot fjlrendszerrel (esetleg meg is szntethetjk ket; erre pl. a fuser -k opcija is j
lehet).

1 12. A kernel teszi lthatv. Nyilvn nem csatolhatja, mert nincs hova, De gy mutatja, mintha.
1 13. Nem kell resnek lenni, de amg a fjlrendszer fel van csatolva, addig a knyvtr eredeti tartalma nem lthat.
1 14. Mi a logikai hiba a pldban?
1 15. Ha errl a fjlrendszerrl indtotunk el egy programot; ha valamilyen program ezen a fjlrendszeren megnyitot
(s mg mindig nyitva tart) egy fjlt; ha egy process ennek a fjlrendszernek valamelyik knyvtrban ll no
ezek tipikusan azok a helyzetek, amikor a fjlrendszer foglalt.

22

Fjlrendszerek tpusai s kezelse, swap hasznlata

Fjlrendszer-ellenrzs
Szablytalan rendszerlells esetn nagy esllyel kimarad a fjlrendszer szablyos lecsatolsa.
Mivel a fjlrendszerek jellemzen puferelt adatelrssel dolgoznak, ennek egyenes kvetkezmnye nmi adatveszts lesz, de legalbbis inkonzisztencia. Ezeket javtani illik. Erre szolgl az fsck
(fjlrendszer-ellenrz, File System Check) nev parancs. Csak fel-nem-csatolt fjlrendszer esetn
adjuk ki, hasznlata:
fsck -t ext4 /dev/sdb1

Szerencsre ritkn van r szksg.

Automatikus csatols
Ha azt szeretnnk, hogy a fjlrendszer automatikusan rendelkezsre lljon a rendszer jraindulsa utn is, akkor fel kell venni az adatait a /etc/fstab nev fjlba. A fjl 6 db, szkzkkel, tabultorokkal hatrolt mezbl ll sorokat tartalmaz, egy sor egyetlen fjlrendszer lersra szolgl:
eszkz csatolsi_pont fs-tpus mount-opcik dump-szint fsck-passno
/dev/sdb1 /backup ext4 ro,discard 0 2

A mezk sorban:
a csatoland fjlrendszert tartalmaz eszkz neve
a csatolsi pont
a fjlrendszer tpusa
az extra csatolsi opcik
a dump-szint: a dump nvre hallgat mentprogram szmra szksges mentsi szint megadsa. (Ezt a programot Linux alat amgy nem jellemzen szoktk hasznlni, ezrt legtbbszr a
pldban is lthat 0 rtket rjk ide.)
az fsck-passno paramter a rendszerindts sorn automatikusan lefut fsck szmra a fjlrendszerek ellenrzsnek sorrendjt hatrozza meg. Vigyzzunk, mert a kihagyot rtk 0-nak,
azaz nem-ellenrizendnek szmt!

Mennyi helyem van?


Rendszeresen vissza-visszatr krds: mennyi helyem van. A vlasz a df (disk free space) paranccsal kaphat meg:
df

Az elrhet fjlrendszerek mrete, szabad s elfoglalt terleteinek nagysga ltszik a kimenetben. Napi hasznlatban jellemzen szeretik a df -h opcijt (n. human readable), ekkor nem neknk kell a megjelen szmrtkeket a kicsit knnyebben kezelhet MB, GB mrtkegysgekre
tszmolni. Bizonyos fjlrendszerek esetn meglep tud lenni, hogy a szabad s foglalt terletek
sszege nem adja ki a teljes mretet ennl mr csak az meglepbb, ha 100%-nl nagyobb teltetsget kapunk. Tudni kell, hogy van egy n. fenntartot terlet, amit kznsges felhasznlk nevben fut program nem, csak rendszergazda jog alkalmazsok hasznlhatnak el ez pl. az EXTcsaldnl alaprtelmezeten 5%. (Ezen terlet nagysgt a fjlrendszer ltrehozsakor mkfs lehet lltani. Illetve van egy tunefs Ext-fjlrendszereknl tune2fs nev parancs, utlag azzal is
lehet szablyozni a mretet.) Fent emltet anomlik erre vezethetk vissza
23

Fjlrendszerek tpusai s kezelse, swap hasznlata


Minden fjlhoz tpustl fggetlenl tartozik egy un . i-node. Ebben az adatstruktrban troldnak a fjl klnbz adminisztratv adatai, mint pl. tulaj, jogok, mret, tpus, stb. (Hard linkek
kzs i-node-ot hasznlnak.) Az i-node-okhoz tartozik egy n. i-node-tbla, amelynek mrete nmelyik fjlrendszertpus esetn fx, a fjlrendszer ltrehozsakor hatrozhat meg. Ha nagyon sok
nagyon apr fjlunk, vagy milli res knyvtrunk van, ez a tbla is betelhet. Ennek ellenrzshez a
df -i

parancsot kell hasznlni. (s ha betelik, res knyvtrakat, flsleges fjlokat kell trlni.) Jellemzbb a diszkhely fogysa, nem csoda, hogy kln parancs van annak megjelentsre, hogy egy
adot knyvtr fjljai mennyi helyet foglalnak, ez a
du

(azaz disk usage). Ha teht egy fjlrendszeren fogy a hely, rdemes ezzel megkeresni, hogy hol,
melyik knyvtrban lev fjlok foglalnak el sok helyet. A megolds a problmra a feleslegleges
fjlok trlse, esetleg a ritkn hasznlt fjlok tmrtse. (Ha az i-node-ok fogytak el, akkor a
problms knyvtr megkeressre egy megolds tallhat az Alapvet hibaelhrts c. fejezetben.)

Fjlrendszer tmretezs
Ha elfogy a hely a fjlrendszeren, hossz tvon rdemes megnvetni a mretet. Ehhez termszetesen elbb a trolterletet kell megnvelni (ez LVM esetn nagyon egyszer, a Diszkek c. fejezetben szerepl lvextend paranccsal megtehet). Ha teht a trolterlet mrete nagyobb, mint a
fjlrendszer, akkor jhet a fjlrendszer tmretezse. Nvelni gyakorlatilag mindegyik elterjedt
linuxos fjlrendszert akr mkds kzben is lehet, br eltrnek a mvelet vgrehajtshoz szksges parancs nevben. Az eddig a pldkban prefrlt EXT-csald tmretezshez a resize2fs parancs tartozik. Hasznlata igen egyszer:
resize2fs /dev/sdc1

(Csak az rdekessg kedvrt, az eddigi pldkban mltatlanul hanyagolt XFS esetn xfs_growfs a
parancs neve, mg pl. JFS esetn egyszeren jra kell csatolni a fjlrendszert a mount parancs -o
remount,resize paramtervel.)

Swap
A gpben lev fzikai memria vges, s sajnos szinte sosem elegend. A modern opercis
rendszerek elszeretetel alkalmazzk azt a mdszert a memria takarkos hasznlatra, hogy bizonyos memriaterleteket a fzikai memribl kimentenek a diszk erre fenntartot rszre (aztn ksbb vissza). Hagyomnyosan ezt swap nvvel illetik, br ma mr pontosabb lenne az n.
paging (lapozs) kifejezs hasznlata. Ahhoz, hogy a swap mkdjn, elszr ki kell jellni egy
nll, csak erre a clra fenntartot diszkterletet, s elkszteni a hasznlatra. Erre szolgl a
mkswap /dev/sdd2

parancs16. Ezt egyszer kell megcsinlni. Az elksztet diszkterletet hasznlatba venni pedig a
swapon /dev/sdd2
1 16. rdekes, hogy az egyb UNIX, s UNIX-szer rendszerekben ennek az elksztsnek nincs igazn megfelelje.

24

Fjlrendszerek tpusai s kezelse, swap hasznlata


paranccsal lehet. A hasznlt swap terletre vonatkoz adatokat (s egybknt a gpben lev memria nagysgt is) a
free

paranccsal lehet lekrdezni, de hasznlhat (csak a swap-re) a


swapon -s

is. Ha pedig egy mr nem hasznlt swap-et el szeretnnk tvoltani, akkor a


swapoff /dev/sdd2

paranccsal kapcsolhatjuk ki a hasznlatt. A swap bekapcsolsa hasonl a fjlrendszerek csatolshoz: a rendszer lellsakor elvesznek az ezzel kapcsolatos informcik. Ha teht egy swap terletet automatikusan hasznlatba szeretnnk venni, ugyangy mint a fjlrendszereket, fel kell
venni a /etc/fstab fjlba.
/dev/sdd2 none swap sw 0 0

(Mint lthat, mivel ez nem fjlrendszer, ezrt nhny meznl specilis paramtereket kell
megadni.)

25

Az opercis rendszer teleptse

Az opercis rendszer teleptse


A szerverek a hozzjuk megvsrolt opercis rendszert is ritkn tartalmazzk elre teleptve,
mg ritkbban fordul ez el az ingyenes Linux-disztribcikkal. Ennek oka kzenfekv: mg egy
lakossgi eszkznl a felhasznlk jelents rsznek megfelel az elre teleptet opercis rendszer, szerver krnyezetben olyan dntseket kell hoznunk a teleptst megelzen, amelyek a telepts menett rdemben befolysoljuk. Az informatikai krnyezetek is egyre tbb opercis
rendszert futatnak az vek sorn (elszr az rak cskkense, majd a virtualizci trnyerse
miat), gy ma mr nem jellemz, hogy egy rendszergazda kikerlheti az opercis rendszer teleptst.
Az opercis rendszer teleptse nagy vonalakban egy a teleptst vgz rendszer memriba
tltsbl, a gp hardvereinek feldertsbl, a teleptsi cl kivlasztsbl s elksztsbl, a
hlzat, az ra, a felhasznlk belltsbl, az j rendszer komponenseinek felmsolsbl s a
rendszerbetlt teleptsbl ll. A folyamatot szmos mdon vgezhetjk ezek kzl hossz
ideig az optikai lemezekrl trtn telepts volt a dominns. Mivel az jabb szervereken csak elvtve tallunk optikai meghajtt, ezrt ezt a lehetsget jelents rszben kivltota az USB kulcsokrl s a hlzatrl val telepts.
A Linux-teleptknek kt nagy csoportja van. Az egyik, fleg asztali rendszereknl elterjed mdszer a lemezkpes telepts, amely egy telepts nlkl is elindthat (live) rendszerbl ll, amely
kpes nmagt flmsolni a merevlemezre. A msik, hagyomnyos mdszer pedig egy csupasztot Linux, amely az j rendszert a csomagkezel segtsgvel telepti. Elbbi elnye a sebessge,
utbbi pedig a szlesebb kr konfgurcis lehetsgek.
Fontos megemlteni a virtualizcit vagy sok hasonl gpet zemeltet krnyezetekben gyakori
klnozsos eljrst, amely egy teleptet, bekonfgurlt mestergp lementet lemezkpbl msolssal vagy valamilyen diferencilis trolsi megoldssal hoz ltre pldnyokat.
Vgl tbb megolds terjedt el lemez nlkli szerverek zemeltetsre, amikor az egyes gpek a
rendszerbetltst hlzatrl memriba vgzik, majd a szksges trterletet NAS vagy SAN
megoldssal rik el.

A telepts eltt
A rendszer teleptse elt mindenek elt vlasszuk ki a disztribcit, annak verzijt s vltozatt. Szerverek esetben ha bizonytalanok vagyunk a krdsben, nem tvedhetnk nagyot azzal,
ha az ltalunk vagy az intzmny ltal elnyben rszestet disztribci utols stabil, hossz tv
tmogats verzijt (Ubuntu esetn LTS), s annak a Server vltozatt teleptjk.
Vlasszuk ki a megfelel architektrt is. Modern x86 alap rendszerek esetn gyakorlatilag
nem lehet okunk a 32 bites vltozat teleptsre, nyugodtan vlasszuk a 64 bit, x86-64, amd64
vagy X64 jells kiadst (ezek az elnevezsek mind ugyanazt jelentik).
Gondoljuk t, hogy milyen troleszkzre kvnjuk telepteni a rendszert. Szksg esetn alaktsuk ki a hardveres RAID-konfgurcit, hozzuk ltre a SAN-on a kteteket.
Ksztsk el a gp hlzati elrst, szksg esetn osszunk ki neki, vagy ignyeljnk IP cmet,
tudjuk meg az alhlzat adatait (hlzati maszk, tjr s nvkiszolgl cme).
26

Az opercis rendszer teleptse


Gondoljuk t, hogy a teleptst hnyszor kell elvgezni. Nhny gpnl tbb esetn keressnk
megoldst az automatizlsra.
Ha a lemezeken mr van brmilyen, korbban hasznlt rendszer vagy adat, akkor ksztsnk rla mentst akkor is, ha nem szndkozzuk trlni a telepts sorn.

Telepts optikai lemezrl, USB kulcsrl


Az ingyenes disztribcik letltse nem okozhat klnsebb gondot, a rendszer honlapjn meg
fogjuk tallni a megfelel hivatkozsokat. Amennyiben nem szabadon elrhet rendszert szerznk
be, kvessk a forgalmaz tjkoztatst.
A legtbb esetben CD- vagy DVD-kpet tlthetnk le, amelyet a .iso kiterjesztsrl ismernk
fel. Amennyiben optikai lemezrl kvnjuk elvgezni a teleptst, nincs ms dolgunk, mint a lemezt egy megfelel mret res adathordozra kirni. Ezt a legtbb Linux rendszeren a fjlra jobb
gombbal katintva s a lemezre rs opcit vlasztva, Windows alat pldul az ingyenesen elrhet Infra Recorder nev alkalmazssal tehetjk meg.
Amennyiben USB kulcsrl teleptennk, a lemez kirshoz specilis szofverre lesz szksgnk.
Linux alat ez az usb-creator, mg Windows alat a UNetbootin nev alkalmazssal a legegyszerbb.
A telepts indtshoz mindkt esetben helyezzk be a gpbe a telept mdit, s indtsuk jra.
A gp kziknyvben szerepl mdon vlasszuk ki a rendszerindtsra szolgl eszkznek (boot
device) az optikai meghajtt vagy az USB kulcsot. Szmos esetben ezt az F12 billenty megnyomsval tehetjk meg.

A telepts menete
A telept elindulsakor ltalban elsknt ki kell vlasztanunk egy menben, hogy telepteni
(install) szeretnnk a rendszert. Ne ijedjnk meg, ha ezutn hosszabb ideig vrnunk kell, ilyenkor
tltdik be a teleptshez szksges alaprendszer.
A telept betltse utn egy varzsl jelleg fellet fogad minket, amely az els lpsknt kivlasztot nyelven vgigvezet minket a telepts menetn.
A telepts sorn szmos krdsre kell vlaszolnunk. Az egyik els krdscsoport a helyi belltsokra vonatkozik: ki kell vlasztanunk a rendszer alaprtelmezet nyelvt, a billentykiosztst,
valamint az orszgot vagy az idznt. Egyes rendszerek megkrdezik, hogy helyi id vagy UTC
szerint jr a gpnk hardveres rja csak akkor vlasszuk a helyi idt, ha az adot gpen Windowst is futatni szeretnnk. Az rt clszer pontosan belltani, s az automatikus idszinkronizcit bekapcsolni (lsd az Egy szerver alapvet belltsai cm fejezetet).
A gpnk felhasznlival kapcsolatban is vlaszolnunk kell nhny krdsre. A rendszerek egy
rsze ltrehoz egy ltalnos felhasznlt, akinek joga van adminisztratv feladatok vgrehajtsra.
Ms rendszerek (Debian, CentOS) egy kln, root nev felhasznlnak lltjk be az ltalunk megadot jelszt. Az ltalnos cl felhasznlnak mindkt esetben clszer, hogy a sajt nevnket
adjuk, s az esetleges tovbbi felhasznlkat majd ksbb hozzadhatjuk (lsd a Felhasznlk s
csoportok cm fejezetet.)

27

Az opercis rendszer teleptse


A teleptk elvgzik a hlzat alapvet belltsait is. Tbb hlzati interfsz esetn ki kell vlasztanunk azt, amelyen az internetet rjk el ezt jobb megolds hjn a krtya tpusa s MAC
cme alapjn kell megtennnk. Amennyiben a hlzaton automatikus konfgurls (DHCP) mkdik, azt a telept automatikusan flismeri s hasznlja. Ha fx belltsokat szeretnnk megadni, akkor azt a krdsekre vlaszolva tehetjk meg. Ebben az esetben a gp IP cmre, az
alaprtelmezet tjrra s az alhlzati maszkra, valamint a nvkiszolgl cmre lesz szksgnk
(bvebb tmutats az Alap hlzati infrastruktra cm fejezetben).
A telepts legnagyobb fgyelmet ignyl pontja a lemezek belltsa. A legtbb esetben a telept flajnl nhny szvegesen krlrt belltst, valamint az egyni vlaszts lehetsgt. Mindenek elt dntsk el, hogy szksgnk van-e szofveres RAID-re vagy LVM-re, valamint hogy
van-e specilis ignynk a ktetekkel kapcsolatban (rszletes ismertet s tancsok a Lemezkezels cm fejezetben).

28

Csomagkezels

Csomagkezels
A legtbb Linux terjesztsben a hasznlt programok n. csomagokban rhetk el, s az adot
csomag aztn knyelmesen telepthet vagy szedhet le a gprl, ha a ksbbiekben flslegesnek
bizonyul. Kt nagyon elterjedt csomagformtum ltezik, de melletk tbb kevsb elterjedten
hasznlt disztribci hasznl sajtot.
Az egyik, az eredenden a RedHat ltal kifejlesztet RPM (RedHat Package Manager) formtum.
Kezelshez egy egyszer parancssoros eszkzt biztostanak, ennek neve szintn rpm. Ezt a csomagformt hasznlja tbbek kzt a kereskedelmi RHEL Redhat Enterprise Linux Server (s az
ezek klnjaknt ltez CentOS, s Scientifc Linux), a Fedora, a szintn kereskedelmi SLES Suse
Linux Enterprise Server, s az OpenSuse. (Valamint pr kisebb terjeszts.)
A msik nagyon elterjedt csomagformtum a Debian terjesztshez ktdik, neve DEB. A kezelparancs neve dpkg. A DEB-formtumot hasznlja nyilvn a Debian, s az abbl kinv Ubuntu (s
termszetesen az sszes Ubuntu gyerek: Xubuntu, Lubuntu, Kubuntu, stb.), illetve nhny ms
Ubuntu szrmazk, mit pl. a Linux Mint.
ltalban az egyes csomagformtumok noha bellrl teljesen msknt nznek ki, hasonl
funkcionalitst nyjtanak: valamilyen formban troldnak benne az adot csomagot alkot fjlok
(pl. az RPM-ben egy CPIO-archvum, mg a DEB-ben egy AR-archvumban), ezen kvl a csomaghoz tartoz klnbz metainformcik.

Csomag metainformcik
A csomag jellemzi kz tartoznak a felhasznlk szmra fontosabb (pl. milyen fjlok alkotjk
az adot csomagot) s kevsb fontos adatok (ltszlag ide tartoznak pl. az egyes fjlok srtetlensgnek ellenrzsre hasznlhat klnbz ellenrz-sszegek, hash-rtkek).
Fontos szempont egy csomagkezel rendszer s egy csomagformtum jsgval kapcsolatban,
hogy milyen lehetsgeket nyjt. Azaz:
a korbban teleptet csomagot knnyedn le lehet-e szedni a rendszerbl
van-e lehetsg a csomagok frisstsre
van-e fggsgkezels (azaz jelzs arra, hogy A csomag csak valamely nem ebbe a csomagba
tartoz komponens meglte esetn mkdkpes, a nlkl esetleg nem is lehet, vagy csak nem
rdemes telepteni). Van olyan csomagformtum, amely fjlokra, s olyan is, amelyek csomagokra vonatkoz fggsgkezelst ismer.
van-e tkzsvizsglat (az elz ellentte: csak akkor lehet telepteni A csomagot, ha egy msik komponens nincs teleptve a rendszerben).
a csomagok megbzhatsgnak krdse (el vannak-e, vagy egyltaln ellthatak-e a csomagok pl. digitlis alrssal, amely biztostja a csomagok srtetlensgt)

29

Csomagkezels

DEB-csomagok alapszint kezelse


Ha a keznkben van (telept CD-n, DVD-n, vagy hlzatrl letltt formban) egy *.deb fjl,
akkor egyszeren
dpkg -i csomag.deb

parancs segtsgvel telepthet. Ha szksges lekrdezni, hogy milyen csomagok vannak a rendszerben teleptve, akkor pedig a
dpkg -l

teszi ezt lehetv. Ha krlbell sejtjk a csomag nevt, akkor szrhetjk a keresst a
dpkg -l zen\*

formval.
Amennyiben az rdekel, hogy egy adot nev, teleptet csomag milyen fjlokat tartalmaz, akkor
a
dpkg -L zenity

paranccsal kaphatjuk meg a kvnt informcit. Nha hasznos lehet a fordtotja: megtallni, hogy
egy konkrt fjl mely csomag rszeknt teleplt a rendszerbe :
dpkg -S /usr/bin/test

s vgl, ha eltvoltani szeretnnk egy csomagot, akkor trljk le:


dpkg -r csomagnv

Sajnos ez utbbi mveletel van egy kis problma. A csomagokhoz tartozhatnak konfgurcis
adatok. A telepts sorn ahol szksges, lefut egy konfgurl lps, s a fenti -r opcij trls ezt
az adatot a rendszerben fent hagyja. (Ennek van j oldala is.) Amennyiben ezekre az adatokra mr
nincs szksg, a teleptet csomag eltvoltsakor rdemes ezen formk valamelyikt hasznlni
dpkg -r --purge csomagnv
dpkg -P csomagnv

a trlshez.

RPM csomagok alapvet kezelse


A keznkben lev *.rpm fjlok teleptse hasonlan egyszer:
rpm [ -i | -U | -F ]csomag.rpm

Az install (-i opci) mvelet mellet ltezik az upgrade (-U) s a freshen (-F) verzi is: az install
feltelept egy csomagot, s az esetleges korbbi verzija ugyanannak a csomagnak megmarad. Az
upgrade esetn a korbbi verzi eltvoltsra kerl a telepts sorn, de ha nem volt fent korbbi
verzi, az se baj, telepl az j. Ezzel szemben freshen esetn csak akkor telepl az adot csomag,
ha volt fent korbbi verzi (ekkor viszont azt az upgrade-hez hasonlan frissti.) Jellemzen az
install helyet az upgrade-et preferljk (nem nagyon van rtelme ugyanabbl a programbl egynl tbb verzit feltelepteni, kivtelknt ltalban csak a kernel-csomagokat emlegetik).
A felteleptet csomagok listja lekrdezhet a
30

Csomagkezels
rpm -qa

paranccsal (ahol az a opci az all, minden csomag jelentssel br.) Adot nev csomag teleptet
llapotnak ellenrzse:
rpm -q zenity

Egy teleptet csomaghoz tartoz fjlok listzsa


rpm -ql zenity

A melyik csomag teleptstl let ez a fjl krdsre pedig az


rpm -q -f /usr/bin/test

parancs adja meg a vlaszt.


RPM alap rendszer esetn is lehet eltvoltani egy csomagot, ehhez az
rpm -e csomagnv

parancs hasznlhat.
Fenti dpkg s rpm parancsok hasznlatnak komoly htultje, hogy a fggsgkezels csak flig mkdik. RPM esetben jellemzen fjl alap fggsgek szerepelnek a metaadatok kzt, gy
valahogyan meg kell keresni, hogy a fggsgi fjl melyik csomag rsze ahhoz, hogy a csomagot
begyjthessk, s telepthessk.

Magasabb szint csomaghasznlat: repk


A rendes fggsgkezelst a repk (repository, csomagtrol) bevezetse jelentete. A repkban
csomagot trolunk ( s csomag metaadatokbl felptet adatbzisokat). A repk lehetnek loklis
knyvtrstruktrk, vagy akr fp-vel, htp-vel elrhet szerveren tallhat tvoli trolk. A repkezelshez jabb parancsok jelentek meg.
A DEB-alap rendszerekhez ez let az APT (A Package Tool). Jellemzen a /etc/apt knyvtrban
tallhat az APT konfgurcija. Ezek olyan jellemzk, mint hogyan rjk el a kls szervereket
(pl. a proxy adatok), s milyen trolkat hasznlunk a csomagok keressekor.
Az APT kszlethez tartozik a leggyakrabban hasznlt apt-get nev parancs, meg az apt-cache (de
csomagok teleptsvel jabb parancsokkal bvthet). Ezek parancssoros eszkzk, de van aki
jobb szereti a karaktergrafkus aptitude-ot.
Az RPM csomagformtum esetben a rep-alap csomagkezels kicsit bonyolultabb. A Red Hat
vonal egy YUM (Yellowdog Update Manager17) nev eszkzt vlasztot, ahol a parancs neve: yum.
A Suse-vilg e helyet hivatalosan a Zypper nev eszkzt hasznlja. A parancs neve szintn zypper. Ezekhez ltezik alternatva is, taln a legismertebb az Apt4RPM nev eszkz, amely a DEBekhez kifejlesztet APT-t igaztota az RPM csomagformhoz. (Szerzk ismernek olyan kellen
nagy rendszert, ahol a Zyppert a YUM vltota, mshol az Apt4RPM-re cserltk le.)
Funkciit tekintve nem nagyon trnek el egymstl az egyes eszkzk termszetesen van
olyan, amit csak az egyik, a vagy msik tesz lehetv, s termszetesen a parancsok neve s paramterezse is eltr egymstl. gy a folytatsban lehet hasonlsgokat tallni (s persze eltrseket is).
1 17. A Yellowdog Linux terjeszts fejleszti alkotk meg, onnan jt a nv

31

Csomagkezels

APT alapszint hasznlata


Az APT mkdsnek fbb paramterei az /etc/apt/apt.conf fjlban llthatk be (pl. proxy elrs). Tovbbi fontos az n. repk belltsuk a /etc/apt/sources.list nev fjlban trtnik. Ha
fentieket belltotuk, akkor onnantl egy csomag telepts egyszer:
apt-get install csomagnv

Az APT megkeresi, hogy melyik repban tallhat meg az adot csomag, ellenrzi a fggsgeit,
letlti a csomagot s a fggsgeket, s szpen sorban feltelepti ket. A fgg csomagokhoz mellkesen belltja azt az informcit, hogy fggsgknt kerltek fel, meg azt, hogy mely csomag
fggsgeknt. Az, hogy ez egy fggsge valaminek, az azrt rdekes, mert ha az sszes olyan
csomagot eltvoltjuk, amelynek ez a csomag fggsge volt, akkor ez a csomag maga is eltvolthatv vlik. Elz lps
apt-get remove --purge csomagnv

vagy
apt-get purge csomagnv

paranccsal, mg az rvn maradt csomagok eltvoltsa az


apt-get autoremove --purge

paranccsal intzhet el.


A csomagoknak idnknt jabb verzii jelennek meg. Ezeket a frisstseket kt lpsben rhetjk el. Az
apt-get update

parancs frissti a csomagokra (s verzijukra) vonatkoz adatbzist, mg az


apt-get upgrade

maguknak a teleptet csomagoknak a frisstst intzi el. Mivel a csomagok teleptse s frisstse
sorn elg sok csomag kerlhet be a loklis csomag-cache-be (helye /var/cache/apt/archives
knyvtr), ezrt rdemes rendszeresen lefutatni az
apt-get autoclean

parancsot, ami a mr felesleges csomagfjlokat trli a cache-bl, illetve ha nagyon szksen llunk hellyel, akkor akr a
apt-get clean

parancsot is hasznlhatjuk, amellyel az egsz loklis cache kirthet


A felteleptet csomagokkal kapcsolatos klnbz informcik lekrdezhetk az apt-cache nev
paranccsal. Pl. mely csomagoktl fgg (s mikkel tkzik) egy adot csomag:
apt-cache depends binutils

vagy a fordtotja, az adot csomagtl mely ms csomagok fggenek (hivatalos neve reverse dependency)
apt-cache rdepends binutils

32

Csomagkezels
ha teleptjk az apt-file nev csomagot, kapunk nhny rdekesebb funkcit is. Pldul egy csomag tartalmt a nlkl ki tudjuk listzni, hogy magt a csomagot le kellene tlteni. Persze ez nem
megy magtl, ehhez az apt-fle adatbzist is rendszeresen frissteni kell:
apt-file update

Ha megtrtnt a frissts, akkor mr mehet a listzs:


apt-file list csomagnv

Ugyangy kereshetjk azt is, hogy egy konkrt fjl mely csomagban van:
apt-file search /usr/bin/nvi

YUM alapszint hasznlata


A YUM is konfgurland. Ehhez a paramtereket a /etc/yum.conf, a repkat pedig a /etc/yum.repos.d knyvtrban lev fjlokkal kell belltani. A konfgurls utn a yum hasznlhat
Csomagtelepts yum segtsgvel:
yum install csomagnv

A teleptet csomag eltvoltsa:


yum remove csomagnv

A teleptet csomagok frisstse:


yum upgrade

Termszetesen, mivel YUM alat is ltezik fggsgkezels, it is elfordulhat, hogy rvn maradnak csomagok, ezek eltvolthatak a
yum autoremove

paranccsal.
A teleptsek sorn letltt fjlok a /var/cache/yum knyvtrban gylnek, takartsa a
yum clean packages

paranccsal trtnik.
Ha valamely csomagot keresnk, akkor hasznlhat a
yum whatprovides /usr/bin/test

illetve a
yum search coreutils

parancsok.
Fggsgek listzsra j a
yum deplist csomagnv

parancs.

33

Csomagkezels

Zypper alapszint hasznlata


Konfgurls: /etc/zypp/zypper.conf s /etc/zypp/repos.d
Csomagtelepts:
zypper install csomag

Csomageltvolts:
zypper remove csomag

Frissts: az adatbzis frisstse (ez repnknt automatizlhat)


zypper refresh

s a csomagok frisstse:
zypper update

Cache (helye: /var/cache/zypp/packages) rtse


zypper clean

Keress
zypper search coreutils
zypper what-provides coreutils

Mint fentiekbl lthat, a repn alapul eszkzk alapfunkcii meglehetsen hasonlak, idnknt mg az alparancs neve is megegyezik. Sajnos az apr klnbsgek a heterogn rendszert zemeltetk szmra kicsit kellemetlenn teszi a dolgot.
Az egyes csomagkezel eszkzkrl fent felvzoltak persze nem tekinthetk teljes kr informcinak, azaz a hasznlt rendszer fggvnyben rdemes jobban elmlyedni a dokumentciban.

34

Alap hlzati infrastruktra

Alap hlzati infrastruktra


Ahhoz, hogy linuxos szmtgpnk kpes legyen a hlzat tbbi gpvel kommuniklni, minimlisan szksgnk van egy hlzati interfszre s a hlzati paramterek megfelel belltsra.
Minden gpben van egy specilis, virtulis interfsz a lo18, amit loopback nven is szoktak emlegetni, a hozz tartoz IP-cm: 127.0.0.1. (Ez jellemzen automatikusan be van konfgurlva.) Ezzel
akr valdi hlzati kapcsolat nlkl is lehet hlzati kommunikcit vgz programokat
futatni/tesztelni a gpen. Linux alat az Ethernet-interfszek jellemzen eth0, eth1, stb. nven rhetk el (ez pl. a legjabb Fedora terjesztsben mr megvltozot), mg a Wif-interfsz jellemzen
wlan0.
A hlzati interfszeket szervereken jellemzen statikusan szoktk konfgurlni, mg a desktop
gpeken elterjedtebb a DHCP-szerver segtsgvel dinamikusan kiosztot IP-cmek hasznlata. A
statikus konfgurlshoz a UNIX-vilgbl rklt ifconfig volt hasznlatban, ma viszont egyre inkbb egy sokat tud j eszkz, az ip nev parancs javasolhat. (Ez sok esetben egy iproute vagy
iproute2 nev csomag rszeknt kerl fel a gpre.) A folytatsban mi is ez utbbit fogjuk hasznlni, de odarjuk a rgebben elterjedtebb formt is. Oka: sokan vannak fleg egyb *X-rendszerrl rkezk, vagy heterogn rendszereket zemeltetk, akik a hagyomnyos eszkzket
szeretik a mai napig hasznlni; radsul a net tele van ezeket a rgebbi eszkzket hasznl lersokkal.
Fontos tudni, hogy mint a legtbb adminisztrcis tevkenysg, a hlzat konfgurlsa is rendszergazda jogosultsgot ignyel. E miat minden parancs esetn mindig mindenki fgyeljen, hogy
az ltalunk megadot parancsot sudo parancs esetleg su -c parancs formban, vagy brmilyen a
hasznlt terjesztsben rendelkezsre ll eszkzzel, vagy a cges elrsokban javasolt mdon, de
a lnyeg, hogy rendszergazdaknt hajtsa vgre.

Az IP parancs
Az ip parancs egymaga szolgl a hlzati interfszek konfgurlsra, az tvlaszt tbla belltsra, klnbz specilis hlzati eszkzk (pl. bridge, vagy aggreglt interfsz) ltrehozsra s
mg ezernyi msra. Szintaxisa e miat kicsit bonyolult, idnknt kevss intuitv (st nha logiktlan), de hamar megszokhat. A parancsnak megadhatunk klnbz opcikat, mint pl. -o
(oneline) egysoros kimenet, -d (detail) rszletesebb informcik, -s (statistics) forgalmi s egyb
statisztikk, stb. Az opcik teljes listjhoz illetve az ip parancs tmr lersnak megnzshez
adjuk ki az ip --help parancsot, s olvassuk el az ip parancs dokumentcijt (man ip). Javasolhat
mg ezen kvl az eredeti fejleszt, Alexey N. Kuznetsov ltal rt IP Command Reference cm
dokumentum, ami a legtbb terjesztsben a csomag rszeknt feltelepl Ubuntu alat pl. a
/usr/share/doc/iproute-doc/ip-cref.ps.gz fjlban tallhat meg.

1 18. Egyb, UNIX s UNIX-szer rendszereken (st korai Linuxokon is) ennek neve lo0 volt.

35

Alap hlzati infrastruktra

Az IP parancs felptse
Az opcionlis opcik :-) utn ktelezen annak az objektumtipusnak a neve ll, amelyikkel valamilyen mveletet hajtannk vgre (link hlzati interfsz; address valamilyen cmzsi rendszerbeli cm; route tvlaszt tbla; s . t.), majd a vgrehajtand parancs (add hozzad;
delete trl; list/show listz, megjelent; set bellt ; stb), s azok paramterei. Legtbb objektumtipus esetn van alaprtelmezet parancs, gy az akr el is hagyhat. Ez az alaprtelmezet
parancs legtbbszr a listz parancs. Az objektumok neve, a parancs, st maguk a paramterek
nevei is sokszor rvidthetek, ltalban egy-kt karakter megadsa elg a lnyeg, ha egyrtelmen azonosthat, akkor az mr j. Bizonyos objektumtipus s parancs esetn mg alaprtelmezet paramter is van, amely neve mg akr gy is elhagyhat, ha az adot paramter sajt
paramtert ignyel. Ez a napi hasznlat sorn knyelmess teszi a hasznlatot, de parancsfjlokban, dokumentciban kifejezeten ellenjavalt az olvashatatlansg okn. Mi ebben a knyvben az
els egy-kt esetben kirjuk, de a 3., 4. helyen mr rvidtnk. Azaz pl. ha ltre akarunk hozni egy
j interfszt, akkor azt
ip link add name dummy0 type dummy

formban adjuk meg, de ha egyms utn tbb interfszt, akkor a tbbi parancsnl mr rvidtjk:
ip l a dummy1 ty dummy

Fenti plda kellen borzalmas, de mind az objektum, mind a parancs nevnek rvidtse szerepel, st a hinyz opcinv s az opcirvidts is (a type egybknt t-knt nem rvidthet, mert
az alapbl a txqueuelen opcit jelenti).
E rvid, a parancsot (s szintaxist) boncolgat kitr utn trjnk vissza a gyakorlati rszre.

Interfsz IP cmnek statikus belltsa


A gpben lv interfszek listja sokfle mdon lekrdezhet. Ma mr az
ip link show

parancs javasolhat rvid formjban ip l sh . Ha csak s-et runk, az nem a show, hanem a set parancsot jelenti, ezrt knyelmesebbek a show helyet a list parancsot hasznljk ip l l formban, st
a parancs a korbban emltetek szerint el is hagyhat, szimpln csak ennyit rva: ip l. (Hasznlhat ezen kvl az ifconfig -a vagy akr a netstat -ia parancs is.) Az elz, az interfszeket listz ip parancs kimenete valami hasonl kell, hogy legyen:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state
DOWN qlen 1000
link/ether 5c:9a:d8:67:89:b2 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 68:5d:43:3f:a0:bb brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 0e:fb:8d:ae:c9:fb brd ff:ff:ff:ff:ff:ff

Ebbl szervernkn a lo, s ha van Ethernet-interfsz, akkor az eth0 vrhat (termszetesen lehet ms is). Mint lthat, a listban minden interfszhez tartozik egy sorszm, e mgt ll kets36

Alap hlzati infrastruktra


pontal elvlasztva az interfsz neve valamint az interfsz paramterei tbb sorban. Ha megadjuk
a -o opcit, akkor minden interfszrl egysoros formban kapjuk meg az adatokat (ahol az eredeti
kimenetben soremels ll, azt az egysoros kimenetben egy \ jelzi).
Ha az interfsz nevt mr tudjuk (a pldnkban eth0), akkor a hlzati belltsok elvgzse
egyszer:
ip address add 1.2.3.4/24 broadcast 1.2.3.255 dev eth0
ip link set up dev eth0

Az els paranccsal megadjuk, hogy az eth0 interfsznek mi legyen a cme. A trtvonal utn az
un. netmask paramter ll un. prefx formban (ami azt mondja, hogy a 32-bites IPv4-es cm els
hny bitjt hasznljuk a hlzat azonostsra a maradk bitek a konkrt gpet azonost un.
host-bitek). Az ip parancsnl ktelez az un. zenetszrsi cmet is megadni (a hagyomnyos ifconfignl ez elhagyhat, a netmask alapjn automatikusan szmoldik).
A msodik paranccsal pedig UP, azaz bekapcsolt llapotba hozzuk az interfszt e nlkl nem
forgalmazhatnnk rajta keresztl. Ugyanez a rgi ifconfig paranccsal ltszlag egy kicsit egyszerbb:
ifconfig eth0 1.2.3.4 netmask 255.255.255.0 up

A fenti ip parancsnl a korbban emlegetet rvidtsek mellet legtbbszr alkalmazot tovbbi


egyszersts, hogy a broadcast 1.2.3.255 helyet ennyit runk: brd +. A +-jel funkcija: a netmask
alapjn automatikusan kiszmtot zenetszrsi cm hasznlata 19.
ip a a 1.2.3.4/24 brd + dev eth0

Termszetesen egy interfsz ideiglenesen kikapcsolhat, ehhez a fenti ip link parancsot kell az up
helyet a down paramterrel futatni:
ip link set down dev eth0

Az interfszhez belltot IP-cmet vgleg el is dobhatjuk, ekkor az ip addr parancsban az add


mvelet del-re cserlend:
ip address del 1.2.3.4/24 broadcast + dev eth0

Ekkor az interfsz visszall az eredeti, cm nlkli llapotra.

tvlaszts (routing) belltsa


Ha egy interfszen belltotuk a hasznlni kvnt cmet, akkor mr csak az tvlaszt tbla belltsa szksges az alapszint mkdshez. Ez szintn az ip paranccsal tehet meg. tvlasztsnl legjellemzbb az un. alaprtelmezet (default) tvlaszt hasznlata, ezen kvl az egy teljes
hlzatot (network route) s az egyetlen gpet megcmz (un. host route) bellts szokot srbben elfordulni. Az tvlaszt belltshoz szksges ip parancsok:
ip route add default via 1.2.3.250 # default route
ip ro a 1.2.4.0/24 via 1.2.3.254 # network route
ip ro a 1.2.5.6/32 dev eth0 # host route

A sorok vgn ll, # mgt ll rszek megjegyzsek, termszetesen a parancs futatsnl elhagyandk. A route objektum neve nem rvidthet a logikusnak tn r formban, az ugyanis a
1 19. Ezzel knyelmessge kzelt az ifconfg parancshoz.

37

Alap hlzati infrastruktra


valsznleg kezdk ltal sokkal ritkbban hasznlt, un. szably alap tvlaszts, azaz policy routing belltshoz szksges szablyok azaz rule-ok rvidtse. A statikus tvlaszts belltsnak szintn van egy hagyomnyos, a UNIX-vilgban hasznlt alternatv parancsa, neve: route.
Fenti belltsok ezzel a paranccsal gy nznek ki:
route add default gw 1.2.3.250
route add -net 1.2.4.0 netmask 255.255.255.0 gw 1.2.3.254
route add -host 1.2.5.6 dev eth0 # a -host el is hagyhat

Amennyiben lekrdezni szeretnnk az tvlaszt tbla tartalmt, hasznljuk az ip route show


(vagy list) parancs, illetve a rgebbi route -n.
ip ro l

A UNIX vilgbl jt hagyomny ezek helyet a netstat -r -n hasznlata.

Hlzati paramterek dinamikus belltsa


Asztali gpeknl a statikus belltssal szemben a dinamikus, DHCP-szerver segtsgvel megoldot hlzati konfgurls a jellemz. (Sok helyen mg a szervereket is DHCP-n keresztl lltjk
be igaz, ltalban fx pramtereket kapnak a szerverek.) Linux krnyezetben ma a legtbb terjeszts az un. ISC-fle DHCP megvalstst hasznlja kliens oldalon mindenkpp. Ez tbbsgben egyetlen parancs futatst jelenti, neve dhclient. (Ezen kvl elfordul ms is, rgebben
elterjedt volt a dhcpcd DHCP client daemon , illetve a pump nev eszkz hasznlata.) Az esetek
tbbsgben, semmi extra konfgurlst nem ignyel a dolog, egyszeren a konfgurland interfsz nevt kell megadni a klienst konfgurl parancsnak, a tbbit az mr elintzi. Azaz DHCP-t
hasznl krnyezetben elegend csak a
dhclient eth0

parancs futatsa. (A dhcpcd ugyangy hasznlhat, egyedl a pump ignyelt az interfsz neve el
mg egy -i opcit: pump -i eth0.)

Nvfelolds belltsa
Mr csak a nvfelolds bekonfgurlsa van htra. A gpek neve s IP-cme kzti sszerendelshez rendvl sok lehetsg adot. Hasznlhat a /etc/hosts nev statikus fjl. Tetszleges cmtrszolgltats, mint a kihalflben lev NIS, vagy NIS+, esetleg egy LDAP-szerver. Nem jellemz,
de akr SQL-adatbzisbl direktben is krdezhetk az adatok. ltalban DNS-szervert szoktak
hasznlni egy erre kitallt protokoll segytsgvel. (Amely szerver az adatokat akr szveges fjlban, akr adatbzisban trolhatja.) Mivel ennyifle adatforrsi lehetsg van, els lpsknt ezt
kell elmagyarzni a rendszernek.

Name Service Switch (NSS)


Ehhez az un. NSS-keretrendszert kell bekonfgurlni, erre szolgl a /etc/nsswitch.conf fjl. Ebben
soronknt megadjuk az adatbzist amelynek keresst konfgurljuk (ugyanis nem csak nv-IP
hozzrendelst, de pl. felhasznli adatok keresst is szablyozhatjuk az NSS-sel). Az adatbzis

38

Alap hlzati infrastruktra


neve utn ketspontal elvlasztva a hasznland adatforrs(ok) neve(i) ll(nak). Azaz ha a nvfeloldst a taln legelterjedtebb mdon akarjuk hasznlni, akkor az erre vonatkoz sor gy nz ki:
hosts: files dns

Jelentse: elbb a loklis fjlban keresnk, majd ha nincs tallat, a DNS-szerverekhez fordulunk.
A mkdshez ki kell tlteni a fent emltet /etc/hosts fjlt. A szksges adatok soronknt egy IPcm, majd szkzzel, tabultorral elvlasztva a gp teljes neve, s esetleges alternatv nevei:
127.0.0.1 localhost.localdomain localhost loopback
1.2.3.254 defgw.localdomain defgw

Viszont ha mint pldnkban DNS-hasznlatot is konfgurltunk az NSS-be, akkor mg egy


/etc/resolc.conf nev fjl konfgurlsa htravan 20. Ebben a nvkeresseknl hasznlatos DNStartomnyneve(ke)t, s a hasznland nvszerverek IP-cmt kell megadnunk:
search example.hu example.com
nameserver 1.2.3.254
nameserver 1.2.5.6

Ezzel hlzatunk alapszint belltsval vgeztnk. Fenti belltsok legnagyobb hibja, hogy
amiket parancssorban lltotunk be (interfszek cme, tvlasztsi paramterek), azok a gp esetleges jraindtsakor elvesznek. Ezrt fenti parancsok hasznlata kevs, szksg van ezeknek az
informciknak a maradandv ttelre. Ezt a klnbz terjesztsekben klnbz fjlok szerkesztsvel lehet megoldani (most eltekintve atl, hogy egyes terjesztsekben ehhez vannak esetleg karakteres, vagy akr grafkus fellet eszkzk melyek ltalban ugyanezeket a fjlokat
mdostjk).
Ubuntu: /etc/network/interfaces
RHEL/CentOS/Scientifc Linux: /etc-sysconfg-network-scripts/ifcfg-eth0
OpenSuse/SLES: /etc/sysconfg/network/ifcfg-eth0
Ubuntu esetben minden interfszt ugyanabban a fjlban, RedHat s Suse esetn pedig minden
interfszt kln fjlban (amelynek nevben benne van az interfsz neve) kell belltani.

1 20. rdemes mg utnanzni az un. resolvconf nev eszkznek, kicsit bonyolultabb dolgokat lehet vele megcsinlni,
mint ami it szerepel.

39

Egy szerver alapvet belltsai

Egy szerver alapvet belltsai


A legtbb szerverteleptsben van egy kzs pont, akrmilyen feladatra is hoztuk ltre a szervert, ez pedig nem ms, mint az gynevezet alapvet belltsok elvgzse. Ez igaz lehet egy sok
felhasznls levelezszerverre, egy webszerverre, de akr egy belptet rendszert kiszolgl begyazot Linux rendszerre is. Hiszen gondoskodnunk kell rla, hogy az id be legyen lltva a
megfelel idzna szerint, az fsck gy legyen belltva, hogy ne akkor induljon el egy 4 rs lemezellenrzs, amikor a legkevsb kellene, vagy tudjunk rla, ha egy lemez rakonctlankodik, de
termszetesen ugyanilyen fontos az is, hogy a cron be legyen lltva, legyen rla napl stb. Ez a
fejezet teht felttelezi, hogy tl vagyunk egy Ubuntu LTS rendszer teleptsn, ahol mg nem teleptetnk semmi specifkusat (web, FTP, mail stb. szolgltatst) s mr felraktuk a biztonsgi
frisstseket. Nzzk meg teht, milyen alapvet teendink vannak.

Hlzattal sszefgg teendk


Ma mr alap teleptsben nem kapunk telnetd-t, s portmap sem fgyel automatikusan, de els
lpsknt rdemes feltelepteni az nmap segdprogramot: apt-get install nmap Majd az nmap localhost parancs segtsgvel megnzni, hogy milyen TCP portok vannak nyitva alap kiptsben a gpnkn. Ha szksgesnek rezzk, akkor vegyk el a tzfal fejezetet s az azokban lertak
alapjn hzzunk fel legalbb egy alap iptables-t. Ezzel egyt rdemes a szmunkra feleslegesen
fut alkalmazsokat eltvoltani. Azaz, ha valamirt teleptsre kerlt egy POP3 szerver, de funkcionalitsa nem lesz, akkor azt tvoltsuk el. Egy alap rendszerben jobbra csak az SSH portnak
rdemes ltszania.

Lemezkezelssel sszefgg teendk


Alap bellts szerint minden 20. jraindtst, illetleg 20 napot kveten a soron kvetkez jraindtsnl a rendszer knyszerteni fog egy fjlrendszer-ellenrzst. Mivel jellemzen a szervereket tvolrl rjk el (SSH-val) ezrt jellemzen nem vagyunk ot, amikor pl. egy kernel frissts
miat bekvetkezik az jraindts utni lemezellenrzs. Norml esetben ez a lemezmret s a rajta trolt llomnyok fggvnyben lehet 20 perc, de lehet 4,5 ra is. Ha pl. 100 kB-os kpllomnyokbl trolunk 2 TB mennyisget, akkor ez bizony 4,5 ra is lehet. Megszaktani nem rdemes,
s nem is tancsos. Viszont ha a rendszer tall srlt llomnyokat, amelyeket szeretne megjavtani, akkor tlp interaktv zemmdba, s krdezni fog. Igen m, de az fsck programot a rendszer
hlzat nlkli zemmdban, alacsony init szinten indtja, gy hacsak nem rendelkeznk a gpre
fxen vagy ideiglenesen rktt IP-konzollal, akkor nem fogunk tudni beavatkozni. Ezrt ha gy
gondoljuk, hogy j mentst fogunk felpteni s bzunk az fsck automatikus javt kpessgeiben,
akkor clszer megmondani az fsck-nak, hogy alapllapotban a feltet javt krdsekre vlaszoljon igent, amelyet a /etc/default/rcS llomnyban az FSCKFIX=yes rtk belltsval tudunk elrni.
Ha mr belltotuk az automatikus igent, clszer a lemezeinkre belltani egy vllalhat idtartamot, azaz mondjuk meg mi az fsck szmra, hogy mennyi idnknt s hny jraindtson-

40

Egy szerver alapvet belltsai


knt szeretnnk kiknyszerteni az ellenrzst. Erre a feladatra a tune2fs programot clszer
hasznlni:
tune2fs -l /dev/sda3

A -l opcival lekrdezhetjk az alapbelltsokat, s megtudhatjuk, mikor lesz a kvetkez tervezet lemezellenrzs ebben a pldban a /dev/sda3 jells partcin. Megvltoztatni pedig a
tune2fs -c 40 -i 30d /dev/sda3 segtsgvel tudjuk, amikor is 40 csatols vagy 30 nap eltelte utn
fogja kvetelni az ellenrzst.
Szintn rdemes a tune2fs -m opcijval a csak rendszergazda szmra fenntartot terlet nagysgt az alaprtelmezet 5%-rl alacsonyabbra, de mg vllalhat mretre lltani van, aki a
0,1%-ot tekinti megfelelnek.
Most, hogy ezeken tl vagyunk, rdemes teleptennk egy programot, amely fgyelni fog a lemezeinkre helyetnk. Mg a szerver tervezsnl eldnttk, hogy hardveres vagy szofveres
RAID-et alkalmazunk, vagy egyiket sem (ez nem javasolt!). Viszont akrmelyik megoldst is vlasztotuk, a lemezeket fgyelni kell, hogy az esetleges meghibsodsrl mg idben rteslhessnk. Erre a feladatra a leginkbb alkalmas program a smartmontools. Ez az eszkz a SMART
adatokat biztost merevlemezek megfgyelsre szolgl. A legtbb ma kaphat lemez mr rendelkezik azzal a kpessggel, hogy folyamatosan s/vagy meghatrozot idkznknt nellenrzseket futat le, fgyeli a lemezek krnyezeti paramtereit: melegedst, felprgsi idt, letartam
idt, ki/be kapcsolsok szmt stb. Ezekbl az adatokbl kvetkeztet arra, hogy egy merevlemez
lehetsges meghibsodsa be fog-e kvetkezni. Felhasznli krnyezetben ezen adatok megtekintsre vagy a parancssori megolds (smartctl -a /dev/sda1), vagy pedig a jobban tlthat GSmartControl ajnlot. Belltsa viszonylag egyszer, s a gyakorlati tapasztalat az, hogy a jl belltot
nellenrzsi ciklusokat is magban foglal konfgurci kpes lehet mg az adatvesztst megelzen jelezni. Szerveroldalon kpes egytmkdni a gyrtk sajt platformos Linux RAID programjaival, de sajnos nem mindegyikkel.
Teleptse egyszer:
apt-get install smartmontools

Ennek kiadsa utn a fggsgekkel egyt telepl a smartmoontools. Els teendnk, hogy eldntsk, milyen lemezeket akarunk fgyeltetni vele. Clszer az sszes SMART-kompatibilis rendelkezsre ll lemezt megfgyelni. Szofveres RAID esetn az sszes fzikai lemezt egyenknt be
kell fzni, hardveres RAID esetn pedig rdemes a gyrtk hozz adot szofvert is hasznlni, illetve megnzni, hogy az adot hardvervezrl s a smartmon egyt tud-e mkdni. Nzzk az
egyszer esetet, amikor 1-2 SATA vagy SAS lemez van a gpnkben, vagy SofRaid vagy single
zemmdban. Nzzk meg, hogy a lemezeink alkalmasak-e a SMART adatok kinyersre:
smartctl -a /dev/sda
smartctl -a /dev/sdb

Valami ilyesmit kellene kapnunk:


=== START OF INFORMATION SECTION ===
Device Model:
ST91000640NS
Serial Number:
LU WWN Device Id: 5 000c50 04ed10873
Firmware Version: FTA2
User Capacity:
1,000,204,886,016 bytes [1.00 TB]
Sector Size:
512 bytes logical/physical
Device is:
Not in smartctl database [for details use: -P showall]
ATA Version is:
8

41

Egy szerver alapvet belltsai


ATA Standard is:
Local Time is:
SMART support is:
SMART support is:

ATA-8-ACS revision 4
Thu Aug 8 14:36:43 2013 CEST
Available - device has SMART capability.
Disabled

=== START OF READ SMART DATA SECTION ===


SMART overall-health self-assessment test result: PASSED

Tovbb rengeteg olyan adatot, hogy hny fokos a lemez ppen, illetve hnyszor volt ki- s bekapcsolva, vagy hogy mennyi ideje prg mr. A lnyeg, hogy a SMART adatok kiolvashatak, teht lltsuk be a SMART fag-et ENABLED llsba a kvetkezkppen:
smartctl -s on -a /dev/sda
smartctl -s on -a /dev/sdb

Ha ezzel megvagyunk, akkor tudassuk a rendszerrel, hogy szeretnnk, ha bizonyos idkznknt fgyeln a lemezeinket, szerkesszk a /etc/default/smartmontools llomnyt:
enable_smart="/dev/sda /dev/sdb"

Ebben adhatjuk meg, hogy a fzikai lemezeinket hogyan hvjk, mg akkor is ha valjban mi
/dev/md1-knt hivatkozunk r. Jelen plda mind a kt szofveres RAID lemezt fgyelni fogja.
start_smartd=yes

Alapesetben of rtkkel vagy kommentezve tallhat, ha traktuk on-ra, akkor a rendszer az indtstl automatikusan fgyelni fogja a lemezeket is.
smartd_opts="--interval=1800"

Megadhatjuk msodpercben az ellenrzs gyakorisgt. Figyeljnk oda, hogy ha a smartd-t engedlyezzk, akkor ltalban nem kell, st ellenjavallt felsorolni a fgyelend lemezeket, ugyanis a
smartd alapbelltssal automatikusan megkeresi.
Az alapbelltsok megadsa utn a service smartd restart kiadsval tudjuk root-knt (vagy sudoval) rvnyesteni mdostsainkat. A /var/log/syslog alat pedig mr lthat is lesz, hogy a
smartd fgyeli a lemezeinket. Az alapbelltsok mellet a root fog levelet kapni, ha vrhat vagy
bekvetkezet egy lemezmeghibsods. Az alapbelltsokat a /etc/smartd.conf llomnyban tudjuk fnomtani, pl. ha msnak szeretnnk a fgyelmeztetseket kldetni, vagy ha egy komplet tmogatot hardver RAID-et akarunk fgyelni.
Hardveres RAID fgyelse: szmos hardveres RAID megolds ltezik a piacon. Szerencsre a gyrtk is felismertk azon ignyeket, hogy az eszkzeiket nem csak hasznlni szeretnnk, hanem
megfgyelni is. gy szmos gyrti szofvermegolds szletet, amely nem felttlen szabad szofver
(l. a Debian Wiki ltal karbantartot listt). rdemes egyedileg megnzni ezeket a segdprogramokat, mert felhasznlsukat tekintve ingyenesek, de a licenck alapjn nem mindig szabad szofverek.
Jellemzen mindegyik program ignyel valamilyen minimlis szkriptelst, amely segtsgvel automatizlni tudjuk pl. az rnknti llapotlekrdezst, illetve csak a hibk vagy hiba-elrejelzsek
megfgyelst, de ezek jellemzen 2-3 parancs 1 shell szkriptbe gyjtse, illetve esetenknt egy dif
vagy egyb alap parancs kombincijt jelentik. A szkript eredmnyt pedig e-mailben elkldve
s/vagy naplszerverben feldolgozva kaphatunk rtestseket a RAID aktulis llapotrl.

42

Egy szerver alapvet belltsai

Az id krdse
Fontos, hogy a szervernknek be legyen lltva az idzna paramtere, amit a tzconfi parancs
segtsgvel tehetnk meg. A Magyarorszgon zemeltetet s hasznlt rendszereknl praktikus
Budapest belltst alkalmazni. A szerveren kliensknt teht a kt leginkbb elterjedt lehetsg
kzl vlaszthatunk az id szinkronizlshoz: a napi rendszeressggel ki- s bekapcsolt gpek
esetn, kzeltleg megfelel eredmnyt rhetnk el egy a gp bekapcsolsakor automatikusan
lefut, a gp rjt a kzponti rhoz igazt parancs segtsgvel. Ez az ntpdate parancs, hasznlata:
ntpdate -b time.kfki.hu

Mg a -b opci hasznlata javasolt, addig a time.kfi.hu helyet inkbb vlasszunk valami neknk megfelelt, ilyen lehet pldul a hu.pool.ntp.org (Magyarorszgrl ms orszg esetn javasolt azon orszg orszgkdjt hasznlni a hu helyet). Amennyiben a gp folyamatos zemben
mkdik (a szerverek tipikusan ilyenek, de knyelmi okokbl sokan a munkallomsokat se
kapcsolgatjk), a bekapcsolskor trtn rabellts kevs lehet. Jellemzen a gpek rja sietni
vagy ksni fog egy id utn. Ebben az esetben a javasolt hasznlat az, hogy az rt folyamatosan
igaztsuk a kzponti rhoz. Ellenben az, hogy meghatrozot idnknt (pldul rnknt, naponta) tlltjuk a gp rjt, felvet egy nagyon slyos problmt ilyen esetben elvesztjk az
id egy vagy tbb fontos jellemzjt a folytonossgot, illetve a monotonitst. Azaz vagy luk
keletkezik kimarad idpont vagy ugyanaz az idpont tbbszr is bekvetkezik. Ezrt a bevlt
mdszer a rgi vekkerrkban alkalmazot ralassts / ragyorsts. Azaz lekrdezzk a kzponti gp rjt, s ha a mink ksst mutat, akkor felgyorstjuk, ha pedig a mink siet, akkor lelasstjuk azt. Ezt szintn megtehetjk az ntpdate parancs segtsgvel, ekkor ki kell hagyni a fent
emltet -b opcit, helyete a -B hasznland:
ntpdate -B time.kfki.hu

Majd ezt a parancsot kell rnknt / napi rendszeressggel lefutatni (tipikusan cron-bl idztve). Ily mdon futatva az ntpdate-et, a gp szpen lassan hozzksik/hozzsiet a kzponti
idhz. Komplexebb konfgurcit ignyel az ntpd (rgebben xntpd) nev szofver, amely elindtsa utn folyamatosan fut, s rendszeresen (alapesetben 64 msodpercenknt, ez 16 msodperc s
36,4 ra kzt vltoztathat) lekrdezi a pontos idt, majd az elbb trgyalt mdon, a gp bels
rjnak felgyorstsval / lelasstsval hozza sszhangba a gp rjt a klvilgval. Mkdshez viszont szksges ltrehozni egy konfgurcis fjlt (tipikusan /etc/ntp.conf nven ltezik),
amelyben minimlisan a lekrdezend szerver(ek) nevt kell megadni, server time.kfi.hu formban. Nem rt tudni, hogy j pr szofver (pldul a Dovecot IMAP-szerver, vagy ltalban az
adatbzis-kezelk) rendkvl zokon veszi az idugrst ezek miat szintn nem javasolt az a fajta rallts.
Megjegyzend, hogy az ra folyamatos szinkronban tartsnak kt mdja (ntpdate -B illetve ntpd)
biztonsgi szempontbl is klnbzik. Az ntpdate hasznlatakor csak a parancs futatsakor lesz
egy rvid ideig tart hlzati forgalom, mg ntpd hasznlata esetn az ntpd szerverprogram folyamatosan fut, s a 123-as UDP porton keresztl elrhet. Termszetesen ez utbbi hasznlat esetn
van lehetsg az engedlyezet kliensek korltozsra.

43

Egy szerver alapvet belltsai

Tudjunk a hibkrl, avagy legalbb minimlis


levelezs legyen
Ahhoz, hogy pl. a lemezrtestket megkapjuk, mindenkppen rdemes egy minimlis levelezszolgltatst telepteni a gpre. Ha egy szervert zemeltetnk, akkor a legegyszerbb a Postfx-et
telepteni a gpre, s minimlis konfgurcival (esetlegesen csak localhoston elrheten) futatni.
Ha belltotuk, hogy a root, postmaster, hostmaster stb. aliasok a vals e-mail cmeinkre mutassanak, akkor a le nem futot, vagy hibsan lefutot cron rendszerhibktl kezdve minden olyan
zenetet megkapunk majd, amelyeket a rendszer a root felhasznlnak sznt. Ebben az esetben lapozzunk a Levelezs fejezethez, ahol egy komplex lerst kapunk A-tl Z-ig a levelezszerver zemeltetsvel kapcsolatban. Ha viszont nem akarunk egy komplex SMTPD-t feltenni a gpnkre,
mivel az pl. egy begyazot rendszer, esetleg tzfal s elegend szmunkra, ha egy jl behatrolt
alkalmazsi kr tud kldeni, akkor kereshetnk egy egyszerbb, kliensszer SMTPD-t, mint pl. az
Msmtpd21, amely a leginkbb elterjedt azonostsokat s kldsi mdokat is tmogatja. Ilyen cl
feladat lehet, amikor pl. egy mikroszervert ptnk RAID-be ktt lemezekkel fjlmegosztsi clokra, s ppen csak azt akarjuk tudni, hogy a RAID llapota rendben van-e. Az Msmtpd kpes levelet kldeni akr egy GMail fk22 segtsgvel is, gy nem kell relay szerverekre hagyatkoznunk,
hanem ha kiltunk a 465/587-es portokon, akkor kzvetlen a sajt fkunk segtsgvel is tudunk
levelet kldeni.

temezs, Cron
Mg egy alap rendszerben is vannak olyan feladatok, amelyeket temezeten kell vgrehajtani.
Tipikusan ilyen a ment szkript futatsa, a kliens alap raszinkron, vagy egyszer szkriptek
futatsa meghatrozot idben. Nzznk egy gyakorlati pldt. Kpzeljnk el egy olyan, nem magra hagyot rendszert, amely alapbelltsban felrakja magra a szksges frisstseket s az adminisztrtor csak akkor nz r, amikor jelentik neki a felhasznlk, hogy egy rg elfeledet
rendszer nem mkdik. Ez persze csak akkor fordulhat el, ha nem fztk fel ezt a gpet pl. a Nagios fejezet segtsgvel a monitoring rendszernk rszv (lsd A naplz alrendszer, naplk
elemzse fejezetet). Ebben az esetben jl jhet, ha mr a teljes lemezteltetsg bekvetkezse
elt tudomst szerznk errl a veszlyrl. Szegny ember ha nem akar valamilyen egyb loklis
eszkzt erre hasznlni (Munin vagy Nagios), akkor r r egy shell szkriptet, mint pl. ez:
/usr/local/bin/df.sh23
#!/bin/bash
FS="/"
THRESHOLD=90
OUTPUT=($(LC_ALL=C df -P ${FS}))
CURRENT=$(echo ${OUTPUT[11]} | sed 's/%//')
[ $CURRENT -gt $THRESHOLD ] && echo "$FS file system usage $CURRENT" | mail
-s "$FS file system" sajat@e-mailcimunk.hu

1 21. http://msmtp.sourceforge.net/
1 22. https://wiki.archlinux.org/index.php/msmtp
1 23. http://www.cyberciti.biz/faq/mac-osx-unix-get-an-alert-when-my-disk-is-full/

44

Egy szerver alapvet belltsai


Ezt persze futatni kell idrl idre, amire leginkbb a cron24 alkalmas. A cron egy dmon, amely
ltalunk elre meghatrozot idkzkben kpes az elre belltot szkriptek vagy esemnyek
futatsra. A cron alapesetben teleptsre kerl az Ubuntu LTS esetben, hiszen ez fogja pl. a telepts sorn belltot biztonsgi frisstsek automatikus teleptst vgezni. A f konfgurcis llomnya a /etc/crontab, amely valahogy gy nz ki:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 *
* * *
root
cd / &&
25 6
* * *
root
test -x
--report /etc/cron.daily )
47 6
* * 7
root
test -x
--report /etc/cron.weekly )
52 6
1 * *
root
test -x
--report /etc/cron.monthly )

run-parts --report /etc/cron.hourly


/usr/sbin/anacron || ( cd / && run-parts
/usr/sbin/anacron || ( cd / && run-parts
/usr/sbin/anacron || ( cd / && run-parts

A leginkbb javasolt, hogy ezt az llomnyt mi ne szerkesszk, hanem hasznljuk a felhasznlknak sznt crontab parancsot, ahogyan a kikommentezet szveg ajnlja is szmunkra. Atl
fggen, hogy milyen felhasznl nevben szeretnnk idztet parancsot futatni, vagy annak a
felhasznlnak a nevben adjuk ki a crontab -e parancsot, vagy rendszergazdai jogosultsggal a
crontab -u felhasznalo -e paranccsal is lhetnk. Ezek utn ha mg nem vlasztotunk alaprtelmezet szvegszerkesztt, akkor most erre lehetsgnk nylik majd. Mindenkinek javasolt a sajt
megszokot szvegszerkesztjt hasznlnia, azzal a megktssel, hogy it egy elrt karakter, vagy
egy vletlen rossz helyre tet szkz is komoly bajt okozhat, gy rdemes olyan komplet megoldst vlasztani, mint a vi szvegszerkeszt. A crontab-ban teht a kvetkezkppen helyezhetnk
el szkripteket. A plda legyen a fenti lemezteltetsg-monitoroz szkript:
#perc
ra
nap
hnap htnapja
program
#(0-59) (0-23) (1-30/31) (1-12)
(0-6)
12 * * * *
root
/usr/local/bin/df.sh

felhasznl

Azaz minden ra 12. percben meg fogja hvni a df.sh szkriptnket, amely pedig ha 90%-ban teltet a / fjlrendszer, akkor a belltot cmre levelet fog kldeni.

1 24. http://hu.wikipedia.org/wiki/Cron

45

Tvoli elrs: ssh

Tvoli elrs: ssh


Trtneti ttekints
A nagygpes UNIX idk kezdetbl (kb. 70-es vek eleje) szrmazik az els olyan tvoli karbantartsra sznt eszkz, amely segtsgvel a rendszergazda gy volt kpes dolgozni helyszntl
fggetlenl, mint ha ot a gp elt tevkenykedet volna. Ennek a protokollnak a neve Telnet 25,
amely az RFC 854-es szabvny lersban van pontosan rszletezve. A kornak megfelel szemlletmd alapjn let kialaktva. Nevezetesen abbl indultak ki, hogy aki kpes kezelni egy ilyen eszkzt s rendelkezik a megfelel azonostval, az a tudst pozitv irnyban fogja kifejteni. Taln
ezrt (vagy mivel akkoriban nem volt tmeges igny a biztonsgos hlzati kommunikcira, hiszen akik nagygpes rendszereken dolgoztak, azok jformn ismertk egymst szemlyesen), nem
ptetek titkostsi rteget a telnet protokollba. Igaz, abban az idben elterjedt titkostsi rteg
nem is igazn volt. sszefoglalva, a telnet egy fexibilis eszkz, amely a terminltpusoktl fggetlen mdon TCP-n keresztl kommuniklva ktte ssze ktirny kommunikcival a gpeket.
A mai napig majd minden Linux terjeszts alap rszt kpezi, mivel pldul hlzati protokoll
tesztelsre (htp, pop3 s sok ms) kivlan alkalmas. Ma azonban mr egy magra valamit ad
zemeltet tiltja a gpei telnetel val tvoli elrst, azaz nem futat telnet-kiszolglt (telnetd,
azaz telnet dmon).
Manapsg inkbb olyan kontextusban kerl a szerver oldali telnet szba, hogy pldul Nmap 26
segtsgvel megvizsgljuk, nem maradt-e az alap telepts rsze a telnetd. Br igaz, hogy gyakorlatilag nincs olyan Linux-terjeszts27, amely a szerver rszt alapbl teleptet llapotban tartalmazn.
A telnet mltjbl s jelenbl jl lthat, hogy ma mr tvoli hozzfrsnl alapkvetelmny a
titkostot kzegben val kommunikci s a jogosultsgkezels, hiszen gyakorlatilag akinek tvolrl helyi zemelteti (root) joga van a gpre, az majdnem olyan jogosultsgokkal rendelkezik,
mintha a gp elt lne kzvetlenl (eltrs pldul, hogy egyb eszkz hjn, a rendszerindtsi
folyamatba nem tudunk beavatkozni, illetve bizonyos hardverhez kapcsold mveleteket nem
hajthatunk vgre CD/DVD-csere pldul).

SSH
A megolds egszen 1995-ig vratot magra, amikor is az SSH Communications Security-t a
fnn Tatu Ylnen megalaptota, s ltrehozta az els SSH (secure shell) szerver-kliens prost. Leraktk az alapjait az SSH szabvnynak. Termszetesen ahogy lenni szokot, a piac gyorsan reaglt
az SSH megjelensre, s hamarosan szmtalan fejlesztcg alkota meg a maga verzijt. Ma mr
1 25. http://simple.wikipedia.org/wiki/Telnet
1 26. http://nmap.org/
1 27. A BSD-ken alapbl teleptve van, persze nincs engedlyezve a futsa.

46

Tvoli elrs: ssh


teljesen ltalnos, hogy az OpenSSH28 implementcijt hasznlja minden disztribci, mivel tudsban kiemelked. Az OpenSSH projectet Teo de Raadt29 vezeti s alaptota, aki szmos ms,
fleg BSD opercis rendszerrel kapcsolatos fejlesztsben is vezet.
Az SSH alap eszkzv vlt az zemeltetssel foglalkoz emberek szmra, ugyanis rengeteg adminisztrcis feladat vagy eleve csak karakteresen vgezhet el, vagy pedig sokkal gyorsabban
megoldhat szinte brhonnan ezen a mdon. Ksznheten a tmeges felhasznlsnak, a legtbb
forgalomban lv okostelefon, vagy egyb olyan eszkz, amely alkalmas lehet admin funkcik
vgrehajtsra, rendelkezik futathat SSH kliens programmal. Azaz pldul Android, iOS vagy
akr Windows Mobile opercis rendszert futat telefonokrl is belphetnk vele tvolrl gpnkre (ugyangy rgebben a Symbian opercis rendszerekre is szmos kliens ltezet s mg ltezik is.). Az egyik legnpszerbb windowsos SSH kliens a Puty-csomag 30, amely MIT licenc alat
kerl kiadsra (gyakorlatilag a BSD licenccel egyez felttelek mellet). Ez lthat a letltsi oldalon is a szmtalan platformra fordtot binris letlthetsgbl 31. Tudsa olyan komplex, hogy
egy tlagos kpessg rendszergazda is csak 5-10%-nyi funkcijt hasznlja ki. Legtbb esetben a
rendszergazda nyit egy titkostot shellt vagy az SSH csomag rszt kpez SCP kliens segtsgvel titkostot fjltvitelt valst meg. Az OpenSSH weboldaln 32 szerepl elnyk kzl kiemelhet, hogy nem csak ers titkosts valsthat meg pldul RSA vagy DSA kulcsprok
ltrehozsval, hanem OTP azonosts 33, port tovbbtsa titkostot alagtban, adatmrts az
tvit adatok esetben automatikusan (egy mobil telefonos kapcsolat esetben pldul GPRS
kapcsolat nem mindegy, hogy egy egsz kperny kpt kell llandan le-fel tltgetnnk, vagy
csak egy tmrtet pr soros szveget visznk-e t) s mg szmtalan olyan elny sorolhat fel
mellete, amely alapeszkzz teszi a rendszer-zemeltetsben.

Fontosabb ajnlhat hasznlati mdozatok


Alaprtelmezs szerint az SSH-szerver konfgurcijt az /etc/ssh/sshd_confg alat talljuk a
legtbb disztribciban. Ha forrsbl teleptetk, akkor pedig ahova belltotuk (az ssh teleptse
forrsbl ltalnossgban nem javasolhat, tmaszkodjunk a csomag kezelre). Az alapkonfgurci a PAM-alap azonostst s a legtbb esetben a root alap ssh bejelentkezs lehetsgt is
meghagyja neknk. Mint jellemzen minden szerver konfg alap kiindulsi konfgurcija, ez is a
mkdsre van specifklva, nem pedig a teljes biztonsgra. rdemes ezrt alaposan tnzni a lehetsgeket, s a szmunkra elfogadhat maximlis szintre nveli a biztonsgot. Pr plda a szerver belltsi lehetsgeire:
AllowUsers, AllowGroups, DenyUsers direktva: mivel az sshd a PAM-modullal kommuniklva fogja eldnteni, hogy ki az aki belphet s ki az aki nem, els kzeltsben it felsorolhatjuk
explicit mdon, hogy mi kit engednk. Ez fell fogja brlni az egyb felhasznlk prblkozsait.
Pldul megadhatjuk gy is
AllowUsers felhasznalo1 felhasznalo2 felhasznalo3

PasswordAuthentication, RSAAuthentication, PubkeyAuthentication: sszetartoz direktvk, amelyek segtsgvel letilthatjuk, hogy sima jelsz megadsval belphessen valaki az
1 28. http://en.wikipedia.org/wiki/OpenSSH
1 29. http://en.wikipedia.org/wiki/Theo_de_Raadt
1 30. http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
1 31. Kevss ismert, hogy UNIX, Linux al is lefordthat; sok Linux disztribci (pldul Ubuntu), s a klnbz
BSD-rendszerek al is elrhet binris csomagknt
1 32. http://www.openssh.com/features.html
1 33. http://en.wikipedia.org/wiki/One-time_password

47

Tvoli elrs: ssh


SSH alrendszer segtsgvel. A kulcs alap azonosts lnyege, hogy az ssh-keygen34 program segtsgvel ltrehozunk egy publikus s egy titkos kulcsbl ll kulcsprt. A publikus rszt feljuttatjuk a szervernk meghatrozot knyvtrba, majd a megfelel opcik kivlasztsval mr csak
a titkos kulcs birtokosa fog tudni belpni a rendszerbe, a sima /etc/shadow-ban trolt jelszval
mr nem. A privt kulcsot jelszval vdet formban pedig praktikusan egy erre elklntet
knyvtrban az identity- eltag hasznlatval felcmkzve troljuk, lsd a pldt ksbb. A publikus kulcs azonosts nagyban nveli a vals biztonsgot s segtsgvel megnehezthet pldul
egy htunk mgl megleset jelsz, vagy egy keylogger program segtsgvel rgztet jelszval
val illetktelen behatols. A konfg llomnyba teht helyezzk el a
PasswordAuthentication NO
RSAAuthentication yes
PubkeyAuthentication yes

sorokat.
PermitRootLogin: meghatrozza, hogy a root felhasznl tvoli elrs segtsgvel belphet-e
a rendszerbe. rdemes tiltani, s a root felhasznlt semmilyen Linux/Unix rendszeren nem hasznlni. Helyete a sudo35 (vagy su) megoldsait preferlni. Hasznlata:
PermitRootLogin NO

Port: it adhatjuk meg, hogy melyik TCP-porton hallgasson az SSH, ide fogunk tudni csatlakozni. Az alap bellts szerint ez a 22-es lesz. Kls (internet) irnybl publikusan elrhet szervereknl ezt rdemes tzfallal vdeni, esetleg port kopogtatsos 36 technolgival ezt nem
nyilvnoss tenni mindenki szmra. Az alaprtelmezetl eltr port hasznlata nha magnak a
rendszergazdnak nehezti meg az lett (sok hlzaton bellrl a 22-s portra szabad csatlakozni,
ellenben mshova nem.)
Pldul:
Port 2022

ListenAddress: Tbb hlzati csatlakozs esetn, megadhatjuk az SSH-nak, hogy melyik lbon fogadjon el (tipikusan a menedzsment hlbl, illetve azon a lbon) kapcsolatot.
Pr plda a kliens konfgban javasolhat belltsokra:
~ssh/.confg: az ssh kliens esetben szmtalan olyan megoldst alkalmazhatunk amely egyszersti az letnket, s j nhny olyat, amelyet ms szofver esetben csak plusz szolgltatsok bezemelsvel rhetnnk el. A leggyakoribb kliens oldali bellts, amikor az ltalunk adminisztrlt
hostokat felvesszk a .config fjlba, s utna alias formjban hivatkozunk r, ez nem csak azrt
praktikus, mivel a kulcsot s port szmot is meg tudjuk adni, hanem tbbek kzt a felhasznlt
is bellthatjuk: pldul:
Host szerverem1
IdentityFile /home/user/kulcsok/identity-szerverem1
Port 2222
Protocol 2
User felhasznalo1
HostName 192.168.1.1
PasswordAuthentication no
1 34. http://en.wikipedia.org/wiki/Ssh-keygen
1 35. http://hu.wikipedia.org/wiki/Sudo
1 36. http://en.wikipedia.org/wiki/Port_knocking

48

Tvoli elrs: ssh


Hasonlan hasznos paramter, ha tzfalon kell keresztl SSH-zni, ahol a kapcsolat ttlensgi
idkorltja limitlva van, azaz pldul 5 perc inaktivits elteltvel bontja a kapcsolatot, akkor rdemes ezt a 3 kapcsolt is hasznlni :
ServerAliveInterval 60
ServerAliveCountMax 10
ForwardAgent yes (ez az agentet lltja be, amelyrl mg lesz sz bvebben)

Transzparens multi-hop: Ha rendelkezem egy SSHGW gppel, amire bejutva tovbb tudok
menni a WEB szerver gp fel, s onnan tovbb a kvm1-es host gpre (a kvm1 egy virtulis gp,
amelyre csak a host kzbeiktatsval tudunk jelen esetben belpni), akkor alapesetben a Forward
Agent s ssh-key opcikkal operlva mindenhova be tudok ssh-zni, majd onnan tovbb a kvetkezre. Ha azt szeretnnk elrni, hogy 1 db ssh parancs segtsgvel azonnal a 3. azaz a vgcl
kvm1-es gpre juthassunk el (SSHGW -> WEBSZERVER -> KVM1), akkor a kvetkezt kell kiadni:
ssh -A -t SSHGW ssh -A -t WEBSZERVER ssh -A kvm1

Az -A opci mondja meg az SSH-nak, hogy a ForwardAgent kapcsol mindenhol aktv (ON) legyen, atl fggetlenl, hogy a klienseken engedve van-e vagy sem. A -t opci pedig erlteti a
Pseudo-TTY allokcit (ez az interaktv parancsfutatsokhoz kell). A fenti SSH kpessget a
~ssh/.config fjlban a kvetkezkppen rgzthetjk s hivatkozhatunk r:
Host SSHGW
IdentityFile /home/felhasznalo/kulcsok/identity-MAIN
Port 22
Protocol 2
User update
HostName 192.168.1.1
PasswordAuthentication no
Host WEBSZERVER
IdentityFile /home/felhasznalo/kulcsok/identity-Test
Port 22
Protocol 2
User update
HostName 192.168.1.2
PasswordAuthentication no
Host kvm1
ProxyCommand ssh -q MAIN nc -q0 kvm1 22

Ha ezt gy rgztetk a konfgban, akkor utna egy egyszer ssh kvm1 parancs kiadsa utn (ltvnyosan tovbb tart a bejuts, akr 5-10 msodperccel is) egyenesen a kvm1 gpre jutunk.
Ugyangy akr fjlokat is kldhetnk kzvetlenl a kvm1 gpre/gprl. Ebben a pldban a tvoli
gprl msolunk a sajt gpnkre:
scp kvm1:/tmp/proba.txt /tmp/proba.txt

Vagy szksg esetn indthatunk egy tvoli (szintn begyazot, azaz tzfal s szerver mgti
alhln) desktop gpen egy Nautilus ablakot, s hozzfrhetnk az llomnyokhoz a kvetkezkppen (maradva a felsorolt konfg sorainl kpzeljk azt, hogy a kvm1 gp egy Ubuntu desktop,
teht fut rajta X szerver):
ssh -X kvm1 nautilus

kisvrtatva egy a kvm1 gpen indtot s az otani llomnyokat megjelent fjlkezel felletet
kapunk. A fenti konfgban termszetesen a kulcsokat s a felhasznlkat tetszlegesen varilhat49

Tvoli elrs: ssh


juk. Azaz, ha az els SSHGW gpen admin felhasznl amivel bejutunk, a 2.-on admin2, a kvm1
hoston pedig staf, akkor csak t kell rni a konfgot s persze az scp parancs is mkdni fog utna.
Porttovbbts::: el szokot fordulni, hogy szksg van egy titkostot adatcsatornra kt gp
kzt. Mind az OpenSSH, mint a Puty hromfle portovbbtsi funkcit tmogat. Taln leggyakrabban a -L (ms nven loklis) formjt hasznljuk:
elso.gep.hu> ssh -f -N -L localhost:1111:harmadik.gep.hu:80 masodik.gep.hu

Ezzel a paranccsal a sajt gpnk (elso.gep.hu) 1111-es portjn keresztl elrjk a harmadik.gep.hu 80-as portjt, de a harmadik gp gy rzkeli, hogy a msodikrl jtnk (tipikusan ilyen,
amikor egy olyan eszkz felgyeleti oldalt kell elrni tvolrl, amelyik csak a (neki) loklis hlzatrl fogad el kapcsoldsi krseket. Miutn a fenti parancsot elindtotuk, a bngszt a
http://localhost:1111 cmre irnytva mris a harmadik.gep.hu weboldaln talljuk magunkat.
Ritkbban hasznlt a -D az un. dinamikus applikcis portovbbts, ebben az esetben az ssh SOCKS-proxyknt viselkedik. Hasznlathoz SOCKS-proxy tmogatssal rendelkez alkalmazs,
vagy a ksbbiekben trgyalt tsocks szksges.
elso.gep.hu> ssh -f -N -D localhost:1080 masodik.gep.hu

A bngsznkben belltva a proxy tmogatst, s proxy szerverknt megadva a localhost:1080as adatot, a forgalom az SSH-alagton keresztl, a masodik.gep.hu -n keresztl jut el a cmre.
A harmadik, un. tvoli (remote) portovbbts hasznlata (-R opci) meglehetsen ritkasgszmba megy.
elso.gep.hu> ssh -f -N -R localhost:1111:harmadik.gep.hu:80 masodik.gep.hu

eredmnye: ha valaki a msodik gp 1111-es portjra csatlakozik, az az SSH kapcsolaton keresztl


tkerl a kiindul (els) gpre (ahol az ssh parancsot kiadtk), majd onnan csatlakozik a harmadik
gp 80-as portjra. Ez a plda az els plda (a loklis portovbbts) megfordtsa, azaz amikor mi
szeretnnk elrni azt, hogy valaki kvlrl elrhesse a mi bels hlzatunkrl elrhet eszkzt.
(Mi bellrl megnyithatjuk az ssh-kapcsolatot, de a tvoli ember kvlrl nem.)
Korltozs az SSH-kulcs segtsgvel: ha az a cl, hogy explicit megmondjuk az ssh-kulcs
segtsgvel, hogy az adot felhasznl azonosts utn milyen parancsokat futathat, akkor az ssh
erre is knl egy beptet megoldst (ez azonban nem keverend a chroot direktvval). A kulcs
generlsa utn a publikus oldali kulcsnl a ~/.ssh/authorized_keys fjlban a kvetkez megoldst
kell ebben az esetben alkalmazni:
from="192.168.1.1",command="/home/update/validate-parancs" ssh-dsa
AAANas2s4s5za82C1yc2EAAs97mAIPABIwAABAEA8xRLEVyrscvIoJmcWd9/qH......

Ahogy ltszik, a kulcs mellet egy IP-cmet hatrozunk meg, majd egy parancsot adhatunk meg.
Ez akr egy shell parancsllomny is lehet, amiben aztn az SSH_ORIGINAL_COMMAND nev
krnyezeti vltozt felhasznlva akr tbbfle parancs engedlyezsre is lehetsgnk van. It 37
egy igen szp plda tallhat. Ennek a gyakorlati jelentsge pldul az olyan jelleg mentseknl
van, amikor egy tvoli root hozzfrst kell engedlyezni, amely aztn egy pillanatkpet fog kszteni egy tvoli ment szerverre. Persze clszer ezt a megoldst kerlni, s fordtot logikval
megoldani, azaz a helyi root felhasznl futatja a mentst, s kldi t egy ssh-alagt, vagy VPN
segtsgvel a tvoli szerverre a pillanatkpet, nem pedig fordtva. A pldhoz visszatrve, jelen
esetben az /etc/ssh/sshd_confg fjlz rdemes a
PermitRootLogin=forced-commands-only
1 37. http://troy.jdmz.net/rsync/#validate-rsync

50

Tvoli elrs: ssh


opcival kiegszteni a NO helyet, gy a root kulcsa mellet engedlyezet fenti parancsok futatsra lesz csak lehetsg.
Egy tovbbi lehetsg az azonostsra a google authenticator s az SSH sszeprostsa. Ha
rendelkeznk Androidos vagy IOS-es mobil telefonnal s felteleptjk a google hitelest alkalmazst38, akkor lehetsgnk nylik arra, hogy Ubuntu LTS alat az SSH hoz kapcsoljuk. Fontos
tudni, hogy az publikus kulcs alap azonosts s a ChallengeResponseAuthentication 39 egyszerre
csak a 6.2 es verzij OpenSSH-tl felfele tmogatot. Azonban az Ubuntu LTS nem tartalmaz
ilyen verzi szm OpenSSH-t, gy a ennek a hitelestsnek a hasznlata csak akkor javasolt, ha a
publikus kulcs azonostst kizrtuk, vagy valamilyen okbl kifolylag ideiglenesen szksges,
hogy a kulcs nlkl, de mgis egy sima jelszavas azonostsnl biztonsgosabb mdszerrel frjnk
hozz a gpnkhz. Ilyen indokolt eset lehet, ha pl nyarals kzben egy internet kvzbl Live
Ubuntu lemez segtsgvel, de kulcs nlkl akarunk hozzfrni az SSH hoz s a telefon nlunk
van. A google authenticator teleptsnek egyszer lpsei:
sudo apt-get install libpam-google-authenticator

a trolbl felteleptjk az authenticator alkalmazst, majd annak a felhasznlnak a nevben elindtjuk, amelyiknek a nevben szeretnnk az azonostst vgezni:
$ google-authenticator

A terminlban megjelen QR-kdot a telefonunk google authenticator alkalmazsval felolvastatjuk, majd a terminlban kzben fut shell script nhny egyrtelm konfgurcis krdsre
vlaszolunk. Ezekutn az /etc/pam.d/sshd llomnyhoz hozzadjuk a kvetkez sort:
auth required pam_google_authenticator.so

Majd az /etc/ssh/sshd_confg llomnyba pedig a kvetkezt:


ChallengeResponseAuthentication yes

Figyeljnk arra, hogy a PAM auth be legyen kapcsolva az SSHD belltsokban (alapesetben be
van). Ezek utn a service ssh restart paranccsal jraindtjuk az SSHD-t. Innentl ha mindent jl
csinltunk, akkor a slogin -l user@localhost parancs utn krni fogja a jelszavunkat, majd ha azt jl
adtuk meg, akkor Verifcation code-ot is krni fog, amelyet a telefonunk generl szmunkra. Ha
6.2-es vagy e feleti OpenSSH val rendelkeznk, akkor bekapcsolhatjuk a kulcsos s a google authenticatort egy idben az AuthenticationMethods publickey,keyboard-interactive sshd opci segtsgvel, de vigyzat, ezt csak a 6.2-es verzi feleti SSH fogja rtelmezni!
SFTP alrendszer: az SSH rszt kpezi az FTP levltsra kivlan alkalmas s ersen ajnlot
SFTP alrendszer. Nagyon sok rendszer-adminisztrtor a mai napig knytelen az elavult s ezer
sebbl vrz FTP protokoll fl ltetni egy TLS/SSL rteget s azt hasznlni, mivel sok esetben a
kvetelmnyek kimondjk az FTP protokoll hasznlatt (pl. elavult weblaptervez szofver stb.).
Pedig az SFTP remek megoldst knl az SSH sszes elnyvel egyt. Tmogatja a chroot-olt krnyezet ltrehozst, felhasznlkra s csoportokra is, vagy akr sfp-only felhasznlkat is ltrehozhatunk. Ezeket kell hozz a szerver belltsaiba (/etc/ssh/sshd_confg) rni:
Subsystem sftp internal-sftp
Match Group sftp-only
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
1 38. https://support.google.com/accounts/answer/1066447?hl=hu
1 39. http://en.wikipedia.org/wiki/Challenge%E2%80%93response_authentication

51

Tvoli elrs: ssh


ChrootDirectory %h

Fknt azrt nagyon j vlaszts az FTP-vel szemben, mivel az SSH titkostst s opciit knlja
az FTP-vel szemben, gy akr az AllowUsers, DenyUsers stb direktvkat s termszetesen az RSA
s DSA kulcsokat is hasznlhatjuk. Szerencsre ma mr szinte az sszes elterjedt opercis rendszerre rendelkezsre ll valamilyen grafkus fellet 40, amely segtsgvel a kezdk is tkletesen
elboldogulnak. Tovbb az olyan mentsekhez is fel lehet hasznlni, ahol parancs llomny rsa
egszti a mentst. Tipikusan ilyen terlet, amikor az SQL-szerver tmrtet dump llomnyait
kell idrl idre tvinni valahova (kiegszt heti, havi ments stb.):
sftp -b /root/sftp.sh -i /root/keyfile 192.168.1.1:/backup/

Az SSH szmtalan izgalmas lehetsget tartalmaz mg szmunkra. Jellemzen egy tlag SSH felhasznl legfeljebb az 1-2%-t hasznlja a lehetsgeknek. Sajnlatos mdon azonban ez a fejezet
nem az SSH szinte vgtelen lehetsgeirl szl, csupn a leggyakoribb lehetsgeket taglalja.

zemeltetst segt alkalmazsok


Az SSH kliens-szerver megolds segtsgvel most mr hozzfrhetnk helytl fggetlen mdon
a tvoli szervernkhz. A krds az, mire is lesz ez j neknk? A legtbb disztribcinak alapesetben rsze, vagy csomagkezelvel elrhet szmtalan olyan eszkz, amely az alapvet adminisztrcit kezeli. Olyan sok adminisztrcis eszkz ltezik, hogy azok felsorolsa tlmutat ezen fejezet
cljain. Nhny fontosabb eszkzt azonban rszleteznk:
Nmap41

Ezen eszkz segtsgvel a szervernk hlzati (loklis s tvoli) feldertst tudjuk elvgezni.
Segtsgvel a nyitot/zrt/rejtet portokat tudjuk letapogatni, vagy kzelt informcit kaphatunk az opercis rendszer verzijrl. Szmos egyb funkcija van42.
Sudo43

Unix/Linux krnyezetben lehetv teszi azt, hogy egy msik felhasznl ltalban a root jogosultsgval (nevben) futassunk programokat. Igen rszletesen bellthat, hogy akr csak
egyetlen parancs milyen mdon s paramterekkel engedlyezet. A mai modern szemllet szerint
a root felhasznl csupn technikai jelleggel szerepel a rendszerben, azt lesben (belpni a nevben, vagy su parancson keresztl) hasznlni nem tancsos, ppen ezrt rdemes a sudo hasznlatra trni. A Sudo konfgurcis llomnya az /etc/sudoers fjlban tallhat, jellemzen a mai
disztribcik a visudo parancs segtsgvel knljk szerkesztsre a sudoers llomnyt. Manapsg
mr nem szoks kzvetlenl a felhasznlkat felvenni a sudoers fjlba, hanem a tipikusan sudonak nevezet csoportba rdemes berakni az adot felhasznlt ahhoz, hogy rendelkezzen az ALL
jogosultsgi szintel. A sudo szmtalan lehetsget knl 44, az egyik leggyakrabban hasznlt opci,
amikor egy adot felhasznlnak nem engednk meg mindent, csupn egy adot parancs, vagy parancsfjl futatst engedlyezzk, az albbi mdon:
1 40. Windows krnyezetben javasolhat a WinSCP (http://winscp.net/) nev alkalmazs, de parancssoros SFTP
kliens a Puty-hoz is tartozik.
1 41. http://nmap.org/
1 42. http://en.wikipedia.org/wiki/Nmap
1 43. http://hu.wikipedia.org/wiki/Sudo
1 44. Egy res dlutnon vegyk magunk el a dokumentcit, jl el fogunk csodlkozni a lehetsgein

52

Tvoli elrs: ssh


update ALL=NOPASSWD: /usr/bin/apt-get, /usr/bin/aptitude

A fenti pldban a ksbb trgyaland apt-dater program hasznlathoz ltrehoztunk egy update nev felhasznlt, s ezen felhasznl rszre jelsz nlkl engedlyeztk, hogy az apt-get s
aptitude parancsokat root jogosultsggal futassa. Rgebben, jellemzen a betrcszs korszakban,
a pppd futhatot hasonl jogosultsgokkal, hogy az sszes felhasznl vezrelhesse.
GPG45

Biztonsgi szempontbl az egyik legnagyszerbb szabad szofver, termszetesen GPL licenc alat
elrhet. Legfontosabb funkcija a titkosts. Segtsgvel llomnyokat, leveleket lehet titkostani
oly mdon, hogy az harmadik fl szmra nem fejthet vissza. Nylt kulcsos titkostst hasznl,
amely eljrsnl kt kulcsot hasznlunk. Az egyik egy publikus (nyilvnos) kulcs, amit titkosts
nlkl kell kzztennnk a msik fl szmra ezt brki megszerezheti. A msik kulcs a privt
(titkos) kulcs, amelyet jelszval vdve biztonsgban kell trolnunk. A rendszer alapelve, hogy a
publikus kulcsbl nem hatrozhat meg a privt kulcs (s fordtva sem). A msik nagy elnye ennek a titkostsi mdnak, hogy mr akkor tudok egy ltalam ismeretlen embernek titkostotan levelet kldeni, ha mg nem tallkoztunk s akr nem is ismer. Egyetlen felttele, hogy az
interneten tallhat kulcsszerverek egyikn, vagy a msik ember publikusan elrhet weboldaln
szerepeljen a publikus kulcsa, amelyet felfzve a sajt kulcskarikmra mris tudok neki titkos levelet rni, vagy llomnyt kdolni neki gy, hogy azt csak s kizrlag fogja tudni kibontani/olvasni. Idelis teht rendszergazdk kzti kommunikcira, hiszen sokszor rzkeny informcit
kell utaztatni nylt hlzaton (jelszavak, hozzfrsek stb.). Tovbb idelis loklis jelsztrolsra
is. Alkalmas tovbb bizalmi krk kialaktsra a sajt alrsi rendszervel. Fontos funkcija,
hogy a kulcsaink rendelkeznek gynevezet egyedi ujjlenyomatal (fnierprint). Azaz ha kulcsot
akarok cserlni egy ltalam mg ismeretlen emberrel, akkor els teend a kulcs felfzse a karikra, majd az ujjelenyomat egyeztetse a msik fllel, immr egy azonostsra alkalmas csatornn,
pl. telefon, videobeszlgets, alr parti, stb. A Debian alap rendszerek 46 csomagjai a biztonsgi
csapat GPG-alrsval vannak elltva, gy azok teleptsnl ellenrzsre kerlnek. Akr az MD5
szign helyet is alkalmazhat remek s annl megbzhatbb eszkz. A GPG bvebb ismertetst
s vgfelhasznli konfgurcijt, valamint a hozz kapcsold segdprogramokat a keretrendszer GPG mellklete tartalmazza.
tsocks47

Gyakori problma, hogy olyan nylt hlzaton keresztl kell tvoli adminisztrcit vgezni,
amely nem titkostot (nincs VPN, nincs SSL, stb), mint pldul egy nylt Wi-Fi. Ilyen esetben a
legegyszerbb megolds, ha egy SSH-alagutat 48 hzunk ki egy megbzhat szervernk s a kliens
kzt. Az alagtba aztn beterelhetjk olyan alkalmazsok forgalmt, amelyek ezt tmogatjk.
Pldul a Firefox, a Chrome (s a Chromium), de mg az Opera bngsz is tmogatja a SOCKS5
(hivatalos nevn: socket-proxy version 5) zemmdot, amikor a forgalom ebben az alagtban tud
kzlekedni, gy rejtve el titkostot mdon az amgy titkosts mentesen men pldul web
forgalmat. Sajnos azonban nem minden program tud alagt technolgival dolgozni, ppen ezrt
rdemes a tsocks programot hasznlni, amely a legtbb TCP-alap program kommunikcijt bele
tudja terelni egy elte SSH-val kiptet csatornba. 49 Ha a tsocks csomag mr teleptve van, ak1 45. http://www.gnupg.org/
1 46. a legtbb terjeszts ers ksssel ugyan, de csatlakozot ehhez a hitelestsi megoldshoz
1 47. http://tsocks.sourceforge.net/
1 48. http://www.linuxjournal.com/content/ssh-tunneling-poor-techies-vpn
1 49. A tsocks-hoz hasonl elven mkd alkalmazs nagyon sok ltezik, van aki a dante-client csomagban lev
socksify, msok a proxychains nev eszkzre esksznek, de a sort lehetne mg folytatni

53

Tvoli elrs: ssh


kor hasznlata a kvetkez. Az SSH fejezetben mr trgyalt portovbbts hasznlatval kiptnk egy loklis dinamikus portovbbtst, pldul gy:
ssh -i /home/user/kulcsok/identity-szerver
user@szerveremneve

-p 22 -v -N -D localhost:1080

Fenti50 eredmnyeknt a localhost 1080-as portjn elrhetv vlik egy SOCKS5 proxy, amely a
hozz rkez forgalmat az SSH-alagton keresztl tkldi szerveremneve gpre. Onnan pedig
mr mintha arrl a gprl indult volna, megy az adat a clhoz. Ezt kveti a tsocks. Elszr lltsuk
be a neknk szksges opcikat az /etc/tsocks.conf fjlban. Amelyek az elz ssh-parancshoz igazodva a kvetkezk legyenek:
server = 127.0.0.1
server_port = 1080

Ez a 2 egyszer sor azt mondja meg, hogy a localhost-on a 1080-as porton hallgat a SOCKS5
proxy, amin keresztl kell majd a tsocks-nak a forgalmat tovbbtania. Vigyzat, nincs tbb azonosts ez utn. Azaz aki elrheti a localhost 1080 portjt, az az alagtban fog forgalmazni! Mindezek utn mr csak a tsocks eltaggal kell indtani az alkalmazst ahhoz, hogy az adot alkalmazs
az ssh alagtban forgalmazzon, pldul gy:
tsocks pidgin

Termszetesen bngszt is indthatunk ugyanilyen mdon, br a bngszk mint az fentebb


egyszer mr szerepelt ltalban bellthatak SOCKS5 proxy hasznlatra. A legtbb esetben ez
jl mkdik. Akadnak azonban olyan esetek, pldul pont bngszk esetben, amikor a forgalmazs pldul a bngszbl hvot Java alkalmazs miat csak rszben megy az alagtban. Ilyenkor rdemes magnak a Java alkalmazsnak is a SOCKET-proxy hasznlatt belltani.
sshuttle51

A sshutle is egy remek eszkz VPN ptshez, ha a megvalstand feladat egyezik a tsocks-szal
megoldhat feladatkrkkel. A f klnbsg, hogy amg a tsocks esetben az alkalmazsoknak
vagy tmogatni kell a socket proxy zemmdot, vagy pedig a tsocks parancs segtsgvel a tunnelbe kell terelni a forgalmat, addig az sshutle esetben erre nincs szksg, mivel az IPTABLES-t
lltja be a loklis gpen, a forgalmat a tvoli szerver fele terelve. A tvoli szerveren viszont szksges a Python interpreter s az ssh-n keresztli parancsfutatsi lehetsg meglte (lvn az sshutle szerver komponenst feltlts utn ot futatja az eszkz). UDP s ICMP adatot nem fogunk
tudni kldeni/fogadni, de a legtbb esetben erre nem is felttlen van szksg, legalbbis nem felttlen a tunnelen keresztl. (Kivtelknt a nvfeloldshoz szksges DNS-forgalmat lehetne emlteni, de ehhez van egy --dns opci, ha szksges.) Teleptse s hasznlata is egyszer:
apt-get install sshuttle

A telepts utn nincs szksg konfgurcik lltsra, egsz egyszeren egy ltez tvoli SSH
hozzfrsre van csak szksgnk:
sshuttle -r felhasznalonev@tavoli.szerver.kft 0/0

Ebben az esetben az sszes TCP forgalmat a tvoli szerver fel tereltk, de megadhatunk neki
klnbz alhlzatokat is. Termszetesen a korbban mr lert transzparens MultiHop konfgurcik is hasznlhatak, illetve az ssh .config llomnyba rgzthetjk a neveket, portokat, fel1 50. Ha a fenti parancsban a -v opci helyet a -f -et hasznljuk, akkor az ssh ugyan jval kevesebb inft kld, cserbe
htrbe megy, gy nem szksges a terminlt nyitvatartani a kapcsolat letbentartshoz a tesztek utni les
hasznlathoz taln alkalmasabb gy.
1 51. https://github.com/apenwarr/sshuttle

54

Tvoli elrs: ssh


hasznlkat elre. A csatlakozs utn az sszes forgalom a megadot SSH szerver fel fog menni,
gy pldul a bngszk (Firefox, Opera, Chrome), csevegprogramok (Pidgin, Xchat, Skype), levelez programok (Tunderbird) automatikusan az SSH tunnelben fognak vgzdni. Lehetsg van a
-D opci segtsgvel arra, hogy dmon zemmdban a htrben fusson, gy nem kell azt a konzolt/terminlt nyitva tartani, amelyben a parancsot kiadtuk (br ez utbbi funkcionalits akr a
screen, akr az fg parancs segtsgvel is kivlthat).
Hlzati monitoroz szoftverek

Iptraf52, arpwatch53, wireshark54, tcpdump 55, lsof56 s mg szmtalan hasonl program ltezik loklis s tvoli hlzatok forgalmnak felgyeletre, hiba keressre.
Jelszkezels57

Minden rendszer hasznlatnak igen sarkalatos pontja a megfelel jelsz megvlasztsa. A j


jelsz szmok, betk, rsjelek megfelel kombincijbl ll, legalbb 8-12 karakter hosszsgban. Jelszavak tmeges ltrehozsa esetn fontos, hogy ne a fantzinkra bzzuk a j jelsz kitallst, hanem egy programra, mint amilyen pldul a pwgen58.
Editor

Egy igen sarkalatos s megoszt pontja ez a Unix/Linux kzssgeknek. A karakteres felleten


vgzet munka egyik sajtossga, hogy a konfgurcis llomnyokat tudni kell szerkeszteni, terminl- s billentyzetkioszts-fggetlen mdon. A disztribcik ltalban alap teleptsben tartalmazzk a kvetkezk valamelyikt: vi59, vim60, joe61, nano62, pico63, emacs64
Shell program

Amint az SSH program segtsgvel azonostotuk magunkat, a bejelentkezs kvetkez lpse,


hogy a /etc/passwd llomnyban meghatrozot programot indtja a rendszer szmunkra.
Ugyangy, mint az editor kivlasztsban it is az szmt, hogy a sajt komfort znnkat megtalljuk s gy vlasszuk ki a szmtalan lehetsg kzl a megfelelt. A legnpszerbb lehetsgek 65: :
bash, tcsh, zsh, ksh, jsh stb.

1 52. http://iptraf.seul.org/
1 53. http://en.wikipedia.org/wiki/Arpwatch
1 54. http://www.wireshark.org/about.html
1 55. http://www.tcpdump.org/
1 56. http://hu.wikipedia.org/wiki/Lsof
1 57. Rszletesebb trgyalsa a Kzponti autentikcirl szl fejezetben
1 58. http://pwgen-win.sourceforge.net/
1 59. http://hu.wikipedia.org/wiki/Vi
1 60. http://www.vim.org/
1 61. http://joe-editor.sourceforge.net/
1 62. http://www.nano-editor.org/
1 63. http://en.wikipedia.org/wiki/Pico_(text_editor)
1 64. http://www.gnu.org/software/emacs/
1 65. http://penguin.dcs.bbk.ac.uk/academic/unix/linux/shells/index.php

55

Tvoli elrs: ssh


Apt-Dater66

Egy terminl alap, szervereken csomagok karbantartsra s frisstsre hasznlhat eszkz.


Egy igazi hinyptl alkalmazs, amely alapjait a nagyvllalati krnyezetbl mertetk. Az tlet
lnyege, hogy nagyvllalati krnyezetben tbb tz vagy szz (vagy akr ezer) ugyanolyan szervert
kell karbantartani. Azaz ha rkezik egy javts, amelyet azonnal telepteni kell, akkor az adminnak
ne tbb szz gpre kelljen ssh-val bemennie s ot kzzel frisstenie, vagy a cron temezbl megoldani a dolgot (hiszen sokszor ezek a javtsok interaktv mdon beavatkozst is ignyelnek), hanem egy zemelteti shellbl biztonsgos mdon tudja fgyelemmel ksrni s termszetesen be is
tudjon avatkozni. Az apt-dater erre kivlan alkalmas, kezeli a kulcsos ssh azonostst, hasznlja a
screen-t, s ha szksges az ssh-agent-et. Ha tbb mint 2-3 Debian vagy Ubuntu alap szervert
kell zemeltetni, akkor gyakorlatilag nlklzhetetlen alkalmazs. Igazi elnye, hogy a belltsa
szerverenknt csak pr percet vesz ignybe. Az apt-dater szhasznlata szerint kliens az a gp,
ahonnan a tbbit menedzselem, s host-nak hvja a menedzselt szervereket. A belltshoz elszr fel kell teleptennk arra a kliens gpre az apt-dater-t amelyikrl az sszes szervert elrjk.
Ez lehet a sajt PC/notebook gpnk, vagy akr egy erre fenntartot, biztonsgosan elszeparlt
(pldul: csak VPN-nel elrhet, titkostot merevlemez VM) virtulis gp is:
apt-get install apt-dater

Az apt-dater telepteni fogja a fggsgeit is, ezek utn ksztsnk egy megfelelen nagy ssh
kulcsot a kln felhasznlhoz, amely futatni fogja a dater-host scripteket. A -C opci egy megjegyzst fz a kulcshoz, a -f segtsgvel pedig megadhatjuk, hogy az alaprtelmezet id_rsa (s
id_rsa.pub) helyet hol trolja a kulcsokat
ssh-keygen -t rsa -b 8192 -C apt-dater-kulcs -f ~/kulcsok/identity-updateserver67

Az elmentet titkos kulcsot troljuk biztos helyen, a publikus prjt pedig jutassuk fel a karbantartani kvnt szerverekre az ssh-copy-id parancs segtsgvel, miutn a felhasznlt mr ltrehoztuk. A host gpeken ltrehozunk teht egy update felhasznlt, amelynek belltunk egy kellen
vletlen (pwgen -s 16) jelszt (ez a tovbbiakban nem fog kelleni).
adduser update

Az ~/update/.ssh/authorized_keys llomnyba msoljuk a ksztet publikus kulcsot. Ha ezzel


megvagyunk, akkor az /etc/ssh/sshd_confg-ban engedlyezzk az update felhasznl belpst az
AllowUsers sor bvtsvel:
AllowUsers admin update

Majd leteszteljk, hogy tvolrl az update felhasznl bejelentkezse mkdik-e a kulcs segtsgvel:
ssh-add ~/kulcsok/identity-update-server
titkos kulcsot)
ssh update@szerverunk.cime

#(ez az llomny tartalmazza a

Ha minden rendben volt akkor a host gpre felrakjuk az apt-date host script gyjtemnyt:
apt-get install apt-dater-host
1 66. http://www.ibh.de/apt-dater/
1 67. A pldban RSA kulcsot generlunk. A RSA mellet szl a szinte tetszleges kulcshosszsg megadsi lehetsge,
ezrt is szerepel a pldban 8K. A DSA elnye hogy vletlenl sem tudnnk SSH protokol v1-et hasznlni vele
(viszont sajnos nem llthat a kulcshossz.)

56

Tvoli elrs: ssh


Majd belltjuk a hoston szintn a sudo paramtereit, hogy az update felhasznlnak legyen joga
frissteni:
visudo
update ALL=NOPASSWD: /usr/bin/apt-get, /usr/bin/aptitude

Ezzel lnyegben a host gpeken vgeztnk a belltsokkal. A tovbbiakban a sajt gpnkn,


vagyis azon a gpen fogunk dolgozni, ahonnan a frisstseket vezrelni akarjuk. Az els lpsben
mr felraktuk az apt-dater-t, amely gy alap belltsokkal kerlt teleptsre. A konfg llomnyok
a ~/.config/apt-dater/ knyvtrban tallhatak. Amivel els krben rdemes dolgozni, az a hosts.conf llomny. Szintaxisa viszonylag egyszer s rdemes az ssh .config llomnyval varilni:
[Main]
Hosts=update@192.168.1.1:22
[Test]
Hosts=update@192.168.1.2:22
[sql]
Hosts=update@sql
[apache]
Hosts=update@apache

az els kt gp, Main s Test egyszerbb, kzvetlenl ssh-val elrhet gpek. A msik ket (sql,
apache) pedig a Main vagy test gpeken keresztl, mivel azok az iteni pldkban virtulis gpei
azoknak. Jelen konfghoz az SSH Transzparens Multihop kpessgt fogjuk hasznlni, amelyet az
ssh fejezetben rszletesen ismertetnk:
Host SSHGW
IdentityFile /home/user/kulcsok/identity-MAIN
Port 22
Protocol 2
User update
HostName 192.168.1.1
PasswordAuthentication no
Host WEBSZERVER
IdentityFile /home/user/kulcsok/identity-Test
Port 22
Protocol 2
User update
HostName 192.168.1.2
PasswordAuthentication no
Host apache
ProxyCommand ssh -q MAIN nc -q0 apache 22
Host sql
ProxyCommand ssh -q MAIN nc -q0 sql 22

Az Apt-dater s az ~/.ssh/config paramterei sszhangban kell hogy legyenek a fenti lers szerint. Jelen esetben, ha a kliensrl akarunk a 2. szint apache virtulis gphez eljutni, akkor az sshagent indtsa utn (amelyet a standard Ubuntu desktop alapesetben elindt) az ssh-add
/home/user/kulcsok/identity-MAIN paranccsal a kulcsot hozzadjuk az ssh-agent troljhoz, s ezek
utn mr csak az ssh apache parancsot kell majd kiadni, s azonnal a 2. szint gpre lpnk be.

57

Tvoli elrs: ssh


Mindezek utn az apt-dater parancs kiadsa utn mr ez ltszik eltnk:

Az apt-dater teljesen alapszint hasznlata viszonylag egyszer, a sgt a ? lenyomsval tudjuk


aktivlni.
Screen68

Szintn igen hasznos program, amely segtsgvel egy belpet shell ablakot sokszorozhatunk
meg. Gyakorlatilag egy karakteres ablakkezel, amelynek segtsgvel akkor is folytathatjuk a
program futst, ha a terminl kapcsolat megszakadt (azaz kilptnk az ablakbl). Idelis tbb gpen val munka koordinlsra, akkor ha pldul egy ablakban akarunk mindent csinlni. Valamint idelis batch alap program futatsra, megfgyelsre, adatgyjtsre. Tipikus felhasznlsi
terlet, amikor egy nagy mret adatbzist lltunk helyre (dump) tvolrl. Ha ilyenkor megszakad az internet-kapcsolat akr csak 1-2 msodpercre is, az SSH nem biztos, hogy megtartja neknk a kapcsolatot. gy az adatbzis dump is megszakadhat, ha azt kzzel vgeztk. Ha ugyanezt a
folyamatot screen alat futatva hajtjuk vgre, akkor jra belpve a screen -x parancs kiadsval
visszakapjuk az ppen aktulis llapotot. Segtsgvel akr lben is megfgyelhetnk egy kezd
rendszergazdt (a betants sorn), gy elkerlhet, hogy egy esetleges hinyossg nagyobb problmt okozzon.69

Tvoli asztal alkalmazsok


Mg e dokumentum els (nagyobbik) rszben a tvoli rendszerek elrsnek elssorban karakteres fellet rszvel foglalkoztunk, ez az utols rsz a grafkus fellet elrsek klnbz meg1 68. http://www.gnu.org/software/screen/
1 69. A screen mellet rdemes megemlteni, hogy tbb hasonl funkcikra alkalmas msik program ltezik, pldul
tmux (elrhet a http://tmux.sourceforge.net/ oldalrl) vagy byobu (http://byobu.co)

58

Tvoli elrs: ssh


valstsairl szl. A klasszikus unixos rendszergazda szemlletbe ez nem fr bele: az alap hozzlls az, hogy a rendszer adminisztrcijhoz csak a kvetkez dolgokat kell tudni: hogy hvjk a
menedzselend szofver konfgurcis llomnyt/llomnyait, hol van(nak) ez(ek) a fjl(ok) s mi
a szintaxisuk. Ezen kvl mr csak egy egyszer szvegszerkesztre van szksg, s minden megoldhat.
Sajnos(?) nem lehet megkerlni a tnyt: a Linux disztribcikban egyre tbb knyelmi funkci
jelenik meg, egyre tbb szolgltatshoz kszlnek grafkus adminisztrcis eszkzk, amelyek nha meglehetsen komplex szofverrendszerek viszonylag egyszer kezelst oldjk meg. Radsul
egyre kevesebb rendszergazda kell felgyeljen egyre tbb (s tbbfle) rendszert. Ezrt aztn ennek a rsznek a vgre egy rvid tekints keretben megemltjk azokat a lehetsgeket is, amelyek arra szolglnak, hogy egy tvoli gp grafkus fellett elrjk.
Elsknt egy kakukktojs. A Unix/Linux-vilg hagyomnyos grafkus fellete az X Window System nvre hallgat, kliens-szerver alapon mkd fellet. Az X-szerver egy specilis program,
amely a felhasznlval kommunikl, kezeli a beviteli (billentyzet, egr) s megjelent (monitor)
eszkzket. Tipikusan azon a gpen fut, amelyik el a felhasznl lel dolgozni. Az X-kliens pedig
az a program, amelyik (esetleg egy msik gpen futva) csinl valamit, aminek az eredmnyt egy
ablakban meg lehet nzni, aminek a futst befolysolhatjuk a billentyzetrl vagy az egrrel bevit adatok segtsgvel. Mivel az X mr eredetileg is kliens-szerver felpts, termszetesen rsze, hogy a kt f komponens (az X-szerver s az X-kliens) nem ugyanot fut. Azaz a legels
megolds, hogy ha a sajt gpemen fut mr az X-szerver, akkor egy tvoli gpen futathatok X-kliens alkalmazst, s megmondhatom neki, hogy a megjelentst, s adatbeolvasst az n gpemen
fut X-szerveren keresztl oldja meg. Ehhez elszr be kell jelentkezni a tvoli gpre akr parancssoros felleten keresztl. A futatsnak kt egyszer mdja: vagy van az eszkznek erre a
clra parancssori kapcsolja ez tipikusan a -display (ritkbban -d) , ebben az esetben:
xterm -d SZERVEREM:0.0

formban kell futatni, vagy pedig a DISPLAY nev krnyezeti vltoz belltsval jelezhet,
hogy hol az X-szerver, amihez a kliens csatlakozni fog. Azaz:
DISPLAY=SZERVEREM:0.0
export DISPLAY
xterm

formban.
A korbban mr emltet ssh ehhez is nyjt segtsget, az ssh parancssorban megadhat -X
(vagy -Y) opci egy n. X11-forwarding funkcit valst meg, ez leegyszerstve azt jelenti, hogy a
tvoli gpre ssh-n keresztli bejelentkezs sorn az ssh ltrehoz egy alagutat, belltja az elbb
emltet DISPLAY vltozt, gy teht tetszleges grafkus alkalmazs automatikusan az ssh ltal
biztostot titkostot alagton keresztl, a loklis gpnkre fogja tovbbtani a grafkus alkalmazs adatait. Gyakorlatilag a fenti eredmnyre vezet a kvetkez parancs:
ssh -Y user@host /usr/bin/xterm

A grafkus eszkzk tvoli elrsnek msik mdja, amikor nem csak egy-egy alkalmazst, hanem akr a teljes futsi krnyezetet tvesszk. Ennek oka lehet az, hogy segtennk kell egy felhasznlnak, s knnyebb hlzaton keresztl elrni a gpt, mint odamenni. Vagy az, hogy
szeretnnk valamit a csoda grafkus eszkzzel elrni, de sajnlatos mdon csak az ikonjt ismerjk
fel az asztalon/tlcn, de a nevt azt nem tudjuk.
Rengeteg npszer megolds ltezik a tvoli asztal megjelentsre, fggen a technolgitl
amely segtsgvel kapcsolatot lehet teremteni kt kliens kzt. Lehetsges akr SSH-alagt, akr
59

Tvoli elrs: ssh


VPN megoldsok kzbeiktatsval, amennyiben 2 publikus IP kzt, vagy egy bels hlzaton a
gpek kzvetlen tudnak egymshoz csatlakozni. Praktikus megoldst jelent sok esetben az IT osztly munkatrsai szmra, ha az rdekeltsgi krkbe tartoz klienseket gy tudjk tmogatni,
hogy kzben pontosan ltjk a msik gp kpernyjt. Ez azonban felvet termszetesen adatbiztonsgi s szemlyisgi jogi krdseket is, azonban ha ezek tisztzotak, akkor valban nagy
knnyebbsg gy segteni egy program teleptsben (vagy akr feltelepteni neki a programot),
hogy a loklis gpnk segtsgvel kzel hozzuk a tvol gp kpernyjt, billentyzett s egert. Az ilyen szofverek hasznosak tovbb a keresztplatformok esetben is. Azaz egy linuxos VNC
klienssel el tudunk rni egy Windows asztalt, ha azon fut egy VNC-szerver s termszetesen viszszafel is mkdkpes a mdszer 70.
UltraVNC71: : egy GPL licenc alat kiadot teljes funkcionalits tvoli asztal elrsre szolgl
kliens-szerver szofver. Idelis Windowst futat gpeken, mivel tmogatja a titkostst, azonban a
kliens vltozat Linux al csak bngszbl, Java hasznlatval lehetsges.
RealVNC72: : privt hasznlatra ingyenes, de szmos fzets megolds ltezik belle. A kliens s a
szerver is elrhet a legtbb Linux terjesztsben csomagknt. Titkostst az ingyenes verzi nem
tmogat.
Rdesktop73: : a linuxos kliens szofver GPL licenc alat elrhet, s mivel natvan tmogatja az
RDP protokollt, ezrt jl hasznlhat a Windows kliensek elrsre Linux all is.
Spice: a Spice protokollt a Red Hat tete nylt forrsv 2009-ben. Szmtalan elnye mutatkozik
a VNC-vel szemben, tekintve, hogy sokkal hatkonyabb tmrtst s eleve titkostst is hasznl.
Mra mr integrlhat a KVM al is, illetve hasznlhat sima asztal-asztal sszektsknt is.
Szinte kzs jellemzje az sszesnek, hogy az ingyenesen hasznlhat felleten a titkosts vagy
nem rhet el, vagy nem elgsges, ezrt ezek hasznlata jellemzen bels hlzatokon a vdet
znn bell javasolt, vagy VPN vagy SSH-alagt segtsgvel egyt.

1 70. Ehhez Linux al sok felhasznlbart eszkz ltezik, mint pl. a Vinagre vagy a Remmina.
1 71. http://www.uvnc.com/
1 72. http://www.realvnc.com/
1 73. http://www.rdesktop.org/

60

A naplz alrendszer, naplk elemzse

A naplz alrendszer, naplk elemzse


Taln nincs is klnsebben magyarzatra szksg, hogy mirt is szksges a fenti fogalmak
megvalsts minden egyes szerver esetbe. Elg egy felhasznl vagy egy webmester reklamcija az aktulis cron-bl lefutatot scriptjrl, amely valamirt nem futot le s mris rezni fogjuk
annak a hinyt, hogy nhny syslog esetben a cron.log nincs automatikusan bekapcsolva. A
legtbb esetben egy komolyabb problmt gyakran megelz tbb kisebb fennakads, amelyet ha
megfelelen monitorozunk s a megfelel formban rtelmezni tudjuk (grafkusan, stb) vagy kapunk rla rtestst, akkor sok esetben megelzhet a nagyobb baj. Gyakori hiba pl. amikor a
RAID-tmbnk aktulis sttuszt monitorozzuk, de az egyes diszkek llapott nem. Ha a raid
tmb logikai llapott krjk csak le, az mg akkor is OK lehet, ha mr tllt a meleg tartalk
diszkre (hotspare disk). Ha hozznzzk a fzikai llapotot is, akkor mr ltni fogjuk, hogy valami
nem stimmel. Hasonl hiba lehet az is, ha mindent naplzunk s a nagy adatmennyisg miat
(nem ltjuk a ftl az erdt) nem vesznk szre egy behatolsi prblkozst, ami ha elg kitart,
akkor akr sikeres is lehet. Egy tlagos szerver zemeltetsben a naplzs s a folyamatos monitorozs legalbb olyan fgyelmet kellene, hogy kapjon, mint a biztonsg (hiszen rsze annak)
vagy a ments. Nzzk elsknt a logols lehetsges eszkzeit:
Minden Linux terjeszts hasznl valamilyen log kezel programot. Az mr a terjesztst sszelltk dntse, hogy melyiket. Jellemzen a piacot az rsyslog, a syslogd s a syslog-ng uralja. Persze
ezeken kvl ms megolds is ltezik, de jellemzen ezek az alapteleptsben elrhet eszkzk.
A rszletesebb kifejts elt pr alapfogalom tisztzsa: a szabvnyos syslog minden egyes naplbejegyzshez kt minst adatot kapcsol:
facility (magyarul taln a legjobban a kategria kifejezssel lehetne lerni a lnyegt) ezzel
beskatulyzom a naplbejegyzs forrst (a kerneltl rkezet, a levelez rendszertl, a nyomtat alrendszertl, s . t.)
priority, ms nven level (fontossg, vagy szint) mennyire kritikus az adot zenet; hagyomnyosan ha a naplz szofvernek megadok egy fontossgi szintet, akkor az olyan szint, vagy
annl magasabb szinten lev zeneteket fogja a megadot clhoz eljutatni
Azaz egy adot naplbejegyzs (amihez tartozik termszetesen az zeneten kvl egy idblyeg
is) honnan rkezet (milyen szofver alrendszer kldte az zenetet), s mennyire fontos. ltalban
a klnbz syslog-implementcik eltrnek egymstl abban, hogy a forrs-cl meghatrozst
mennyire fnoman lehet hangolni s milyen szintaxissal kell megadni az zenetek sztvlogatst.
A forrs helyet elgg elterjedt a selector (kivlaszt) elnevezs. A facility paramterek kzt lteznek teljesen specifkusak mint lpr vagy mail, s olyan meglehetsen ltalnosak is, mint daemon vagy user. (A teljes lista egybknt biztosan tartalmazza a kvetkezket: auth, authpriv, cron,
daemon, fp, kern, lpr, mail, mark, news, syslog, user, uucp s local0, local1, , local7. Bizonyos
implementcikban vannak etl eltrek is.) A priority paramter pedig a kvetkezk valamelyike: debug, info, notice, warning, err, crit, alert, emerg (a sorrend egyre magasabb prioritst
takar), s lteznek it nem szerepl (ezek valamelyikvel megegyez jelents, de mr elavult)
kulcsszavak is. Megjegyzend, hogy egyre tbb szofver rja gondolja gy, hogy az alkalmazs
naplzsra a local0-local7 kategrik valamelyike a legalkalmasabb csak ppen ezek a kategrik sokszor a gyri konfgurciban nincsenek lekezelve, gy t nem gondolt konfgurci esetn
elveszhetnek ezek a naplbejegyzsek.

61

A naplz alrendszer, naplk elemzse


Azok az alkalmazsok, amelyek a szabvnyos openlog(3)/syslog(3)/closelog(3) knyvtri rutinokat
hasznljk naplzsra, a /dev/log nev UNIX-domain socketen keresztl kldik az zeneteiket,
mg a kernel log zenetei Linux alat a /proc/kmsg fjlon keresztl rhetk el. Ha pedig engedlyezzk tvoli gpekrl a naplzst, a szabvnyos syslog-port az 514/UDP.

Syslogd
A BSD UNIX-rendszerekbl tvet syslog megvalsts alapfunkcikat nyjt: loklis s tvoli
naplzs. A naplbejegyzsek loklisan kldhetek adot (bejelentkezet) felhasznlk kpernyjre, (teljes elrsi tal adot) fjlba (ezek termszetesen lehetnek eszkzfjlok is, ily mdon kldhet a /dev/console, vagy a /dev/printer eszkzre). Kldhet csvn (pipe, FIFO) keresztl
programnak, illetve az sszes bejelentkezet felhasznlnak (ilyet leginkbb kritikusnak minstet
rendszerzenetek esetn szoktak csinlni). Termszetesen ugyanazt a napbejegyzst tbb klnbz cmzethez is el lehet jutatni (azaz a klasszikus, paprra nyomtatva naplzs mellet mehet a
kzponti naplszerverre s a rendszergazdk terminljra is valamely fontos naplbejegyzs). A
hagyomnyos syslog megvalsts hinyossgai kz szoktk sorolni, hogy a tvoli naplzshoz
UDP-protokollt hasznl, mindenfle titkosts s hitelests nlkl (gy viszonylag knnyen lehet
naplt hamistani). (Megjegyzend, hogy egy elg sajtos megjegyzs-szintaxis hasznlatval a
syslogd kpes akr a naplt kld program neve alapjn is szelektlni 74, de ezt a tulajdonsgt
nem nagyon szoktk dokumentlni.)
me egy plda syslog.conf
*.err;kern.warning;auth.notice;mail.crit
*.notice;auth.none;kern.debug
security.*
kern.crit

/dev/console
@logserver.example.hu
root,sysadm
*

Mint a pldbl lthat, tbbfle forrs is megadhat egyszerre, ezzel lehet klnbz alrendszerek zeneteit azonos helyre trolva naplzni. Nzzk rszletesen a fenti pldt:
A *.err jelentse: brmely alrendszertl rkezik ERROR (vagy annl magasabb75) priorits zenet, azt naplzzuk (a plda szerint a rendszerkonzolra). Mivel ebben a sorban ;-vel elvlasztva tbb
forrst is megadtunk, gy a konzolon a kerneltl rkez WARNING (vagy magasabb) fokozat
zenetek, az autentikcis alrendszer NOTICE (s magasabb), valamint a levelez alrendszer CRIT
(nyilvn kritikus) szintet elr zenetei szintn megjelennek.
A kvetkez sorban szerepl bejegyzs azt mutatja, hogy mi mdon lehet egy tvoli gpre (a
pldban a logserver.example.hu nevre) tkldeni a naplkat. (Mivel a tvoli gp syslog programja a sajt konfgurcijnak fggvnyben szintn szelektl, gyeljnk arra, hogy ne pingpongozzunk a log zenetekkel drga s kevss hatkony.) Ebben a sorban mg egy furcsasg
ltszik. A *.notice (brhonnan rkezik NOTICE szint vagy annl magasabb priorits naplzni
val) utn ll ;auth.none explicit mdon kizrja az autentikcis alrendszertl rkez zeneteket
ebbl a naplzsbl. Ezen kvl a selector-ban szerepl ;kern.debug azt jelenti, hogy a kerneltl viszont a debug vagy magasabb szint zeneteket kell a tvoli gpre tkldeni (azaz mivel a debug a
legalacsonyabb priorits, gy mindent).
1 74. htp://www.freebsd.org/cgi/man.cgi?query=syslog.conf&sektion=5
1 75. kevss ismert, hogy *.=err formval lehet pontosan csak az adot szint zenetekre hivatkozni (s megadhatk a
matematikbl jl ismert !<=> opertorok)

62

A naplz alrendszer, naplk elemzse


A harmadik sorban szerepl bellts szerint a biztonsgi alrendszer zenetei a root s sysadm
nev felhasznlk kpernyjn jelennek meg (amennyiben be vannak jelentkezve).
Vgl az utols plda szerint a kernel kritikus (s magasabb szint) zenetei minden bejelentkezet felhasznl terminljn megjelennek.
Komoly buktat, hogy a mai napig vannak olyan syslogd implementcik, melyek a konfgurcis fjl szintaxisra nagyon rzkenyek. gy pldul a sorok elejn ll forrst s a sorok vgn ll
clt eredenden csak TAB karakterekkel lehetet elvlasztani, a szokvnyos szkz nem megengedet. E miat a pldkban (noha nem ltszik) mi is azt hasznlunk s erre buzdtunk mindenkit.
Hasonlan kellemetlen hibja a hagyomnyos syslogd-nek, hogy amennyiben fjlba naplz, a fjloknak a syslogd indulsakor mr lteznie kell, ugyanis a syslogd nem hozza ltre ezeket a naplfjlokat.

Rsyslog76
Egy GPLv3-as licenc alat napvilgot ltot projekt, ahol a f hangsly a biztonsgos logolson
van (taln ezrt is llhatot t a Debian77 s az Ubuntu is r). Nzzk pontosan mit is tud az Rsyslogd:
100%-ban kompatibilis az eredeti Sysloggal: ez a gyakorlatban azt jelenti, hogy a konfg llomnyok szintaxisa megegyezik.
Modulris felpts
UDP s TCP-alap tvoli logolsi lehetsg s tvoli log fogadsi lehetsg
TCP SSL hitelestssel is: a tvoli logols kiegsztse SSL titkostssal, ez az egyik legnagyobb
klnbsges a rgi syslogd-hez kpest.
Tmrtet klds s fogads
Backup szerverre val automatikus tlls
tlthatbb s pontosabb idblyeg rendszer
Klnbz szablyos kifejezsekkel (regexp) megvalsthat szrsi felttelek
IPv6 protokoll ismerete
natv MySQL/MariaDB s PostgreSQL tmogats: azaz direkt naplzsi lehetsg SQL kapcsolatal, amely a kirtkelseket is nagyban meg tudja knnyteni.
Az Rsyslog egy igazi hinyptl megolds volt, amelyet a terjesztsek gyorsan illesztetek a sajt
rendszereikhez, gy ma a srn hasznlt terjesztsek a tindzserkort is bven megrt Syslog helyet szinte mind ezt hasznljk.

1 76. htp://www.rsyslog.com/
1 77. htp://wiki.debian.org/Rsyslog

63

A naplz alrendszer, naplk elemzse

Syslog-ng78
Magyar fejleszts. Az erdeti syslogbl alaktotk ki, annak hinyossgait szem elt tartva a fejleszts sorn. A projektet 1998-ban indtotk s mra igen elterjedt naplz eszkz let. Elrhet
egy nylt forrskd megolds belle, amely a legtbb terjeszts al csomagkezel segtsgvel
telepthet, s tbb fzets megolds is a specilis nagyvllalati szegmens rszre. Tudsa:
Titkostot naplzs
Naplzenetek biztostot tovbbtsa
Szabvnyos syslog protokollok tmogatsa
Loklis zenetek gyjtse
Nagy teljestmny naplzs, fejlet zenetfeldolgozsi kpessgekkel s kzvetlen adatbzis
kezelssel.
zenetek szrse s rendszerezse, feldolgozsa s mdosts
zenetek klasszifklsa
Extrm terhelhetsg
IPv4 s IPv6 tmogats
Patern DB: amely segtsgvel a naplzenetek vals idej feldolgozsa megoldot a felhasznli kzssg ltal sszegyjtt mintzatok (patern-ek) alapjn.
Szles kr magyar s angol nyelv dokumentci
Az els pldban szerepl syslog.conf fjlnak megfelel syslog-ng.conf:
source s_local {
internal; # syslog-ng generated logs
unix-stream("/dev/log"); # the standard syslog-functions
file("/proc/kmsg"); # kernel logs
}
destination d_console { file("/dev/console"); };
destination d_syslogserver { udp( "logserver.example.hu" port( 514 ) ); };
destination d_user_root { usertty( "root" ); };
destination d_user_sysadm {
usertty( "sysadm" ) ; };
destination d_all_loggedin_users { usertty( "*" ) ; };
filter f_err { level( err .. emerg ); };
filter f_warning { level( warning .. emerg ) ; };
filter f_notice { level( notice .. emerg ) ; };
filter f_crit { level( crit ..emerg ) ; };
filter f_debug { level( debug .. emerg ) ; };
filter f_all_level { level( debug .. emerg ) ; };
filter f_no_level { not level( debug .. emerg ) ; };
filter f_all_facility { facility( auth, authprov, cron, daemon, kern, lpr, mail,
news, user, cron, local0 .. local7 ) ; };
filter f_kern { facility( kern ) ; };
filter f_auth { facility( auth ) ; };
filter f_mail { facility( mail ); };
filter f_security { facility( security ) ; };
filter f_auth_none { facility( auth ) and filter( f_no_level ) ; } ;
1 78. htp://en.wikipedia.org/wiki/Syslog-ng

64

A naplz alrendszer, naplk elemzse


log { source( s_local ) ; filter ( f_all_facility ) ; filter( f_err ) ;
destination( d_console ) ; } ;
log { source( s_local ) ; filter( f_kern ) ; filter( f_warning ) ;
destination( d_console ) ; } ;
log { source( s_local ) ; filter( f_auth ) ; filter( f_notice ) ;
destination( d_console ) ; } ;
log { source( s_local ) ; filter( f_mail ) ; filter( f_crit ) ;
destination( d_console ) ; } ;
log { source( s_local ) ; filter( f_all_facility ) ; filter( f_notice ) ;
filter( f_auth_none ) ; filter( f_kern ) ; filter( f_debug ) ;
destination( d_syslogserver ) ; };
log { source( s_local ) ; filter( f_security ) ; filter( f_all_level ) ;
destination( d_user_root ) ; destination( d_user_sysadm ) ; } ;
log { source( s_local ) ; filter( f_kern ) ; filter( f_crit ) ;
destination( d_all_loggedin_user ) ; } ;

Fenti rendszerek ltalban alap belltsokkal kerlnek a terjesztsekbe, gy az esetlegesen nem


logolt terletek miat konfgurcijukat rdemes bezemels elt tnzni s azt a sajt rendszernkre szabni.
Mivel a naplzs meglehetsen nagymret fjlokat eredmnyezhet, ezrt rdemes a naplfjlok
kezelst automatizlni. (Azaz pl. egy adot fjlmret, vagy diszkteltetsg elrsekor a rgi naplfjlt bezrni, valamilyen konvenci szerint tnevezni, esetleg tmrteni is, s j naplfjlt ltrehozni esetleg mindezt a naplszerverrel kzlni is.) A feladat nmi scriptelssel is elintzhet,
de lteznek hozz ksz eszkzk is (mint pl. a logrotate, vagy a newsyslog).
A loiolshoz kapcsolhat mi j pr meiolds, amely esetben a monitorozs s a loiols kzs
kapcsoldsi pont:

snoopy79
Egy igazn remek, felhasznli programok aktivitst fgyel program. A snoopy segtsgvel
nyomon tudjuk kvetni akr egy PHP program futst vagy egy konzol vagy SSH kapcsolatal
rendelkez (shell) felhasznl aktivitst az /var/log/auth.log ban naplzva. Segtsgvel akr egy
szndkosan letrlt shell history llomny tartalmt is rekonstrulni lehet. Egy minta log, amelyben egy login parancsot hajtotunk vgre sudo-val, majd megnyitotuk az auth.log-ot:
Nov 10 09:24:46 mail snoopy[17426]: [user, uid:1000 sid:17426]:
Nov 10 09:24:46 mail snoopy[17429]: [user, uid:1000 sid:17426]:
/etc/csh/login.d
Nov 10 09:24:46 mail snoopy[17429]: [user, uid:1000 sid:17426]:
/etc/csh/login.d
Nov 10 09:24:46 mail snoopy[17431]: [user, uid:1000 sid:17426]:
Nov 10 09:24:46 mail snoopy[17433]: [user, uid:1000 sid:17426]:
Nov 10 09:24:46 mail snoopy[17435]: [user, uid:1000 sid:17426]:
Nov 10 09:24:47 mail snoopy[17436]: [user, uid:1000 sid:17426]:
Nov 10 09:24:50 mail sudo:
user : TTY=pts/0 ; PWD=/home/user
COMMAND=/usr/bin/tcsh
1 79. htp://code.google.com/p/snoopy/

65

-tcsh
ls
ls
uname -n
/usr/bin/whoami
/bin/hostname
sudo -s
; USER=root ;

A naplz alrendszer, naplk elemzse


Nov 10 09:24:50 mail snoopy[17437]: [user, uid:0 sid:17426]: /usr/bin/tcsh
Nov 10 09:24:54 mail snoopy[17439]: [user, uid:0 sid:17426]: less
/var/log/auth.log

RAID figyel megoldsok


Az taln senkinek nem ktsges, hogy ha mr RAID-rendszer van a szerverben, akkor nem felttlen a vletlenre kell bzni annak szlelst, hogy az egyik vagy msik lemeznk meghibsodot.
Termszetesen ha nincs hardveres RAID-vezrl a gpben, akkor mg fontosabb a diszkekre vonatkoz fgyelmeztetsek s egyb eljelek fgyelse. Sok esetben kzzel rt scriptekkel (amelyek a
klnbz llomnyokat fgyelik: messages.log, syslog, stb) is meg lehet oldani ezeket a dolgokat,
de j pr ksz megolds is rendelkezsnkre ll:

smartmontools80
Eszkz a SMART81 adatokkal rendelkez merevlemezek megfgyelsre. A legtbb ma kaphat
lemez mr rendelkezik azzal a kpessggel, hogy folyamatosan s/vagy meghatrozot idkznknt nellenrzseket futat le, fgyeli a diszkek krnyezeti pramtereit: melegedst, felprgsi
idt, letartam idt, ki/be kapcsolsok szmt, stb. Ezekbl az adatokbl kvetkeztet arra, hogy
egy merevlemez lehetsges meghibsodsa be fog-e kvetkezni vagy sem. Felhasznli krnyezetben ezen adatok megtekintsre vagy a parancssori megolds (smartctl -a /dev/sda1), vagy pedig a
jobban tlthat GSmartControl82 ajnlot. Belltsa viszonylag egyszer s a gyakorlati tapasztalat az, hogy a jl belltot nellenrzsi ciklusokat is magban foglal konfgurci kpes lehet
mg az adatvesztst megelzen jelezni. Szerveroldalon kpes egytmkdni a gyrtk sajt platformos Linux RAID programjaival, de sajnos nem mindegyikkel. 83
Teleptse egyszer:
apt-get install smartmontools

a fggsgekkel egyt telepl a smartmoontools. Els teendnk, hogy eldntsk, milyen diskeket
akarunk fgyeltetni vele. Clszer az sszes smart kompatibilis rendelkezsre ll lemezt megfgyelni. Szofveres RAID esetn, egyenknt az sszes fzikai diszket be kell fzni, hardveres RAID
esetn pedig rdemes a gyrtk hozz adot szofvert is hasznlni, illetve megnzni, hogy az
adot HW-vezrl s a smartmon egyt tud-e mkdni. De nzzk az egyszer esetet, amikor is
1-2 SATA vagy SAS lemez van a gpnkben, vagy SofRaid vagy single zemmdban. Nzzk
meg, hogy a diszkeink alkalmasak-e a smart adatok kinyersre:
smartctl -a /dev/sda
s smartctl -a /dev/sdb
valami ilyesmit kellene kapnunk:
1 80. htp://sourceforge.net/apps/trac/smartmontools/wiki
1 81. htp://en.wikipedia.org/wiki/S.M.A.R.T.
1 82. htp://gsmartcontrol.berlios.de/home/index.php/en/Home
1 83. htp://sourceforge.net/apps/trac/smartmontools/wiki/Supported_RAID-Controllers

66

A naplz alrendszer, naplk elemzse


=== START OF INFORMATION SECTION ===
Device Model:
ST91000640NS
Serial Number:
LU WWN Device Id: 5 000c50 04ed10873
Firmware Version: FTA2
User Capacity:
1,000,204,886,016 bytes [1.00 TB]
Sector Size:
512 bytes logical/physical
Device is:
Not in smartctl database [for details use: -P showall]
ATA Version is:
8
ATA Standard is: ATA-8-ACS revision 4
Local Time is:
Thu Aug 8 14:36:43 2013 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Disabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

s mg egy halom olyan adatot, hogy hny fokos a lemez ppen, illetve hnyszor volt ki be kapcsolva, vagy hogy mennyi ideje prg mr. A lnyeg, hogy a SMART adatok kiolvashatak, gy
akkor lltsuk be a SMART fag-et ENABLED llsba a kvetkezkppen:
smartctl -s on -a /dev/sda
smartctl -s on -a /dev/sdb

Ha ezzel megvagyunk, akkor tudassuk a rendszerrel, hogy szeretnnk, ha bizonyos idkznknt


fgyeln a lemezeinket, szerkesszk a /etc/default/smartmontools llomnyt:
enable_smart="/dev/sda /dev/sdb"

it adhatjuk meg, hogy a fzikai lemezeinket hogyan hvjk, mg akkor is ha valjban mi


/dev/md1 knt hivatkozunk r. Jelen plda, mind a kt sof raid disket fgyelni fogja.
start_smartd=yes

alap esetben of -on vagy kommentezve talhat, ha traktuk on-ra, akkor a rendszer indtsnl
automatikusan fgyelni fogja a lemezeket is.
smartd_opts="--interval=1800"

megadhatjuk msodpercben a fgyels intenzitst. (Figyeljnk oda, hogy ha a smartd-t engedlyezzk, akkor ltalban nem kell, st ellenjavalt felsorolni a fgyelend diszkeket, ugyanis a
smartd alapbelltssal automatikusan megkeresi magnak.)
Az alap opcik megadsa utn egy service smartd restart -tal tudjuk root-knt (vagy sudo-val)
rvnyesteni. A /var/og/syslog -ban pedig mr lthat is lesz, hogy a smartd fgyeli a diskjeinket.
Az alap belltsok mellet a root fog levelet kapni, ha vrhat vagy bekvetkezet egy lemez meghibsods. Az alap opcikat a /etc/smartd.conf -llomnyban tudjuk fnomtani, pl ha msnak
szeretnnk, hogy fgyelmeztets menjen, vagy ha egy komplet tmogatot HW RAID -et akarunk
fgyelni.

67

A naplz alrendszer, naplk elemzse

HW RAID figyelse
Szmos hardveres RAID megolds ltezik a piacon. Szerencsre a gyrtk is felismertk azon
ignyeket, hogy az eszkzeiket nem csak hasznlni szeretnnk, hanem megfgyelni is. gy szmos
gyrti szofvermegolds szletet, amely nem felttlen szabad szofver (l. a Debian Wiki ltal karbantartot listt).84 rdemes egyedileg megnzni ezeket a segdprogramokat, mert felhasznlsukat tekintve ingyenesek, de a linceszk alapjn nem mindig szabad szofverek.
Jellemzen mindegyik program ignyel valamilyen minimlis scriptelst, amely segtsgvel automatizlni tudjuk pl. az rnknti sttusz lekrdezst, vagy csak a hiba vagy hiba elrejelzs
megfgyelst, de ezek jellemzen 2-3 parancs 1 shell sciptbe gyjtse, illetve esetenknt egy dif
vagy egyb alap parancs kombincijt jelentik. A script eredmnyt pedig e-mailben elkldve
s/vagy log szerverben feldolgozva kaphatunk rtestseket a RAID aktulis llapotrl.

1 84. htp://wiki.debian.org/LinuxRaidForAdmins

68

A hlzati szolgltatsok monitorozsa: Nagios

A hlzati szolgltatsok monitorozsa:


Nagios
Mirt monitorozzunk?
A szervernek mennie kell. A hibamentes mkds a felhasznlk termszetes elvrsa hisz k
dolgozni akarnak. Ezrt az zemeltetnek igyekeznie kell a lehetsges problmkat elre jelezni,
s azokat mg az elt elhrtani, mielt azok bekvetkeznnek. Ha mgis vratlan hiba trtnik,
akkor viszont az adminok szeretnnek elszr tudni rla, hogy a lehet leghamarabb megkezdhessk a hiba elhrtst. Ennek rdekben a rendszer sszes vizsglhat paramtert rdemes folyamatosan fgyelemmel ksrni.
Az fgyelend paramtereket tbb csaldba sorolhatjuk. A teljestmny paramterek megmutatjk, hogy egy rendszerben a klnbz erforrsok mennyire vannak kihasznlva. Ezek a legtbb
esetben valamilyen szmmal vagy szzalkos rtkkel kifejezhet rtkek. Ilyen jellemzk pldul
a gpben lv diszkek foglaltsga, terheltsge, a processzormagok kihasznltsga, a rendelkezsre
ll szabad memria, a hlzati csatlakozk ki s bemeneti svszlessg hasznlata, az adatbzisszerver vlaszideje s mg folytathatnnk. Ezek vltozsbl elre lehet jelezni, hogy ha a szerver
mkdsben vrhat hiba fog bellni. Lthat pldul, hogy ha egy szerveren minden egyes j
felhasznlval folyamatosan n a memria felhasznls s a lefoglalt diszkterlet, akkor rendszeres mrssel s a felhasznlk szmnak elre becslsvel lehetsg van a memria vagy diszk bvtsre mg mielt azok valamelyike problmt okozna.
A kvetkez ellenrzend paramter tpus a szolgltatsok s egyb jellemzk llapotai. Egy
szerveren tipikusan nagyon sok szofver biztostja annak mkdst. Ha valamelyik nem fut (pldul az idzt dmon, a cron), akkor az elbb-utbb a szolgltatsok mkdst veszlyezteti.
Ezen llapotokat a legtbb esetben egy igen/nem vagy 1/0 rtkekkel lehet kifejezni. Az elz pldnl maradva leellenrizhet, hogy a cron dmon fut-e a rendszeren. Egy msik plda: van-e a
rendszeren frisstend csomag?
Trtneti s egyb paramtereken olyan ellenrizhet jellemzket rtnk, hogy volt-e jraindts a legutbbi adminisztrtor ltal vgzet nyugta ta. Ez olyankor fordulhat el, ha ramkimarads miat a nem biztonsgos ramelltsra ktt gp nem tervezet mdon jraindul. Ilyenkor az
adminisztrtornak ki kell dertenie, hogy mi okozta a problmt, s lehetleg elejt kell vennie,
hogy a ksbbiekben hasonl problma elforduljon.
A szerverek jellemzinek monitorozsval kapcsolatban ltalnossgban elmondhat, hogy ha a
jelz rendszer valamilyen hiba bekvetkezsrl tjkoztatja az adminisztrtorokat, akkor a hiba
elhrtsa mellet minden esetben az a legfontosabb teend, hogy a szemlyzet gondoskodjon arrl, hogy az adot hiba lehetleg tbb ne forduljon el. Ha ezt sajt hatskrben nem tudjk megoldani (pldul egy sznetmentes tp vagy egy nagyobb diszk beszerzse szksges), akkor a
problmt az illetkes fel jelezni kell.

69

A hlzati szolgltatsok monitorozsa: Nagios

Mkd kpessg monitorozsa


A rendszerek klnbz paramtereinek ellenrzsre szmos szofver ltezik. Mi az egyik legelterjedtebb, knnyen kezelhet, jl testre szabhat megoldst vlasztotuk ki ezek kzl. A Nagios nev szofver szinte ipargi szabvnynak szmt. A tbbi hasonl cl rendszer mellet is
lehet rveket tallni (pldul egyszerbb zembe helyezs, specilis tulajdonsgok stb.), azonban a
tapasztalataink szerint a Nagios szinte minden feladatra megfelel. rdemes ezt megismerni mg
akkor is, ha eleinte a rendszergazda csak egyetlen rendszert akar ellenrizni, hisz gy olyan eszkzt kap, mely ksbb alkalmas lesz sokkal nagyobb rendszerek esetn is.

A Nagios alapvet jellemzi


A Nagios egy remekl sklzhat, rugalmas automatikus ellenrz rendszer. Knyelmes, web
alap fellete egyszeren tlthat, hasznlhat.

1. bra: A Naiios szoliltatsok llapott mutat fellete


A rendszer a kvetkez alapvet tulajdonsgokkal br:
szabad szofver, GPL v2 licenc alat rhet el, gy mindenfle clra szabadon hasznlhat;
sokoldal: lehetsg van alkalmazsok, mrhet rendszer jellemzk, hlzati szolgltatsok,
opercis rendszerek, hlzati protokollok s infrastruktra komponensek felgyeletre;
sokoldal ellenrz modul API lehetv teszi a specilis, sajt fejleszts alkalmazsok felgyelett, sajt ellenrz modulok fejlesztst;

70

A hlzati szolgltatsok monitorozsa: Nagios


knyelmesen hasznlhat web alap fellet az ellenrzt rendszerek llapotnak megfgyelsre s bizonyos beavatkozsok elvgzsre;
fgyelmeztetsek e-mail-ben vagy ms parancssorbl elrhet illeszt felleten keresztl (pldul webszolgltatson elrhet SMS API megfelel segdprogrammal);
tbbfelhasznls, a felhasznlk csoportokba rendezhetk;
az ellenrzt gpek csoportokba rendezhetk;
az ellenrzt gpek s szolgltatsok szabadon felhasznlkhoz vagy csoportokhoz rendelhetk, melyek rtestseket kapnak, a felleten ellenrizhetik a belltot rendszereket vagy szolgltatsokat;
a felhasznlk a belltsoknak megfelelen csak azokat a rendszereket lthatjk, melyek az
felgyeletkhz tartoznak;
ha a hiba nem hrul el megadot idn bell, akkor a jelzsek eszkallhatk;
ha az ellenrzend szolgltats nem rhet el kzvetlenl a felgyeleti rendszerrl, akkor az ellenrzseket tv ellenrz kiegsztssel (NRPE) msik elrhet gpen keresztl el lehet vgezni;
esemnykezelk segtsgvel automatizlt reakcik llthatk be, pldul egy szolgltats elrhetetlensge esetn az adot szerver jraindthat;
az ellenrzt rendszerek elrhetsgrl jelentsek kszthetk, melyek SLA bizonytkknt
hasznlhatk;
a riasztsokrl s egyb esemnyekrl bellthat ideig visszamenleg elrhet a trtnet, gy
visszakvethet egy-egy rgebbi esemny;
akr tbb ezer ellenrzt rendszerre is kpes sklzdni;
tbb, mint tz ves folyamatos fejleszts, stabil fejleszti kzssg;
nagy s jl mkd felhasznli kzssg.
sszessgben elmondhat, hogy Nagios segtsgvel lnyegben mindent ellenrizhetnk. Ha
valamit nem tudunk megcsinlni, akkor egy nagy, jl mkd kzssgtl krhetnk tancsot, tmogatst. Pldul it: htp://support.nagios.com/forum/

A Nagios technolgiai megkzeltsbl


A rendszer kt alapvet rszbl ll, melyeket kiegszt tbb kisebb-nagyobb modul, melyek az
ellenrzst, a megjelentst, a tv-ellenrzst s egyb funkcikat ltnak el.
A rendszer lelke egy dmon, mely a belltsok alapjn az ellenrz, beavatkoz s rtest modulokat futatja. Ez az telepts s a megfelel belltsok elvgzse utn a htrben fut s szksg esetn pldul e-mail-ben rtesti a belltot rendszer adminisztrtort, hogy ha a vizsglt
szolgltatsokkal valamilyen gond van.

71

A hlzati szolgltatsok monitorozsa: Nagios

2. bra: Egy szoliltats aktulis vi llapot trtnete szzalkokkal


A msik alapvet fontossg rsz a web alap fellet, melyet egy cgi-k kiszolglsra alkalmas
web szerver alat kell elhelyezni. Erre a jl ismert s ltalnosan hasznlt Apache szervert javasoljuk. A rendszer web fellet nlkl is mkdkpes, csak kiss nehezebb az e-mail rtestsek alapjn tltni az sszes ellenrzt rendszer aktulis llapott. Aki atl tart, hogy a felgyeleti
rendszer fellete veszlyezteti az t futat szerver biztonsgt, az megteheti, hogy a web felletet
gy lltja be, hogy csak a 127.0.0.1-es cmen fgyeljen a web szerver, gy a felletet csak helyben,
pldul w3m, vagy ssh s port tovbbts segtsgvel rheti el (lsd tvoli adminisztrci fejezet).
A rendszer szmos kiegszt modullal bvthet. Az elmlt vtizedben sok olyan ellenrz s
egyb modul kerlt be a rendszerbe s rhet el hozz, melyek segtsgvel a Nagios amgy is
nagyszer funkcionalitsa tovbb bvthet. Ezek kzl egyet szeretnnk bemutatni annak ltalnos hasznlhatsga miat. Ha egy msik szerver letjeleit szeretnnk ellenrizni, akkor azt tvolrl csak nagyon korltozotan tudjuk elvgezni. Ha a hlzati szablyrendszer lehetv teszi,
akkor ping segtsgvel le lehet ellenrizni, hogy a rendszer letben van-e, de nem lehet megnzni, hogy mennyi az aktulis memria felhasznlsa. Erre a feladatra ksztetk el az NRPE (Nagios Remote Plugin Executor) kiegsztt, mely biztonsgos mdon lehetv teszi a Nagios
modulok tvoli futatst. Bvebben errl a belltsok vgn.
A Nagios alaprendszer knnyedn bvthet tovbbi funkcikkal, kiegsztsek, kiterjesztsek
s dokumentcik szzai rhetk el a htp://exchange.nagios.org/ honlapon.

Telepts, belltsok
A Nagios csomag teleptse Ubuntu 12.04 LTS szerverre a nagios3 csomag teleptsvel vgezhet el. Ha mg nem volt a rendszeren webszerver vagy kimen levelezs (utbbi esetben ejnye!,
lsd szerver alap belltsok fejezet), akkor ezeket is magval hozza a telepts. Web szerverre a
felhasznli fellet miat van szksg, melynek alaprtelmezeten Ubuntu 12.04 LTS esetn az
Apache2 szerver telepl. Kimen levelezs az rtestsek kikldse miat szksges. s mg vagy
tven msik csomagot is magval rnt a telepts, melyek az ellenrz modulok mkdshez
szksgesek. Az ellenrz modulok hrom csomagban vannak, ezek a nagios-plugins-basic, na72

A hlzati szolgltatsok monitorozsa: Nagios


gios-plugins-standard s a nagios-plugins-extra. Ezek rendre a kvetkez ellenrz modulokat
tartalmazzk:
basic

apt, by_ssh, clamd, cluster, dhcp, disk, dummy, fle_age, fp, host, htp, icmp,
ide_smart, imap, ircd, jabber, load, log, mrtg, mrtgtraf, nagios, nntp, nntps, nt, ntp,
ntp_peer, ntp_time, nwstat, overcr, ping, pop, procs, real, rta_multi, sensors, simap,
smtp, spop, ssh, ssmtp, swap, tcp, time, udp, ups, users

standard bgpstate, breeze, dig, disk_smb, dns, fexlm, hpjd, ifoperstatus, ifstatus, ldap, ldaps, linux_raid, mailq, mysql, mysql_query, oracle, pgsql, radius, rpc, snmp, wave
extra
fping, game
A telepts kzben a rendszer megkrdezi a web-adminisztrtor jelszavt. Ennek megvltoztatst a ksbbiekben lerjuk, de nagyon ajnlot blcsen megvlasztani, klnsen akkor, ha a felgyeleti szerver fellete minden bels hlzati gprl, vagy akr az egsz internetrl elrhet lesz.
Utbbit lehetleg el kell kerlni. Ha kls gpekrl is el kell rni a web felletet, akkor szerencss
ssh s port tovbbts vagy VPN hasznlata (lsd tvoli menedzsment s VPN fejezetek).
A rendszer egybknt minimlis tovbbi konfgurci utn zemksz. Alapesetben elrhet a
rendszer IP cmn illetve helyben a localhost cmen, a /nagios3 knyvtrban. Ha pldul tisztessgesen be van lltva a gp nvfeloldsa, akkor valami ilyesmi cmen:
htp://monitor.kisceg.intra/nagios3
Ekkor bekri a HTTP hitelestshez szksges adatokat, melynl a nv nagiosadmin, a jelsz pedig a teleptskor megadot jelsz. Ha elfelejtetk, akkor lpjk a kvetkez mezre, ot lerjuk,
hogy hogyan kell mdostani vagy gy felhasznlkat felvenni.

Indts, lellts, jrakonfigurls


Mint minden dmont, a Nagiost is a kvetkez parancs segtsgvel kell indtani:
/etc/init.d/nagios3 start

Lelltani:
/etc/init.d/nagios3 stop

Egyedl az jraindtssal kapcsolatban rdemes tudni, hogy ez ltalban felesleges s nmi kiesst okozhat az ellenrzsekben, szerencssebb a belltsok jratltse. Ha egy konfg. mdosts nem sikerl, akkor az jraindts le tudja lltani a Nagiost, de mr nem tudja jra elindtani.
Az jratlts azonban leellenrzi a konfgurcis belltsok konzisztencijt, gy ha abban hiba
van, akkor nem is kezdi meg az jrakonfgurlst. Teht jraindts helyet hasznljuk ezt:
/etc/init.d/nagios3 reload

Az Apache belltsa
A Nagios rendszer az Ubuntu 12.04 LTS szerveren alkalmazkodik az Apache belltsi szoksokhoz, s a konfgurcis llomnyt az /etc/apache2/conf.d knyvtr al linkeli nagios3.conf nven. Ez a fjl valjban a Nagios bellt knyvtrban, az /etc/nagios3 alat tallhat. Ennek
belltsaibl csak nhny fontosabb megllapts. A belltsok miat a Nagios rendszer ellopja a
gp webroot-ja alat a /nagios3 knyvtrat, ahogy ezt mr lertuk. Ebben a knyvtrban ler egy
73

A hlzati szolgltatsok monitorozsa: Nagios


/cgi-bin knyvtrat, ahol engedlyezi a cgi-k futatst. Ez valjban a /usr/lib/cgi-bin/nagios3
knyvtr. A html dokumentumok, stluslapok s cgi-k elrshez ktelezv teszi a HTTP hitelestst, melynek felhasznli s jelsz hash-ei a /etc/nagios3/htpasswd.users fjlban tallhatak. Ha
teht fel akarunk venni egy j felhasznlt vagy valamelyiknek le akarjuk cserlni a jelszavt, akkor ezt a fjlt kell megpiszklnunk a htpasswd Apache segdprogrammal. Hasznlatrl lsd
Apache fejezet.

A bellt fjlok felptse


A Nagios rendszer konfgurcis fjlja a /etc/nagios3/nagios.cfg. Ebben tallhatk a rendszer
belltsai, illetve it van megadva, hogy a tovbbi, objektumokhoz (pldul felhasznlk, csoportok, gpek, szolgltatsok stb.) tartoz belltsokat hol tallja a rendszer. Ezekhez a legegyszerbb esetben nem kell hozznylni, megfelelek az alapbelltsok.
Telepts utn a cfg_dir belltsok alapjn a /etc/nagios3/conf.d knyvtrban tallhat bellt
fjlokat is beolvassa az objektum belltsokhoz (sok ms mellet). Mi most csak azokat a fjlokat
trgyaljuk, melyeket a legegyszerbb belltsok esetn mdostanunk kell. Az alapvet hasznlathoz a belltsokat a /etc/nagios3/conf.d knyvtrban tallhat fjlokban kell megtennnk.
A bellt fjloknak van egy fontos kzs jellemzje. Ez pedig az, hogy minden belltshoz kszthetnk (illetve az alaptelepts mr tartalmaz is) egy-egy mintt (template-et), mely az alapvet belltsokat tartalmazza. Ilyen pldul a generic-host_nagios2.cfg fjl tartalma, mely egy gp
defncija, melynek neve generic-host. Ha ezek utn egy valdi gpet akarunk defnilni a ksbbi ellenrzs cljbl, akkor csak t kell vennnk a generic-host tulajdonsgait a use direktva
segtsgvel, ahogy a localhost_nagios2.cfg bellt fjlban ltszik is. Valahogy gy:
-- generic-host_nagios2.cfg
define host{
name
notifications_enabled
event_handler_enabled
flap_detection_enabled
failure_prediction_enabled
process_perf_data
retain_status_information
retain_nonstatus_information
check_command
max_check_attempts
notification_interval
notification_period
notification_options
contact_groups
register
}

-- localhost_nagios2.cfg
define host{
use
host_name
alias

generic-host
; The name of template
1 ; Host notifications are enabled
1 ; Host event handler is enabled
1 ; Flap detection is enabled
1 ; Failure prediction is enabled
1 ; Process performance data
1 ; Retain status across restarts
1 ; Retain non-status info across restarts
check-host-alive
10
0
24x7
d,u,r
admins
0 ; DONT REGISTER THIS DEFINITION!

generic-host ; Name of host template to use


localhost
localhost

74

A hlzati szolgltatsok monitorozsa: Nagios


address
}

127.0.0.1

...

A msodikknt idzet konfg use helyre oda kell kpzelnnk minden olyan belltst, mely a
mintban meg van adva. A mintnak mindig van egy name rtke, mely megadja a minta nevt,
ezt kell majd hasznlni a use rtkeknt.
Ennek risi elnye, hogy a tipikus belltsokat nem kell jra s jra lernunk, a konfg jobban
tlthat s rvidebb lesz. Szintn nagy elny, de jobban oda is kell fgyelnnk, hogy ha a mintban tlltunk valamit, akkor az minden olyan tovbbi belltsra hatssal lesz, ahol felhasznltk.

Felhasznlk s csoportok
Az Apache ltal elfogadot felhasznlkrl a korbbiakban mr volt sz annak belltsainl. Ha
nem akarsz tbb felhasznlt ltrehozni, tbb klnbz gp vagy szolgltats ellenrzsre, akkor hasznld a nagiosadmin felhasznlt s lpj a kvetkez mezre. Ha j felhasznlkat akarsz
ltrehozni, akkor tudnod kell, hogy az Apache belltsokban ltrehozot felhasznl be tud majd
lpni, de amg nem hozol neki ltre egy Nagios rendszeren belli felhasznlt (it contact), addig
nem fog semmilyen gpet s szolgltatst ltni. Az albbiakban egy egyszer contact minta s a
belle szrmaztatot felhasznl lthat, aki bekerl az admins csoportba. Ha indokolt, akkor a
contact-okat tbb csoportba rendezhetjk, gy a megfelel belltsok mellet mindenki csak a
neki rdekes gpek s szolgltatsok llapot vltozsairl rtesl.
-- contacts_nagios2.cfg
define contact{
name
host_notification_period
service_notification_period
host_notification_options
service_notification_options
host_notification_commands
service_notification_commands
}
define contact{
use
contact_name
email
}
define contactgroup{
contactgroup_name
alias
members
}

generic-contact
24x7
24x7
d,r
w,u,c,r
notify-host-by-email
notify-service-by-email

generic-contact
atya
mato.peter@gmail.com

admins
Nagios Administrators
root,atya

Parancsok
A rendszer minden kapcsolatt az opercis rendszerrel parancs objektumokon keresztl defnilhatjuk. Ilyeneken keresztl lehet az ellenrzseket vgz modulok meghvst specifklni:
75

A hlzati szolgltatsok monitorozsa: Nagios


define command{
command_name
check-host-alive
command_line
/usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w
5000,100% -c 5000,100% -p 1
}

Vagy az rtestsek kikldsnek pontos mdjt megadni:


define command{
command_name
notify-host-by-email
command_line
/usr/bin/printf "%b" "***** Nagios *****\n\nNotification
Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress:
$HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" |
/usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$
**" $CONTACTEMAIL$
}

rtestsek, idintervallumok
A fenti contact minta tartalmazot kt _period vg belltst. Ezek hatrozzk meg, hogy melyik intervallumban kell az adot felhasznlt kirtesteni gpekkel vagy szolgltatsokkal kapcsolatban. Ezen 24x7 bellts a timeperiods_nagios2.cfg fjlban van defnilva, melynek hasznlata
rtelemszer. Ha a felgyeletnek csak munkaidben kell reaglni, akkor tllthat pldul
workhours rtkre, melynek pontos adatait szintn a fenti fjlban lehet megtekinteni alaptelepts utn. Egybknt ugyanezekkel az idintervallum belltsokkal lehet majd megadni, hogy egyegy gp vagy szolgltats mikor ellenrzend.
A contact-nl lthatan megadhat egy-egy gp (host) s szolgltats (service) rtestsi parancs. Ezek akkor kerlnek meghvsra, ha a gp vagy szolgltats llapotban valamilyen vltozs ll be. Ezek mdostsra ltalban nincs szksg. Ha azonban a kikldt rtest e-mail egy
e-mail SMS csatoln keresztl telefonra is tovbbtsra kerl (a legtbb mobil szolgltatnl elrhet ilyen szolgltats), akkor szerencssebb a parancs paramtereibl csak a leginkbb fontosakat megrizni, hogy egy-egy rtests ne legyen tbb SMS hossz. Ilyen lehet a mdostot
parancs defnci:
define command{
command_name
notify-host-by-email
command_line
/usr/bin/printf "%b" "Date: $LONGDATETIME$" | /usr/bin/mail
-s "Nagios: $HOSTNAME$ is $HOSTSTATE$" $CONTACTEMAIL$
}

Gpek s csoportok
Az ellenrzend gpek defnciit a generic-host_nagios2.cfg-ben tallhat generic-host mintbl rdemes elkszteni. A gpek ellenrzst a rendszer a check_command ltal meghatrozot
paranccsal vgzi el. Ez alaprtelmezeten a check-host-alive, mely egy ping krs. Ha a hlzatban
az ICMP echo-request nem tud tmenni a tzfalon, akkor ezt a gp ellenrz parancsot t lehet lltani pldul check_ssh-ra. Az ellenrzs kikapcsolsra kerl, ha a check_command rtke res.

76

A hlzati szolgltatsok monitorozsa: Nagios

3. bra: A Naiios ipek llapott mutat fellete


A gpek lehetsges llapotai:
U, Up

mkdik

D, Down

nem mkdik

U, Unreachable
nem elrhet
gy nz ki az alaprtelmezet gp belltsi minta:
-- generic-host_nagios2.cfg
define host{
name
notifications_enabled
event_handler_enabled
flap_detection_enabled
failure_prediction_enabled
process_perf_data
retain_status_information
retain_nonstatus_information
check_command
max_check_attempts
notification_interval
notification_period
notification_options
contact_groups
register
}

generic-host ; The name of template


1 ; Host notifications are enabled
1 ; Host event handler is enabled
1 ; Flap detection is enabled
1 ; Failure prediction is enabled
1 ; Process performance data
1 ; Retain status across restarts
1 ; Retain non-status info across restarts
check-host-alive
10
0
24x7
d,u,r
admins
0 ; DONT REGISTER THIS DEFINITION!

77

A hlzati szolgltatsok monitorozsa: Nagios


Ez alapveten jl is van, csak a kvetkez tblzatot nzzk t a belltsok testre szabsra. A
gpeknek nagyon sok paramtert lehet belltani, amiknek a mdostsra leggyakrabban szksg van:
host_name

A gp neve, ez fog megjelenni a felleten s az rtestsekben

address

A gp IP cme, ez szinte minden ellenrz parancs defnci els paramtere lesz

hostgroups

A gp (vagy minta) gp-csoportjainak neve

check_interval

Ellenrzsek idkze idegysgben (a nagios.cfg-ben megadot


interval_length adja meg az idegysget, alaprtke 60 msodperc)

max_check_atempts jra ellenrzsek szma hibajelzs elt


retry_interval

jra ellenrzsek idkze ha a gp nem Up llapot

check_period

Az ellenrzsek intervalluma, rszletesebben sz volt rla az rtestseknl

contacts

A gpet felgyel felhasznlk vesszvel elvlasztot listja

contact_groups

A gpet felgyel csoportok vesszvel elvlasztot listja

notifcation_interval

rtestsek idkze idegysgben. Alaprtke 0, mely azt jelenti, hogy


nincs jra rtests. Ez a bellts nem javasolt. Jobb vlaszts az 1440,
mely egy nap.

notifcation_period

rtestsek id intervalluma

notifcations_enabled Az rtestsek engedlyezetek-e. Ha tmenetileg ki akarjuk kapcsolni az


rtestseket, akkor 0-t kell belltani.
A gpeket csoportokba lehet rendezni, gy a gpek hasonl jellemzi alapjn lehet egy helyen
megadni pldul a hozzjuk tartoz felhasznli csoportokat ( hostgroup_members) s ksbb a
rajtuk fut szolgltatsokat egyetlen Nagios konfg belltssal ellenrizni, valahogy gy:
define service{
hostgroup_name HOSTGROUP1,HOSTGROUP2,...,HOSTGROUPN
service_description
valamiszolgltats
egyb szolgltats belltsok ...
}

Szolgltatsok ellenrzse
A szolgltatsok a korbban megadot gpeken elrhet ellenrzend szolgltatsok, melyek lehetnek valamely helyben ellenrizhet jellemzk (pldul memria foglaltsg, egy folyamat futsa, a diszkek llapota stb.), llapot vagy trtnet informcik (van-e belpet felhasznl,
megfelelen mkdnek-e a RAID tmbk, volt-e jrabootolva a szerver az utols kzi ellenrzs
ta stb.) valamint hlzati szolgltatsok letkpessge s egyb jellemzi. Az alaptelepts utn
gy nz ki egy szolgltats minta:
-- generic-service_nagios2.cfg
define service{
name
active_checks_enabled

generic-service ; The name of template


1 ; Active service checks are enabled

78

A hlzati szolgltatsok monitorozsa: Nagios


passive_checks_enabled
parallelize_check
obsess_over_service
check_freshness
notifications_enabled
event_handler_enabled
flap_detection_enabled
failure_prediction_enabled
process_perf_data
retain_status_information
retain_nonstatus_information
notification_interval
is_volatile
check_period
normal_check_interval
retry_check_interval
max_check_attempts
notification_period
notification_options
contact_groups
register

1 ; Passive checks are enabled/accepted


1 ; Active checks should be parallelized
1 ; We should obsess over this service
0 ; NOT check service 'freshness'
1 ; Service notifications are enabled
1 ; Service event handler is enabled
1 ; Flap detection is enabled
1 ; Failure prediction is enabled
1 ; Process performance data
1 ; Retain status info across restarts
1 ; Retain non-status info across restarts
0 ; Only send notifications on status change
0
24x7
5
1
4
24x7
w,u,c,r
admins
0 ; DONT REGISTER THIS DEFINITION!

A szolgltatsok leggyakrabban lltand paramterei:


service_description

A szolgltats lersa, ez fog megjelenni a felleten s az rtestsekben

host_name

A szolgltatst tartalmaz ellenrzend gpek nevei vesszvel elvlasztva

hostgroup_name

Az ellenrzend gpcsoportok nevei vesszvel elvlasztva

check_command

It adjuk meg, hogy mely parancs segtsgvel lehet ellenrizni az adot


szolgltatst. Pldkat lsd lent!

active_checks_enab- Ezzel tmenetileg tilthat az ellenrzs. 0 - tiltva, 1 - engedlyezve


led
check_interval

Mint a gpeknl

max_check_atempts Mint a gpeknl


retry_interval

Mint a gpeknl

check_period

Mint a gpeknl

contacts

Mint a gpeknl

contact_groups

Mint a gpeknl

notifcation_interval

Mint a gpeknl

notifcation_period

Mint a gpeknl

notifcations_enabled Mint a gpeknl


A szolgltatsok lehetsges llapotai:
O, OK

rendben

W, WARNING

veszly

79

A hlzati szolgltatsok monitorozsa: Nagios


C, CRITICAL

kritikus

U, UNKNOWN
ismeretlen
Ha egy szolgltats llapota megvltozik, akkor a belltot felhasznlk vagy csoportok rtestst kapnak s a felleten az adot szolgltats piros sznnel jelenik meg.

Tvol ellenrizhet szolgltatsok


Ahogy arrl mr korbban is sz volt, a tvoli ellenrzsek elvgzse az NRPE kiegszt modul
segtsgvel lehetsges. Mkdse a kvetkez. A tvoli, vizsgland szerveren telepteni kell az
NRPE szerver komponenst (nagios-nrpe-server csomag), valamint a szksges Nagios ellenrz
modulokat (nagios-plugins csomag s bartai). Ekkor a vizsgland gpen alaprtelmezeten az
5666-os porton fgyelni kezd az NRPE szerver. A felgyeleti szerveren van egy NRPE ellenrz kliens modul (check_nrpe), mely a vizsgland szerver megadot portjra kapcsoldik, a kommunikci SSL titkostssal zajlik, s a vizsgland szerveren belltot (szabadon konfgurlhat)
vizsgl parancsok valamelyikt lefutatja. Erre az NRPE szerver (mely a vizsgland gpen fut)
lefutatja az adot parancshoz tartoz, elre belltot Nagios ellenrz modult a konfgjban elre
megadot paramterekkel, majd az eredmnyt hlzaton visszaadja az NRPE ellenrz modulnak.
Teht a felgyeleti szerver _nem tud_ tetszleges parancsot vgrehajtani a vizsglt szerveren, de
mg a paramterezst sem tudja megvltoztatni. Kizrlag az elre belltot ellenrzsek valamelyikt krheti.
A vizsglt gpen fut NRPE szerver konfgja gy nz ki:
--- /etc/nagios/nrpe.cfg
pid_file=/var/run/nrpe.pid
server_port=5666
nrpe_user=nagios
nrpe_group=nagios
# localhost es a felugyeleti szerver
allowed_hosts=127.0.0.1,192.169.1.42
# Tilos a parameterek atvetele es feldolgozasa! Biztonsagi okbol
#
SOHA nem szabad engedelyezni!!!11
dont_blame_nrpe=0
debug=0
command_timeout=60
connection_timeout=300
command[check_apt]=/usr/lib/nagios/plugins/check_apt
command[check_users]=/usr/lib/nagios/plugins/check_users -w 1 -c 4
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_disks]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -e
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
include=/etc/nagios/nrpe_local.cfg

80

Mentsek s archivls

Mentsek s archivls
Az taln senki szmra nem vitathat tny, hogy adatmentsnek, azaz biztonsgi mentsnek
minden rendszer alat lennie kell. Az is fontos, hogy a ments automatikusan, beavatkozsmentesen trtnjen, ugyanakkor szintn fontos, hogy a mentsek rendszeresen ellenrizve is legyenek,
hiszen ha nyugodtan bzunk egy mentst vgz 5-6 ves hjprogramban (shell szkript), amit sosem ellenriztnk le, akkor kellemetlen meglepetsek rhetnek minket, amikor el kell venni a
rgi, megbzhatnak gondolt mentst, s kiderl, hogy egy adatbzist vagy egy knyvtrat mgsem kvetnk le. A Linux-alap rendszerekre szmos kivl mentsi keretrendszer s hjprogram
rhet el. Gyakorlatilag a legtbb a unixos alapokkal rendelkez cp, tar 85, cpio86 programokat
hasznlja, amelyek minden Linux rendszer standard tartozkai. Msok az rsync 87-et s az SSH-t
kombinljk, ezzel teszik lehetv a biztonsgos tvoli menthetsget is.

A fbb mentsi mdszerek


Teljes ments: ilyenkor a rendszer minden adata mentsre kerl, vlogats nlkl. Elnyre,
hogy pldul egy lemezkp kszthet a szerver aktulis llapotrl, amely egyszeren visszallthat (gyakran csak a rendszertltt (boot loader) vagy mg azt sem kell helyrerakni). Htrnya: srlkeny s idignyes.
Inkrementlis ments: Hasznlata sorn csak a vltozsok mentdnek, azaz lekpeznk egy nulls mentst s a megvltozot llapotokat mentjk. Ennek a mentsnek 2 alfajtja van: a kumulatv s a diferencilis ments.
Kumulatv ments: alkalmazsa esetn mindig az utols teljes ments ta megvltozot adatok
kerlnek mentsre. Adatvltozs esetn csak a vltozst menti, viszont azt minden esetben.
Elnye, hogy jval gyorsabb a teljes mentsnl, s kevesebb a terletignye is.
Diferencilis ments: ebben az esetben csak az utols inkrementlis ments ta megvltozot
adatokat mentjk. Elnye, hogy a leggyorsabb stratgia. Htrnya, hogy az els ments s
az sszes kvet ments szksges hozz, azaz a leginkbb srlkeny az adatstruktrt illeten.
A mentsi eljrsok kt irnybl hajthatk vgre. A szerver vgezhet adat tolst a ment egysg (szerver, NAS, szalag) fel, illetve a ment egysg/szerver is kezdemnyezheti a mentsi folyamatot, ilyenkor maga fele hzza az adatokat. A kt mdszer kzt fknt biztonsgi klnbsg
van. Ha a backup szerver hzza maga fel az adatot, akkor azt a szervert kell gy kialaktani, hogy
biztonsgos legyen. Ilyen esetben az les szerverre val betrs esetn a backup szerver kevsb
srlkeny, mint fordtva.

1 85. http://www.gnu.org/software/tar/
1 86. http://www.gnu.org/software/cpio/
1 87. http://en.wikipedia.org/wiki/Rsync

81

Mentsek s archivls

A legfontosabb teendk a ments kialaktsban


Felmrs: sszerni a mentend szofverkrnyezet kialaktst. Eldnteni, hogy az adot ment
szofver alkalmas-e vals idben menteni az adatbzisunk (szksges-e ez egyltaln), illetve
pontosan mit s mikor clszer mentennk. Pldul: rdemes-e minden nap menteni a teljes
fjlrendszert, mindenfle ideiglenes llomnnyal egyt, vagy elg csak aktualizlni. Fontos
gondolni a Disaster recovery-re88 (katasztrfa-helyrellts) is, amikor akr az egsz gpterem
elpusztulhat. Ismert ilyen plda, amikor a WTC89 egyik pletben volt az les alkalmazs szerver s a 2. toronyban pedig a backup. Termszetesen ez nem minden nap elfordul lehetsg,
de szmtsba kell venni a felmrs folyamatban. Fel kell tenni magunknak a krdst, hogy az
adataim hinya, mekkora krt okoz, illetve mekkora sszegbe kerl egy RAID tmb visszalltsa az erre szakosodot szervizben.
Tervezs::: a felmrsre alapozva vzlatosan lerjuk a tmasztot ignyeinket. Betervezzk, milyen gyakran, milyen idsvban lesz lehetsg futatni a mentst. Sztvlasztjuk a tvoli, a szalagos s a helyi mentseket. temezzk azokat, hogy ne fussanak egymsra. A mentsi
hzirend fgyelembe vtele, ha mr van ilyen, ha nincs akkor rjunk.
Kivlaszts::: Az 1-2 pontok alapjn kivlasztjuk a megfelel szofvert, amely a lersa alapjn
alkalmas lesz a munkra.
Meivalsts::: A kivlasztot szofverek segtsgvel felptjk a mentsi rendszert.
Tesztfutats: Leteszteljk a mr elkszlt mentst. Megnzzk a lehetsges eseteket s azok
befolyst a mentsnkre. Elg szalag ll-e rendelkezsre, mkdik-e az rtestsi rendszer,
amely tudatja velnk, ha elfogyot a szalag, vagy nincs elg trterlet. Egy hres mentsi baki,
amikor az egyik ismert banki krtyarendszer teljes hlzata azrt llt meg karcsony elt, mivel az automata leejtete a cserlend szalagot s a ments nagyobb prioritst lvezet, mint
maga az les zem. Gyakran hiba lltjuk ssze a legjobb ment eszkzt, s lltjuk be jl, ha
egy hibsan belltot e-mail cm, vagy egy blokkolt SMTP szolgltats lehetetlenn teszi, hogy
az rtests eljusson hozznk, akkor hiba volt minden. Figyeljnk arra, hogy a ments lehetleg olyankor fusson amikor szksges, de a ments ne zavarja az les zemeltetst.
Ellenrzs::: A ments elkszltvel fontos, hogy egy prba rendszeren vgezznk egy teljes
visszalltst, s nzzk meg, 100%-ban visszallthat-e minden csak a backupra tmaszkodva.
Ellenrzs temezse: legyen a havi/negyedves/flves/ves rutin rsze, hogy teljes rendszervisszalltst vgznk, csakgy mint ahogy akr naponta-hetente megnzzk, hogy a ments
rendben ment-e. rdemes a ments ltal ksztet sszegz naplt monitorozni.

1 88. http://en.wikipedia.org/wiki/Disaster_recovery
1 89. http://hu.wikipedia.org/wiki/Vil%C3%A1gkereskedelmi_K%C3%B6zpont

82

Mentsek s archivls

Szoftverek a ments megvalstsra


DD90
Az egyik legrgebbi Unix eszkz pldul a teljes lemezduplikcira. Felhasznlsi terlete szlesebb a mentseknl, azonban egy egyszer klnozs esetben megoldst jelenthet, fenntartsokkal.

Tar, CP, CPIO


Az opercis rendszerek alapvet kellktra. Hjprogramok segtsgvel hasznlhat mentsre,
akr kazets egysg vezrlsre is. nmagukban nagyon hasznosak, de egy modern rendszerben
a rjuk pl programokat hasznljuk inkbb.

Partimage91
Egy konzol alap lemezklnoz eszkz. A dd-hez nagyon hasonl, azonban kpessgei alapjn
nem mondhat egy sima dd-nek. Kezelse egyszer, egy prbeszdablakos felleten lehet kivlasztani a mentend terletet s azt, hogy hova mentsen. Tud titkostani s darabolni is, valamint
hlzati mentst csinlni. Htrnya, hogy csak offlline rendszert lehet vele menteni, clszeren
egy live CD-vel. Szerver lemeznek kltztetse esetn, vagy hardvercsere esetben j megolds
lehet, illetve munkallomsok klnozsra is. Rendelkezik llapotfgyelvel, s szmos lehetsget
nyjt a tmrtsre, darabolsra is. Ugyanakkor alap szint lemez duplzsra remek megolds,
azaz ha elksztetnk egy szervert (pldul egy tzfalat, amelyen j esly van r, hogy hossz tvon fknt az iptables konfgurcis llomnynak a vltozst kell lekvetni, vagy pldul egy
telefonkzpont Asterisk) s mindenkppen szksges egy hideg backup belle, akkor egy tkletes eszkz a partimage. Akr egy Ubuntu Live pendrive vagy CD-vel beindtjuk a gpet, gy
hogy a msoland (forrs) s a cl merevlemez is benne van a gpben, majd a Partimage prbeszdablakban kivlasztjuk, mit szeretnnk csinlni, s kszen is vagyunk. Fut (les rendszert) rtelemszeren gy nem tudunk menteni, de akr arra is hasznlhat, ha kliens parkot kell
ltrehoznunk, azaz adot 200 db ugyanolyan PC, s mindegyikre fel kell telepteni ugyanazt a terjesztst. Teleptse rendkvl egyszer:
apt-get install partimage

1 90. http://en.wikipedia.org/wiki/Dd_(Unix)
1 91. http://www.partimage.org/Main_Page

83

Mentsek s archivls

Rsync92
Az rsync idelis eszkz gpen belli szinkronizcira, termszetesen lehetsg van tvoli elrsre is, akr ssh-n, akr rsyncd-n keresztl. A legtbb backup megolds alapeszkzknt hasznlja,
msok kiegsztknt, illetve pr megolds kifejezeten az rsyncre alapozva igazbl csak egy kezelfellet. Paramterezhetsge nagyon szles kr, taln pont ezrt kszlt annyi eszkz, amely
leegyszersti a vezrlst (pldul: grsync). Elnye a tbbi hozz kpest sokkal egyszerbb (cp,
tar stb.) programmal szemben, hogy a szmtalan lehetsg miat rugalmasan kezeli pldul, ha a
forrs nagyobb mint a cl lemez terlete, akkor nem rja tele a clt stb. ltalban hjprogram formjban vagy beptet eszkzknt hasznljuk. Az rsync segtsgvel nem csak gyorsabban tudunk menteni, hanem a specilis delta kdolsnak ksznheten csak a vltozsokat fogja tvinni
egyik helyrl a msikra. Ennek klnsen szk hlzati keresztmetszetek kzt van nagy jelentsge, vagy pedig pldul, ha egy 1 GB-os lemezkpben csak 2 MB tartalom vltozik meg, akkor
az rsync delta technolgia segtsgvel nem a teljes 1 GB-ot fogja lementeni, hanem egy sszehasonlt vizsglat utn csak a vltozst azaz jelen esetben a 2 MB-ot fogja aktualizlni. A legtbb terjeszts tartalmazza alap szerver kiptsben, de telepthetjk az
apt-get install rsync

parancs kiadsval. A legtipikusabban hasznlt paramterezse a kvetkez:


rsync -av /forrs/ /cl/

ahol a -a az archv ksztse, a -v pedig a rszletes nzet. Ezt aztn kiegszthetjk szmtalan hasznos paramterrel is, pl:
rsync -r -t -p -o -g -v --progress --delete -l -H /cl/ /forrs/

Az Rsync loklis hasznlta esetn elfordulhat, hogy pldul egy igen gyors SSD lemezrl msolunk egy USB1 vagy USB2 szabvnyon csatlakoz akr Flash memrira, vagy merevlemezre. Ez
persze fknt othoni hasznlatban fordulhat el, de szerveren bell is megeshet, hogy a klnbz lemez alrendszerek ms-ms sebessggel mkdnek. Ilyen esetben s fknt a tmegesen elfordul kis llomnyok szinkronizlsa esetn elfordulhat, hogy feltorldnak az I/O mveltek, s
ezrt emelkedni kezd a rendszerterhels (load), fogyni kezd a memria, szlssges esetben mr
trcsert (swap) kezd a rendszer. Ez pedig biztos t az sszeomls fel. Az ilyen sszeomlsok el1 92. http://rsync.samba.org/

84

Mentsek s archivls
kerlsre kt eszkz hasznlata javasolhat, az egyik egy monitoroz eszkz, amely a top programhoz hasonlan kpes megjelenteni s rendezni azokat a fut folyamatokat, amelyek az I/O
terhelst okozzk. A program neve iotop,93 teleptse s hasznlata is igen egyszer:
apt-get install iotop

s akr csak a top program esetn, csak indtsuk el. A msik segdeszkz, amely hasznos lehet egy
esetlegesen rsync ments kivitelezshez, az ionice 94. Teleptse:
apt-get install ionice

Az ionice s iotop programok rszletes ismertetsvel a tuningols fejezet foglalkozik.

Rsnapshot95
Szintn rsync s SSH alapokon nyugv mentsi eszkz. Jval fejletebb lehetsgeket tartogat,
mint az eddigi eszkzk. Alkalmas teljes fjlrendszer mentsre megszortsokkal (boot loadert
nem tud menteni, illetve futsi idben pldul adatbzist sem). Egyszer paramterezhetsg s
knnyen tlthat konfgurci jellemzi. Rugalmas eszkz, mivel kpes loklis mentst vgezni
(alapesetben a diferencilis mentst tmogatja), az indulsa cronbl temezhet, vagy szkriptelhet. Ltrehoz egy zrol llomnyt, amely jelzi az esetlegesen rfut kvetkez rsnapshotnak,
hogy mg az elz ments fut, ezzel elkerlve az esetleges feltorldst s tkzst. Egyt tud mkdni az SSH-val is, gy lehetsg van arra, hogy egy tvoli backup szerver (amelynek csak ez a
feladata s kellen biztostot) kezdemnyezze a mentst SSH-val. De termszetesen megoldhat
valamilyen hlzati fjlrendszeren keresztli ments, illetve kls illeszts merevlemezre is. Nagyon hasznos funkcija, hogy a konfgurcis llomny az Apache-hoz hasonl szintaxis-ellenrzssel rendelkezik, vagyis az rsnapshot configtest parancs segtsgvel tesztelhetjk az esetlegesen
a szintaxissal tkz parancsokat, eltseket. gy nem az les ments lefutsa kzben fog kiderlni a problma. Kln naplllomnyt kszt, amelyben jl kvethet a tevkenysge. A mentst
elklnteten egy erre meghatrozot terleten kezeli, ahol a megadot intervallumtl fggen
kszti el a knyvtrstruktrt. Az els alap ments elksztse jval lassabb, a tovbbi inkrementlis mentsek mr gyorsabbak, melyeket linkek segtsgvel kt ssze. Az aktulis llapotok pedig hourly, daily, weekly, monthly cmkvel kerlnek trolsra. Termszetesen egy konfgurcis
llomnyban felsorolhatjuk az rnknti, napi, heti, havi mentsek struktrjt is. Kivtelkezelse
knnyen paramterezhet (az rsync hasznlatnak ksznheten). Kln csak erre a feladatra
fenntartot ment szerver esetn (megfelelen vdet backup szerver) jl automatizlhat a ments teljes folyamata az SSH kulcs alap megoldsval. Ebben az esetben a backup szerver kezdemnyezi a kapcsolatot SSH-n keresztl. Annak rdekben, hogy mindent le tudjon menteni, root
hozzfrs szksges (a legtbb esetben), amely tvoli elrsre norml esetben nem lenne biztonsgos. Ezrt az SSH szerver kvetkez konfgurcivltoztatsa javasolt : hasznljuk a
PermitRootLogin=forced-commands-only

opcit a root tvoli hozzfrshez. Majd ksztsk el a root SSH-kulcsprjt jelsz nlkl, hogy a
hjprogram ne krjen majd jelszt. Vlasszuk megfelelen nagy (4096 bjt vagy e feleti) kulcs ksztst. Az les mentend szerveren a /root/.ssh/authorized_keys llomnyba msoljuk be a publikus kulcsot a kvetkez kiegsztssel:
from="172.20.1.10",command="/etc/validate-rsync"
1 93. http://guichaz.free.fr/iotop/
1 94. http://manpages.ubuntu.com/manpages/precise/man1/ionice.1.html
1 95. http://www.rsnapshot.org/

85

Mentsek s archivls
ezt kzvetlenl a legels karakter helyre illesszk be, utna kezddjn a kulcs. Az IP-cm helyn
a backup szerver IP-cme legyen. Az /etc/validate-rsync hjprogramba pedig rakjuk be azokat a
korltozsokat, amelyek segtsgvel minimalizlni tudjuk a root SSH hasznlatt. Pontos lista is
elrhet az egsz mentsi mdszer rszletes lersval egyt. 96 Mint lthat, az rsnapshot egy
komplex hjprogram-keretrendszer, amely egyszerv teszi a strukturlt mentst. Azonban teljes
visszallts csak az alap opercis rendszer jrateleptse utn lehetsges egy esetleges teljes
adatveszts utn. Idelis eszkz teht nem HA rendszerek mentshez. Valamint gondoskodni kell
az adatbzis kln mentsrl, hiszen futsi idben erre az rsnapshot konzisztensen nem kpes.
Esetnkben az /etc/validate-rsync llomny tartalma a kvetkez volt:
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
*\|*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac

Amanda Backup97
Kliens-szerver felpts menteszkz, kpes Windows rendszereket is menteni. Windows esetn a Cygwin csomag, vagy Samba megoszts vagy pedig sajt kliens segtsgvel vgezhet el a
ments. Teljesen szerver alap mkds, elre defnilhat adatrolk, amelyek lehetnek lemezrl lemezre, lemezrl kazetra, illetve lemezrl felh alap trterletre val mentsek is. Eredetileg kezdetben kazets mentsek kialaktsra terveztk, ezrt amikor merevlemez alap mentst
1 96. http://troy.jdmz.net/rsync/#ref2
1 97. http://www.amanda.org/

86

Mentsek s archivls
defnilunk, akkor virtulis szalagokkal operlva a merevlemezen hoz ltre alknyvtrakat. A virtulis szalagok defnilt mrett s darabszmt nem lpi t gy sem. Igazi elnye, hogy nem kell
statikus tervet kszteni, meg kell neki adni, hogy hny darab teljes mentst illetve mennyi inkrementlist fogunk kszteni. Rgztjk a felhasznlhat szalagok szmt. Az Amanda ments elejn
kiszmolja, hogy a mentend knyvtrak vagy inkrementlis mentseihez aktulisan mennyi
helyre van szksg s nllan eldnti, hogy az adot mentsbe milyen knyvtr milyen szinten
kerljn bele. Ha rendelkezsre ll hely, akkor elre hozza a teljes mentseket, ha pedig kifut a
helybl, akkor kslelteti s a naplba fgyelmeztetseket r. Az Amanda teleptsnek fontos rsze
az openbsd-inetd csomag is. Mivel titkostst alapesetben nem hasznl a tvoli gpre val ments
esetn, ezrt rdemes VPN-t vagy a kln konfgurlhat amcrypt-et98 hasznlni a nylt hlzatokon. Bels gpek mentsre titkosts nlkl is jl hasznlhat. Mivel az Amanda tbb TCP s
UDP portot hasznl s nyit, ezrt rdemes a tzfalunkat felkszteni a fogadsra mind a kt gpen, amennyiben a kialaktsunk ezt szksgess teszi. 99

Bacula100
Szintn keresztplatformos biztonsgi mentst lehet megvalstani vele. Ltezik hozz Linux,
Windows s OS X al kliens program, amelyeknek konzol alap, GTK+ fellet s wxWidgets
grafkus varinsai lteznek. Legfbb erssge, hogy elosztot mkdsre kpes, azaz klnbz rszekbl ll, amelyeket kln gpekre telepthetnk. F komponensei:
Director daemon (director): vgzi a rendszer irnytst, kapcsolatot tart a tbbi dmonnal,
kommunikl a klnbz grafkus felletekkel, idzti a mentseket, aktualizlja a katalgust.
Storage daemon (sd): kzvetlenl a ment egysgekkel (szalagos meghajt, HDD, DVD) tartja a
kapcsolatot, kezeli a director olvassi/rsi krseit, illetve fogadja az FD-tl (lsd albb) rkez
mentet adatokat.
File Daemon (FD): feladata a mentend szerverek s asztali gpek mentend adatainak begyjtse, tmrtse, titkostsa, majd az adatok tovbbtsa a kijellt SD-nek. Valamint a viszszalltsnl mindezt visszafel irnyban is elltja.
A Bacula egy kzponti katalgusban trolja a mentet llomnyokat s a fjlt tartalmaz ktet
nevt, a ments idpontjt, valamint egyb adatokat is, segtve s gyorstva ezzel az esetleges viszszalltst. Nagy elnye, hogy szinte mindenre kiterjeden konfgurlhat, gy megoldhat az is,
hogy a ments indulsa egy tetszleges egyedi hjprogram futatsval kezddjn, pldul egy
adatbzismentst (MariaDB, MySQL, PostgreSQL dump) kezdemnyezve. Egy igazi komplex
megolds, amely a titkostsa s az elosztot mkdse miat a nagyvllalati felhasznlsra is alkalmass teszi101.

Dirvish102
Szintn szerver alap menteszkz, amely tmaszkodik az rsync s a Perl kpessgeire. Tudsa
nagyban hasonl az Amanda, vagy a Bacula lehetsgeihez, konfgurlsa npszersge s a fel-

1 98. http://wiki.zmanda.com/index.php/How_To:Set_up_data_encryption
1 99. http://wiki.zmanda.com/index.php/How_To:Set_Up_iptables_for_Amanda
1100. http://www.bacula.org/en/
1101. http://sugo.ubuntu.hu/10.10/html/serverguide/hu/bacula.html.
1102. http://www.dirvish.org/

87

Mentsek s archivls
lelhet dokumentci miat taln knnyebb 103. Ugyangy kezeli a legtbb nagyvllalati szalagos
eszkzt s lehetsg van egyb pldul merevlemez mentsre is. Az adatbzis mentseket egy
ments indtst megelz Perl vagy hjprogrammal lehet megoldani akr Oracle, PostgreSQL,
MySQL vagy egyb adatbzis-kezel esetn is. A kliens-szerver alap ments termszetesen futhat
SSH megoldssal104, gy biztostva a tvoli gpek kzt az adatbiztonsgot ments esetn. Teleptst a megszokot mdon az apt-get segtsgvel kezdjk meg:
apt-get install dirvish ssh

A telepts menete a Pull vagy Push (utols bekezdsek) alapjn ltalunk kvetendnek tekintet felptst elemzi, azaz a kzpontilai vdet s elklntet backup szerver tud csatlakozni az sszes klienshez, de a kliensek nem tudnak csatlakozni kzvetlenl hozz.
Az alap konfgurcis llomny mintkat a /usr/share/doc/dirvish/examples knyvtrban talljuk. Clszeren innen elsnek a master.conf-ot msoljuk t a /etc/dirvish/master.conf helyre. Akkor valami ehhez hasonlt fogunk ltni:
bank:
/backup
exclude:
/etc/mtab
/var/lib/nfs/*tab
/var/cache/apt/archives/*.deb
.cache/*
.firefox/default/*/Cache/*
/usr/src/**/*.o
lost+found/
Runall:
eles1.szerver
21:00
eles2.szerver
23:00
expire-default: +15 days
expire-rule:
#
MIN HR
DOM MON
*
*
*
*
1
+3
#
*
*
1-7 *
#
*
*
1-7 1,4,7,10
*
10-20 *
*
*
+4
#
*
*
*
*

DOW STRFTIME_FMT
months
1
+1 year
1
days
2-7 +15 days

Nzzk meg pontosan, mi mire val:


A master.conf-ban azokat a vltozkat fogjuk belltani, amelyek az sszes mentend gpre vonatkozni fognak, valamint it defniljuk azokat a gpeket is, amelyeket menteni akarunk. rtelemszeren vagy hozzuk ltre a /backup knyvtrat 700-as jogokkal root:root felhasznlknt,
vagy rjuk t arra a knyvtrra, ahova menteni akarunk. A bank vltozval hatrozhatjuk meg,
hogy a program hol trolja a tnyleges mentseket.
Az exclude paramterrel azokat a knyvtrakat hatrozhatjuk meg, amelyeket nem akarunk
menteni, azaz ki akarjuk zrni ket a teljes mentsbl. Mint az lthat, megadhatjuk abszolt s
relatv mdon is. gy vonatkozhat az sszes .firefox/ alat lv Cache knyvtrra is, de explicit ki1103. http://www.googlux.com/dirvishconfig.html
1104. http://apt-get.dk/howto/backup/

88

Mentsek s archivls
zrhatjuk a /lost+found/-ot is. Ezek a paramterek kzpontilag fognak vonatkozni az sszes ksbb
defnilt hostra, amelyet menteni fogunk, gy ot mr nem kell kln ezeket felsorolni.
A Runall paramterrel azt mondjuk meg a programnak, hogy az egyes gpek mentst mikor
futassa, ide tudjuk felsorolsszeren befzni a gpeinket, amelyeket a bank knyvtr al ltre is
kell hozni. Azaz, ltre kell hozni a /backup/eles1.szerver s a /backup/eles2.szerver knyvtrakat
is.
Az expire-default s expire-rule paramterekkel az elvlsi idt hatrozhatjuk meg, azaz az egyes
mentseket meddig tartsa meg, s mikortl kezdje fellrni.
Hogy tovbb tudjunk lpni, a /backup/eles1.szerver al ltre kell hoznunk egy dirvish knyvtrat
s abban elhelyezni egy default.conf fjlt. Az elrsi tja gy nzzen ki:
/backup/eles1.szerver/dirvish/default.conf
a tartalma pedig a plda kedvrt legyen a kvetkez:
client: eles1.szerver.kft
tree: /
index: gzip
image-default: %Y-%m-%d
xdev: 1
exclude:

/var/spool/squid/

rtelemszeren a client paramternl megadjuk a mentend les szerver hostnevt vagy IPcmt, ahova a dirvish root felhasznlval fog csatlakozni. A tree paramter pedig megmondja,
hogy honnan indtjuk a ments. Jelen pillanatban az egsz fjlrendszert szeretnnk menteni, gy
a / kerlt oda. Az image-default paramterrel meghatrozzuk a bank megfelel alknyvtrban,
milyen struktrt ptsen, gy az aktulis dtum lesz az IMAGE neve, azaz pldul 2013-10-17. Az
xdev opci 1-re val lltsval megmondjuk az rsync-nek, hogy a tvoli gpen csatolt sszes lemezt mentse le.
Ha ezzel megvagyunk, akkor mivel ez egy idztet ments biztostani kell, hogy a root felhasznl jelsz nlkl tudjon csatlakozni. A legjobb s egyben biztonsgi szempontbl is elfogadhat kompromisszumos megolds erre, ha a mentend szerver root felhasznlja szmra
ltrehozunk egy megfelel SSH kulcsot, amely nem kr jelszt, a kvetkezkppen:
ssh-keygen -t rsa -b 8192 -C elesszerver

majd megadjuk neki, hogy mi legyen a kulcsllomny neve:


Enter file in which to save the key (/root/.ssh/id_rsa): /root/elesszerver1

A kvetkez krdsre, azaz mi legyen a kulcs jelszava, csak egy Entert nyomunk:
Enter passphrase (empty for no passphrase):

Az gy elkszlt kulcs hasznlata esetn nem fog jelszt krni az SSH kliens, gy a dirvish sem,
de nzzk mit kell mg tennnk, annak rdekben, hogy ez mkdjn:
a /root/.ssh/confg llomnyt szerkesszk (a backup gpen), s oda vegyk fel a kvetkez sorokat:
Host *
ServerAliveInterval 60
ServerAliveCountMax 10

89

Mentsek s archivls
Host eles1.szerver
IdentityFile /root/elesszerver1
Port 22
Protocol 2
User root
HostName 172.27.1.1
PasswordAuthentication no

Ha ezzel megvagyunk, akkor az les szerverre fel kell jutatni az elksztet SSH-kulcs publikus
rszt, teht pldul scp-vel msoljuk azt oda:
scp /root/elesszerver1.pub root@eles1.szerver.kft:.ssh/authorized_keys

Teszteljk is le a backup gprl indtot ssh parancs segtsgvel, hogy minden rendben van-e,
azaz beengedtk a tzfalon, az SSH engedi a root hozzfrst, stb.:
ssh -i /root/elesszerver1 root@eles1.szerver.kft

Ha sikerlt bejutnunk, akkor mr csak annyi a dolgunk, hogy a dirvish-t is inicializljuk:


dirvish --vault eles1.szerver --init

Az elksztet konfgurci alapjn a dirvish az SSH-n keresztl lementi a kivtelek kezelse


mellet az egsz gpet. Majdnem kszen is vagyunk, most mr csak az olyan dolgokat kell mg
mentennk, amelyeket futsi idben nem clszer. Ilyen tipikus plda az SQL szerverek (MySQL,
MariaDB, PostgreSQL stb.), ezeket nem csak nem clszer futsi idben egy egyszer cp vagy
rsync segtsgvel msolni vagy szinkronizlni, hanem felesleges is, mivel tipikusan egy nyitot
adatbzisba a mentsi id alat is rnak, azaz a tartalma vltozik. Az aktulis llapotokat az ilyen
esetben rdemes a Dirvish segtsgvel vagy Pre, vagy Post szkriptek rsval 105, vagy pedig elre
temezet SQL ments segtsgvel a sajt segdeszkzeikkel dumpolni, majd a konzisztens s
ments rtk dump llomnyokat akr fjlrendszer szinten mr menteni s verzikvetni. De
nzznk konkrt pldkat:
Jelen esetben mivel a MySQL s a MariaDB teljesen kompatibilisek (lsd bvebben az Adatbziskezelk106 fejezetben) a mentsi parancsok s tervezs sem fog eltrni, ezrt a tovbbiakban csak
SQL-nek fogjuk hvni a MariaDB-t s MySQL-t. Ez a mentsi megolds felttelezi, hogy az adatbzis-szerver kln szerveren szeparlva tallhat, gy temezeten a cron segtsgvel s egyedi
szkript rsval ksztjk el az SQL mentst, nem a dirvish adotsgaira tmaszkodunk.
Az SQL adatbzisok mentsre tbb megolds is adot. Egyrszt van a hagyomnyos t, amikor
a mysqldump-ot hasznljuk, vagy rendelkezsre ll egy hotcopy nev kiegszts, amelyet inkbb
csak a mysqldump mell, biztostkknt, vagy ms cl ments ksztsre talltak ki.
mysqldump107

Kifejezeten a konzisztens adatbzis-mentsre kihegyezet eszkz, a mysql csomag teleptsvel


a birtokosai lesznk az eszkznek. Termszetesen ugyangy szablyozhat az /etc/mysql/my.conf
fjlban a dump ltal hasznlt erforrsok egy rsze is, mint a sima MySQL csatlakozsok esetn.
1105. http://wiki.dirvish.org/ClientScriptsOnServer
1106. http://szabadszoftver.kormany.hu/szabad-szoftver-keretrendszer/
1107. http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

90

Mentsek s archivls
Loklis ments esetben a bevet mdszer, hogy a mysqldump parancsot egy szkript rszeknt
crontab-bl hvva egy olyan idintervallumban futatjuk, amikor a szerver gynevezet idle (resjrati, cscsterhelsen kvli) peridusban van. Az ilyen idszakok tervezsben nagy segtsgnkre lehet a munin, amelyrl a Naplzs, monitoring 108 fejezetben olvashatunk bvebben. Egy
egyszer ment szkript teht valahogy gy nzzen ki (az adatbzis-szerveren)
a szkript neve s elrsi tja: /backup/ment.sh
#! /bin/sh
/usr/bin/mysqldump --all-databases -pjelszo --events | /bin/gzip >
/backup/SQL/mysql-ALLDATABASE-$1.tgz
/usr/bin/mysqldump -p --skip-lock-tables information_schema | /bin/gzip >
/backup/SQL/openmail-mysql-information_schema-$1.tgz
/usr/bin/mysqldump -p --events mysql | /bin/gzip > /backup/SQL/openmailmysql-mysql-$1.tgz
/usr/bin/mysqldump -p website | /bin/gzip > /backup/SQL/openmail-mysqlwebsite-$1.tgz

Mint az lthat, az els sorban az sszes adatbzist kimentjk egy nagy llomnyba, majd mindent mg egyszer kimentnk egyenknt kln tmrtet llomnyokba is. Mirt szksges ez? A
gyakorlati tapasztalat azt mutatja, hogy ha csak mindent egy nagy llomnyba mentennk ki, akkor viszonylag nehezen frhetnnk hozz, ha csak egy adot rekordot trl le pl egy programoz a
weboldalunk adatbzis-llomnybl s csak arra van szksg, akkor elg csak azt az egy adatbzist visszadumpolni egy teszt adatbzisba. Viszont ha pldul egy korrupt fjlrendszer miat kell
teljes visszalltst vgeznnk, akkor clszer az egsz komplet mentst egyszerre visszatlteni
(--all-databases), hiszen ilyenkor minden relci (amelyek az information_schema, vagy mysql nev adatbzisban vannak trolva) visszatltdik. ppen ezrt, ha van r lehetsgnk (nyilvnvalan egy sok 100 GB vagy TB-os adatbzis mentst ne gy vgezzk) s lemezterletnk, akkor
mind a kt mdszerrel mentsnk. Az els inicializl mentst vgezhetjk a time parancs a ment
szkript el helyezsvel, hogy legyen fogalmunk arrl, az SQL motor ments krlbell mennyi
idt vesz ignybe:
time /backup/ment.sh

Figyeljnk r, hogy az SQL ments nha kpes hibkat visszaadni, gy a cron kimenete legyen
mindig egy olyan e-mail cmre irnytva, amelyet olvasunk is. Ugyanis annl, hogy nincs ments,
csak az rosszabb, ha azt hisszk, tkletes mentst ksztnk, de mr vek ta a /dev/null-ba irnytot hibazenetekkel fut a ments, amelynek esetlegesen az az eredmnye, hogy res vagy ppen hibs llomnyt mentnk. ppen ezrt clszer nha kicsomagolni az SQL ments
llomnyait vagy zless segtsgvel belenzni (persze csak ha nem sok GB nagysgak). Illetve clszer betervezni olyan napokat esetleg havonta vagy fl vente, amikor a teljes SQL motort egy
teszt krnyezetben jra felptjk a mentsbl.
Felmerlhet a krds, hogy mi van akkor, ha n az sszes adatbzist is menteni szeretnm egyben s
kln-kln az adatbzisokat, de nem rek r lekvetni, hogy ki mikor hoz ltre j adatbzist, de
miis szeretnm, hogy azok is benne legyenek a szeparlt mentsben?
Erre egy remek lehetsget ad a kvetkez szkript 109, amely a mysql show s a mysqldump tudst
hasznlja fel arra, hogy ha valaki ltrehozot a tudomsunkon kvl egy j adatbzist, akkor az is
biztosan le legyen mentve:
1108. http://szabadszoftver.kormany.hu/szabad-szoftver-keretrendszer/
1109. http://dev.mensfeld.pl/2013/04/backup-mysql-dump-all-your-mysql-databases-in-separate-files/

91

Mentsek s archivls
#! /bin/bash
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/backup/$TIMESTAMP"
MYSQL_USER="backup"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="jelszo"
MYSQLDUMP=/usr/bin/mysqldump
mkdir -p "$BACKUP_DIR/mysql"
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" |
grep -Ev "(Database|information_schema)"`
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases
$db | gzip > "$BACKUP_DIR/mysql/$db.gz"
done

Mysqlhotcopy110

A hotcopy egy remek megoldst knl olyan esetekre, amikor csak bizonyos rekordokat kell
visszalltanunk, vagy ppen muszj futsi idben az les szerveren menteni, de sok konkurens
rs/olvass miat a mysqldump zrolsos mentsi mdszere nem vrhat ki, vagy olyan lassulst
eredmnyezne, amely nem vllalhat futsi idben. Azaz ezt a mdszert fknt napkzbeni dupliklsra, vagy kzbens mentsre ajnljuk. Hasznlata csak az InnoDB 111 tpus adatbzis esetn
engedlyezet, viszont mivel ltalban ez az alapbellts, gy ltalnos esetben mkdkpes. A
kziknyve szerint online mentsnek hvjk, ugyanis nem zrolja az egsz adatbzist, hanem tblnknt hasznlja a lock, a flush s az unlock parancsokat, mikzben kimsolja llomnyba *.frm,
*.MYD, *.MYI llomnyokat. Hasznlhatjuk ugyangy szkriptben s cronbl meghvva:
mysqlhotcopy -u root -p jelszo dbneve /backups/SQL/HOTCOPY/ --allowold --keepold

Jellemzen a rendszergazdk az SQL ment szkripteket a /backup knyvtrban troljk, s onnan is hvjk meg. Kt fontos dolog amire rdemes fgyelni: a /backup knyvtr mindenestl csak
a root szmra legyen olvashat, rhat s bejrst (+x ) is csak szmra biztostsunk. A msodik
fontos tancs, hogy a backup szkriptet is mentsk. Egy esetleges tlls vagy adatveszts esetn
egy rendes backup szkript elksztse is sok munkart takarhat. Ezrt rdemes vagy tlinkelni az
/etc al, amit mentnk, vagy eleve ot trolni.
Dirvish pre szkript vagy temezett ments az SQL gpen?

A vlasz viszonylag egyszer: ha nem akarunk vagy nem tudunk trdni azzal, hogy kzzel temezzk be az SQL mentseket, akkor clszer post szkriptet kszteni, hiszen gy a mentsi folyamat fogja megszltani s utastani az SQL gpet a mentsre, majd ha az kszen van, akkor fogja
temelni a backup gpre a biztosan elkszlt mentst. Ha viszont az SQL gpen mr eleve knytelenek voltunk ms megfontolsbl lefutatni a mentst pldul hajnali 2-kor, mivel csak 2-3 kzt
vllalhat az, hogy egy ekkora kaliber terhels rje a gpet azaz ez a szempont fontosabb akkor ehhez kell igaztanunk a dirvish-t, s esetlegesen bepteni gynevezet jelzket a rendszerbe.
1110. http://dev.mysql.com/doc/refman/5.0/en/mysqlhotcopy.html
1111. http://dev.mysql.com/doc/refman/5.0/en/innodb-storage-engine.html

92

Mentsek s archivls
Azaz, ha valamirt (nem vrt lassuls, pldul a terhels megugrsa miat) az SQL ments br elindult hajnali 2-kor, de nem zrdik le a megszokot 45 perc alat, akkor a ment szkript elhelyezhet
egy LOCK llomnyt a /backup/SQL alat (echo /backup/LOCK), amelyet egy dirvish post szkript
segtsgvel fgyelhetnk, s kaphatunk rla rtestst, vagy felfggeszthetjk a mentst a LOCK
llomny megltig. Felfggeszts esetn temezzk gy, hogy a dirvish utols dolga az SQL llomnyok thozatala legyen, hogy egy esetleges SQL szerver fennakads s ezzel egyt a ments
megakadsa miat a tbbi rsz mentse ne akadhasson el.

Hogyan mentsnk, melyiket hasznljuk s mikor?


A leggyakoribb menteszkzket soroltuk fel, amelyek segtsgvel ssze lehet lltani egy idelis mentst a dokumentum elejn felsorolt szempontok fgyelembe vtele mellet. Dnteni egyik
vagy msik mentrendszer mellet a mentend szerverek s kliensek ismerete nlkl nem clszer. Ajnlsunk az, hogy kombinlva hasznljuk a fenti rendszereket szksg szerint. Azaz a klienseket sok esetben nem szabad kifelejteni a mentsbl, mg akkor sem ha bels szablyzat
kimondja, hogy a gpen trolt dokumentumok nincsenek mentve, hiszen az adatveszts ilyenkor
is jelents lehet, ha egy felhasznl megszegve az elrsokat a sajt gpn trolta a fontos dokumentumokat.
Kisvllalati, kis irodai kzegben ppen ezrt a szerverek mentsnek Bacula, Dirvish hasznlatval vagy egyb komplex mdon trtn megoldsa esetn is rdemes gondolni a kliensgpekre, s
ha esetleg nincs lehetsg azok befzsre a kzponti ment megoldsok kz, akkor is megolds
lehet, ha a kliens gpre teleptnk (rtelemszeren asztali Linux esetn) egy rsnapshotot, amely
pldul a halt parancs meghvsa elt, vagy akr temezeten cronbl a loklis merevlemezre vgez egy mentst. gy ha a felhasznl nem is tartota be a jtkszablyokat, nem ri adatveszts
egy vletlen trls esetn. Termszetesen fzikai hiba ellen ez sem vd, hiszen ugyanazon az eszkzn troltuk a mentst s az les adatokat. Az ilyen esetek ellen csak a fggetlen ment szerver
kialaktsa vdhet, ahol minden alaposan mentve s tesztelve is van.
Szerverek esetben pedig rdemes kombinlni a mentseket. Ha van r lehetsgnk, akkor egy
teljes gp tnkremenetele esetn nagyban gyorstja a visszalltst, ha van egy teljes lemezkp,
amelyet esetleg csak a napi mentshez kell aktualizlni. Ilyenkor egy arra betantot gyeletes is
kpes lehet az alap lemezkp visszalltsra, amely rkkal vagy akr napokkal is gyorsabb lehet,
mint egy alaprendszer teleptse, majd arra a rendszer visszaszinkronizlsa mentsbl. rdemes
felkszlni, s akr papralap dokumentci formjban a szerver mellet tartani egy boot loader
dokumentcit. Hasznos lehet, mivel tipikusan a boot loader az, amelyet nem hasznlunk nap
mint nap. Nagyon ritkn, de elfordulhat, hogy az adataink nem srlnek, de a partcis tbla
igen. Az zemeltetk jelents rsze ezt soha sem menti, hiszen sok ves tapasztalat alapjn nincs
r szksg, ugyanakkor csak egy egyszer parancs, s ha gond addik a tblval, akkor van kiindulsi alap. Akr gy is:
dd if=/dev/sda of=/mentes/gepemneve-lemezem bs=512 count=1

Helyrellts a ments lemezkp alapjn:


dd if=/mnt/gepemneve-lemezem of=/dev/sda bs=1 count=64 skip=446 seek=446

93

Mentsek s archivls

Pull vagy Push?


A felsorolt ment eszkzk jelents rsze tmogatja lehetsget ad arra, hogy egy kzponti
ment szerverrl indtot tvoli ltalban SSH-n keresztli bejelentkezsen keresztl a ment
szerver mentsen, illetve azt is, hogy fordtva a kliensek kezdemnyezzk a mentst a tvoli backup
szerverre. Mind a kt megolds lehet j s rossz is egyszerre.
Ha kpesek vagyunk a ment szervert fzikailag, hlzatilag s szofveresen teljesen szeparlni,
azaz jl megvdeni, akkor adot esetben j megolds lehet, ha a ment szerver rendelkezik a tvoli
szerverekre root vagy azzal egyenrtk jogokkal s gy a ment szerver fogja temezeten kezdemnyezni a mentseket. Ebben az esetben viszont mivel az sszes les szerver SSH kulcst feltettk a ment szerverre, a ment szervert tnylegesen extrm mdon meg kell vdennk s
brmilyen hozzfrst tiltani.
Ha a msik mdszert vlasztjuk, amikor is az les szervereink jelentkeznek be a ment szerverre, akkor nem koncentrldik egy kzben az sszes hozzfrs, viszont ebben az esetben az Achilles-sarka a mentsnek az lesz, hogy az les szerver esetleges kompromitldsa esetn a tmad
el fog ltni a backup szerver irnyba. Ez ellen vdekeznnk kell mindenkppen. Erre tbb j
megolds is van. Az egyik ezek kzl, ha a ment szerveren minden les szervernek elklntet
chrootolt (SFTP vagy scponly shell) hozzfrse van. Ekkor a tmad csak az les szervert s annak mentst tudja megsemmisteni. Ennek kikerlsre, ha ezt a mdot vlasztjuk, rdemes a chroot krnyezetbl egy idztet szkript segtsgvel minden ments vgeztvel a backup
anyagokat elmozgatni egy olyan terletre, ahol a chrootolt backup felhasznl amely az les
szerver fell jn nem lthatja mr. Sajnos szmtalan esetanulmny bizonytja internet szerte,
hogy ha egyszer tnylegesen betrtek az les szervernkre, akkor a legtbb esetben clzot tmads esetn mindenkppen vgigmennek az elrhet sszes lehetsgen (mentet gpek tovbbtmadsa) is, gy a backup mint egy knnyen felderthet (cron szkripteket hasznl)
rendszer, adja magt. Ebbl a szemszgbl nzve adot esetben jobb megolds lehet az els vltozat, amikor a backup szerver kvlrl az les szerverek fell elrhetetlen, csak tud kezdemnyezni.
Visszalltsi tesztek: Ahogy mr emltetk mindenkppen legyen egy temezet tervnk, mikor melyik mentst teszteljk s lltjuk belle vissza az adatokat. Ha nincs r kln fenntartot
gpnk, akkor hasznljunk virtualizcis krnyezetet.

Kliensek mentse
Manapsg inkbb az jellemz, hogy az asztali szmtgpek mint egyfajta vkonykliens viselkednek, azaz trolunk ugyan adatokat rajta, de a munkval sszefgg dolgok vagy egy bngszben, vagy egy SSH terminlban, vagy egy tvoli SMB megosztsra trtnnek. Ebben az esetben
az alapvet hozzlls, hogy a klienst 1-2 rn bell ugyanolyanra tudjuk varzsolni, ha tnyleg
mindent a szerverre mentetnk. Ez gy is van, azonban mg gy is clszer menteni a kliensek
/etc/ alati konfgurcis llomnyait s legalbb a /home krnyezetet. Ha a menteni kvnt kliensek Linux vagy BSD, vagy brmilyen Unix-kln alapak, akkor szerencssek vagyunk, mert a mr
megismert mdszerek egyikt alkalmazhatjuk. Azaz ha az asztali szmtgp tud SSH kapcsolatot
indtani vagy fogadni, akkor ugyangy menthetjk Rsnapshot-tal vagy akr Dirvish-sel is kzpontilag. Ha pedig szeretnnk a felhasznlra bzni (ez ltalban nem j tlet), hogy a sajt klien-

94

Mentsek s archivls
sn mit ment s mit nem (hiszen egy kzpontilag mentet meghajtra dolgozik amgy is) akkor
pldul a mentend kliensen futathatunk Grsyncet.

Grync112
Ezt a grafkus felletet az rsync meglehetsen bonyolult opciinak tlthatbb ttelre hoztk
ltre. A fejlesztk a leginkbb hasznlt funkcikat grafkus formba nttk. Akr a teljes funkcionalitst knnyen el lehet rni a kiterjesztet nzetben, azonban az igazn hasznos funkcija az,
hogy az 1-2 perc alat egrrel sszelltot belltsokat egy nzet menben parancs formjban is
lementhetjk. Kezd rendszergazdknak idelis a kapcsolk nem teljes ismerete esetn, ugyanis a
tvedst lehet vele minimalizlni. Mkdtetst szerverek kzt rdemes kombinlni az sshagent113 s az ~/.ssh/config llomnyba felvet rvid gpnevek felsorolsaival. Pldul:
Host szervergep
IdentityFile /home/admin/identity-szerver-titkoskulcs
Port 22
Protocol 2
User root
HostName szerver.belsohalo.hu
PasswordAuthentication no

Ezzel az apr SSH-kliens belltssal a Grsync menjben (vagy akr az rsync parancssorban)
elg a szervergep hivatkozst hasznlni, s mris tudni fogja a tbbi (pldul port s kulcs) paramtert. Ha ez kombinlva van az ssh-agent-tel, akkor mg jelszt sem fog krni. gy pldul akr
automatikus szinkronizlst is megvalsthatunk.
Asztali gp esetben, ha ugyangy be van kapcsolva 0-24 rban, mint egy szerver, akkor hasznlhatjuk a cront idztsre, ha viszont a munkatrsak kikapcsoljk a gpeiket tvozskor, akkor
rdemes meglovagolni a megfelel init szintet, azaz a kikapcsolsnl lefutatot init folyamatba befzni a ment szkriptet. gy ha kiadjuk a halt parancsot, vagy megnyomjuk a kikapcsols gombot,
akkor elsnek a sajt ment szkriptnk fog lefutni a htrben. Ezzel kslelteti ugyan a gp kikapcsolst, de gy nincs szksg a felhasznl interakcijra, azaz minden kikapcsolsnl le fog
futni az rsnapshot, vagy akr az rsync s menteni fog a tvoli szerverre.
1112. http://www.opbyte.it/grsync/
1113. http://en.wikipedia.org/wiki/Ssh-agent

95

Mentsek s archivls

Windowsos munkallomsok mentse


Ugyangy, ahogyan a Linux alap kliensek estben is lehetsg van lemezkp alapon az egsz
lemezterletet menteni, vagy llomnyonknt diferencilt mentst kszteni, gyakorlatilag az MS
vilgban is lteznek erre remek megoldsok, a teljessg ignye nlkl nhny hasznos sciprt:

Robocopy114
Windows Backup VHD image

Adatmegsemmists
A mentshez kapcsolhat feladat a nem hasznlt eszkzk biztonsgos megsemmistse,
amelyre oly gyakran nem fordtunk egyltaln fgyelmet. Egy mr hasznlaton kvli szerver merevlemeze, vagy brmilyen adatrolja veszlyforrst 115 jelenthet, ha csak egyszeren kidobjuk. A
szalagos egysgek, merevlemezek, Flash drive-ok jelentik a mentshez kapcsoldan a legnagyobb
veszlyt, mivel a rgi hasznlaton kvli egysgeket ritkn szoktk biztonsgosan megsemmisteni, egyszeren csak kidobjk a szemtbe. Rendszeresen olvasni a hrekben, hogy klnbz adatbiztonsggal foglalkoz cgek vletlenszeren vsrolnak hasznlt komplet PC-ket, vagy csak
adathordozkat, s prba visszalltsokat vgeznek. A legtbb esetben mr eleve csak gyors
formzst, vagy mg azt sem vgeznek az emberek, gy az adatok knnyedn visszallthatak. A
szerverek illetve szalagok esetben valamivel bonyolultabb a helyzet, mert komolyabb szaktuds
szksges a visszalltshoz pldul egy RAID eszkz esetn. rdemes teht szmtsba venni,
hogy a kidobsra tlt eszkzk adathordozi veszlyforrst jelenthetnek. Egy remek eszkz a
Wipe116, amely Linux alat az adatok biztonsgos fellrst vgzi. Azonban erre erforrst kell
dediklni, mivel a Wipe folyamat is egy biztonsgos trls esetn akr napokat is ignybe vehet.
Termszetesen minden ilyen esetben a leginkbb biztonsgos megolds a fzikai megsemmists s
a szofveres megsemmists kombinlsa. De ha erre csak idt fordthatunk, pnzt nem, akkor legalbb az alapos 8-10-szeres Wipe fellrst, azaz a szofveres megsemmistst vlasszuk az adathordozk nagy rsznl.

1114. http://en.wikipedia.org/wiki/Robocopy
1115. http://www.wikihow.com/Destroy-a-Hard-Drive
1116. http://wipe.sourceforge.net/

96

Rendszerindts, init, rendszerkomponensek konfgurlsa (/etc)

Rendszerindts, init,
rendszerkomponensek konfigurlsa
(/etc)
A szmtgpes rendszerek egyik fontos folyamata az elindtsuk. Br idelis esetben erre egy
szerver teljes letciklusa sorn csak egyszer lenne szksg, a valsgban ez ritka a legnagyobb
gondossg ellenre is elfordulhat hardverhiba, ramsznet, jraindtst ignyl szofvermdosts.
Emiat is fontos, hogy a rendszer indtsa teljesen automatikus, kiprblt s brmikor megismtelhet legyen ne egy ramsznet utn derljn ki, hogy nem indul el minden szolgltats, vagy
nem tltdik be minden bellts. Ha mg sincs minden rendben, akkor jobb esetben csak nem
mkdik valami, de rosszabb esetben biztonsgi hinyossg keletkezik a rendszerben.
A rendszerindtsra gy is tekinthetnk, hogy egy ismert, a gp bekapcsolst kvet, kezdllapotbl jl defnilt lpsekkel jut el a kvnt zemi llapotba.
Napjaink irodai- s kiszolglgpei bekapcsolskor alaphelyzetbe lltjk a komponenseiket,
majd vgrehajtjk a rendszer indtst vgz szofvert, a BIOS-t vagy az UEFI-t, amelyek elvgzik a szksges hardverteszteket, feldertik az opercis rendszer betltsre alkalmas forrsokat, majd a belltsok alapjn megkezdik a rendszerbetltst a megfelel forrsbl
(pldul merevlemezrl, cserlhet mdirl vagy a hlzatrl).

A bootloader
Az opercis rendszereket ltalban merevlemezre (vagy jabban szilrdtestmeghajtra) teleptik. A BIOS-t hasznl rendszerek esetben a rendszerbetltsre kivlasztot lemez elejn (master
boot record, MBR) szerepel egy rendszerindt, amely kpes megkezdeni az opercis rendszer betltst. Ez a rendszerbetlt (bootloader) modern Linux rendszerek esetben ltalban a GNU
GRUB 2, amely szmos sszetet trolsi megoldssal egytmkdve tudja betlteni a megfelel
rendszermagot, valamint lehetv tenni a rendszerek kzti vlasztst. Rgebbi rendszerek a jelentsen eltr mkds GRUB Legacy (GRUB 1) vagy a LILO bootloadereket hasznljk. A GRUB 2
be tudja tlteni az opercis rendszert klnbz RAID-tmbkrl s LVM-rl is, valamint szmos tpus fjlrendszerrl. Belltsa rendszerint a telept feladata.
Konfgurcijt a /etc/default/grub fjlban szerepl vltozk s a /etc/grub.d/ knyvtrban szerepl hjprogramok alkotjk, amelyeket a update-grub parancs futat, majd kimenetket a
/boot/grub/grub.cfg fjlba fzi ssze (amely kimenet szintn egy hjprogramot ad, azonban ezt a
GRUB 2 futatja a rendszer betltsekor). A GRUB 2 teleptsre a grub-install parancs szolgl,
melynek argumentumaknt kell megadnunk a teleptsre kijellt lemezeszkzt (pldul grub-install
/dev/sda).

97

Rendszerindts, init, rendszerkomponensek konfgurlsa (/etc)

Amennyiben nem oldhat meg, hogy a rendszerbetlt olvasni tudja a rendszer gykrfjlrendszert, akkor szksg lehet arra is, hogy a kernelt s a bootloader moduljait tartalmaz
/boot/ knyvtr egy kln, egyszerbben olvashat pldul nem titkostot, a lemez elejn
lv kteten legyen.
Ha a kernel betltst a bootloader elvgezte, megkezddhet az opercis rendszer indtsnak rdemi rsze, az init folyamat. Ez sem lehetsges azonban azonnal minden esetben. Ennek
f oka az, hogy a folyamathoz szksges az, hogy a gykrfjlrendszer elrhet legyen a kernel szmra. A disztribcik azonban olyan kerneleket szlltanak, amelyek az sszes tmogatot hardveren mkdnek. A mindezekhez szksges meghajtk memriban tartsa, a
kernelbe trtn statikus beforgatsa azonban nem clszer, ezrt dinamikusan betlthet
kernelmodulokkal oldjk meg a szles hardverpaleta tmogatst. Ezen modulokat viszont
valahonnan be kell tlteni, amire az initrd, egy az indts idejre hasznlt, a memriba tlthet lemezkp a megolds. Ez a lemezkp tartalmazza a szksges modulokat, valamint egy
hjprogramot, amely elvgzi a vgleges gykrfjlrendszer csatolst s az ehhez szksges
feladatokat. Egyni initramfs kpek ltrehozsra szolgl a szles krben hasznlt dracut keretrendszer.
Hlzatrl trtn rendszerbetltsnl is ez a megolds, azonban ilyenkor az initrd feladata a
hlzat belltsa s a hlzati fjlrendszer csatolsa is. A disztribcik telepti is gyakran az
initrdben kerlnek megvalstsra.

A GRUB 2 konfgurcijhoz ltalban elegend a /etc/default/grub fjl mdostsa, mivel a teleptet kernelekhez s a teleptskor felfedezet ms opercis rendszerekhez automatikusan ltrejnnek a bejegyzsek. A GRUB_DEFAULT opciban az alaprtelmezet bejegyzs sorszmt vagy
nevt adhatjuk meg; mg a GRUB_CMDLINE_LINUX opcival kiegszthetjk a kernelnek tadot paramtereket (pldul ha gondjaink vannak a konzol megjelentsvel, it adhatjuk meg a nomodeset opcit, amely letiltja a felbonts automatikus lltst). A konfgurci mdostsa utn adjuk
ki az update-grub parancsot.
Az alaprtelmezetl eltr rendszer indtshoz a rendszer indtsa kzben megjelen menbl
vlaszthatunk a billentyzetel. A GRUB_TIMEOUT=0 bellts esetn azonban ez a men nem jelenik meg, csak akkor, ha a GRUB 2 betltse pillanatban a shif billenty le volt nyomva. Amenynyiben a megjelen menben nem tallunk megfelel bejegyzst, akkor a kpernyn szerepl
tmutats alapjn mdosthatjuk is a meglvket. Pldul a linux kezdet sor vgre init=/bin/basht rva a rendszerszolgltatsok elindtsa helyet jelsz megadsa nlkl egy parancsrtelmezt indthatunk.

Init
Miutn betltdt a kernel s elvgezte a folyamatok indtshoz szksges lpseket, elindul
az init folyamat, amely a felhasznli trben (userspace) fut szolgltatsok indtst s meglltst hajtja vgre ebbl addan minden folyamat az init leszrmazotja.
Az init rendszernek egszen a kzelmltig a SysV117 megvalstsa s a vele kompatibilis megoldsok volt a jellemz, azonban fleg a teljestmnyvel kapcsolatos kifogsok miat kt j megolds, az Upstart s a Systemd terjedt el. A rendszerek kzti rdemi vlaszts lehetsge ltalban
1117. A System V (System Five, rviden SysV) a nyolcvanas vek egyik sikeres UNIX-vltozata. F konkurense a BSD
(Berkeley Sofware Distribution) volt.

98

Rendszerindts, init, rendszerkomponensek konfgurlsa (/etc)


a disztribci ksztjnl van, gy azt kell hasznlnunk, amit az ltalunk hasznlt disztribci knl.

SysV init
A hagyomnyos SysV initel kompatibilis megolds tallhat meg a Debian disztribci aktulis
kiadsban, valamint a begyazot rendszereken is ez a jellemz. Az jabb init-rendszereket hasznl terjesztsek is igyekeztek lehetv tenni a SysV inithez kszlt szolgltatsok hasznlatt
kompatibilitsi interfszek biztostsval.
A megolds kzponti fogalma a futsi szint (runlevel), amely a rendszer egy pillanatnyi jellemzje. Az egyes futsi szinteket 0 s 6 kzti egsz szmokkal, valamint S betvel jelljk, amely
futsi szintek rtelmezse az egyes rendszerekben vltozatos. ltalnossgban elmondhat, hogy
a 0 jel specilis futsi szint a gp kikapcsolst, a 6 jel pedig jraindtst jelenti. Az 1-es futsi szint ltalban az egy felhasznls md, amelyben olyan adminisztratv feladatokat tudunk
vgrehajtani, ami a szoksos szolgltatsok futsa mellet nem lehetsges vagy clszertlen. A 25
futsi szintek rtelmezse nagyobb vltozatossgot mutat, a 2-es vagy 3-as szint a tbbfelhasznls, a szolgltatsokat is tartalmaz futsi szint, mg a 45-s egyes rendszereken (pldul Debian)
a grafkus rendszerrel bvti a kisebb szintek szolgltatshalmazt. Ms rendszereken a 2-es szint
jelli a teljes tbbfelhasznls mdot, mg a nagyobb szinteket nem hasznljk. Az S futsi szint
szerepe is vltoz, Debian alat a csak bootolskor indtand szolgltatsok helye, ms rendszereken nem hasznljk, vagy az egyfelhasznls md egy szinonimja.
A futsi szintek kzt az init paranccsal vlthatunk, pldul a gp jraindtshoz: init 6. A
rendszer betltsekor az alaprtelmezet futsi szintet ri el, amelyet az init konfgurcis fjlja
hatroz meg.
Az init mkdst a /etc/initab fjlban llthatjuk be. A fjl ketspontokkal elvlasztot mezkbl ll sorai egy-egy szolgltatst rnak le, s egy rvid szolgltatsazonostbl, a szolgltats
szmra kijellt futsi szintek listjbl, az indts mdjbl s vgl a vgrehajtand parancsbl
llnak. Pldul egy virtulis terminl futatsa a 25-s futsi szinteken (a respawn md azt jelenti, hogy a programot kilpse esetn jbl kell indtani):
1:2345:respawn:/sbin/getty 38400 tty1

Specilis indtsi md az initdefault, amely az alaprtelmezet futsi szintet jelli. Pldul 3-as
alaprtelmezet szintet llt be a kvetkez sor:
is:3:initdefault:

A legtbb SysV initet hasznl Linux-disztribci alat nem kell it az alaprtelmezet futsi
szinten kvl mst belltanunk, mivel az alaprtelmezet konfgurci egy dinamikusabb megoldst tartalmaz. Az egyes futsi szintekhez tartozik egy knyvtr, ltalban /etc/rc[0-6S].d/ nven,
amelyben init szkriptekre mutat szimbolikus linkek tallhatak.
Az init szkriptek a /etc/init.d/ knyvtrban tallhatak, s szolgltatsok elindtsra (start), lelltsra (stop), llapotuk lekrdezsre (status), vagy jraindtsukra (restart), jratltskre (reload) szolglnak, rendre a megadot argumentummal futatva. Pldul Debian alat a teleptet, de
jelenleg nem fut Apache webkiszolglt a /etc/init.d/apache2 start paranccsal indthatjuk el.
Ezekre az init szkriptekre mutatnak szimbolikus linkek a /etc/rc?.d/ knyvtrakbl, ktt elnevezsekkel. A link els karaktere egy S vagy egy K, amely azt jelli, hogy az adot szintre lpve
az adot szolgltatst indtani (Start), vagy lelltani (Kill) kell. Ezt kveti kt szmjegy, amely az
indtsok sorrendjt adja meg egyes szolgltatsokat csak akkor lehet elindtani, ha msikak
99

Rendszerindts, init, rendszerkomponensek konfgurlsa (/etc)


mr futnak. A link neve a szolgltats nevvel (ahogy az init szkript szerepel) fejezdik be. Pldul
a msodik futsi szinten 91.-knt indtand Apache webkiszolgl linkje a kvetkez:
/etc/rc2.d/S91apache2 -> ../init.d/apache2 .
Mivel ezeknek a linkeknek a karbantartsa is nehzkes, ezt a disztribcik igyekeznek megknnyteni. A Debian az update-rc.d parancsot biztostja. Egy j szolgltats (a pldkban: foobar)
bekapcsolshoz az alaprtelmezet futsi szinteken, 20.-knt indtsuk s 80.-knt lltsuk le, futtassuk az update-rc.d foobar defaults 20 80 parancsot. Ha az init szkript elejn szerepel egy specilis
formtum megjegyzs, akkor az alaprtelmezet futsi szinteket onnan veszi az update-rc.d,
egybknt a 25 futsi szintekre llt S linket.
Egy szolgltats tiltshoz elszr trljk a linkeket ( update-rc.d -f foobar remove), majd vegyk
fl az sszes futsi szinthez a K linket: update-rc.d foobar stop 20 2 3 4 5 ..

Upstart
Az Upstart az Ubuntu, valamint az aktulis CentOS s RHEL disztribcik alaprtelmezet init
rendszere.

Systemd
A systemd a Fedora s az openSUSE disztribcik alaprtelmezet init rendszere.

100

Alapszint hlzati hibakeress

Alapszint hlzati hibakeress


Az alapszint hibakezels rszben szerepl j tancsot ismteljk el:
Az elejre ltalnossgban 2 alapszably:
olvassuk s prbljuk meg rtelmezni a hibazenetet
nzzk meg a hibanaplkat.
Akkor most mehetnk tovbb.

Hlzati problmk
Sajnos ltalnossgban is, a hlzatal kapcsolatban is elmondhat, millifle hibahelyzet lehet.
Ha nem-megy-a-hlzat, annak oka lehet, hogy nincs bedugva a kbel ellenrzse az ip paranccsal:
ip link show dev eth0

s ellenrizzk, nem ltjuk-e vletlenl a NO-CARRIER jelzt. A hiba lehet rosszul belltot IPcm, nyilvn lekrdezni az
ip addr sh dev eth0

paranccsal kell, s az inet kezdet sorokat ellenrizzk (ilyen sorokban szerepelnek a gp IPv4-es
cmei).
Lehet szimpla routing problma a htrben, krdezzk le.
ip ro sh

Ellenrizzk az elrni kvnt hlzathoz tartoz bejegyzst. Ha az elrni kvnt hlzatra vonatkoz bejegyzs nincs, akkor ellenrizzk a default bejegyzst.

getent
Hlzati problmt okozhat nvfeloldsi hiba, sajnos sokan s sokszor azonnal a nvszerverekkel kezdik a dolgot, holot elte van mg egy pont maga a nvfeloldst vgz keretrendszer (az
NSS) hibs konfgurcija. Tesztelsre teljesen jl hasznlhat a getent. Kt paramtert vr: melyik adatbzist kell lekrdeznie (felhasznlk, csoportok, gpek, stb.) s mi a lekrdezend adat.
Azaz ha nvfeloldsi hibra gyanakszunk, akkor
getent hosts keresett-szerverneve-vagy-cime ; echo $?

Sajnos pl. nem ltez szervernv esetn egy hangot nem ad ki magbl, csak a 2-s hibasttusz
(ennek rtkt rja ki a pontosvessz utni parancs) segt rtelmezni, hogy jelenleg valami nem
stimmel nem tallja a kereset adatot. Azzal egyt is javasolt a sttszkdot ellenrizni, hogy ha
van tallat, a kapot vlaszt kirja, teht a csnd mr nmagban gyans kell legyen. Termszetesen ha a getent szerint nem j a vlasz, akkor rdemes megnzni a konfgurcit tartalmaz
101

Alapszint hlzati hibakeress


/etc/nsswitch.conf fjlt. Ha ez is jnak ltszik, de a konfgurci szerint nvszerverhez is kell fordulni (azaz a hosts: kezdet sorban szerepel a dns kulcssz), akkor jhet a /etc/resolv.conf fjl ellenrzse, s ha ltszlag stimmel, csak akkor a DNS-teszt.

nslookup, host, dig


Az eszkzk kzl idvel mindenki megszokja valamelyiket a knlatbl, de ma mg mindig nagyon sokan a mr ersen elavultnak szmt nslookup parancsot hasznljk. Javasolhat helyete a
host, vagy a dig.
Ha gpnk a publikus hlzaton is elrhet nvvel/cmmel rendelkezik, akkor a klvilg elkpzelst a gpnk adatairl knnyedn lekrdezhetjk, ha megjegyznk 2 publikus nvszervert: a
8.8.8.8 s a 8.8.4.4 taln nem felttlenl javasolhat mindennapos hasznlatra, de tesztre szinte biztosan j:
nslookup keresett-szerver-neve-vagy-cime 8.8.8.8
host keresett-szerver-neve-vagy-cime 8.8.8.8
dig +short keresett-szerver-neve @8.8.8.8
dig +short -x keresett-szerver-cime @8.8.8.8

amg hlzaton bell keressk a hibt, addig annyit mdostsunk, hogy az utols paramtert (ami
egybknt a lekrdezend nvszervert azonostja) hagyjuk el a parancssorbl. Ekkor a fent emltet /etc/resolv.conf fjlbl veszik el a lekrdezni kvnt nveszerver adatot.

ping, tcpspray
Gyakran azzal ellenrzik egy szerver mkdst, hogy megpingetik. A
ping szerverneve-vagy-cme

tbbek kzt azrt j, mert mellkesen a hlzat sebessgrl is ad nmi informcit. Htultje, hogy a nem-pingik llapotot milli dolog okozhatja. Hlzati sebessg ellenrzsre publikus netet elr gp esetn jl ismert a www.speedtest.net oldal tesztje, Nem publikus gp esetn
rdemes a tcpspray nev tesztel eszkzt ignybe venni. (A tloldalra szksges egy, ltalban az
inetd szolgltatsai kzt engedlyezhet discard, vagy echo TCP szolgltatst nyjt eszkz, ennek bekonfgurlsrl se feledkezznk meg.)

traceroute, tracepath
Elssorban tvoli szerver elrsi problminak keressre szoktk hasznlni a traceroute, tracepath nev eszkzket amelyek kimenetkben tbbek kzt a csomagok tvonalt adjk vissza.
(Br komolyabb hlzati hatrvdelem esetn ezek nagy esllyel nem jutnak el a clig.)
A tovbbiakban megemltsre kerl programok j rsze cskkentet funkcionalitssal, vagy
akr sehogy sem mkdik, ha nem rendszergazda jogosultsggal hajtjuk ket vgre, azaz sudo/su
nagy esllyel szksges a hasznlatukhoz.

102

Alapszint hlzati hibakeress

iptraf, vnstat
Egyszer, de jl hasznlhat forgalommonitoroz eszkz az iptraf. Szerveren elnys kis erforrsignye miat, s hogy csak karakteres felletet ad. (Akinek ez negatvum, az nzze meg az ntopot is.)
Ha pedig sszefoglal hlzati statisztikkat szeretnnk kapni, akkor nzzk meg a vnstatot. Feltrkpezi a gpben lev interfszeket, majd folyamatosan adatbzisba gyjti a forgalmi adatokat,
amiket aztn rnknti, napi vagy akr havi bontsban krdezhetnk le tle.

tcpdump, tshark, Wireshark


Komolyabb hlzati forgalomanalizlsra jl hasznlhat (br viszonylag mlyebb hlzati ismereteket felttelez) a tcpdump nev program. Krhetnk tle a teljes forgalom megjelentst, de
akr meglehetsen bonyolult feltteleket is megadhatunk, amikkel szrhetjk amit ltni szeretnnk. (Pl. host 192.168.1.42, vagy tcp port 25, mindezeket logikai opertorokkal s zrjelekkel
kombinlva.) Ma egyre kevesebben hasznljk ezt direktben. Helyete elterjedt, hogy tcpdump -w
fjl formban indtjk el (ekkor a hlzati forgalmat a paramterknt megadot fjlba menti), majd
pedig valamilyen intelligensebb eszkzzel vizsgljk meg a lementet adatot. Jellemzen karakteres felleten ez a tshark, grafkus felleten pedig Wireshark nvre hallgat feldolgozszofver. Ez a
kt parancs ugyanannak az eszkznek a karakteres s grafkus felletre optimalizlt vltozata, s
amennyiben azonnali forgalomfgyelst szeretnnk, nem szksges a tcpdump-ot kzbeiktatni,
ezek az eszkzk is kpesek az interfszeken foly forgalom fgyelsre.

Tovbbi hibakeressi megoldsok


Elfordulhat, hogy egy hlzati alkalmazs az indulsa utn nem sokkal az Address already in
use hibazenetel rvendeztet meg minket, s lell. Ilyen esetekben j szolglatot tehet a korbban mr emltet strace. Indtsuk el jra az alkalmazst az strace ltal felgyelt mdon. Az strace
zenetei kzt meg fogjuk tallni, hogy milyen hlzati erforrssal van baj. Ez lehet akr loklis
(UNIX-domain), akr tvoli (Internet-domain) socket. Az strace zenetei kzt meg kell keresni a
sockethez tartoz paramtert (fjlnevet, vagy portszmot).
bind(3, {sa_family=AF_FILE, path="/tmp/socket"}, 11) = -1 EADDRINUSE (Address
already in use)

Fenti pldban egy un. UNIX-domain socket s a hozz tartoz flnv,


bind(3, {sa_family=AF_INET, sin_port=htons(8888),
sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use)

ebben a pldban pedig a 8888-as TCP118 port foglalt.


Ha ez megvan, akkor mr csak azt kell megkeresni, ki hasznlja. Ezt megtehetjk a fuser nev
paranccsal:
1118. Hogy TCP, vagy UDP portrl van sz, az ebben a sorban nem ltszik, hanem vissza kell kvetni, hogy a pldban
a bind els paramtereknt szerepl 3-s szm socket ltrehozsakor SOCK_STREAM (tcp) vagy SOCK_DGRAM
(udp) paramterrel hoztk-e ltre.

103

Alapszint hlzati hibakeress


fuser -n file /tmp/socket
fuser -n tcp 8888
fuser -n udp 514

(A fle az a UNIX-domain socketet jelenti, paramtere a socket neve; az udp/tcp rtelemszeren


UDP, illetve TCP socket, s a hozz tartoz port paramtert kell megadni. Az utols, udp-s plda
csak a teljessg kedvrt szerepel.) A fuser parancs kimenetben egy folyamatazonostt (PID) tallunk:
8888/tcp:

8620

s mr csak ki kell derteni ez milyen folyamat:


ps -fp 8620

A kimenetben megtallhat a problmt okoz alkalmazs, aki azt a hlzati erforrst hasznlja, amelyik az elindtand programunk tjban ll. A kt lpcsben hasznlatos fuser + ps helyet
hasznlhatunk tbb ms eszkzt is. Hasznlhat akr a netstat, vagy az ss nev programok:
ss -p -l -n -x | fgrep /tmp/socket
netstat -p -l -n -t | fgrep 8888

(a netstat egyb UNIX-rendszerekbl lehet ismers, az ss Linux-specifkus parancs)


de egy sokkal tbb mindenre szolgl eszkz is, ez az lsof:
lsof -i tcp:8888

(Mivel az lsof sokkal tbb informcit ad meg, gy kicsit nehezebb rtelmezni a kirt adatokat.)
Mg egy aprsg. Nha j lenne, ha egy hlzati kapcsolatot meg tudnnk szntetni gyorsan,
szablyosan. Meglehetsen hatkony eszkz a tcpkill (valsznleg a dsnif nev csomagban fogjuk
megtallni). Figyeli a -i opcival megadot hlzati interfsz forgalmt, s a tcpdump kapcsn
megtanult kifejezssel lerhat TCP forgalmat szablyosan lezrja.
tcpkill -i eth0 port 8888

Azaz ha biztosak vagyunk abban, hogy mrpedig azon a porton nem kellene msnak kommuniklnia, mint a programnak akit pp most szeretnnk elindtani, akkor ezt is megprblhatjuk.
Termszetesen okozhat hlzati problmkat a rosszul konfgurlt tzfal, ezrt rdemes lehet a
tzfalszablyokat is ellenrizni:
iptables -t filter -v -n -L

de az els pillanatl szokjuk meg, hogy a -v opcit is adjuk meg, e nlkl meglehetsen fontos intormcik hinyozhatnak a kimenetbl. A kvetez plda nem szr, hanem a NAT azaz cmfordtsi tbla szablyait krdezi le:
iptables -t nat -v -n -L

Sok esetben a nem elrhet a szerver jelleg hibajegyek kezelsre, tesztelsre is szksg lehet. Nagyon sok applikcis protokoll119 egyszer angol nyelv parancsokkal mkdik, ezrt meglehetsen gyakran hasznlt teszt eszkz a telnet, vagy a ma mr egyre tbb terjesztsben az
alapteleptsben elrhet nc (netcat) parancs. Hasznlatuk meglehetsen egyszer:
telnet mailszerver SMTP
nc webszerver 80
1119. Az elektronikus levelezsben hasznlt SMTP, IMAP4 s POP3 protokoll, a webbngszsre szolgl HTTP ilyen,
de van mg pr.

104

Alapszint hlzati hibakeress


A netcat annyival tud tbbet, hogy nem csak TCP, hanem akr UDP protokollon keresztl is kpes kommuniklni, st akr UNIX-domain socket kezelsre is alkalmas, gy ma egyre tbb rendszergazda hasznlja inkbb azt. (Radsul nem csak hlzati kliens, hanem szerver is tud lenni a -l
opci hatsra.) Ezekkel az eszkzkkel az ilyen protokollt hasznl szerverek alapszint mkdse knnyedn ellenrizhet. De mi a helyzet, ha nem HTTP-t, SMTP-t, stb.-t, hanem ezek titkostot verziit kell hasznlni? Kzzel senki nem fogja a TLS / SSL-t lejtszani. Erre szolgl a
meglehetsen elterjedt OpenSSL nvre hallgat eszkz s_client paramterrel indtva. A fenti netcat-es plda HTTPS-re lefordtva:
openssl s_client -connect webszerver:443

formban rand. s az OpenSSL szpen elvgzi a a tanstvnyok ellenrzst, a kommunikci


sorn a szksges kdolsokat s dekdolsokat.

105

IP-multiplexing, Bridge, VLAN, Bonding, s a hlzatkonfgurls 3-fle mdja

IP-multiplexing, Bridge, VLAN, Bonding,


s a hlzatkonfigurls 3-fle mdja
Mivel a tovbbi mveletek segtsgvel viszonylag knnyen teljesen elronthatjuk rendszernk
hlzati belltsait, ezrt javasolt ezeket a parancsokat nem a valdi hlzati interfszt hasznlva
kiprblni. Ehhez rgtn az elejn hozzunk ltre egy virtulis hlzati interfszt. A tovbbiakat
pedig ezzel a virtulis interfsszel csinljuk meg. (Termszetesen ahol a mvelethez tbb interfszre van szksg, ot nem egy, hanem tbb ilyet fogunk hasznlni.)

Virtulis interfsz ltrehozsa


Ltezik egy specilis interfsz tpus, neve dummy. Ilyen interfsz ltrehozshoz szksges egy
dummy nvre hallgat n. kernel modul (ms krds, hogy az ilyen tpus interfsz ltrehozsa
a legtbb terjesztsben automatikusan betlti ezt a modult, gy az azonnal rendelkezsre ll). A
virtulis interfsz ltrehozsa:
ip link add name dummy0 type dummy

Innentl kezdve van egy interfsznk, ami nem j semmire, kivve, hogy ennek segtsgvel viszonylag knnyedn ki lehet prblni a ksbbieket. Ezekkel a virtulis interfszekkel szinte mindent meg lehet csinlni, amit a valdiakkal lehet. A tovbbiakban felttelezzk, hogy ltrehoztunk
egy ilyen dummy-tpus interfszt dummy0 nven, illetve ahol kell, ot tovbbiakat is, rendre
dummy1, dummy2, stb nven.

Interfsz konfigurlsa
Eleventsk fel az Egyszer hlzati konfgurls cm rszben szereplket. Egy interfsz letre keltsnek javasolt metdusa (vals interfszeknl az els parancsra nyilvn nincs szksg.)
ip
ip
ip
ip

link add name dummy0 type dummy


link set dev dummy0 up
addr add 1.2.3.4/24 broadcast + dev dummy0
route add 1.2.3.0/24 via 172.26.4.2

Megszntetni egy interfszt pedig a ltrehozsa:


ip link add name dummy1 ty dummy

utn a:
ip link del dev dummy1

paranccsal lehet.
(Interfsz ltrehozsa az elavultnak minstet mdszerrel:
ifconfig dummy0 1.2.3.4 netmask 255.255.255.0 up

106

IP-multiplexing, Bridge, VLAN, Bonding, s a hlzatkonfgurls 3-fle mdja


route add -net 1.2.3.0 netmask 255.255.255.0 gw 172.26.4.2

Azaz ifconfg + route parancspros.)

Pont-pont kapcsolat ltrehozsa


Idnknt szksgnk lehet nem csak hagyomnyos, n. broadcast tpus interfszre, hanem
pont-pont tpus kapcsolatra. Ezt kicsit msknt kell konfgurlni, azaz a
ip address add 1.2.3.4/24 broadcast 1.2.3.255 dev dummy0

helyet pont-pont tpus kapcsolatot az


ip address add 1.2.3.4/32 peer 1.2.3.5 dev dummy0

paranccsal lehet belltani.

Statisztika s rszletesebb informcik


lekrdezse
Az interfszek paramtereinek rszletes (-detail) lekrdezse
ip -d link show

Az interfsz forgalmi statisztika (-statistics) a


ip -s link list eth0

paranccsal kdezhet le. Ha az opcit megketzzk, rszletesebb statisztikt kapunk:


ip -s -s link list eth0

Egy interfsz tnevezse (a biztonsg kedvrt lltsuk vissza :-)):


ip link set dev dummy0 name eth10
ip link set dev eth10 name dummy0

Klnbz hlzati objektumok (interfszek, interfszcmek, tvlaszt bejegyzsek) fgyelse


ip monitor link | address | route | l | a | r

(Knny elrontani, mert az m rvidts a multicast-address-t jelenti, szval legalbb mo


vagy mon formban rvidtsk.)

Tbb IP-cm egy interfszen (IP-multiplexing/IPaliasing)


Rendszeresen elfordul igny, hogy egy hlzati interfszhez tbb hlzati cmet rendeljnk.
Ennek javasolt mdja a

107

IP-multiplexing, Bridge, VLAN, Bonding, s a hlzatkonfgurls 3-fle mdja


ip addr add 2.3.4.5/24 broadcast + dev dummy0

parancs hasznlata. Termszetesen akr ez a msodik, akr brmelyik msik bekonfgurlt IPcm ugyangy szntethet meg:
ip addr del 3.4.5.6/24 dev dummy0

Van kt alternatv megolds:


ip addr del dev dummy0

az interfszhez tartoz cmlista els elemt trli, mg az


ip addr flush dev dummy0

minden cmet trl a paramterknt megadot interfszrl.


Interfszekhez tbb IP-cm hozzrendels az elavult megolds szerint, egy virtulis n. alias interfsz ltrehozsn alapult. Ez a virtulis interfsz gy jn ltre, hogy a fzikai interfsz nevhez
hozzragasztunk egy ketspontot, s egy egsz szmot jellemzen eggyel indtva a szmozst,
s ezt az alias interfszt konfgurljuk fel:
ifconfig dummy0:1 2.3.4.5 netmask 255.255.255.0
ifconfig dummy0:2 3.4.5.6 netmask 255.255.255.0

Elvenni egy ily mdon hozzadot cmet gy kell, hogy az adot virtulis interfszt down llapotba kapcsoljuk:
ifconfig dummy0:1 down

Arra vigyzzunk, hogy ha a szl interfszt kapcsoljuk le, akkor az alias interfszek s a szl
interfsz is ltszlag eltnnek azaz az ifconfg kimenetben mr nem ltszanak de az ip parancsnl igen :-). Viszont a szl interfsz visszakapcsolsakor visszajnnek az aliasok is. Ha viszont az alias interfszt kapcsoljuk down llapotba, akkor valban eltnik a cm mind az ip,
mind az ifconfig kimenetbl, st, ksbb mr up llapotba se tehetjk, csak ha jrakonfgurljuk.
Ezen kvl az a furcsa helyzet llt el, hogy ha plusz IP-cmet rakok egy interfszre a rgi mdon
(ifconfg paranccsal belltva az alias interfszt), akkor ha az ifconfig paranccsal krdezem le, akkor
nll interfszekknt ltszanak, az ip parancsban pedig egyszeren ltszik, hogy az eredeti interfsznek tbb cme van. Viszont ha a ma javasolhat ip paranccsal adok tbb cmet egy interfszhez, akkor ezeket a cmeket mr nem ltjuk az ifconfig listjban. Ennel elkerlse rdekben egy
apr trkk:
ip addr add 3.4.5.6/24 brd + dev dummy0 label dummy0:1

Azaz ha plusz IP-cmeket adunk egy interfszhez, akkor a msodik, harmadik, stb IP-cm hozzadsakor adjunk meg egy plusz label paramtert is egy alias interfsz-szer nvvel, s mris
mind az ip, mind az ifconfig paranccsal lthat s kezelhet lesz.

VLAN ltrehozsa
Sok helyen szksges virtulis hlzatokat, n. VLAN-okat hasznlni. Az egy VLAN-ba tartoz
gpek egymssal tudnak kommuniklni, de a klnbz VLAN-ok kzti kapcsolathoz mr tvlaszt szksges. Az egyes VLAN-okat n. VLAN-id azonostja, s valamilyen mr ltez interfszbl csinlunk VLAN-interfszt. Miutn ltrehoztuk ezt az interfszt, a folytatsban a hlzat
108

IP-multiplexing, Bridge, VLAN, Bonding, s a hlzatkonfgurls 3-fle mdja


tovbbi konfgurlsa sorn a valdi interfsz (pl. eth0) helyet erre a VLAN-interfszre kell hivatkozni.
VLAN-ba konfgurls javasolt mdja:
ip link add link dummy0 name dummy0.42 type vlan id 42

(A valsgban nyilvn nem a dummy0-bl, hanem pl. az eth0-bl, azaz a link dummy0 helyet
link eth0 kell szerepeljen.) A vgeredmny az ip parancs kimenetben dummy0.42@dummy0 -knt
ltszik de hivatkozni dummy0.42-knt kell r (az ifconfg kimenetben dummy0.42-knt is ltszik).
Ha pedig kihagyjuk a name dummy0.42 paramtert, akkor vlan0@dummy0 (azaz vlan0) lesz a
neve (s ugyangy nem kell a hivatkozsnl a @dummy0 rsze az interfsz nevnek).
VLAN-interfsz jellemzinek lekrdezsre az
ip -d link show dummy0.42

parancs javasolhat, a -d kell a VLAN-id megjelentshez (ez nyilvn akkor fontos, ha nem a
fenti mdon nevezzk el az interfszt). Megszntetni pedig a szoksos:
ip link del dev

dummy0.42

paranccsal kell.
VLAN elavult mdszerrel konfgurlsa pedig egy n. vconfig nev paranccsal trtnik.
vconfig add dummy0 42

Az eredmny a dummy0.42 interfsz. Megszntetni ugyanezen parancs rem (azaz remove) paramtervel lehet:
vconfig rem dummy0.42

Mivel a vconfg nem tesz lehetsget a VLAN-interfsz nevnek kivlasztsra, hanem gyrilag
ilyen neveket hasznl, remlhetleg gy mr rthet, hogy mirt ugyanazt a konvencit kvetk
mi is az ip parancs hasznlatakor. (Termszetesen VLAN esetn is felcserlhet egymssal a javasolt, illetve az elavult mdszer.)
BOND / Link Aggregate / Fast Etherchannel
Hlzati terhels elosztsra, vagy pp redundancia ellltsra szoktk elssorban hasznlni az
n. BOND, vagy aggreglt interfszeket. Ilyenkor tbb valdi interfszt kapcsolunk ssze. Az aggreglt interfszek hasznlathoz (hasonlan a dummy interfszhez) egy kernel modul betltsre
van szksg. A modul betltsekor adhatjuk meg, hogy a sokfle (szabvnyos s nem annyira
szabvnyos) bond-mdbl melyiket akarjuk hasznlni 120: :
modprobe bonding mode=1 miimon=500

A mode= paramter lltsval szablyozhat, hogy pontosan milyen mdon mkd aggraglt
interfszt akarunk ltrehozni, pl a mode=0 az ugynevezet balance-rr azaz Round Robin elven
forgalmaz az gy ltejt virtulis interfszen. Fenti parancs eredmnyeknt ltrejn egy activebackup md, 500 ms timeout-ot hasznl bond0 interfsz (azaz ameddig az elsdleges primary
interfsz l, addig azon forgalmaz, ha az megsznik mkdni, akkor fl msodpercen bell szreveszi, s tvlt a msodik secondary interfszre; ha az elsdleges visszatr, akkor visszakapcsol annak a haszlatra). (A bond0 interfsz az n. master szerepet jtssza.)
Ha teht kszen van a bond0, akkor a konfgurls:
ip link set dev dummy0 master bond0
1120. rszletesebb lersrt rdemes elolvasni pl. a Linux Ethernet Bonding Driver HOWTO nev dokumentumot

109

IP-multiplexing, Bridge, VLAN, Bonding, s a hlzatkonfgurls 3-fle mdja


ip link set dev dummy1 master bond0
ip add addr dev bond0 1.2.3.4/32
ip link set dev bond0 up

(Ehhez termszetesen kell egy msik, dummy1 nev interfsz is.)


Kivenni valamely alrendelt (slave) interfszt:
ip link set dev dummy1 nomaster

paranccsal lehet, illetve az egsz interfsz eltvoltshoz mindegyik slave-et szedjk ki, konfgurljuk le, majd dobjuk el az interfszt:
ip link set dev dummy0 nomaster
ip link set dev bond0 down
ip link del dev bond0

A ltrejt bond0 interfsz a tovbbiakban konfgurlhat:


ip addr add 1.2.3.4 dev bond0

Az elavultnak minstet mdszerhez egy n. ifenslave nev parancsra van szksg:


ifenslave bond0 dummy0 dummy1

Az elsknt megadot slave eszkz lesz a primary. A bonding megszntetse ugyanezzel a paranccsal:
ifenslave -d bond0 dummy1 dummy0

Az rdekessg kedvrt megmutatuk egy harmadik eszkzt is. (Mint egy linuxos zenebohc:
van msik) Ez a mdszer, az n. sysfs fjlrendszeren keresztl piszklja a bonding eszkzt. Ltrehozzuk a f (master eszkzt)
echo +bond0 > /sys/class/net/bonding_masters

Majd konfgurljuk:
ip link set dev bond0 up
echo +dummy0 /sys/class/net/bond0/bonding/slaves
echo +dummy1 /sys/class/net/bond0/bonding/slaves

Eltvoltani egy slave eszkzt:


echo -dummy1 /sys/class/net/bond0/bonding/slaves

Termszetesen az egszet it is gy kell, hogy szpen lpsenknt lebontjuk:


echo -dummy0 /sys/class/net/bond0/bonding/slaves
echo -bond0 /sys/class/net/bonding_masters

Ethernet Bridge
Idnknt szksg lehet n. Ethernet bridge ltrehozsra. A javasolt mdszer:
ip link add name br0 type bridge
ip link set dev dummy0 master br0
ip link set dev dummy1 master br1

110

IP-multiplexing, Bridge, VLAN, Bonding, s a hlzatkonfgurls 3-fle mdja


Ebben az esetben a bridge tpus virtulis interfsz lesz a master, s a bridge-t alkot fzikai interfszek a slave interfszek. Kivenni egy interfszt, illetve megszntetni magt a bridge-et ugyangy kell, mint a bonding interfsznl kellet:
ip link set dev dummy1 nomaster
ip link set dev dummy0 nomaster
ip link del dev br0

Ehhez is tartozik elavult mdszer, a parancs neve brctl. A fenti br0 ltrehozsa:
brctl addbr br0
brctl addif br0 dummy0
brctl addif br0 dummy1

Jellemzinek lekrdezse:
brctl show br0

Megszntetse pedig:
brctl delif br0 dummy1
brctl delif br0 dummy0
brctl delbr br0

TUN/TAP virtulis interfsz


Fleg klnbz VPN, s egyb tunneling megoldsok hasznljk az n. tun/tap interfszeket.
(Pl. az OpenVPN, de akr a jl ismert OpenSSH is tud teljes tunnelinget.) Az els n. virtulis
Ethernet, mg a msodik virtulis IP interfsz, mindkt esetben pont-pont kapcsolathoz. A konfgurlshoz javasolt mdszer it is az ip parancs. (Htultje a dolognak, hogy nem minden terjesztsben van annyira j iproute-csomag, ami ismeri ezt a funkcit.) Ltrehozni a virtulis interfszt:
ip tuntap add dev tun0 mode tun
ip tuntap add dev tap0 mode tap

paranccsal lehet. Megszntetni pedig vagy


ip tuntap del dev tun0 mode tun

paranccsal. Nehezt tnyez ennl formnl, hogy ha lekrdezzk az interfszek rszletes informciit:
ip -d l sh dev tun0
15: tun0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN qlen 500
link/none
tun
ip -d l sh dev tap0
14: tap0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500
link/ether 4e:c4:3d:28:5a:ee brd ff:ff:ff:ff:ff:ff
tun

akkor az ip parancs mindkt interfszt tun mdnak mutatja, viszont ha ezek alapjn prbljuk
trlni, akkor hibazenetet kapunk
ip tuntap del dev tap0 mode tun
ioctl(TUNSETIFF): Invalid argument

111

IP-multiplexing, Bridge, VLAN, Bonding, s a hlzatkonfgurls 3-fle mdja


Kt lehetsgnk marad. Vagy szrevesszk, hogy a tap0 interfsznl (ez ugye a virtulis
Ethernet) ltszik MAC-cm ot a link/ether sor, mg a tun0-nl (ez pedig az IP-interfsz) e helyet
link/none szerepel. Ha ezt meg tudjuk jegyezni, akkor mr nem is kell a -d opci. Ha ezt nem tudjuk megjegyezni, vagy eleve szeretjk a knnyebb megoldst, akkor nem az erre felksztet ip tuntap del parancsot hasznljuk, hanem a hagyomnyos interfsz-trl mdszert:
ip link del dev tap0

Ugyanis ilyenkor nem foglalkozik a rendszer a md paramterrel.


Ha rendszernkben az iproute csomag nem elgg j, akkor sajnos valamilyen extra csomagot
kell letltennk, amelyben esetleg tallhatunk eszkzt a tun/tap interfsz ltrehozshoz. Taln
leginkbb az OpenVPN csomag javasolhat (eddig mg csak komolyabb mret, tbb fggsggel
rendelkez olyan eszkzt talltunk, amiben van valamilyen segdprogram ehhez a funkcihoz).
Az OpenVPN teleptse utn az interfszek kezelse. Ltrehozs:
openvpn --mktun --dev tun0
openvpn --mktun --dev tap0

Trls:
openvpn --rmtun --dev tun0
openvpn --rmtun --dev tap0

(Br az ip link del parancs ekkor ishasznlhat.) Mint sejthet, a megadot nv fggvnyben
jn ltre TUN, illetve TAP tpus interfsznk.
Hasonlan az alap hlzati rszben megfogalmazothoz, most is rvnyes, hogy ezen parancsok
hatsa legksbb a gp jraindulsakor elveszik, azaz az ot lertak most is rvnyesek. Ha szksges ezeket a specilis hlzati eszkzket mindig hasznlni, akkor az abban a fejezetben emlegetet konfgurcis fjlok megfelel kitltse a megolds. (Sajnos nhny terjesztsben ezek
nmelyikre nincsenek eszkzk, azaz rossz esetben marad valamilyen, a fenti parancsokat tartalmaz, kzzel ltrehozot parancsfjlnak a rendszerindtsba trtn beerszakolsa.)

112

Svszlessg szablyozs

Svszlessg szablyozs
Svszlessg. A Wikipdia szerint: egy digitlis kapcsolaton adot id alat tvihet adat menynyisge. Gyakran bitsebessgnek is nevezik. Mrtkegysge a bit/sec vagy byte/sec, ami az msodpercenknt tvihet bitek vagy byte-ok szmt adja meg. Napjainkban a hlzatok
sebessgnek nvekedse miat a kbit/sec vagy inkbb a Mbit/sec az elterjedt. Svszlessg. Ma, a
hlzatok korban mr majd mindenkinek van, de senkinek nincs elg (minden svszlessget ki
lehet tlteni, mint ahogy trhelybl sincs soha tl sok). Akinek kevs van, az jl szeretne gazdlkodni vele, akinek sok van, az szeretn okosan elosztani. Hogyan lehet ezt egyszeren megoldani?
Errl szl ez a fejezet.

Hlzati kapcsolatok
Kezdetben volt a telefonos hlzat. Akkoriban a kivlasztotak modemeket hasznltak, amelyet
az egyszer npek csak csodlhatak. Ebben az idben a sebessg mg csak 2400 bit/sec, de ez elssorban a telefonrendszerek rossz minsgnek volt ksznhet. Kalandos idk voltak. Ahogy
javultak a vonalak, a modemekkel akr 56\,kbit/sec sebessget is el lehetet rni -- ilyen kapcsolatokat mg ma is lehet tallni ot, ahol a telefonkzpontok vagy a kbeltv hlzatok nincsenek
megfelelen kiptve. A modemek le- s feltltsi sebessge ltalban megegyezik (az 56k-s modem esetn 33.6k a feltltsi sebessg), a modem tpustl fggen vagy prhuzamos a fel- s a letlts (full-duplex), akr a beszd a telefonvonalon, vagy egyszerre csak az egyik fl kldhet
adatot (half-duplex), mint a CB rdi esetben. Elkerlt egy nagyon fontos fogalompr: a fel- s
letlts. Ksbb megltjuk, hogy ezek a fogalmak nagyon fontosak a tovbbi trtnetnk szempontjbl, ezrt beszljnk egy kicsit rluk.
Valamirt az kp alakult ki az emberek fejben, hogy a kliensszmtgp fzikailag s virtulisan
alacsonyabb szinten helyezkedik el, mint a szerver. Ezrt letltsnek hvjk, amikor a szerver adatot kld a kliensnek (pldul egy munkallomsnak), s feltltsnek ha a kliens tovbbt adatot a
szervernek. Gyakran hallhatjuk pldul, hogy letlttem egy remek albumot az internetrl, vagy
hogy feltlttem az j weblapomat a szerverre. A svszlessg-menedzsment szempontjbl a kt
irny egszen ms tulajdonsgokkal br, de errl majd ksbb.
Az analg modemet szerencsre lassan mr mindenhol le lehet vinni a pincbe, mert vgre elrkezet a digitlis kor. Nlunk a modem utn a leginkbb elterjedt technolgia az ISDN (Integrated
Services Digital Network), amely lnyegesen nagyobb svszlessget tesz lehetv (kb. 128,kbit/s,
ha mind a kt csatornt hasznljk), de a telefonszmlja miat anyagilag nem tl bartsgos,
ezrt nem is szeretjk. Jelenleg leginkbb az ADSL, WLAN s kbelnet megoldsokat kedvelik a
felhasznlk. Az ADSL (Asymmetric Digital Subsciber Line) ma mr nagyon sok helyen hozzfrhet (igaz, fleg a vrosokban), a svszlessge nagyon j: jelenleg nlunk legfeljebb 4 Mbit/s le,
512,kbit/s fel. It mr ltszik, hogy mirt emeltk ki korbban a le s feltlts klnbsgt. De ez
csak a kezdet. Az egyszer emberek, akik nem zemeltetnek webszervert az othoni szmtgpkn, lnyegesen tbbet tltenek le, mint fel, ezrt ez a megolds nekik tkletesen megfelel.
Annyi gond van vele, hogy ha a felfel irnyul csatorna bedugul, akkor bizony lefel se nagyon
tudnak haladni az adatok. Ennek okrl ksbb, a protokollok trgyalsnl runk.

113

Svszlessg szablyozs
A WLAN s a kbelnet technikailag nagy svszlessg, szimmetrikus adattvitelt tesz lehetv,
de ltalban it is korltozzk a feltltsi sebessget. Ennek az az oka, hogy a szolgltatk nem
vesznek felesleges svszlessget, ezrt nem szeretnk, ha a felhasznlk othon hobbiszervereket
zemeltetnnek.
Szinte minden kapcsolatfajtnl elfordulhat, hogy ha bizonyos forgalmak tlzotan rtelepszenek a svszlessgre, akkor msok nem tudnak knyelmesen mkdni. Gyakori eset, mikor nhny nagyobb letlts (mert kijt az j Debian stabil, s azonnal le kell tlteni a CD-ket) annyira
leterheli a vonalat, hogy az internetes telefon nem mkdik megfelelen. It vlasszuk szt a hlzati forgalmat kt tpusra. Az interaktv forgalom ltalban kicsi, de azonnal tovbbtani kell.
Ilyenek a mr emltet IP telefon s vide, az interaktv tvoli hozzfrsi mdszerek (telnet, ssh,
vnc), a cseveg alkalmazsok (IRC, webchat, ICQ stb.) s vgl is ide sorolhat a kisebb weboldalak tvitele is. Ez esetekben nagyon fontos az adatok azonnali tvitele, mert egybknt szaggat
a hang, nem jnnek le a lapok s az nem j. A hlzati forgalmak msik tpusa a tmeges adatok
tvitele (bulk transfer), ahol az azonnalisg nem annyira fontos szempont. Ilyenek a nagyobb letltsek (web s fp egyarnt), a levelek kldse s fogadsa, rendszerfrissts s gy tovbb. Meg
kell ismerkednnk kt j fogalommal: ezek a throughput s a ltencia (latency). A throughput a
vonal tviteli sebessge, a ltencia pedig a vonal ksleltetse.
Az interaktv forgalmakat rdemes lenne egy kln, kicsi VIP csatornn tvinni, ahol a ksleltetst igyekeznnk minimalizlni, mg a masszv adattvitelnl olyan csatorna kellene, ahol az tvitelt maximalizlnnk. De neknk csak egy vonalunk van, az is bizonyos korltokkal rendelkezik
technolgiai sajtossgai miat. Hogyan lehet mgis hasznlhat kompromisszumos megoldst
kialaktani? Lssuk!

Protokollok
A tovbbiak megrtshez sajnos le kell szllnunk bit szintre, s meg kell vizsglnunk az interneten leggyakrabban hasznlt protokollok sajtossgait. Aki viszolyog a hexa editoroktl, annak
javasoljuk, hogy a kvetkez bekezds elolvassa utn ugorjon a kvetkez fejezetre.
Vezeti sszefoglal a protokollokrl : az IP protokoll adatok tvitelre val szmtgpek kzt, egy forrs- s egy clcm tallhat benne. Ezek az n. IP cmek azonostjk a szmtgpeket
az interneten. Az IP protokoll nem csinl mst, mint a htn cipel ms protokollokat a cmzeteknek s vissza; leggyakrabban TCP s UDP protokollokat szllt. Amik valjban nem is tudjk,
hogy honnan, hov mennek, csak annyit, hogy ha clhoz rtek, akkor melyik szolgltatsnak vannak cmezve. A szolgltatsokat ezekben a protokollokban a portok cmzik meg. Az UDP sajtossga, hogy nagy megbzhatsg, helyi hlzatokra terveztk (akkoriban az Internet s eldei mg
igen komoly csomagvesztesggel mkdtek), s mivel nemigen szmtotak csomagvesztsre,
ezrt az UDP protokoll nem nyugtzza a vtelt. A felad elkldi a csomagot, aztn ersen hisz
abban, hogy a msik oldal megkapta. Nincs visszajelzs. Az UDP-t ma mr az interneten is hasznljk olyan protokollok hordozjaknt (mert is csak szllt, mint az IP), ahol nagyon fontos a
sebessg, de nem szmt, ha egy-egy csomag elvsz. J plda erre a VoIP, azaz az internetes telefon, azon rsze, mely a beszdet szlltja. Pomps hibajavt mechanizmusai miat egy-egy csomag
elvesztst a felhasznlk nem is halljk meg, a ksleltetse viszont igen kellemetlenn teszi a beszlgetst. A TCP olyan mechanizmusokat tartalmaz, melyek ktelezv teszik a csomagok ellenrzst s nyugtzst, gy a TCP protokollt hasznl alkalmazsok (igen, is kizrlag szllt)
biztosak lehetnek benne, hogy minden elkldt csomag clhoz r. Ennek rdekben a TCP szksg esetn jrakld csomagokat, ha a tloldal nem igazolja vissza ket adot idn bell. Ezzel pr114

Svszlessg szablyozs
huzamosan szksg esetn lasstja a csomagok feladsi sebessgt, hogy ne rassza el a lassabb
vevt. Ez az a tulajdonsg, amit a tovbbiak megrtshez meg kellet ismerni. Most szpen elksznnk a knyelmesebbektl, s leszllunk a protokollok bugyraiba.

Az ICMP s UDP fontosabb jellemzi


A szmtgpek kommunikcija nagyon hasonlt az emberi beszdre. A nyelv, amit beszlnek,
a protokoll. Sokfle felhasznlsra az idk folyamn nagyon sok klnbz protokoll alakult ki,
minket most leginkbb az interneten leginkbb hasznlt IP, ICMP, UDP, s klnsen a TCP rdekel. Az IP-rl fent mr lertuk, amit most tudni rdemes, trjnk r az ICMP-re. Az ICMP (Internet
Control Message Protocol), ahogy a neve is mutatja, az internetes forgalom irnytsban segt.
Sok feladata van, minket csak egyetlen rsze rdekel: a Source Qench zenet. Ennek feladata,
hogy kzlje az adval: a vev nem kpes olyan gyorsan venni az adatokat, ahogy kldi. Nzznk egy egyszer pldt: van egy nagyon nagyon gyors szerver, akitl egy gyenge kliens elkezd
letlteni valami nagyot. A szerver elkezdi szrni az adatokat, de szegny gyenge kliens nem tudja
olyan gyorsan eltrolni az adatokat, ahogy kapja ket. Ilyen esetben kld vissza a kliens IP stackje egy Source Qench ICMP zenetet. Erre az ad szpen lecskkenti a cwnd (lsd TCP protokoll
lers) rtkt egy szegmensnyire, s jra kezddik a slow start. Errl bvebben a TCP protokoll
trgyalsnl. Korbban a kapcsolat tjban lv router-ek is kldhetek ilyen csomagot, de az
aktulis RFC-k szerint mr csak a cl kldhet. Az ECN (Explicit Congestion Notifcation) megjelense ta a Source Qench jelentsge lassan visszaszorul.
Most ejtsnk szt kicsit bvebben az UDP (User Datagram Protocol) protokollrl. Az UDP kapcsolatmentes protokoll, nincs kapcsolatfelpts s -bonts. Az elkldt csomagok mindenkppen
tmennek a csatornn, gy a masszv UDP forgalom vev oldalon nem szablyozhat vissza, erre
egsz egyszeren nincs semmilyen mdszere a vevnek. Mindez addig teljesen rendben is volt,
amg az interneten csak segdprotokollnak hasznltk az UDP-t. Ilyen felhasznls a domain vagy
az ntp. Ma azonban egyre nagyobb teret hdt a VoIP, ahol a csatorna felptse s a kapcsolat jellemzinek egyeztetse TCP-n zajlik, de a hang s kp tvitele UDP-n, ezzel komoly fejtrst okozva a svszlessget szablyozni vgyknak. Kijelenthet: ha UDP protokollon nagy mennyisg
adatal eltmik a bejv csatornnkat, akkor szpen elmehetnk tezni, mert annak csak akkor
szakad vge, ha a kld akarja. Van azrt egy megolds, ha nem is tl egyszer, de errl majd ksbb. Most menjnk r a nagy vadra: a TCP-re.

A TCP jellemzi
Ma a TCP (Transmission Control Protocol) vgzi az internet adatovbbtsnak az oroszln rszt -- s szerencsre nagyon okos. A TCP kapcsolat alap protokoll, gyel a csomagveszts elkerlsre, a helyes sorrendre s az ismtlds mentessgre.
A protokoll mkdsi mechanizmusai igen sszetetek, vaskos ktetek szlnak rla, a svszlessg szablyzsnak szempontjbl minket azonban csak nhny dolog rdekel. A TCP egyik legfontosabb fogalma az ablak, mely kets clt szolgl. Az egyik feladata az jraads szablyozsa,
ez minket most kevsb rdekel, a msik viszont nmi forgalom szablyzs: az ablak a csatornra
egyszerre kikldhet mg nem nyugtzot csomagok mrett adja meg. Ha a kld minden csomagra egyenknt megvrn a nyugtt, az adattvitel nagyon lass lenne. Az ad ablakban mr
elkldt, de mg nyugtra vr, valamint mg el nem kldt csomagok vannak. Amint a vev
nyugtz egy csomagot, azt az ad kiveszi az ablakbl, ahov ezutn jabb kldend adatok kerlnek. Ha a vev nem nveli megfelel sebessggel az ablakot, akkor cskkentheti mrett. Ezzel a
kliens szablyozhatja az adsi sebessget, hiszen ha az ablak mrett nullra cskkenti, akkor az
115

Svszlessg szablyozs
ad csak akkor adhat jabb csomagot, ha nyugtt kapot az elzrl. gy teht megvalsthat a
nagy lom: a bejv kapcsolatok svszlessge szablyozhat. Ezzel csak annyi gond van, hogy a
hlzaton ms rendszerek is vannak, gy ez nha nem elegend.
A kommunikciban nagyon fontos timeout-ok megadsakor fontos szerepe van az un. RTTnek (round trip time), azaz a vonal ksleltetsnek. A TCP stack-ek ezt folyamatosan mrik a kapcsolat alat. Amennyiben pl. egy nyugtt ksleltetnk, gy befolysoljuk az RTT-t is.
A TCP protokoll egy hasznos eszkzt ad a kommunikci hlzati terhelshez igaztshoz: ez a
slow start algoritmus. Az algoritmus lnyege, hogy a norml ablak mellet bevezeti a torldsi ablak (congestion window) fogalmt, Az adsi jog a norml s a torldsi ablak mretnek minimumtl fgg. A kapcsolat felptse utn a cwnd rtke egy lesz, amit minden csomag
vesztesgmentes tvitele utn megduplz az IP stack. Az exponencilis nvekeds hatsra a kapcsolat gyorsan elri a maximlis sebessgt, gy a slow start hatsra a kt rendszer kommunikcija lassan indul, s a vev, illetve a csatorna lehetsgei szerinti szinten meglltja az adsi
sebessget. Ez azonban mg mindig kevs a torlds elkerlshez, ezrt a slow start algoritmust
kiegszti a torlds elkerlsi (congestion avoidance) algoritmus. Az algoritmus lnyege, hogy a
mai nagy megbzhatsg hlzatokon a csomagok elvesztse egszen biztosan a torlds jele
lesz, gy az algoritmus bevezet egy ssthresh nev vltozt, amely kt lehetsges mkdsi md
kzti vltsra szolgl. Amennyiben az ssthresh kisebb, mint a cwnd, akkor slow start fog indulni,
ellenkez esetben a nyugtk hatsra a cwnd-t csak 1/cwnd rtkkel fogja nvelni. Amikor jraadsra kerl sor, akkor az ssthresh vltozt belltja az aktulisan hasznt ablak (a cwdn s a norml ablak minimuma) felre. Ha timeout trtnt, akkor a cwnd-t visszalltja egyre, s jra
kezddik a slow start. Eddig a csomag eldobsval s az ablak mretnek cskkentsvel jelezhette a vev az adnak, hogy lasstson. jabban van azonban erre jobb md is: az explicit congestion
notifcation.
A tcp jraads bemutatsakor lthatuk, hogy miknt kezelhet a torlds. Azonban tbb protokoll is ltezik, ahol a csomagveszts miat megnv ksleltets nagyon zavar lehet. Ezt a htrnyt knnyen meg lehetne szntetni, ha a router-ek tl hossz adsi sor esetn nem egyszeren
eldobnk a csomagot, hanem torldsi jelzst tudnnak kldeni. E clra dolgoztk ki az ECN-t,
melynek megvalstsa nem csak a TCP protokollhoz ktt, brmilyen protokoll kiegszthet
vele. A protokoll egy rsze az IP, mg msik rsze a TCP rtegben helyezkedik el. Az IP rtegben a
kommunikci az IP fejlc kt bitjn t zajlik, erre a difserv mez melleti kt, eddig nem hasznlt
bitjt jelltk ki. Az elz ECN lers it kt kln bitrl szlt, a vgleges szabvny azonban a kt
bitet egyben kezeli, az gy kapot rtket ecn codepoint-nak hvjk. A 00 rtk azt mutatja, hogy a
csomag feladja nem ismeri az ECN-t, vagy nem akarja azt hasznlni. A 01 az ECT(1), mg az 10 az
ECT(0) codepoint. Az 11 codepoint jelentse CE (Congestion Experienced). Amennyiben egy router olyan csomagot vesz, amely az ECT(0) vagy ECT(1) codepoint-ot tartalmazza s torldst rzkel, gy tlltja a CE codepoint-ra.
Azonban gy csak a tloldalt sikerlt rtesteni, ezt az inft mg vissza kell jutatni megbzhatan a feladnak. Mindez azrt fontos, hogy az jraadsi policy-t ennek megfelelen szablyozhassk. A szablyzs elsegtsre a TCP fejlcben bevezetek kt j fag-et: ECE (ECN Echo),
valamint a CWR (Congestion Window Reduced). Amikor valamely oldal olyan TCP csomagot
vesz, amely CE codepoint-ot tartalmaz az IP fejlcben, gy a nyugtban belltja az ECE TCP faget. A tloldal ezt olyan mdon nyugtzhatja, hogy a kvetkez csomagjban a CWR TCP fag szerepel. Az ECN jelzsek csak olyan kapcsolatoknl hasznlhatak, ahol mr az elejn megllapodtak az ECN hasznlatrl. Ez gy trtnik, hogy a kapcsolatot felpt oldal a SYN-es
csomagjban az ECE s a CWR bitet is belltja (ECN-setup SYN packet). Amennyiben a tloldal

116

Svszlessg szablyozs
szintn ismeri s hasznlni szeretn az ECN-t, gy a ECE bitet magasra, a CWR bitet pedig alacsonyra lltja (ezt hvjuk ECN-setup SYN-ACK packet-nek).

A legfontosabb hlzati protokollok svszlessg jellemzi


HTTP, HTTPS Az interneten leggyakrabban hasznlt protokollok, a webszerverek s kliensek kzti kommunikcira s bizonyos esetekben ms forgalmakra is
(pl. bizonyos esetekben a Skype is hasznlja). TCP szlltja, gy kifel s
befel is jl kontrolllhat. Jellemzen kis kifel s a felhasznlstl fggen akr hatalmas befel irnyul forgalmat okoz. Ha web alap levelez rendszereken csatolt llomnyokat tltnk fel, vagy valamilyen jelentsebb mret form-on megnyomjuk a megfelel gombot, akkor a kifel
irnyul adatmennyisg is jelents lehet. ltalban elegend a bejv
irnyt szablyozni.
VoIP protokollok

Napjaink egyre npszerbb lehetsge az internet telefon. Az interneten


hang s kptvitelre hasznlt protokollok (pl. H.323, SIP stb.) tbb csatornt hasznlnak, TCP-t s UDP-t egyarnt. Forgalmuk szablyozsa nehzkes, bizonyos esetekben (bejv szablyzs) lehetetlen. A bejv forgalom szablyzsra az egyetlen hasznlhat mdszer egy kls router
hasznlata az interneten, ahol a befel irnyul VoIP UDP forgalmat kifel menknt, queue-kkal lehet szablyozni.

SMTP

Levl kldsre hasznlt, TCP feleti protokoll. Munkallomson szinte kizrlag kifel irnyul forgalmat okoz, levelez szervereken ltalban befel is ezt hasznljk. Felhasznlstl fggen kell szablyozni, az othoni
gpeken csak kifel.

POP3, POP3S

Levelek letltsre hasznljk. TCP alap. Minimlis a felfel forgalma, a


lefel viszont a levelek mennyisgtl fggen akr nagyon nagy lehet. A
bejv forgalom szablyozsa mindenkppen ajnlot.

IMAP, IMAPS

Postaldk elrsre hasznlhat, TCP-n kzlekedik. Alapesetben a leveleknek csak a fejlcei jnnek t a csatornn, s a levl trzse csak az elolvass elt. ltalban ritkn mentnk a helyi leveles ldbl az IMAP
szerverre, de ilyenkor jelents felfel men forgalmat is okoz. ltalban a
bejv forgalmnak szablyozsa szksges.

SSH

Tvoli hozzfrsre hasznlt, TCP szlltja. Alapveten parancsok kiadsra hasznlhat, de lehet rajta keresztl fjlokat msolni (scp, sfp) TCP
portokat tovbbtani (forwarding) s SOCKS proxyknt is hasznlhat (D opci). gy teht a kifel s befel irnyul forgalma is a hasznlat
mdjtl fgg, gy ltalban mindkt irnyban rdemes szablyozni.

FTP

Adattvitelre hasznlt TCP alap protokoll. ltalban letltsre hasznljk, de kpes feltltsre is. Felhasznlstl fggen mind a kt irnyt
kontrolllni kell. A TC szempontjbl igen kellemetlen tulajdonsga,
hogy tbb TCP kapcsolatot hasznl, gy szrse csak az Netflter fp
conntrack moduljval oldhat meg knyelmesen. Ennek hasznlatrl
majd ksbb szlunk.

egyb, kicsi de
fontos forgal-

Svszlessg szempontjbl nem jelents, de kellemetlen problmkat


okozhat a domain s az ntp forgalom fennakadsa. Mindket jellemzen
117

Svszlessg szablyozs
mak

UDP-t hasznl (a domain esetn znatranszferre hasznlnak TCP-t, de ezt


a nvszerver zemeltetk nyilvn tudjk). Ezeknek a forgalmaknak rdemes egy kicsi de fx csatornt biztostani a fennakads mentes mkds
miat.

egyb

Ha a hlzaton egyb forgalmak vannak, akkor azokat egyenknt meg


kell vizsglni. Erre nagyszeren hasznlhat pldul az ntop program.

A svszlessg-menedzsmentrl
A hlzati kapcsolat kt "csknt" is elkpzelhet, az egyik a kimen forgalmat viszi, a msik a
bejvt. Vilgos, hogy a kimen csbe olyan sorrendben s olyan logika szerint kldjk az adatokat, ahogy akarjuk. Ha a kimen svszlessg szablyzst szeretnnk megoldani, akkor erre
minden lehetsgnk megvan (a Linux biztostja ezeket). A bejv csnl viszont knnyen belthat, hogy kzvetlenl csak akkor befolysolhatjuk a bejv adatok protokollok s gpek kzti
elosztst, ha a cs msik vgn lltani tudjuk a csbe tovbbtot adatokat. Erre ltalban nincs
lehetsg, az internet szolgltatk csak igen klnleges esetekben mkdnek kzre ilyen megolds fellltsban. Ez teht kiesik. Szerencsre azonban az internet forgalmnak jelents rsze TCP
protokollon zajlik, s ahogy az elz fejezetben lthatuk ennek a bejv sebessgt indirekt
mdon befolysolhatjuk.

A forgalom szablyzsnak mdszerei


shaping

A csomagok vrakoztatsa az elvrt tlagos sebessg elrsig. Kizrlag kimen forgalomra hasznlhat, mivel a bejv csomagokat nem tudjuk a csatornn vrakoztatni, azok bizony bejnnek.

scheduling

Az idzts (vagy ms nven jrarendezs (reordering)) lehetv teszi a csomagok tadsi sorrendjnek megvltoztatst.

policing

Valamilyen akci vgrehajtsa minden csomagon, amely tllpi az elvrt


svszlessget. ltalban ez a csomag eldobst jelenti, ami TCP esetn meglepen hatsos mdszer, mint azt korbban ltuk. UDP esetn ltalban semmi msra nem j, csak csomagveszs elidzsre.
A kimen forgalom szablyzsra hasznlhat a shaping, ahol a kimen csomagokat a hlzati
TC alrendszer valamilyen szablyrendszer alapjn vrakoztatja a szksges ideig. Ehhez sorokat
hasznl, ahov a berkez csomagokat besorolja. A bejv forgalom jelenleg csak policing mdszerrel szablyozhat, ahol jelenleg nincs lehetsg osztly alap sorba lltsi mdszerek hasznlatra, br nmi kiegsztssel vagy trkkzssel a bejv forgalomra is hasznlhatunk osztly
alap sorba lltst, de errl majd ksbb.

A Linux TC alapjai
Arrl mr szltunk, hogy sorok segtsgvel befolysolhatjuk a csomagok kikldst. A kernel a
rendelkezsnkre bocst szmos klnbz kpessgekkel rendelkez besorolsi algoritmust, az
un. qdisc-eket, a kimen (egress) s a bejv (ingress) forgalom szablyozshoz. Ezek segtsgvel tudjuk mdostani az adatok tovbbtsnak mdjt. Kt csoportba sorolhatk. Vannak osztly
alap (classful -- CF) s osztlymentes (classless -- CL) besorol mdszerek. Az osztlymentes
118

Svszlessg szablyozs
mdszerek kpesek a csomagok fogadsra, jratemezsre, vrakoztatsra vagy eldobsra.
Az osztly alap besorol mdszerek tbb osztlyt tartalmazhatnak, melyek jabb besorolsi mdszereket tartalmazhatnak (CL vagy CF) s gy tovbb. Az osztlyok szrmazhatnak (parent) egy
qdisc-bl vagy ms osztlyokbl. Levl osztly alat olyan osztlyokat rtnk, melyeknek nincs alosztlya (child), s rendelkezik egy qdisc-kel. Mikor ltrehozunk egy osztly, akkor alapbl egy
ffo qdisc kapcsoldik hozz (lsd ksbb), mely gyerekosztlyok hozzkapcsolsnl automatikusan megsznik. A levlosztlyok qdisc-jeit brmikor le lehet cserlni CL vagy CF qdisc-re.
Az osztlyoknak szksgk van egy algoritmusra, amely megadja, hogy hogyan kell a berkez
csomagokat elosztani az alosztlyok kzt, ez az osztlyz (classifer). Az osztlyzs szrk (flter)
alapjn vgezhet el. Egy szr valamilyen felttelek szerint eldnti, hogy egy adot csomag hozz
tartozik-e vagy nem.
A bal oldalon lthat a hlzatrl berkez forgalom, amely egy specilis qdisc-be rkezik, ez az
ingress qdisc. It vgezhet el a berkez csomagok kezelse. Ehhez szrk kthetk, melyek lehetsget adnak a bejv csomagok eldobsra, ezzel a TCP forgalom lasstsra. Ha a csomag nem
dobdot el, akkor ezek utn kvetkezik a routing dnts, ahol a kernel eldnti, hogy a csomag
helyi folyamathoz tartozik (ekkor az megkapja), vagy tovbb kell kldeni egy msik csatoln.
Utbbi esetben a kimen hlzati interfszhez kapcsolt qdisc folytatja a csomag feldolgozst s a
belltsainak megfelelen kezeli azt.
Minden csatolhoz tartozik egy kimen (egress) un. root qdisc. Alapesetben ebbe "esnek be" a
csomagok, hacsak valamelyik osztlyz nem sorolja ket mshov. Minden qdisc-nek van egy
azonostja (handle), amely kt szmbl, a major-bl s a minor-bl ll. A major-t a felhasznl
adja meg, a qdisk-ek esetn minor minden esetben 0. Egy root qdisc esetn az azonost valahogy
gy nz ki: 1:0. Az osztlyok major-jainak meg kell egyeznie a szlosztlyok major-jval. A major-nak egyedinek kell lennie az ingress-en s az egress-en is. Az osztlyok logikai szrmazsi fjra mutat egy pldt az bra.
A fa nem a besorolst segti el, hanem, ahogy ksbb ltni fogjuk, a segtsgvel a csatorna
egyszeren s logikusan feloszthat a klnbz osztlyok kzt. Ezt gy oldjk meg, hogy minden osztly csak a felete llval beszlhet, csak az svszlessgbl gazdlkodhat. Az osztlyba
sorolst a szrk vgzik el, minden osztlyhoz kapcsolhatk szrk, s segtsgkkel minden csomag tdobhat egy msik osztlyba.

A Linux TC kernel rszei


Ennyi bevezet utn ideje lenne rtrni a lnyegre. Ha befolysolni szeretnnk a svszlessget,
akkor szksgnk lesz a kernel tmogatsra. Az albbiakat kell a kernelbe fordtanunk (csak a
most hasznlt rszeket emltve):
Networking ->
[*] Networking support
Networking options --->
<M> Firewall based classifier
<M> U32 classifier
[*] QoS and/or fair queueing --->
<M>
HTB packet scheduler
<M>
The simplest PRIO pseudoscheduler
<M>
SFQ queue
<M>
TBF queue
<M>
Ingress Qdisc

119

Svszlessg szablyozs
A fenti alrendszereket a komolyabb disztribcik befordtjk a rendszermagba, gy ezzel ltalban nem kell bajldnunk. A Linux TC belltshoz szksgnk lesz mg a tc parancsra is, amely
ltalban az iproute2 csomag rsze.

Besorolsi mdszerek (qdisc)


Az rs mrete nem teszi lehetv, hogy minden ltez mdszert bemutassunk, gy egyszeren
csak egy knnyen hasznlhat, vilgos megolds kivitelezshez szksges rszeket ismertetjk.
Amennyiben valakinek etl bonyolultabb ignyei vannak, akkor gysem ssza meg a LARTC elolvasst.

Osztlymentes qdisc-ek (classless)


pfifo_fast

A legegyszerbb, minden hlzati csatolhoz alaprtelmezeten kapcsolt qdisc. A forgalmat hrom svra (band) osztja, minden sv egy FIFO, ami azt jelenti, hogy az elsknt betet csomag
hagyja el elszr a svot. A forgalmak sorokba osztst az IP csomag TOS s PRECEDENCE mezi
alapjn oldja meg, pldul a Minimum Delay jelzvel elltot csomag a 0. sorba kerl, s gy tovbb. A javasolt TOS besorolsokat az RFC-1349 rja le. A svok egymshoz kpesti kezelse gy
zajlik, hogy amg a 0. svon van csomag, addig az 1. svot nem hagyja el csomag, s gy jr el az 1.
s 2. viszonylatban is. Ebbl azonnal ltszik egy kellemetlen mellkhatsa: ha egy nagy svszlessget ignyl forgalom csomagjai rendre Minimum Delay jelzvel vannak elltva, akkor az lehetetlenn teszi a tbbi forgalom thaladst. Ezt a hatst remekl meg lehet fgyelni az ssh port
tovbbtsa esetn, ha az tvit csatornban nagy mennyisg adatot visznk t (pldul egy htp
port tovbbtsa esetn). Ilyenkor az ssh kpes minden ms, jelzvel nem elltot forgalom elnyomsra.
TBF Token Bucket Filter

A TBF olyan egyszer, jl hasznlhat qdisc, amely lehetv teszi a rajta tmen forgalom lasstst. Nagyon precz, nem ignyel sok processzoridt, valamint hlzatbart. A hlzati forgalom
lasstsra kivlan hasznlhat. Csak akkor adja tovbb a csomagokat, ha azok tovbbtsval
nem haladja meg az engedlyezet svszlessget. Az implementci tartalmaz egy pufert (bucket), amely megadot sebessggel, folyamatosan tltdik virtulis adatdarabkkkal, n. tokenekkel. A TBF legfontosabb paramterei a pufer mrete, amely megadja, hogy hny token-t lehet
trolni benne, illetve a korbban emltet tltsi sebessge. Minden bejv adatcsomagot egy token-hez kapcsol, amit eltvolt a puferbl. Amennyiben az adatok ppen a megadot sebessggel
rkeznek, akkor a puferben mindig lesz hozzjuk kapcsolhat token, ha lassabban, akkor a pufer
tele lesz tokenekkel, teht az adatcsomagok azonnal tovbbtdnak. Lthat, hogy ha az adatok
lassabban rkeznek, akkor kisebb lksek (burst) akr meghaladhatjk a belltot bitsebessget,
ha azonban az adatok gyorsabban rkeznek, mint a megadot sebessg, akkor a puferbl hamarosan kifogynak a token-ek, gy a berkez csomagok tovbbtsa tmenetileg sznetel, teht a svszlessg a belltot szinten marad. A legfontosabb bellthat jellemzi teht:
rate

A sebessghatr.

burst

A pufer mrete byte-okban megadva. Vigyzat! Ez megadja egy lehetsges adatlks


maximlis mrett. Ha nagyon kicsi, akkor lehetetlenn teszi az adatok tovbbtst. A
gyakorlat azt mutatja, hogy ha nagysgrendileg nem hasonl a rate rtkhez, akkor a
TBF nem tudja a belltot sebessget tvinni. Ennek oka a hlzati forgalom sajtoss120

Svszlessg szablyozs
gaiban gykerezik, ugyanis az soha nem egyenletes. Ha a pufer mrett a rate mretre
(vagy nagyobbra) lltjuk, akkor a maximlis tlagos sebessg biztosan a belltot lesz.
limit

A csomagok sornak mrete byte-okban Nem ktelez meghatrozni.

latency Megadja, hogy egy csomag legfeljebb mennyi ideig lehet a sorban. Nem ktelez meghatrozni.
SFQ Stochastic Fairness Queueing

Az SFQ olyan qdisc, amely igyekszik igazsgosan elosztani a hlzatot a berkez kapcsolatok
kzt. A TCP kapcsolatok s UDP adatfolyamok alapjn a berkez csomagokat nagyszm sorba osztja szt, s utna minden sorbl legfeljebb a quantum ltal meghatrozot mennyisget tovbbtja. Ezzel elrhet, hogy a gyorsabb kapcsolatok nem tudjk elnyomni a lassabbakat.
Termszetesen csak akkor van rtelme, ha a hlzati csatol teljesen ki van hasznlva, mert ha
nincs, akkor az SFQ nem csinl semmit, hiszen minden kimen csomagot azonnal tovbbtani lehet. No de kinek nincs llandan kitmve a kimen vonala? Az SFQ legfontosabb paramterei:
perturb

Az elosztsi besorols jrakonfgurlsnak ideje. Amennyiben nincs megadva, akkor


soha nem lesz jrakonfgurlva, ami nem j tlet. A 10 msodperc j vlaszts.

quantum

A sorbl egyszerre kikldhet adat mennyisge byte-okban Az alapbelltsa egy


csomag mrete. Ne lltsuk az MTU mrete fl!

limit

A sorba llthat csomagok maximlis szma. Amennyiben elri, akkor elkezdi eldobni a csomagokat.

Osztly alap qdisc-ek (classful)


It csak egyetlen, de nagyszeren hasznlhat qdics-rl szlunk. A neve HTB (Hierarchical Token Bucket), s a gyakran hasznlt, de kiss bonyolult CBQ helyetestsre hoztk ltre. A HTB
tulajdonkppen a TBF osztly alap vltozata. Legfontosabb belltsi jellemzi:
rate

Meghatrozza a token-ek ellltsi sebessgt s gy az tlagos svszlessg hatrt is


(lsd mg TBF). A root osztlynak a vonal svszlessgt kell megadni.

burst

A pufer mrete (lsd mg TBF).

ceil

Az osztly ltal hasznlhat legnagyobb svszlessg.

prio

Az alacsony vrakozsi idt ignyl osztlyok priorizlsra hasznlhat, pldul


hang s kp tvitele esetn, vagy tvoli shell hasznlatnl. Paramtere egy szm. A
magasabb besorols osztly kap elszr a svszlessgbl (termszetesen csak a rate
s a ceil ltal meghatrozot mrtkig).

default

Az alaprtelmezet gyerekosztly azonost minorja. Hacsak egy szr msknt nem


dnt, akkor ide kerl a csomag.
A root osztlyon kvl minden HTB kpes svszlessget klcsnvenni a testvreitl. m ha
kzvetlenl a root al vesszk fel a gyerekosztlyokat, akkor azok sem tudnak klcsnzni, gy ltalban rdemes a root al felvenni egy osztlyt, s a tbbieket ez al tenni. gy szksg s lehetsg esetn a levlosztlyok mr kaphatnak svszlessget a tbbiektl.
Az osztlyhierarchia megfelel felptsvel, a ceil s a rate megfelel megvlasztsval szinte
minden, gyakorlatban felmerl feladat megoldhat. Ezrt hasznljuk ezt a qdisc-et a pldinkban.

121

Svszlessg szablyozs

A forgalom osztlyozsa
A forgalom osztlyozsra kt leggyakrabban hasznlt szr a frewall s az u32. A frewall szr a csomagszr ltal belltot jelek (mark) alapjn osztlyozza a csomagokat, ilyen jel helyezhet fel a mangle tblban a -j MARK --set-mark <jel> akci segtsgvel. A Netflter hatalmas
tudsa s rugalmassga ezltal felhasznlhat a TC rendszer kialaktsnl is. A legjobb az OUTPUT tbla elejre betenni egy jell chaint, ami a szksgleteknek megfelelen megjelli a csomagokat. rdemes megjegyezni, hogy a bejv hlzati eszkzn is megjellhetjk a csomagokat, s
ez alapjn osztlyozhatjuk a kimen oldalon. Ennek felhasznlsa a szrben:
# tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 10 \
fw flowid 1:1

Ez a 10 jelzssel elltot csomagokat az 1:1 azonostj osztlyhoz rendeli. Az u32 szr segtsgvel kzvetlenl a csomag jellemzire szrhetnk, s ezek alapjn irnythatjuk a csomagokat.
Az u32 legfontosabb paramterei:
src

Forrscm vagy hlzat. Hasznlata: 'match ip dst 10.1.2.0/24', amely a 10.1.2.0 hlzati cm, C osztly hlzatra illeszkedik. Ha egy bizonyos gpet szeretnnk megadni,
akkor a maszk legyen 32.

dst

Clcm vagy hlzat. Hasznlatt lsd a forrscmnl.

sport

Forrsport. Hasznlata: 'match ip dport 110 0xff', amely a 110-es portrl jv (azaz
POP3) csomagokra illeszkedik.

dport

Clport. Hasznlatt lsd a forrsportnl.

protokoll Protokollra a /etc/protocols fjlban megadot szm segtsgvel egyszeren szrhetnk gy: 'match ip protocol 1 0xf'. Ez az ICMP, vagyis az 1 azonost szm csomagokra illeszkedik.
Teht egy sszetet u32 szr valahogy gy nz ki:
# tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match \
ip src 192.168.1.1 match ip dport 25 0xffff flowid 1:1

amely a 192.168.1.1 cmre men, 25-s portra irnyul forgalmat bedobja az 1:1 azonostj osztlyba.

A kimen forgalom szablyozsa


Most jjjn a gyakorlat. A kimen forgalom szrst a kvetkez mdon lltjuk be:
# tc qdisc add dev eth0 root handle 1: htb default 10
# tc class add dev eth0 parent 1: classid 1:1 htb rate 2mbit burst 10k
# tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1536kbit \
ceil 2mbit burst 10k prio 1
# tc class add dev eth0 parent 1:1 classid 1:20 htb rate 512kbit \
ceil 512kbit burst 10k prio 2
# tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
# tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
# tc filter add dev eth0 parent 1: protocol ip prio 1 handle 120 \
fw flowid 1:20
# iptables -t mangle -I OUTPUT -o eth0 -p tcp --sport 25 \

122

Svszlessg szablyozs
-j MARK --set-mark 120

Ezek mellet a belltsok mellet a rendszer svszlessget ket fogja vgni az 1:10 s az 1:20
azonostj HTB osztlyra. Az 1:10 osztly maximlis svszlessge 1536kbit/s, s ha a vele egy
szinten lv osztly tud adni, akkor 2 Mbit/s-ig klcsn kri annak svszlessgt. Ebbe fog bekerlni minden olyan forgalom, ami nem lesz explicit mdon osztlyba sorolva. A msik osztly,
amelynek azonostja 1:20 svszlessge 512kbit/s, s nem kr klcsn a tbbiekbl. Az osztlyzst frewall szrvel vgezzk, a Netflter jelek alapjn. Lthat, hogy a kimen forgalomnak a
25-s portra men rsze (a kimen SMTP forgalom) lesz 120-as jellel elltva, amit a frewall szr
bedob az 1:20 osztlyba. Az bra mutatja a hlzat kihasznltsgt a bellts elt s utn.
Mindkt levlosztly egy-egy SFQ qdisc-et kapot. A vgeredmny: a kimen levelezs nem tudja
elfoglalni a teljes svszlessget, csak annak egy negyedt.

A bejv forgalom szablyozsa


A betltt szablyrendszer nagyon egyszer:
# tc qdisc add dev eth0 ingress
# tc filter add dev eth0 parent ffff: protocol ip prio 50 \
u32 match ip dst 10.1.1.1/32 police rate 512kbit burst 512kbit \
drop flowid :1

Ez ltrehoz egy ingress root qdisc-et az eth0 csatolra, amely valjban nem klasszikus qdisc,
csak annyira kpes, hogy szablyok alapjn eldobjon csomagokat. Egyetlen szably lesz, ez a
10.1.1.1 gprl jv forgalmat cskkenti 512kbit/s-ra. Minden olyan csomag, amely ezt a bitsebessget meghaladn, el lesz dobva. A tbbi bejv forgalom nem lesz kezelve, gy azok tetszs szerint kitlthetik a csatornt. Ahogy az brn ltszik, ez SSH esetn (s nyilvn a tbbi TCP alap
protokoll esetn is gy lenne) szpen mkdik is. Ha azonban a 10.1.1.1 irnybl nagy mennyisg UDP forgalom rkezik (az nc segtsgvel lltotuk el), akkor a szablyzs teljesen tnkremegy.
Ahogy mr korbban is emltetk, a bejv forgalomra nem lehet vrakozsi sorokat hasznlni,
mivel a csatornn nem vrhatnak a csomagok. Ezt a hinyossgot tbbfle mdon megkerlhetjk. Az egyik lehetsg a virtulis gpek hasznlata, gy a bejv forgalom a gpen bell egy virtulis hlzati csatoln (pl tun eszkzn) tvozik, s it mr tehetnk hozz vrakozsi sorokat
tartalmaz qdisc-eket is. A msik mdszer jelenleg nem rsze a hivatalos kernelnek, ez az IMQ. Ez
egy virtulis hlzati eszkz, amely hasznlatval a bejv forgalom kimenknt ltathat s gy
kezelhet.
Figyelmeztets: A bejv forgalom szablyozsa csak akkor oldhat meg tkletesen, ha az interneten elhelyeznk egy kis Linux gpet, aki fogadja a befel irnyul forgalmat (valjban mindenki azt hiszi, hogy az IP cme a mink), s a kimen csatoljn vgzi el a forgalom
szablyzst.

123

Hatrvdelem, alapvet tzfal belltsok (netflter s elttjei)

Hatrvdelem, alapvet tzfal


belltsok (netfilter s elttjei)
A tzfalakrl ltalban
Tzfalnak (frewall) nevezzk ltalnossgban azt a hlzati eszkzt, amely clja, hogy az adot
hlzathoz vagy szmtgphez csak elre defnilt hozzfrst engedlyezzen. A tzfalak llhatnak specilis szofver- illetve hardverkomponensekbl, s az tlag felhasznl gyakran nem is igazn szleli a ltezsket. Fajti az egyedfejldsk sorn a teljesen kezdetleges hatrvdelemtl
egszen a szofsztiklt modulris applikci szint tzfalig terjedtek, s folyamatosan fejldnek.
Az internet igen korai szakaszban jellemzen nem csak tzfalakra nem volt szksg, hanem titkostst sem igen hasznltak. Azok akik hozzfrhetek a gpekhez s a hlzathoz, mind magasan kpzet s jellemzen egy clrt a szmtgp el lel emberek voltak, akik megbztak a
tuds birtokosban. Azt feltteleztk, hogy aki a tudst s a fzikai helyet birtokolja, az nem rt
szndkkal tevkenykedik a hlzaton. Ez a fajta hozzlls nem csak gykeresen megvltozot,
hanem ma mr egy tlag zemeltetnek muszj gy gondolkodnia, hogy amint az asztali vagy a
szerver gpet rktte a hlzatra, az elbb vagy utbb clpontja lesz egy betrsi ksrletnek, de
legalbb egy hlzaton keresztli tapogatzsnak. Szmtalan olyan ksrlet dokumentcija olvashat szerte az interneten, ahol egy magnyos alapteleptst tesznek ki vdelem nlkl egy publikus cmre. Lehet ez akr Linux vagy Windows alap gp, egy biztos, elbb vagy utbb felfedezik a
vletlenszer vagy direktben arra a szegmensre indtot psztzsok. Onnantl pedig az opercis
rendszer komponenseitl, illetve a rajtuk fut szolgltatsoktl fgg, hogy mennyi idn bell
esik el a gp, s veszik t rajta az uralmat. Az teht, hogy a tzfalra mr a legegyszerbb, hlzatra ktt asztali gpnek s egy magban ll szervernek szksge van, nem is vitatot krds.
Jellemzen pedig a legtbb bels hlzat elt is legalbb egy csomagszr router vagy egy clhardver irnytja s szri a csomagokat.

A tzfalak fajti
Csomagszr (packet filter, screening router)
Minden egyes csomagrl annak fejlce alapjn, az elzmnyek fgyelembe vtele nlkl hoz
dntseket. Mivel a csomagok ltalban fx felpts fejlceiben lv informcit hasznlja a
dntseknl, gy nincs szksge bonyolult elemzsekre, ezrt nagyon gyors, kicsi processzorigny. Mivel llapotmentes, gy kicsi a memriaignye s a kezelhet kapcsolatok szmt nem korltozza semmi. Illetve csak a hlzati eszkzk tviteli sebessge.
llapot mentessgbl addik a htrnya is, ez pedig az, hogy nem tudja megllaptani egy
csomagrl, hogy egy mr fennll hlzati kapcsolathoz tartozik-e, vagy sem. Ennek kvetkezmnye, hogy megtveszthet, mg fel sem plt TCP kapcsolatokhoz tartoz csomagok kszlhatnak a hlzaton, s ezt a csomagszr nem kpes felfedezni. A msik problma, hogy bizonyos
bonyolultabb protokollok esetn, amilyen pldul az FTP (File Transfer Protokol), nem kpes a
124

Hatrvdelem, alapvet tzfal belltsok (netflter s elttjei)


tbb sszefgg hlzati kapcsolatot egyknt rtelmezni, ezrt ezeknek a protokolloknak az tvitele nehzkes s sokszor veszlyesen ki kell nyitni a tzfalat hozzjuk. A csomagszrk szinte
mindig kernel szinten vannak implementlva. (Lsd folyamatok fejezet.)

llapottart csomagszr (stateful packet filter, SPF)


Ez is elemzi a csomagok fejlceiben tallhat informcikat, de mikor egy TCP kapcsolat felpl, akkor azt feljegyzi egy tblzatba, gy mindig tisztban van azzal, hogy egy csomag egy j
kapcsolatot kezdemnyez, egy mr ltezhz tartozik, vagy egyb, rvnytelen llapot.
Az llapotart csomagszr kisebb-nagyobb mrtkben elemzi a csomagok adatainak tartalmt
is, gy pldul lehetsges, hogy megfelel elemzmodul hasznlatval az FTP protokollnl a parancscsatornn egyeztetet adatcsatorna felptsi megllapodst is feljegyzi, gy az adatcsatorna
felplsekor tisztban van vele, hogy az adot kapcsolat egy mr ltez FTP kapcsolat rsze. Az
llapotart szrk nem elemzik teljes mlysgben a csomagok adatartalmt. A legtbb ma hasznlatos tzfal llapotart, nem is igazn tallunk egyszer csomagszrt. Mivel kivl llapotart csomagszrk rhetk el tbb klnbz szabadsg licenc alat (GPL vagy BSD), gy ezek
brmely gyrt szmra hasznlhatk. Az llapotart csomagszrk ltalban kernel szinten vannak implementlva. (Lsd folyamatok fejezet.)

Alkalmazs szint tzfal vagy proxy


Angolul application level frewall, ALF. A hlzati csomagok belsejben lv, lnyegi informcik az alkalmazs szint protokollhoz tartoz adatok. Ilyen protokoll a levelezsnl hasznlt SMTP
s IMAPS, a web tviteli protokolljai, a HTTP s a HTTPS s mg hosszan sorolhatnnk. Ezeknek
az adatoknak a mly elemzsre kpesek az alkalmazs szint tzfalak. A mkdsk a kvetkez.
Az alkalmazs szint tzfalak legtbbszr egy vagy tbb dmonknt futnak a rendszeren, a berkez kapcsolatokat szerver mdjra fogadjk, majd a kapcsolat eredeti hlzati irnya, vagy ha a
protokoll lehetv teszi, akkor a proxynak szl informcik alapjn (pl. HTTP proxy esetn a
"Host:" fejlc) kapcsoldnak a valdi szerverhez. Teht a kliens szmra gy tesznek, mintha k
lennnek a szerver, a valdi szerver fel pedig eljtsszk a kliens szerept.
Mindkt irnybl rkez, rajtuk tmen forgalmat elemeire bontjk s lehet, hogy csak megvizsgljk annak rszeit, de lehet, hogy szksg esetn akr mdostjk is az tmen adatokat. Ennek
mlysge megvalsts fgg. Fontos tudni, hogy a titkostot forgalmak elemzshez (mely az
esetek dnt tbbsgben SSL vagy valamely szintn aszimmetrikus kulcscservel indul protokoll) a tzfalnak Man In Te Middle (MITM) tmadst kell kiviteleznie. Radsul ha nem szervert
vd, hanem klienseket, akkor a szerverek titkos kulcsa nyilvn nem llhat a rendelkezsre, gy a
kliensek meggyzse csak gy lehetsges, ha a szerverek titkos kulcst hamistja. Ez gy lehetsges, ha minden kliensen elhelyeznek megbzhatknt egy olyan CA tanstvnyt, mely a tzfal
zemeltetjnek birtokban van (pl. cges CA tanstvnya). Ekkor megfelelen felptet tzfallal
akr on-the-fy kszthetk hamis szerver tanstvnyok. De persze ilyet jrzs tzfal zemeltetk nem tennnek, ugye? Teht mivel a tzfal nem tudja visszafejteni a kommunikcit, gy a titkostot kapcsolatok ltalban nem szrhetk alkalmazs szinten. Ezrt valamelyik szabvny SSL
porton t felptet OpenVPN, vagy egy SSH kapcsolatba csomagolt port forward vagy SOCKS
proxy ltalban simn tcsszik a tzfalon.
Mivel az alkalmazs szrk teljes egszben elemzik az tmen forgalmat, st, nha a mdosts
rdekben az tmen protokollt szt is kell szerelnik, majd valamely mdostsokat vgezve
visszaszerelni, ezrt ezek lnyegesen erforrs ignyesebbek (processzor s memria tren is),
mint a csomagszrk. ppen ezrt a nagy svszlessg hlzatok teljes szrshez igen komoly
125

Hatrvdelem, alapvet tzfal belltsok (netflter s elttjei)


vasra van szksg a tzfalakhoz. Az igazn prof tzfal eszkzk tmogatjk a frtzst vagy terhels elosztst a sklzhatsg rdekben.

Hibrid tzfalak
Az letben legtbbszr hibrid llapotart-alkalmazs szint tzfalakat hasznlnak. Ezeknl az
SPF sebessge miat a hlzati paramterek miat elutastot kapcsolatok kezelse minimlis erforrst ignyel (akr tbb tzezer nem engedlyezet kapcsolat felpt csomag eldobsa sem hasznl szinte semmi processzort). Az alkalmazs szr pedig lehetv teszi a hlzati szinten helyes
kapcsolatok teljes mlysg elemzse alapjn hozot dntseket, elvgzet mdostsokat.

Egyb tzfal funkcik: a NAT


NAT (Network Address Translation, Port Address Translation)
Lnyegk, hogy a tzfalon tmen kapcsolatban rja t a forrs vagy cl IP-k vagy portok nmelyikt az ignyeknek megfelelen. Az SNAT (Source NAT) elnevezs a forrs cmek s szksg
esetn portok mdostst jelenti. Erre akkor van szksg, ha kt azonos cmtartomny hlzatot
kell sszektni. Pldul egy cg mindkt telephelyn 192.168.1.0/24 C osztlyt hasznlnak a korbbi szeparlt hlzati llapot miat. Ezek a sajt cmtartomnyukba men csomagokat nyilvn helyben prblnk elkldeni (lsd hlzati belltsok -> routing). Ha azt akarjuk, hogy tudjanak
egymssal kommuniklni, akkor knytelenek vagyunk a kt hlzat kzt egy cm mdost eszkzt alkalmazni. Ha pldul a NAT eszkzn a 192.168.1.38 forrs csomagban a forrscm elejt
trom 192.168.2-re, akkor a msik hlzati csatol fel lthat, szintn 192.168.1 kezdet gpek
mr nem ltjk azt sajtnak, a vlasz csomagokat a gateway fel fogjk kldeni. Az pedig a visszamen kapcsolatban szpen visszacserli az (eztal mr) clcmet 192.168.2-rl 192.168.1-re.
Az SNAT specilis esete, mikor egyetlen cmre kell fordtani minden tmen csomag forrst.
Erre kivl plda egy cg internetes kapcsolata, melynl az internet fel ll lbnak tipikusan csak
egyetlen IP cme van, de a cgen bell sok szmtgp akar az interneten lv gpekkel kommuniklni. Ekkor a bels hlzat gpeirl kiindul kapcsolatokat az internetre csatlakoz SNAT-ol
szmtgp fogja talaktani a kvetkezkppen. A csomag forrs cmt lecserli az SNAT gp internetes lbnak cmre. Ezzel biztostja, hogy a csomag majd visszatall erre a gateway-re. Sok
kapcsolat esetn van azonban mg egy bkken. Ez pedig az, hogy a TCP s UDP csomagok forrs portja tbb szmtgp esetn knnyen tkzhet. Ha az aktulisan mdostot forrs portja
mr foglalt a kimen oldalon, akkor msik portot kell vlasztani forrs portknt. Ezeknek a viszszalltst gy tudja az SNAT gp megoldani, hogy egy tblzatba feljegyzi, hogy mely forrs
IP/port prokat milyen forrs portra cserlt. gy a vlaszcsomagokban knnyen be tudja lltani a
megfelel (it mr) cl IP-t s portot.
A DNAT (Destination NAT) egyik formja teljesen hasonl, mint az SNAT els pldja. Ezen kvl kt specilis alkalmazsa lehetsges. Az egyik az, hogy ha egy darab IP cmre rkez csomagokat akarunk sztszrni tbb IP cmre (pldul terhels kiegyenlts cljbl). A msik lehetsges
felhasznls, hogy a gateway nem tovbbtja a csomagot, hanem a sajt lbnak a megfelel portjra irnytja. gy valsthat meg pldul az, hogy a kliens gpek belltsainak mdostsa nlkl beletereljk a kimen web forgalmat egy Squid proxy-ba.
Linux alat a NAT szmos formjra kpes a Netflter alrendszer.

126

Hatrvdelem, alapvet tzfal belltsok (netflter s elttjei)

Linuxon hasznlhat tzfalak


Az els csomagszr tzfal az 1.1-es kernel vltozatban jelent meg, a neve a parancssoros eszkze alapjn ipfwadm volt. Ezt vltota az alapjaiban jragondolt s jra is rt ipchains, amely a 2.2es kernelben jelent meg. Ennek logikja s hasznlata mr nagyon hasonltot a mai Linux csomagszrhz. A 2.4-es kernelben megjelent a ma is hasznlt Netflter (parancssoros kezel eszkze, az iptables utn sokan gy nevezik).
A Netflter projektet Rusty Russell indtota 1998-ban az ipchains utdjaknt. Russell az ipchains-nek is fejlesztje volt, gy annak hinyossgait is fgyelembe vve tervezte meg a Netfltert. Ez
egy llapotart tzfal, amely tmogatja a ma hasznlt fontosabb protokollokat s megoldsokat,
nagyon rugalmas s knnyen bvthet a modulrendszernek ksznheten. Akr sajt modulok
is rhatak hozz. A Netflter kernel szinten fut modulokkal van megvalstva, a felhasznl az
iptables/ip6tables (s mg pr msik, de ez csak profknak) parancs segtsgvel tud szablyokat
belltani.
A Netflter fejlesztse folyamatos s igen dinamikus. Elmondhat, hogy jelenleg az egyik legjobb
llapotart csomagszr, szmtalan frum, levelezsi lista s HOWTO segti a felhasznlkat az
eligazodsban. A rendszer rvid lersa ennek a fejezetnek a tovbbi rszben megtallhat, ha
azonban valaki komolyabban szeretne a rendszerrel megismerkedni, akkor annak klnsen ajnlot a Videotorium szeminriuma, ahol Kadlecsik Jzsef, a Netflter magyar fejlesztje aki 2001
ta a core team tagja , tart eladst a tmban. A Netflterhez szmos olyan GUI kszlt, amely
akr szerveren, akr asztali krnyezetben leegyszersti a rendszer belltst.
A teljessg ignye nlkl nhny:

Fwbuilder

Turtle Firewall

Integrated Secure Communications System

Easy Firewall Generator for IPTables

Desktop krnyezethez: Gufw, Firestarter

A Zorp GPL magyar fejleszts, modulris proxy tzfal. A konfgurcis nyelve Python, ezzel
nem csak bellthatjuk a rendszer konfgurcijt, hanem a nyelv lehetsgeit kihasznlva rendkvl sszetet szrsi feladatokat is megvalsthatunk. Ugyanakkor meg kell jegyezni, hogy a Python alap konfgurci az egyszer feladatok elvgzsre kiss nehzkes, komoly tudst ignyel.
A modulris felpts lehetv teszi sszetet protokollok elemzst, mint pldul az SSL-lel vdet
forgalmak (HTTPS, IMAPS). Sajnos a szabad szofver verziban elg kevs protokoll szr modul
tallhat, gy ez vals szitucikban csak rszlegesen hasznlhat.

A Netfilter keretrendszer alapjai


A Netflter alapvet mkdsnek megismerse azrt szksges, mert ha nem rtjk, hogy mit
csinlnak a rendszer belltsait elfed felhasznli felletek (GUI-k), akkor hiba esetn nem fogjuk rteni, hogy mi a problma forrsa. Egyszerbb helyzetekben ugyanakkor jobb is a GUI-k

127

Hatrvdelem, alapvet tzfal belltsok (netflter s elttjei)


mellzse, mert egy nhny tz soros csomagszr konfg mg kivlan tlthat s gy nem vagyunk kiszolgltatva a GUI fejlesztk esetleges hibinak. s komolyan nem bonyolult.
A Netflter a Linux rendszer ltalnos, IPv4 s IPv6 szrsre, mdostsra is hasznlhat modulris keretrendszer. Legnagyobb egysgei a tblk, melyek kzl mi a flter s a nat tblkkal fogunk megismerkedni. A flter tbla clja a gpre bejv, thalad s arrl kiindul forgalom
szrsnek biztostsa. A nat tbla rtelemszeren elssorban a klnbz NAT funkcik elrsre hasznlhat. A tblkban van nhny gyri szrlnc, eredeti nevn chain. A flter tblban tallhat gyri szrlncok:
INPUT

A gp sajt hlzati cmeire rkez csomagok szr lnca. Ide rkeznek a gp szolgltatsaira rkez krsek s a gprl kezdemnyezet kapcsolatok vlaszcsomagjai is.

OUTPUT

A gprl indul csomagok szrlnca. It jelennek meg a gprl indul kapcsolatok kimen csomagjainak, illetve a gp szolgltatsait hasznl kapcsolatok vlaszcsomagjai.

FORWARD

Amennyiben a gpnek tbb hlzati csatlakozja van, melyek lehetnek fzikai hlzati csatlakozk vagy virtulisak, akkor az egyik lbon berkez s a routing
tbla szerint egy msik lb fel tovbbtand csomagok ezek a szrlncon fognak
megjelenni. Virtulis hlzati eszkzk pldul a VLAN vagy VPN vgpontok, tun
vagy br eszkzk, a virtulis gpek hlzati eszkzei stb. A legegyszerbb esetben
a FORWARD szrt fogjuk hasznlni egy kt hlzati eszkzzel rendelkez gpnl
az thalad forgalom szrsre.

Minden gyri chain-nek van egy alaprtelmezet szablya (default policy), mely csak ACCEPT
vagy DROP lehet. ACCEPT esetn azon csomagok tovbbtsra vagy befogadsra kerlnek, melyekre a lncban szerepl szablyok alapjn nem hozot dntst a szr rendszer (errl ksbb).
DROP esetn ezek a csomagok minden tovbbi napl vagy jelzs nlkl eldobsra kerlnek.
Ahogy korbban is elhangzot, a rendszer alapvet belltsait az iptables parancs segtsgvel
lehet elvgezni. Tovbbi belltsokat vgezhetnk mg az ip6tables, ebtables, arptables, ipset parancsokkal, de ezekkel most nem fogunk foglalkozni, ha el akarsz mlylni, akkor olvasd el a kapcsold doksikat.
Az iptables parancs alapveten egyetlen mveletet tud egyszerre vgrehajtani. Segtsgvel kpes vagy a chain-ek, vagy azok szablyainak kezelsre. Ezek az elemi mveletek nha jl jnnek,
de egy tipikus gyakorlati helyzetben te egy egsz csomagszr belltsi szablyrendszert akarsz
majd betlteni. Erre sokan hasznlnak shell scripteket, de ez nem a legjobb mdszer, mert amg az
utols szably is be nem tltdik, a csomagszr inkonzisztens llapotban van indulskor. Ha pldul a legutols parancs segtsgvel lltja be valaki a FORWARD alaprtelmezet szablyt, akkor mindaddig szabadon ramlanak a csomagok, amg oda nem r a rendszer a shell script
vgrehajtsban. s egy bonyolult csomagszrnl, ha minden szably egy-egy parancs vgrehajts, akkor ez akr nhny msodperc is lehet. Addig a rendszer nyitva van. Ha nincs ms vlasztsunk, mint egy shell script, akkor gyeljnk r, hogy elszr a default policy-t lltsuk be s ha
lehet, akkor az els szably legyen minden lncban egy felttel nlkli DROP, melyet aztn az szszes szably betltse utn iptables -D-vel eldobunk.
E helyet hasznlhat az iptables-restore parancs, mely egy egyszeren tlthat szveges fjlbl
olvassa be a belltsokat s azokat egy elemi mveletknt beemeli a kernel memrijba s csak a
vgn rvnyesti, az egszet egyben. Mint egy adatbzis tranzakcinl. It is commit-nak hvjk.
128

Hatrvdelem, alapvet tzfal belltsok (netflter s elttjei)


Ha egy pp l belltst szeretnl lementeni abban a formtumban, ahogy az iptables-restore rtelmezni tudja, akkor az iptables-save parancsot hasznlhatod.

Nhny egyszer belltsi plda


Az albbi csomagszr belltsok megfelel vdelmet nyjtanak egy asztali gp esetn:
# Egyszer plda desktop iptables konfig
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A
-A
-A
-A
-A

INPUT
INPUT
INPUT
INPUT
INPUT

--in-interface lo --jump ACCEPT


--match state --state ESTABLISHED --jump ACCEPT
--match state --state RELATED --jump ACCEPT
--match state --state INVALID --jump LOG --log-prefix "INVALID "
--match state --state INVALID --jump DROP

-A INPUT --jump LOG --log-prefix "catch_all "


-A INPUT --jump DROP
COMMIT

A kvetkez pedig pp elegend lesz egy egyszer szerverre:


# Egyszer plda szerver iptables konfig
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A
-A
-A
-A
-A

INPUT
INPUT
INPUT
INPUT
INPUT

--in-interface lo --jump ACCEPT


--match state --state ESTABLISHED --jump ACCEPT
--match state --state RELATED --jump ACCEPT
--match state --state INVALID --jump LOG --log-prefix "INVALID "
--match state --state INVALID --jump DROP

# admin munkallomsokrl szrs nlkl minden


-A INPUT --source 10.1.1.56 --jump ACCEPT
-A INPUT --source 10.1.1.111 --jump ACCEPT
# opertor munkallomsrl megy az ssh
-A INPUT --source 10.1.1.91 --protocol tcp --match tcp --dport ssh --jump ACCEPT
# web szolgltatsok mindenki szmra
-A INPUT --protocol tcp --match tcp --dport http --jump ACCEPT
-A INPUT --protocol tcp --match tcp --dport https --jump ACCEPT

129

Hatrvdelem, alapvet tzfal belltsok (netflter s elttjei)


# MariaDB egy megadott hlzatrsznek szmra
-A INPUT --source 10.1.2.0/30 --protocol tcp --match tcp --dport mysql --jump
ACCEPT
-A INPUT --jump LOG --log-prefix "catch_all_"
COMMIT

130

Magas rendelkezsre lls alapok

Magas rendelkezsre lls alapok


Az informatikai rendszerek fontos jellemzje a rendelkezsre lls: az id mekkora rszben
tudjk elltni a rjuk bzot feladatokat. Egy lakossgi szolgltatsnl elfogadot rtk lehet pldul a 99,5%-os ves rendelkezsre lls, azonban ennek garantlsa is erfesztseket ignyel a legegyszerbb szolgltats esetn is kt napnyi kiess egy pntek esti hardverhiba esetn sem fr
bele ebbe a szolgltatsi szintbe. Ms szegmensekben ennl nagyobb elvrsok vannak: gyakran
egyszeren csak a kilencesek szmt adjk meg: egy t kilences rendszer 99,999% rendelkezsre llst vllal. A telekommunikciban nem szokatlan ez az elvrs sem vi 5 perc kimaradst
enged meg. Szervezetek vagy nagyobb szervezeti egysgek kzti szolgltatsok esetn az elvrt
rendelkezsre llst a szolgltatsszint-megllapodsban (service level agreement, SLA) rgztik.
Ez a megllapods ltalban nem szmolja bele a tervezet zemszneteket a rendelkezsre llsba, azonban kln megszabja idejket s gyakorisgukat is.
A rendelkezsre lls nvelsre, magas szinten tartsra irnyul megoldsokat a HA (high
availability, nagy [vagy magas szint] rendelkezsre lls) betszval jelljk.
Mivel olyan eszkz nincsen, ami garantltan teljest egy nagy rendelkezsre llsi kritriumot,
ezrt a megoldsok alapja az azonos clt ellt eszkzk tbbszrzse, redundns rendszer kialaktsa.
Ha a redundns eszkzk brmikor t tudjk venni egyms szerept, vagy a szereptvtelt vezrl eszkz jelentsen jobb rendelkezsre llst tud biztostani az eszkzknl, akkor a kt
eszkz hibaarnyt sszeszorozva kapjuk a kzs hibaarnyt. Pldul ha kt 1% valsznsggel meghibsod eszkznk van, amelyek egymstl fggetlenl hibsodhatnak meg, s csak
egyidej hibjuk okoz szolgltatskiesst, akkor 0,01 2 = 0,00011 = 0,01% kzs meghibsodsi
rtket, vagyis 99,99% mkdsi valsznsget kapunk. Br ez az egyszer modell sszemossa
a rendszer rendelkezsre llst az eszkzk hibtlan mkdsnek valsznsgvel, a gyakorlatban jl hasznlhat a redundns eszkzk szerepnek vizsglatra. sszehasonltsknt:
ha mindkt ilyen eszkz szksges a mkdshez, akkor mr a rendelkezsre llst szorozhatjuk ssze, gy a 99%-bl 98% lesz.

A redundancia mrtkt mindig az elvrsok s a gazdasgi lehetsgek alapjn kell mrlegelni.


A rendelkezsre lls nvelst tbb irnyban kezdhetjk el azonban a legtbb rendszernek
ezek a mdszerek kzl tbbet is kell alkalmaznia a megfelel szint elrshez.

Megbzhatbb eszkzk
Az els lpsek ltalban a hardverhibbl ered szolgltatskiess valsznsgnek cskkentst clozzk. Jelentsen cskkentheti a meghibsods valsznsgt, ha a szolgltatst folyamatos zemre tervezet hardverrel nyjtjuk. A leggyakrabban meghibsod elemek a lemezek s a
tpegysgek. A lemezek esetben megbzhatbbak a folyamatos zemre tervezet vltozatok, valamint a tbbportos lemezek ezt tmogat vezrlvel.
Mivel egy nagyobb rendszerben elkerlhetetlen, hogy egy-egy lemez idnknt tnkremenjen,
ezrt a RAID konfgurci minden esetben indokolt lehet. RAID esetn mrlegelnnk kell a szk131

Magas rendelkezsre lls alapok


sges teljestmnyt s a rendelkezsre ll lemezek szmt is (rszletekrt lsd a Diszkek kezelse
cm fejezetet).
A redundns tpegysg is jelentsen javthatja a rendelkezsre llst: nemcsak a tpegysg
meghibsodsa ellen vd, hanem lehetsg van tbb fggetlen feszltsgforrs hasznlatra, sznetmentes tpegysg cserjre stb.
Clszer a hlzati kapcsolatot is redundnsan kialaktani, erre az STP (fesztfa-protokoll) vagy
a link-aggregci (ms neveken: bond, trunk, EtherChannel) j lehetsg.

Klaszter
Az eszkzk megbzhatsgnak javtsval nem lehet egy szinten tl gazdasgosan nvelni a
rendelkezsre llst, hiszen az esetleg mgis bekvetkez hiba helyrelltsa is idt vesz ignybe.
Erre a problmra jelent megoldst a klaszter (cluster, frt) architektra.
A megolds alapja, hogy tbb azonos clt ellt rendszer fut szoros hlzati sszektetsben,
amelyek vagy t tudjk venni egyms feladatt (HA cluster), vagy elosztjk egyms kzt a terhelst (HPC [high performance computing] cluster). A HPC cluster a legtbb esetben megkveteli
egy, a terhelselosztst vgz belpsi pont megltt, ezrt nmagban a rendelkezsre lls nvelsre nem alkalmas azonban lehetsges a kt megolds kombinlsa is.
A hagyomnyos HA clustert tekinthetjk melegtartalkos rendszernek is, amelyben a tartalk
rendszer llandan zemben van, s azonnal kpes tvenni a meghibsodot rendszer feladatait.
Ennek prja a hidegtartalk, amikor a tartalkgp ugyan el van ksztve a feladat tvtelre,
azonban kzi beavatkozssal el kell indtani.

Heartbeat
A feladatok tvtelt a legltalnosabb esetben gy oldjuk meg, hogy a tartalk rendszer IP szinten veszi t a ptolt rendszer szerept: flveszi IP cmt. Ennek a megvalstsa fgyelmet ignyel,
mivel biztosan tudnunk kell, hogy a msik rendszer mr nem zemel (legalbbis azon a cmen),
hiszen ellenkez esetben cmtkzst okozunk.
Ennek elterjedt megvalstsa a heartbeat (szvvers) mdszer. Ebben az esetben az les s a tartalk rendszert egy kln erre a clra szolgl hlzati ton ktjk ssze, amelyen az les rendszer szvversszeren jelzi, hogy mg mkdik.
Amennyiben a szvvers megsznik, a tartalk rendszer krltekinten meg kell llaptsa, hogy
a msik gp valban megllt, s ekkor veheti t a feladatot.

Virtulis IP cm
Az egyes gpek elrhetsge s a visszalls megknnytse rdekben a szolgltats ignybevtelre egy a gpektl fggetlen cmet szoks hasznlni, amelyet az ppen aktv gp msodik cmknt vesz fl a hlzati interfszn. Ennek esetleges alternatvja az, hogy a tzfal hlzati
cmfordtssal a megfelel gpre kldi a krseket.

132

Magas rendelkezsre lls alapok

Osztott tr
A feladat tvtelhez ltalban szksg van arra, hogy a tartalkgp is elrje a szksges trterletet. Ennek szmos mdja van: amennyiben a trterlet SAN vagy NAS eszkzn tallhat, a
msik gp lellsa utn nincs akadlya tvtelnek. Szofveres megoldsok is vannak a trterlet
folyamatos elosztot repliklsra, ilyen a Ceph vagy a GlusterFS.
Bizonyos esetekben nincs szksg az osztot trra, mivel a replikcit alkalmazs szinten is meg
lehet oldani, vagy nincs is szksg r. Ilyen lehet egy adatbzis- vagy alkalmazskiszolgl, vagy
ppen egy tzfal vagy nvkiszolgl.
Amennyiben van osztot tr, az felhasznlhat a feladat tadsnak visszaigazolsra is.

133

A PAM hitelestsi keretrendszer

A PAM hitelestsi keretrendszer


Az azonostsi rendszerek gyenge pontja
Az egyes Unix-rendszerek fejleszti hiba dolgoztak ki kzsen, knyelmesen hasznlhat
megoldst, egy gondot mgsem tudtak orvosolni. Minden program csak az elre tervezet s beptet azonostsi eljrsokat tmogata. Bizonyos programok fejleszti arra vetemedtek, hogy az
ltalnosan hasznlt azonostsi eljrsokat sem tmogatk. Mondanom sem kell, egy j azonostsi eljrs beptse minden azonostst ignyl programban nagyon bonyolult s knos feladat.

ltalnos megolds: a PAM rendszer


A fenti feladat megoldsra hoztk ltre a PAM-rendszert (Pluggable Authentication Modules).
A PAM tlete elszr a Sun fejlesztinek a fejben szletet meg. Elsknt rszlegesen a Solaris
2.5-s sorozatban vezetk be, a teljes tmogats pedig a Solaris 2.6-ban alakult ki. A PAM fnoman hangolhat azonostsi rendszer, mely a korbban vzolt gondokra oly mdon ad egysges
megoldst, hogy az azonostssal kapcsolatos feladatokat elvlasztja a programtl, gy annak tudomst sem kell vennie rla, hogy ppen milyen azonostsi eljrs let belltva. A Linux-rendszer sajt PAM-ot hasznl. A Linux-PAM fejlesztst 1996-ban kezdtk meg, legfontosabb
fejlesztje a mai napig Andrew Morgan. Az idk folyamn a rendszer rengeteg fejlesztsen ment
keresztl. Mi a Linux-PAM 0.72-es vtozatnak fbb jellemzivel ismerkednk meg.

A PAM lehetsgei
A PAM olyan rugalmas azonostsi rendszert ad a rendszergazda kezbe, mellyel a felhasznlkat a rendszeren futathat brmely PAM-megfelel program segtsgvel azonosthatja. Az azonostsi mdszer a legegyszerbb bugyuta titkos krds-titkos vlasz azonostsi mdtl a
legbonyolultabb recehrtya- vagy ujjlenyomat-felismersig terjedhet. Morgan a rendszer lehetsgeinek bemutatsra az albbi pldt hozza: ha a rendszergazda (mama) a felhasznli (gyerekek)
matematikai tudst szeretn tkletesteni, bellthatja, hogy a kedvenc lvldzs jtkuk (termszetesen csak ha PAM-megfelel) azonostskppen a 12 alati szmok szorzatt krdezze. Ha a
felhasznl tudja a vlaszt, jtszhat. Ha nem Amennyiben a jtk rdekes, a gyerekek egyketre
megtanuljk a szorztblt. A PAM ngy klnbz szolgltatst nyjt: azonosts, felhasznli
nv (account), munkamenet (session) s jelszkezels. Ezeket a belltsi llomnyokban hasznljuk: auth, account, session s password. Az azonostsi szolgltats kt dolgot jelent: egyrszt a
PAM valamilyen eljrssal meggyzdik a felhasznl szemlyrl, azaz azonostja (authenticate),
msrszt a PAM a felhasznlt jogosultsgokkal ruhzhatja fel (authorize) (pldul valamilyen
csoportba sorolhatja be a /etc/group alapjn vagy ms mdszerrel). A kapcsolatkezels a rendszeren azonosts-fggetlen szolgltatsok belltst teszi lehetv. Jellegzetesen ilyen a kiszolglk
felhasznl-szmnak korltozsa, a rendszergazda bizonyos helyekrl (pldul hlzatrl) val
belpsnek megtiltsa. A munkamenet-kezels szolgltatsai olyan feladatok megvalstst te134

A PAM hitelestsi keretrendszer


szik lehetv, melyeknek a felhasznl hozzfrse elt vagy utn kell vgrehajtdniuk (naplzs, chroot stb.). A jelszkezelsi szolgltats a felhasznl azonostsi zsetonjnak mdostst
teszi lehetv. A PAM modulokbl ll, amelyek akr tbb szolgltatst is nyjthatnak.

A PAM belltsa
A PAM a /etc/pam.d knyvtrban lv llomnyokon keresztl hangolhat. A belltsokat korbban a /etc/pam.conf nev llomny tartalmazta, de elavult vlt, ezrt hasznlatt a Linux
rendszeren nem ajnlom (akad olyan opercis rendszer, amelyben csak ezt alkalmazzk). A
/etc/pam.d knyvtrban lv llomnyok neve s a belltand szolgltats neve kisbetkkel (su,
ssh, fp stb.) rand. Az llomnyokban minden sor (a megjegyzsektl eltekintve) egy PAMmodul valamilyen szolgltatst hvja meg. Az egyes sorok formtuma a kvetkez:
<modul tpusa> <ellenrz zszl (control flag)>
<modulelrsi t> <vltoz (argument)>

ahol a modul tpusa egy a ksbb megadot modul szolgltatsai kzl. A megadhat lehetsgek: auth, account, session, password . Jelentsket korbban mr rszletesen ismertetk. Az ellenrz zszl lehetv teszi, hogy az adot sorban meghatrozot felttel szksgessgt
szablyozzuk. rtkei a kvetkezk lehetnek:
required (ktelez)

a megadot modulnak sikeresen kell visszatrnie, klnben a modultpusban


megadot szolgltats nem trhet vissza hibtlanul. A modul hibja addig
nem jut el a felhasznlhoz, amg az ugyanilyen modultpussal rendelkez
sorok mindegyike ki nem rtkeldik.
requisite (szksies) az elztl csak annyiban klnbzik, hogy a hibt a modul azonnal visszaadja az alkalmazsnak.
sufcient (elisies) ha a modul sikerrel tr vissza, s a korbban feldolgozot modulok kzt
nincs sikertelenl visszatrt required tpus, akkor erre a szolgltatsra nem
hvdik meg tbb a ksbb felsoroltakbl.
optional (tetszleies) miknt a neve is mutatja, ez a bejegyzs nem letbevgan fontos amenynyiben nem nmagban ll, nem okoz sem elutastst, sem biztos elfogadst.
Ilyen esetben csak a belltsainak ksznheten teszik be a szolgltats
vgrehajtsba (naplz, valamit kir, egyb).
A modul elrsi tja megadja a helyt az llomnyrendszeren, a vltozk s azok belltsa pedig modulonknt s szolgltatsonknt egyediek. A kln nem belltot alrendszerek az other llomnyban megadotak szerint vannak azonostva. Egy kis plda a mshol nem meghatrozot
PAM-krsek kitiltsra:
#
# /etc/pam.d/other - default; deny access
#
auth
required
/usr/lib/security/pam_deny.so
accoun required
/usr/lib/security/pam_deny.so
password required
/usr/lib/security/pam_deny.so
session required
/usr/lib/security/pam_deny.so

135

A PAM hitelestsi keretrendszer

A PAM rendszer fontosabb alapmoduljai


A PAM rendszer automatikusan telepti az alapvet modulokat. Az albbiakban felsoroljuk a leggyakrabban hasznltakat, s azok fontosabb funkciit.

ltalnos PAM hibakeress: a debug paramter


A PAM modulok problminak feldertsre hasznlhat a debug paramter. Belltsnak hatsra hiba esetn az adot modul a syslog(3) rendszerhvson keresztl r a rendszernaplba. Mivel
minden modul rendelkezik ezzel a paramterrel, gy a tovbbiakban nem trgyaljuk.

A PAM rendszer fontosabb alkotrszei


A pam_unix modul
A Linux rendszereken leggyakrabban hasznlt s legfontosabb modul. A Unix rendszerek hagyomnyos azonostsi (autentikcis) s feljogostsi (autorizcis) mechanizmusait biztostja. A
rendszer szabvnyos hvsait hasznlja, teht a /etc/passwd s a /etc/shadow llomnyokkal dolgozik. rdemes megjegyezni, hogy a pam_pwdb modul is hasonl funkcikat nyjt, csak az ltala
felhasznlt adatokat mr adatbzisban tartja. Nagy felhasznlszm rendszereken rdemes hasznlni.
account

paramterei: debug; audit


Lehetv teszi a felhasznli szmla rvnyessgnek ellenrzst. A shadow llomny
tartalmaz olyan mezket (expire; last_change; max_change; min_change;
warn_change), amelyek a felhasznl jelszavnak kiknyszertet lecserlst vagy a
szmla zrolst teszik lehetv [1 shad]. Vigyzat! Ha a shadow llomny a fenti mezk valamelyikt nem tartalmazza, akkor az ellenrzs nem hajtdik vgre.
auth
paramterei: debug; audit; use_frst_pass; try_frst_pass; nullok; nodelay
A felhasznl jelszavas azonostst teszi lehetv. Amennyiben tbb jelszavas azonosts is be van lltva (lsd ksbb a pam_ldap modulnl), akkor clszer a try_frst_pass
paramter hasznlata. Ilyen esetben a felhasznltl nem krdezi meg a rendszer jra a
jelszavt, hanem az els modul ltal bekrt jelszt hasznlja. Ha azt akarjuk elrni,
hogy a felhasznlnak tbb jelszval kelljen belpnie, akkor ne hasznljuk. Ilyen esetben a felhasznlnak szp sorjban be kell gpelnie a szksges jelszavakat. A nullok
paramter lehetv teszi olyan felhasznlk belpst a rendszerbe, akiknek a shadow
llomnyban a kdolt jelsz mezje res. Hasznlata nem javasolt.
password paramterei: debug; audit; nullok; not_set_pass; use_authtok; try_frst_pass;
use_frst_pass; md5; bigcrypt; shadow ; nis; min; max; obscure; remember
A felhasznlk szabvnyos jelszcserjt teszi lehetv. Az md5 s bigcrypt paramterek segtsgvel elrhet, hogy a jelsz ne a klasszikus crypt [2 crypt] algoritmussal kdolva kerljn be a vgleges helyre, hanem a megadotal. Ne felejtsk ezt belltani,
klnben a rendszeren csak nyolc karakter hossz jelszavakat lehet hasznlni! It is
hasznlhat a try_frst_pass akkor, ha a felhasznlnak egyforma jelszt szeretnnk belltani a klnbz jelsztrakban. A use_authtok opci ktelezv teszi a modul szmra az elz modul ltal tadot jelsz belltst. Erre a pam_cracklib hasznlata ese136

A PAM hitelestsi keretrendszer

session

tn van szksg (lsd ksbb). A not_set_pass paramter segtsgvel letilthatjuk, hogy


a bekrt rgi vagy j jelsz brmely ms modulnak tadsra kerljn. A nis paramter
hatsra a rendszer a NIS RPC-t hasznlja a jelsz belltsra. A min s max belltsval szablyozhat a bellthat jelsz legkisebb s legnagyobb hossza. A min paramtert norml felhasznli renszernl clszer legalbb nyolcra, ersen vdet rendszernl
tzre lltani. Az obscure paramter nhny alapvet ellenrzst vgez a belltand jelszn. Ezek: a jelsz nem hasonlthat tlzotan az elzhz, nem lehet tl egyszer
(jelszhossz, hasznlt karakterek tpusa), nem lehet az elz jelsz fordtotja, vagy
oda-vissza megegyez (pldul "qwertrewq").
Nincs paramtere.
A hasznlatval a felhasznl neve s a szolgltats naplzdik a munkafzis (session)
elejn (a dokumentci szerint a vgn is, de a tapasztalat ennek gyakran ellentmond).

A pam_deny s a pam_nologin modul


A deny segtsgvel megakadlyozhat a felhasznl hozzfrse az adot szolgltatshoz. auth
s account esetn a felhasznl azonostst s hozzfrst teszi sikertelenn, ha a password
komponensben hasznljuk, akkor a felhasznl nem tudja megvltoztatni a jelszavt. A sessionbeli hasznlata lehetv teszi, hogy a felhasznl ne hozhasson ltre munkafzist.
A nologin modul a PAM rendszer auth komponensbl elrhet, s a szabvnyos Unix nologin
hasznlatt teszi lehetv. Amennyiben az /etc/nologin llomny ltezik, akkor az azonosts sikertelen. Leggyakrabban a rendszer felllsakor alkalmazzk, de tbbfelhasznls rendszeren knyelmes lehetsget ad egy esetleges karbantarts idejn minden felhasznl belpsnek
idleges tiltsra.

A pam_securetty s a pam_shells modul


A securety s a shells modul meghatrozza, hogy az adot felhasznl ltal hasznlt terminl
szerepel-e az /etc/securety llomnyban, illetve a felhasznl login shell-je benne van-e az
/etc/shells llomnyban. Mindket elutastja a felhasznlt abban az esetben, ha az llomny nem
tartalmazza az adot bejegyzst. Mindkt modul a PAM rendszer auth komponensbl elrhet.

A pam_listfile modul
Lehetv teszi egy szolgltats engedlyezst vagy tiltst az azonostsi fzisban egy llomny
tartalmn keresztl. Lehetsges paramterei:
onerr=succeed|fail
sense=allow|deny
fle=<llomnynv>
item=user|ty|rhost|ruser|group|shell
apply=user|@group
A modul veszi az item ltal meghatrozot elemet (ahol a user a felhasznl neve, a ty annak a
terminlnak a neve, ahonnan a krs rkezet, az rhosts a tvoli gp neve /ha van/, a ruser megadja a tvoli felhasznl nevt /ha van/, a group a felhasznl csoportja), s megnzi, hogy a fle ltal
meghatrozot llomny tartalmazza-e. Ha tartalmazza, akkor ha a sense rtke allow, akkor a
modul sikerrel tr vissza, ha deny, akkor elutast vlaszt ad. Ha valamilyen hiba trtnik (pldul
a meghatrozot llomny nem ltezik), akkor az onerr ltal belltot rtkkel tr vissza. Ezt rde137

A PAM hitelestsi keretrendszer


mes fail-re lltani. Az apply paramtert akkor clszer hasznlni, ha a vizsglt elem terminl, tvoli gp vagy shell. Segtsgvel a sikeres visszatrs egy felhasznlhoz vagy egy csoporthoz
kthet.
gy teht egyszeren korltozhat egy adot szolgltats elrse. Hasznlatra a legjellemzbb
plda az fp, ahol a listfle modult hasznltk fel arra, hogy bizonyos felhasznlk szmra tiltsk a
szolgltats elrst. A konfgurcis llomnyban ez gy nz ki:
-- /etc/pam.d/ftp rszlet
auth required pam_listfile.so
onerr=fail

item=user sense=deny file=/etc/ftpusers

Egyb felhasznlsra mutatunk pldt a ksbbi pldknl.

A pam_limits modul
Lehetsget ad a felhasznlk ltal hasznlhat erforrsok korltozsra. Erre azrt van szksg, mivel egy tbbfelhasznls Linux kiszolgln nem engedhet meg, hogy egy felhasznl
olyan mrtkben leterhelje a rendszert, hogy a tbbiek (klnsen a rendszer adminisztrtorai) ne
tudjk zavartalanul a munkjukat vgezni. Sajnos a Linux rendszer ezen korltozsok hasznlatt
csak kis mrtkben tmogatja, gy a rosszindulat felhasznlktl tkletesen csak a hagyomnyos mdszerek vdenek meg (idleges vagy vgleges kizrs, vasalt orr bakancs, baseballt,
gyngyhz beraks zsebks stb.).
Ezen keser kijelentsek a hosszas ksrletezs utn alakultak ki. Amennyiben a felhasznlk
memriafelhasznlst korltoztuk, a rendszer tlterhelhet volt valamelyik fork bombval. Ha a
belpsenknti folyamatok szmt korltoztuk 4-re, a fork bombk akkor is szinte a teljes proceszszoridt fel tudtk hasznlni, radsul az openssh segtsgvel nem lehetet belpni a rendszerre.
Tapasztalatunk szerint ssh-val csak akkor sikerlt belpni a rendszerre, ha a lehetsges folyamatok szma legalbb 40 volt. Mivel azonban a sikeres belpst kveten a felhasznl 40 folyamatot
futathat, gy rossz esetben a teljes processzoridt el tudja venni. Az sszertlen memria fogyasztst ugyan meg lehet gtolni, de a sok memriafoglalsi ksrlet sajnos szintn megeszi a proceszszor idejnek a jelents rszt. Ebben az az extra kellemetlensg, hogy ilyen esetben a legtbbet a
kernel dolgozik, gy mg korltozni sem lehet. Teht a folyamatok szmnak korltozsa bizonyos
esetekben nem megfelel a PAM tmogats tkletlen implementcija miat.
Ha a rendszeren a kifejezeten rosszindulat felhasznlkat ki tudjuk szrni, akkor van rtelme
a hatrok belltsnak, gy a felhasznl akaratn kvli rendszertlterhels eslye cskkenthet.
Sokat segthet, ha a felhasznlk nice szintjt cskkentjk, gy hiba esetn a rendszer adminisztrtorai nagyobb esllyel tudnak sikeresen beavatkozni.
Idelis az lenne, ha a felhasznlnak ltalnos hatrokat lehetne belltani (jelenleg csak a belpsenknti ltezik), s a rendszermag lehetv tenn, hogy egy bizonyos felhasznl ltal kezdemnyezet (felhasznl vagy rendszermag ltal vgzet) feladat legfeljebb mekkora rszt
kaphasson a rendelkezsre ll processzoridbl (fair share scheduling). Amg ezek nem lesznek a
hivatalos rendszermagban megvalstva, addig a felhasznlk korltozsa csak rszleges lehet.
Ugyan nem tartozik szorosan a tmhoz, de it rdemes megjegyezni, hogy a rendszermag lehetv teszi annak a helynek a korltozst, amit a felhasznlk merevlemezen foglalhatnak. gy
sszer mrtkre cskkenthet az egyes felhasznlk terlethasznlata, s a leveleslda (mailbox) sem nhet egy adot mret fl a tbbiek krra. Ennek belltsa esetn azonban fgyelni
kell arra, hogy mit tesz ilyen esetben a levelez kiszolgl.

138

A PAM hitelestsi keretrendszer

Egyb hasznos modulok


A pam_env modul (auth) krnyezeti vltozk elzetes belltst vagy trlst teszi lehetv.
Tbb felhasznls rendszeren clszer hasznlni, mivel lehetv teszi a krnyezet egysges belltst a belpsi shell-tl fggetlenl.
A pam_rootok modul (auth) azonostja a felhasznlt, ha a felhasznli azonostja 0. Ennek akkor lehet rtelme, ha a root felhasznlt nem akarjuk egy szolgltats minden egyes hasznlatakor
azonostani. A Linux rendszerek legnagyobb rszn megengedet a root-nak a su hasznlata jelsz
nlkl. Ez a konfgurcis llomnyban gy nz ki:
-- konfig llomny rszlet
auth
sufficient pam_rootok.so
auth
required
pam_unix.so

gy teht a rendszergazda mindenkiv annak jelszavnak megadsa nlkl vlhat. Ez felvet bizonyos etikai krdseket, de ez szinte minden rendszergazdai jogostvnynl felmerl. Specilis esetben elrhet egy fnoman hangolt, kls szakrtk ltal is fellvizsglt rendszernl a rendszer
adminisztrtorainak jogainak a szksgesre cskkentse, de ez komoly hozzrtst s erforrs
rfordtst ignyel.
A pam_chroot modul (account, session, auth) segtsgvel lehetv vlik egy adot szolgltats
root knyvtrnak belltsa a PAM rendszeren keresztl. Ennek hasznrl egy ksbbi cikkben
rszletesebben runk. A modult jelenleg kiss nehzkes hasznlni, mivel a PAM-ot tmogat programok egy rsze nem megfelelen valstja meg a session kezelst. J plda erre az openssh, ahol
a fejlesztk valmilyen okbl nem is akarjk talaktani az alkalmazst. Tbben kijavtotk az ssh
hibit, de a fejlesztk nem fogadtk be a javtsokat.
A pam_mkhomedir modul lehetv teszi a felhasznlk munkaknyvtrnak rptben val ltrehozst. Mivel a felhasznl adminisztrcis eszkzk ezt megteszik, hasznlata csak specilis
esetben clszer.
A pam_motd, pam_mail, pam_lastlog s pam_issue modulok a felhasznlk tjkoztatst szolgljk. Belpskor kirjk a terminlra a /etc/motd s az /etc/issue llomnyok tartalmt, az utols
belps idejt, jelzik ha a felhasznlnak j levele rkezet.
A pam_radius s pam_krb4 modulok segtsgvel a felhasznlk azonostsa egy RADIUS [3
rad] vagy Kerberos [4 kerb] kiszolgl segtsgvel trtnik. Ezek az azonostsi eljrsok ltalban nagyobb hlzatokon hasznlatosak, s nagybiztonsg azonostst tesznek lehetv. A
pam_securety segtsgvel egy llomnyban meghatrozhat, hogy mely terminlok tekinthetk
biztonsgosnak.
A pam_time modul hasznlata lehetv teszi a hozzfrs id szerinti korltozst. Minden biztonsgi rendszer alapvet eleme a megszokot s elfogadot endeglyezse, s a kirv esetek tiltsa. Ha pldul nem hihet, hogy a rendszeradminisztrtor reggel tz ra elt a konzolrl belp,
akkor ez letilthat. Vagy egy PAM-ot tmogat jtk alkalmazssal megoldhat, hogy csak munkaidn tl lehessen elindtani.

139

A PAM hitelestsi keretrendszer

A PAM extra moduljai


A pam_cracklib modul
A unix modul password komonensnek a kiegsztsre szolgl. Jval fnomabb jelsz bonyolultsg ellenrzst tesz lehetv. A unix modul obscure paramternl lertakon fell kpes a sztri szavakon alapul jelszavak kiszrsre is. A megfelel mkdshez szksg van egy
megfelel szavakat tartalmaz sztrra. Ezt a legegyszerbben gy llthatjuk el, ha sszeszednk nagyobb mennyisg levelezsi lista archvumot, majd szavakra bontjuk. Clszer olyan
csomagokat is gyjteni, ahol a npek kezetel leveleznek, mivel a felhasznlk elszeretetel tesznek kezetes szavakat a jelszavukba. Praktikus tovbb sszeszedni a felhasznlk, kisllataik s
szereteik adatait. A kvetkez kis perl programocska segtsgvel szavakk vgjuk a szveg llomnyokat:
#!/usr/bin/perl -wn
next if /^\s*$/;
s/#\S*//g;
tr/A-Z/a-z/;
tr/\012a-z0-9 \t//cd;
s/\s+/\n/g;
print;

A program standard bemenetn vrja a tiszta szvegllomnyokat (kismrtkben akr html lapokat is, ugyan gy feleslegesen n a leend adatbzis mrete), s a standard kimenetn norml,
szavakra vgva jnnek ki az adatok. A Debian ltal adot eszkzkkel az albbi parancssszettellel llthat el az adatbzis:
$ cat <sok szvegllomny neve> | mini_splitter | sort -u |
crack_packer /var/cache/cracklib/cracklib_dict

Nagymret adatllomnyok esetn a sort-nak clszer megadni egy tmeneti knyvtrak a -T


paramter segtsgvel. Ezzel ellltotuk a szadatbzist, amit a ksbbiekben clszer idnknt
frissteni. A modul leellenrzi azt, hogy a megadot jelsz nem kpezhet-e valamelyik sztri
szbl a kisbetk s nagybetk valamilyen kombincijval.
A modul a PAM password komponensben mkdik, hasznlata egyszerstve a kvetkez: a
felhasznl ltal megadot jelsz minden karaktere egy pontot r, tovbb minden klnbz karakterosztlyba tartoz karakter egy jutalompontot. Meghatrozhatjuk, hogy egy adot karakterosztlyra legfeljebb mennyi jutalompontot adjon a rendszer. Az ismert osztlyok: kisbet (lower),
nagybet (upper), szmjegy (digit) s egyb (other). A jutalompontok hangolsa a kvetkez paramterek belltsval trtnik:
dcredit=<N>; ucredit=<N>; lcredit=<N>; ocredit=<N>,

ahol <N> az adot osztly karaktereire adhat maximlis plusz pontok szma. Ha a megadot
szm alati, vagy azzal megegyez szm adot osztly karakter szerepel a jelszban, akkor azok
mindegyikre egy plusz pont jr. A karakterszmbl add s a jutalompontok sszegnek minimumt a minlen=<N> paramterrel szablyozhatjuk. Az <N> rtke a megengedhet minimum
plusz egy. gy a kvetkez belltsokkal:
dcredit=2 ucredit=1 lcredit=1 ocredit=2 minlen=12

140

A PAM hitelestsi keretrendszer


csak olyan jelsz lesz elfogadhat, amely vagy legkevesebb 10 kisbetbl ll, vagy ha van benne
nagybet, akkor nem rvidebb, mint 9 karakter, vagy ha van benne kt szmjegy s nagybet, akkor nem rvidebb, mint 7 karakter s gy tovbb.
A rgi s j jelsz elvrt klnbsge a difok=<N> paramterrel llthat be. Segtsgvel bellthat, hogy egy megadot jelszban hny karaktert kell mindenkppen lecserlni. Alapbelltsa
10, de ehhez mg addik egy jabb szably: ha a jelsz karaktereinek legkevesebb a fele lecserldik, az fellbrlja az iteni belltst, s a jelsz megfelel.

A pam_ldap modul
Nagyobb hlzatoknl gyakran merl fel a problma, hogy a felhasznlk vndorolnak a munkahelyek kzt, de mindenhol szeretnk a megszokot munkakrnyezetet ltni. A rendszer adminisztrtorok szempontjbl komoly problma lehet nagy tmeg felhasznl kezelse. Ilyen
esetekben lehet clszer az ldap modul. A felhasznlk adatai egy kzponti LDAP kiszolgln
vannak trolva, gy tetszleges munkallomsra a megszokot jelszavukkal lphetnek be. A teljes
tmogatshoz ne felejtsk el thangolni az nsswitch lib-eket sem [5 authldap]. A munkaknyvtrak tvitelre megfelel valamilyen hlzati llomnyrendszer. Erre a clra jelenleg az NFS a legelterjedtebb megolds, de mivel ez biztonsgi szempontbl ersen megkrdjelezhet, ezrt
hasznlata kizrlag olyan krnyezetben elfogadhat, ahol a kliensek tkletesen megbzhatak.
Vagyis szinte sehol. Jelenleg a legsszerbb a felhasznlk munkaknyvtrait ssl-sambn keresztl kiajnlani, gy lehetv vlik a biztonsgos csatlakozs. A kis kitr utn trjnk vissza a kzponti felhasznl azonostshoz.
Az ldap modul hasznlathoz elszr is szksgnk lesz egy LDAP kiszolglra, ahol a felhasznlk adatait troljuk. Mi az OpenLDAP 2.0.14-es vltozatt hasznltuk. A telepts Debian Woody rendszeren a megszokot apt-get parancs segtsgvel trivilis (a csomag neve slapd). Ha elre
megterveztk a leend LDAP struktrjt, akkor a telepts kzben ltre lehet hozni a htr adatbzist. A rendszer adatinak temelsre tkletesen alkalmas a PADL cg ltal fejlesztet, MigrationTools nev eszkz [6 ldapmig]. Az OpenLDAP-nl az alap konfgot kiss mdostani kellet,
hogy a megfelel sma defncikat is betltse. sszer a hozzfrst is beszablyozni, mert az
alaptelepts bejelentkezs nlkl is olvassi jogot ad. A kiss paranoisabb bellts megfelel rsze valahogy gy nz ki:
-- az /etc/ldap/slap.d megfelel rsze
# A nvtelen azonosthatja magt, ha sikeresen bejelentkezett, trhatja a
#
a sajt jelszavt. Az adminisztrtor mindenkit rhatja. Ms senki nem
#
csinl semmit.
access to attribute=userPassword
by dn="cn=admin,o=Andrews,c=HU" write
by anonymous auth
by self write
by * none
# Az adminisztrtornak teljes rs joga van mindenre. A sajt adatait minden
#
bejeltkezett felhasznl olvashatja, a tbbieknek nincs semmilyen joguk.
access to *
by dn="cn=admin,o=Andrews,c=HU" write
by self read
by * none

Ezek utn kezddhet az ldap modul zembe lltsa. Ennek belltsa az /etc/ldap.conf llomnyon keresztl trtnik. Az llomny tartalma:
141

A PAM hitelestsi keretrendszer


-- /etc/pam_ldap.conf
# Az LDAP kiszolgl neve
host tensor.andrews
# A keress kiindulpontjnak a DN-je
base ou=People,o=Andrews,c=HU
# A root DN-je (a jelszava a /etc/ldap.secret llomnyban tallhat, amely a
# libpam-ldap csomag teleptsekor kitltsre kerl)
rootbinddn cn=root, o=Andrews, c=hu
# Ennek a DN-nek a nevben keres a pam_ldap modul.
binddn cn=admin, o=Andrews, c=hu
bindpw ubertitkosjelszo
# A jelszavak trolsi formja
pam_password md5

Egy plda rendszer belltsai


Legyen pldnk trgya egy kisebb hlzat egyik felhasznli gpe. A felhasznlk gyakran vndorolnak a gpek kzt, gy az azonostsukat LDAP-on keresztl oldjuk meg. A felhasznlk a
rendszert a konzolrl val belpssel rik el, tvolrl csak az adminisztrtorok lphetnek be ssh
segtsgvel. Megmutatjuk a login s az ssh PAM belltsait, valamint a limits modul konfgurcijt.
A login modul belltsai a megszokotl csak annyival trnek el, hogy a felhasznlkat ldap-bl
is lehet azonostani. Ha a felhasznl azonostota magt az ldap modul segtsgvel, akkor beengedjk. Ha nem, akkor megprbljuk a helyi felhasznli adatbzisbl azonostani. Kiegszts
tovbb, hogy a pam_listfle modul hasznlatval lehetv tesszk bizonyos felhasznlk rendszerrl val idleges kitiltst. Ennek kezelsre az 5. listban megadot egyszer kis perl program
szolgl. Segtsgvel kilistzhatjuk a tiltot felhasznlkat, felvehetnk s trlhetnk tiltst.
Hasznlatnak megismershez hasznljuk a -h paramtert.
Pldarendszernkn az /etc/pam.d/login gy nz ki:
-- /etc/pam.d/login
# PAM konfigurcis llomny a `login' szolgltatshoz
auth
requisite pam_listfile.so item=user sense=deny
file=/etc/security/deny_users onerr=fail
auth
requisite pam_securetty.so
auth
required
pam_nologin.so
auth
required
pam_env.so
auth
sufficient pam_ldap.so
auth
required
pam_unix.so try_first_pass
account
required
pam_unix.so
session
required
pam_unix.so
session
required
pam_limits.so
session
optional
pam_lastlog.so
session
optional
pam_motd.so
session
optional
pam_mail.so standard noenv
password
required
pam_cracklib.so retry=3 minlen=6 difok=3
password
required
pam_unix.so use_authtok md5
password
required
pam_ldap.so try_first_pass

142

A PAM hitelestsi keretrendszer


Az ssh konfgurcija annyiban tr el a Debian ltal felteleptetl, hogy fel let vve egy listfle
modul, amely kizrlag az /etc/security/admins llomnyban felsorolt felhasznlkat engedi be.
Az ssh pam llomnya:
-- /etc/pam.d/ssh
# PAM konfigurcis llomny az `ssh' szolgltatshoz
auth
requisite pam_listfile.so item=user sense=allow
file=/etc/security/admins onerr=fail
auth
required
pam_nologin.so
auth
required
pam_env.so
auth
sufficient pam_ldap.so
auth
required
pam_unix.so
account
sufficient pam_ldap.so
account
required
pam_unix.so
session
required
pam_unix.so
session
optional
pam_lastlog.so
session
optional
pam_motd.so
session
optional
pam_mail.so standard
session
required
pam_limits.so
password
required
pam_cracklib.so retry=3 minlen=6 difok=3
password
required
pam_unix.so use_authtok md5
password
sufficient pam_ldap.so try_first_pass

Ha a felhasznl a rendszeren jelszt vltoztat, akkor azt az ldap-ban is meg kell vltoztatni. Ennek rdekben a passwd pam belltsait a kvetkezkppen kellet mdostani:
-- /etc/pam.d/passwd
# PAM konfigurcis llomny a `passwd' szolgltatshoz
password
required
pam_cracklib.so retry=3 minlen=6 difok=3
password
required
pam_unix.so use_authtok md5
password
sufficient pam_ldap.so try_first_pass

Ezzel az alap belltsokat megtetk. Innen mr mindenkinek az zlsre bzzuk a fnomhangolst. A rszletek s mellkhatsok tekintetben nzzk meg a PAM rendszer dokumentcijt [7
pam]. Azon szolgltatsokrl, amikrl hely hinyban nem tudtunk bvebben szlni, tallunk elegend informcit a Linux PAM hivatalos honlapjn [8 lpam]. Ugyanit sok egyb hasznos modulra is rakadhatunk. Mindenkinek hasznos keresglst kvnunk.

143

A PAM hitelestsi keretrendszer

Hivatkozsok
[1 shad] A shadow llomny formtuma: shadow (5)
[2 crypt] A crypt algoritmus lersa: crypt (3)
[3 rad] RADIUS: htp://www.gnu.org/sofware/radius/radius.html
[4 kerb] Kerberos: htp://web.mit.edu/kerberos/www/
[5 authldap] Authenticating with LDAP using Openldap and PAM:
htp://www.imaginator.com/~simon/ldap/
[6 ldapmig] plain to lpdap migration tools: fp://fp.padl.com/pub/MigrationTools.tar.gz
[7 pam] A PAM rendszer felhasznli kziknyve:
htp://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/
[8 lpam] A Linux PAM rendszer hivatalos honlapja: htp://www.kernel.org/pub/linux/libs/pam/

144

You might also like