Professional Documents
Culture Documents
Sysadmin II PDF
Sysadmin II PDF
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
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.
10
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
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.
12
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
(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
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
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.
15
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
1 9. http://en.wikipedia.org/wiki/Universally_unique_identifier
16
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
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
(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
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
18
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
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
19
20
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
21
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
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
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
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!
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
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
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
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
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
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
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
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.
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
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.
31
Csomagkezels
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
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
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
Ugyangy kereshetjk azt is, hogy egy konkrt fjl mely csomagban van:
apt-file search /usr/bin/nvi
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
Csomageltvolts:
zypper remove csomag
s a csomagok frisstse:
zypper update
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
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
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.
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
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
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
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
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.
38
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
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
40
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
41
ATA-8-ACS revision 4
Thu Aug 8 14:36:43 2013 CEST
Available - device has SMART capability.
Disabled
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
-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
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
Iptraf52, arpwatch53, wireshark54, tcpdump 55, lsof56 s mg szmtalan hasonl program ltezik loklis s tvoli hlzatok forgalmnak felgyeletre, hiba keressre.
Jelszkezels57
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
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
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
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
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
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
58
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
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
61
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
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
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
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 ;
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
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
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
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
69
70
71
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
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.
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
-- 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!
74
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
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
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
}
77
address
hostgroups
check_interval
check_period
contacts
contact_groups
notifcation_interval
notifcation_period
rtestsek id intervalluma
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
78
host_name
hostgroup_name
check_command
Mint a gpeknl
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
rendben
W, WARNING
veszly
79
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.
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.
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
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
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
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
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
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
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
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.
93
Mentsek s archivls
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
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 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
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
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
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
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
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
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.
103
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
(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
105
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
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
107
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
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
(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
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
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
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
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
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
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.
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).
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
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 szablyozs
mak
egyb
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 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
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.
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.
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
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
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
quantum
limit
A sorba llthat csomagok maximlis szma. Amennyiben elri, akkor elkezdi eldobni a csomagokat.
burst
ceil
prio
default
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
sport
Forrsport. Hasznlata: 'match ip dport 110 0xff', amely a 110-es portrl jv (azaz
POP3) csomagokra illeszkedik.
dport
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.
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.
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
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
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.
126
Fwbuilder
Turtle Firewall
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.
127
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
INPUT
INPUT
INPUT
INPUT
INPUT
INPUT
INPUT
INPUT
INPUT
INPUT
129
130
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
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
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 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 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)
135
session
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_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
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 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
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_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
142
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
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