Hálózati Operációs rendszerek I. (NGB_TA047_1) Mérési feladat megoldások 2010/11 őszi félév Utolsó módosítás: 2010.12.05 (v489)
Tartalomjegyzék Előszó.............................................................................................................................................................3 I. Mérés: Debian GNU Linux telepítése..........................................................................................................4 II. Mérés: BASH/SHELL szkriptek...................................................................................................................7 III. Mérés: Reguláris kifejezések.....................................................................................................................9 IV. Mérés: Optimalizált kernel fordítása.......................................................................................................10 V. Mérés: Linux fájlrendszerek.....................................................................................................................12 VI. Mérés: IPTABLES.....................................................................................................................................15 VII. Mérés: DHCP, DNS szolgáltatás..............................................................................................................18 VIII. Mérés: Naplózás...................................................................................................................................24 IX. Mérés: SSH, ProFTPd, Samba..................................................................................................................26 X. Mérés: Webszerver konfiguráció.............................................................................................................30 XI. Mérés: Squid, Dansguardian, Postfix......................................................................................................34 Ábrajegyzék..................................................................................................................................................36
Előszó Mi ez? Ennek a jegyzetnek a célja, hogy egyértelmű, egyszerű és működő megoldásokat mutasson be a Hálózati Operációs Rendszerek I. tárgy méréseihez. Az egyszerűség (és főleg a rövid határidő) miatt néhány dolog nem lehet egyértelmű, ezért kérlek benneteket, hogy ha valahol valami nem világos, szóljatok és igyekszem kibővíteni. Honnan tudhatom, hogy ez tényleg használható anyag-e? Minden itt ismertetett konfigurációt leteszteltem működő "éles" rendszeren is, így teljesen biztos, hogy az itt bemutatott megoldások működőképesek. Hogyan használjam az egyes megoldásokat? Minden feladatmegoldáshoz rövid szöveges magyarázat és konkrét konfigurációs beállítások/utasítások tartoznak. Amennyiben nem vagy biztos a dolgodban célszerű a lépéseket az itt ismertetett módon és sorrendben végrehajtani, mert így biztosan működni fog a megoldás. Hogyan értelmezzem az egyes részeket? A feladat a tárgy holnapjáról letölthető Mérési Feladatból van bemásolva. A feladat után a Megoldás rész alatt van az adott feladat kidolgozása. A terminálon kiadott parancsoknál a gép neve (fekete1:~#) és a kiadott parancs látható fix szélességű betűtípussal szedve és minden felesleges plusz írásjeltől megszabadítva. Ezeket tehát jelen formájukban (idézőjelek, vesszők fontosak!) kell kiadni a terminál előtt ülve is. A rendszerben található fájlok nevei, illetve azok tartalmi részletei szintén fix szélességű betűtípussal láthatóak. A feladatok megoldásaiban én a fekete1 nevű gép előtt ültem, így minden géphez kötött beállítást ennek megfelelően mutatok be. Értelemszerűen ahol nálam a gépnév szerepel oda neked kell a saját géped nevét behelyettesíteni. Ha hibát találtam/észrevételem van mi a teendő? Kérlek ebben az esetben keress meg előadáson, vagy dobj egy levelet:
[email protected] Felhasznált irodalom: Hálózati Operációs rendszerek jegyzet (http://www.tilb.sze.hu/tilb/targyak/NGB_TA047_1/unix-2010-11-21.pdf ) A gyakorlatokon elhangzott megoldások jegyzetei.
A jegyzet legfrissebb kiadása mindig elérhető a http://tilb.reddawn.hu/halopre1_mfm.pdf címen! A feladatokat kidolgozta: Budai Tamás Villamosmérnök hallgató
Lektorálta: Sájer Attila Villamosmérnök Hallgató
Sikeres Vizsgát kívánunk mindenkinek! 3
I. Mérés: Debian GNU Linux telepítése Feladat Telepítse fel a Debian Etch linuxot a gyakorlatvezető által bemutatott módon, valamint telepítse a grafikus felületet magyar nyelvvel majd rakja fel az Iceweasel böngészőt.
Megoldás A laborban könnyű dolgunk van, mivel a hálózaton már konfigurálva van a hálózati telepítés lehetőség. Először győződjünk meg róla, hogy a gép amin a telepítést végezzük csatlakozik a labor hálózatához! A gép újraindítása/bekapcsolása után a hálózatról bootolva kiválaszthatjuk a telepíteni kívánt rendszert. A jegyzet írásakor ez a debian 5 (lenny). Válasszuk ki a boot alatt a telepítőt, majd nyomjunk Entert az Install-ra. A karakteres telepítőben először nyelvet kell választanunk. Válasszuk a Hungarian lehetőséget, majd a következő lépésben a magyar billentyűzetkiosztást. A következő lépésben meg kell adnunk a gépnevet: fekete1 Most meg kell adnunk a tartomány nevet: tilb.sze.hu
Feladat Főbb paraméterek: • A Debian a 80GB-os HDD első 20 GB-jára kerüljön • A rendszer 2 felhasználója : root:labor, és diak:diak • A telepítésnél ne használjon semmilyen előre elkészített csomagkészletet • A mérés folyamán a következő csomagokat kell feltelepíteni: ssh, mc, gpm, x-window-system-core, kde, kdm, kde-i18n-hu Állítsa be, a /etc/kde3 könyvtárban, hogy root felhasználóként be lehessen lépni a grafikus felületre.
Megoldás A következő lépésben válasszuk a Kézi lehetőséget. Most láthatjuk a gépben lévő merevlemezeket. A feladatnak megfelelően válasszuk a 80GB-os lemezt. A lemezen nagy valószínűséggel már vannak létrehozott partíciók, ezek azonban nekünk nem kellenek, így válasszuk ki az első sort amelyben a lemez adatai szerepelnek. A kérdésre válaszoljunk Igennel, így létrehozunk egy új, üres partíciós táblát. Válasszuk ki a SZABAD HELY -et, majd Új partíció létrehozása. Méretnek adjuk meg a kívánt 20 GB -ot. A típus Elsődleges a pozíció pedig kezdet legyen. A telepítő most létrehozza a partíciót. Most láthatjuk a partíció tulajdonságait: Az alapértelmezett beállítások most megfelelnek nekünk, de azért nézzük meg hogyan kell kinéznie a táblázatnak: Használat: Ext3 naplózó fájlrendszer Csatolási pont: Csatolási opciók: Címke: Fenntartott blokkok: Jellemző használat: "Boot" zászló
/ defaults semmi 5% szokásos be
Válasszuk a <Partíció beállítása kész> lehetőséget. Most láthatjuk mit csináltunk az előző lépésekben: 1.
elsődleges
20.0 GB
B
f
ext3
4
/
A maradék szabad helyen hozzunk még létre egy cserehelyet azaz swap partíciót is. Ez akkor jön jól ha fogyóban van a fizikai memória. (Lapozófájl). Válasszuk megint a SZABAD HELY-et és járjunk el úgy, mint az előbb csak most a partíció mérete 512 MB legyen, a típusa logikai, (a helye kezdet) a beállításai pedig így nézzenek ki: Használat: cserehely "Boot" zászló
ki
Most a partíciós táblánk így fest: 1. 5.
elsődleges logikai
20.0 GB B 510 MB
f
ext3 f
swap
/
swap
A maradék szabad hely nem érdekel minket, így válasszuk a <Partíciók lezárása és változások mentése> lehetőséget. A következő lépésben még egyszer leellenőrizhetjük a beállításainkat. Ha minden jónak néz ki válasszuk az
lehetőséget. Most hátradőlhetünk kicsit, a telepítő leformázza a lemezt és megkezdődik az alapvető rendszerfájlok telepítése. A következő lépésben meg kell adnunk a root jelszavát. Ez a feladat szerint legyen labor. Adjuk meg a jelszót ellenőrzésképp ismét. Most létre kell hoznunk az első felhasználót: A teljes neve Diak a felhasználóneve diak a jelszava diak (és még egyszer diak) legyen. A frissítésekhez használjuk a Magyarország alatt található debian.sth.sze.hu -t ( a Proxy-t hagyjuk üresen). A csomaghasználat felmérése kérdésre válaszoljunk -el. A szoftverválasztó képernyőn csak a Szabvány rendszer legyen kijelölve (mivel a többi csomagot kézzel fogjuk telepíteni). Szeretnénk ha a rendszerünk bootolna is, így a GRUB-ot telepítsük az MBR-be: A telepítés véget ért, a kiválasztása után a rendszer újraindul és az újonnan telepített rendszerünk bootol be karakteres üzemmódban: Debian GNU/Linux 5.0 fekete1 tty1 fekete1 login: _
jelentkezzünk be root-ként, (a jelszó gépelés közben nem látszik, ez normális), majd telepítsük fel a feladatban megadott csomagokat az aptitude segítségével ( a csomagokat egyszerűen felsoroljuk): fekete1:~# apt-get install ssh mc gpm x-window-system-core kde kdm kde-i18n-hu
A kérdésre válaszoljunk igennel ( Enter). A szükséges csomagok letöltődnek és települnek. Ha minden csomag felkerült oldjuk meg az utolsó feladatot is: a /etc/kde3/kdm/kdmrc fájl 252. sorában az AllowRootLogin opciót állítsuk true-ra: fekete1:~# mcedit /etc/kde3/kdm/kdmrc
Alt+L -el odaugrunk a 252 sorra. AllowRootLogin=true
F2-vel elmentjük a változtatást, és F10-el kiléphetünk.
5
(A későbbiekben ezt a módszert alkalmazhatjuk az összes konfigurációs állományra. Természetesen más szövegszerkesztő alkalmazást is használhatsz. Mostantól csak a módosítandó sorokat tüntetem fel.) Indítsuk újra rendszert a beállítások véglegesítéséhez: fekete1:~# shutdown -r now
A rendszer újraindítása után már a kde3 grafikus felületét láthatjuk és be is jelentkezhetünk root-ként.
1. ábra. A kde3 bejelentkező képernyője
A bejelentkezés után hátravan még az Iceweasel böngésző telepítése: fekete1:~# apt-get install iceweasel
6
II. Mérés: BASH/SHELL szkriptek Feladat: 1. Írjon egy programot mely az adott könyvtárban lévő összes fájlban található „ ”(space) aláhúzásra „_” cseréli.
Megoldás: Az 1.sh fájl tartalma: #!/bin/bash
for i in * do if [ -f "$i" -a `echo "$i" | egrep -c " "` != 0 ] then mv "$i" `echo $i | tr ' ' '_'`; fi done
Az első sor minden bash scriptnél azonos. Ezzel mondjuk meg a rendszernek, hogy milyen fájlról van szó és, hogy milyen programmal kell végrehajtani. A for ciklussal végigmegyünk az összes fájlon az adott mappában; a do és done közötti rész annyiszor fut le ahány fájl van a mappában és a $i értéke mindig az aktuális fájl neve lesz. Az if [ -f "$i" segítségével ellenőrizzük, hogy a $i közönséges fájl-e, valamint a -a `echo "$i" | egrep -c " "` != 0 ] résszel, hogy szerepel-e a névben szóköz. Hogyha igen akkor végrehajtjuk a következő műveleteket a fi -ig. A végrehajtandó művelet az átnevezés (mv). Ebben a példában a $i fájlt nevezzük át úgy, hogy a saját nevében tr segítségével kicseréljük a szóközöket _ jelekre, majd ezt a kicserélt nevet a ` ` segítségével visszahelyettesítjük az mv parancs második argumentumának. A legtöbb ilyen típusú feladat tehát 3 részből áll: 1. a kívánt bemeneti lista létrehozása és végiglépkedés az elemeken 2. a kívánt feltételek vizsgálata az elemen 3. ha szükséges módosítás végrehajtása az adott elemen. A kész scriptre adjunk futtatási jogot chmod segítésével: fekete1:~# chmod u+x 1.sh
Majd futtassuk a scriptet: fekete1:~# ./1.sh
Feladat: 2. Írjon egy programot mely a rendszerben található összes „.jpg” fájlról egy abc szerinti listát készít, minden fájl mellé zárójelben megadja a fájl helyét.
Megoldás:
#!/bin/bash FL=`find / -name *.jpg` for i in `echo "$FL"` do L=`echo "$i" | egrep -o "([^/]*).jpg"` S+=`echo -n "\n$L"; echo -e " ($i)"` done echo -e "$S" | sort
Mivel ennél a feladatnál a kimenetet formáznunk és rendeznünk is kell ezért egy változóban eltároljuk a fájlok listáját, majd azon végezzük el a műveleteket.
7
Feladat: 3. Írjon egy programot mely az adott könyvtárban az összes fájl első betűjét kicsiről nagyra cseréli.
Megoldás:
#!/bin/bash for i in * do e=`echo $i|awk '{print substr($1,1,1)}' | tr "[a-z]" "[A-Z]"` m=`echo $i|awk '{print substr($1,2)}'` sz=$e$m mv $i $sz done
A fájlnév első karakterét awk segítségével választjuk szét a maradéktól, nagybetűsre alakítjuk, majd a két részt újra összefűzzük.
Feladat: 4. Írjon bash shell scriptet, amely megszámolja, hogy a /dev könyvtárban hány blokkeszköz-meghajtó (block special device) van!
Megoldás:
A "kincstári" megoldás a jegyzetből: #!/bin/bash BDC=0; # BlockDeviceCount for i in /dev/*; do if [ -b $i ]; then BDC=$((BDC+1)); fi done echo $BDC
Az eljárás itt is hasonló, mint az előzőekben. Inicializálunk egy változót ($BDC), majd egy for ciklussal végigjárjuk a /dev/ alatt található összes elemet. Ezek közül azoknál amelyek block-device típusúak megnöveljük a BDC értékét egyel. A script végén kiíratjuk a BDC értékét (a block-device-ok számát).
Feladat: 5. Írjon bash shell scriptet, amely megszámolja, hogy a scriptnek argumentumként megadott könyvtárban ÉS ALKÖNYVTÁRAIBAN összesen hány *.jpg" fájl van! (Segítség: használjon find-ot!)
Megoldás:
#!/bin/bash if [ ! $1 ] then echo "Hasznalat: 5.sh "; exit; fi find "$1" -name *.jpg | wc -l
Itt annyi az újdonság a fentiekhez képest, hogy a scriptüknek meg kell birkóznia egy argumentummal is. bash alatt a scripteknek átadott argumentumok a $1 $2 $3 stb. változókba kerülnek. Először megvizsgáljuk, hogy van-e első argumentumunk, ha pedig van akkor felhasználjuk a find paraméterezéséhez. A find a megtalált jpg fájlok neveit sorokban adja vissza, így elég egy wc -l paranccsal megszámlálni a sorokat. 8
III. Mérés: Reguláris kifejezések Feladat: 1. feladat Írjon reguláris kifejezést, mely a személy számokra illeszkedik. pl:(1-670423-3456)
Megoldás: "^[12]-[0-9]{6}-[0-9]{4}$"
Feladat: 2. feladat Írjon reguláris kifejezést, mely illeszkedik a bankszámlaszámokra, (2-szer vagy 3-szor 8 számjegyből álló sor, „-” elválasztva)
Megoldás: "^[0-9]{8}-[0-9]{8}(-[0-9]{8})?$"
Feladat: 3. feladat Írjon reguláris kifejezést mely IP címre illeszkedik (IPv4) a, Ne vizsgálja a 255-ös max értéket b, vizsgálja a 255-ös max értéket
Megoldás: a, "^([0-9]{1,3}\.){3}[0-9]{1,3}$" b, "^(([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]| 25[0-5])$"
Feladat: 4. feladat Írjon olyan Bash shell szkriptet mely a könyvtárban található összes fájl nevében a kisbetűt nagybetűre cseréli.
Megoldás: #!/bin/bash for i in * do if [ -f "$i" ] then mv "$i" `echo $i | tr '[a-z]' '[A-Z]'`; fi done
Feladat: 5. feladat Írjon olyan Bash shell szkriptet mely kilistázza azon felhasználók neveit, melyeknek alapértelmezett shellje a „/bin/bash” és 1000 fölötti a UserID-juk.
Megoldás: fekete1:~# cat /etc/passwd | awk -F ":" '/:\/bin\/bash$/ {if($3 > 1000){print $1;}}'
9
IV. Mérés: Optimalizált kernel fordítása Ebben a mérésben az adott gépre optimalizált kernelt fordítunk a mérésvezető utasításai alapján. Első lépésben fel kell készítenünk a rendszerünket a műveletre: A fordításhoz szükségünk lesz a fordítandó kernel forrására valamint konfigurációjára, egy fordítóra és néhány eszközre amelyekkel a lefordult kernelből debian csomagot tudunk készíteni. Tegyük tehát fel a szükséges csomagokat (természetesen root-ként): fekete1:~# apt-get install build-essential kernel-package libncurses5-dev
Töltsük le a kernel forrását (www.kernel.org vagy a mérésvezető által megadott helyről) a /usr/src mappába: fekete1:~# cd /usr/src fekete1:~# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.1.tar.bz2 Csomagoljuk ki (tar.gz esetén a tar kapcsolói: tar -xvzf , bz2 esetén: tar -xvjf) fekete1:~# tar -xvjf linux-2.6.36.1.tar.bz2
Készítsünk egy szimbolikus linket a könyvtárra "linux"névvel: fekete1:~# ln -s linux-2.6.36.1 linux
Lépjünk be a linux könyvtárba, majd másoljuk be a jelenlegi működő kernelünk konfigurációját: fekete1:~# cd linux fekete1:~# cp /boot/config-2.6.26-2-amd64 /usr/src/linux
Most használjuk a make programot amellyel előbb feltakarítjuk az esetleges korábban félbemaradt fordítás maradványait, majd a menuconfig segítségével elvégezzük a konfigurációt: fekete1:~# make clean fekete1:~# make menuconfig
2. ábra. A menuconfig ncurses felülete.
10
A konfigurációt a mérésvezető utasításai alapján végezzük, majd ha végeztünk figyeljünk oda, hogy mentsük el a konfigurációt a menuconfigból való kilépéskor! Ha minden készen áll, lefordíthatjuk a kernelünket: fekete1:~#
make-kpkg --initrd --revision=labor.1.0 kernel_image
A fordítás kb. 30-40 percet vesz igénybe. Az elkészült .deb csomagunk a /usr/src könyvtárba fog kerülni.
11
V. Mérés: Linux fájlrendszerek Fontos: Minden feladat után az aktuális felhasználói korlátozásokat törölje a következő feladat sikeressége érdekében.
Feladat: Quota Telepítse fel a Quota csomagot majd állítson be a diak felhasználónak 100MB soft és 200MB hard limitet. Ellenőrizze a működését. Például dd segítségével, majd szüntesse meg azt.
Megoldás: fekete1:~# apt-get install quota
A quota működéséhez elengedhetetlen, hogy megmondjuk melyik partíciókat szeretnénk kvótázni. Ezt a következőképpen tehetjük meg: a /etc/fstab fájl megfelelő sorában a jelenlegi gyökér partíciónkat (/) kvótakezelés alá vonjuk: /dev/sda1
/
ext3
errors=remount-ro,usrquota,grpquota 0
1
Most létre kell hoznunk a kvótakezeléshez szükséges fájlokat. Ezt a qoutacheck az első futtatáskor megteszi helyettünk: fekete1:~# quotacheck -avugm
Ez a parancs végigellenőrzi a kvótakezelésbe bevont partíciókat, majd létrehozza az aquota.user és az aquota.group fájlokat a partíciók gyökerében. Esetünkben tehát a /aquota.user és /aquota.group fájlok jönnek létre. A feladatban a diak felhasználónak kell korlátozást megadnunk. Ezt az edquota segítségével tehetjük meg (természetesen rootként): fekete1:~# edquota -u diak
Az edquota egy nano szövegszerkesztőbe betölti nekünk a szerkesztendő quota-táblát: Disk quotas for user diak (uid 1000): Filesystem blocks /dev/sda1 16
soft 0
hard 0
inodes 4
soft
hard 0
0
Ezt a táblázatot a következőképpen kell értelmeznünk: Filesystem: a fájlrendszer amire a kvóta érvényes block: a felhasználó által jelenleg felhasznált blokkok száma (1KB-os egységekben) soft: a jelenlegi blokk soft limit (1KB-os egységekben) hard: a jelenlegi blokk hard limit (1KB-os egységekben) inodes: a felhasználó által jelenleg felhasznált inode-ok száma soft: a jelenlegi inode soft limit (inode-ok számában) hard: a jelenlegi inode hard limit (inode-ok számában) A feladat, hogy 100MB soft és 200MB hard limitet állítsunk be. Ehhez a következőképpen módosítjuk a quota-táblát: Disk quotas for user diak (uid 1000): Filesystem blocks /dev/sda1 16
soft 102400
hard 204800
inodes 4
soft 0
hard 0
Itt a soft limit 102400 (100MB = 102400* 1KB) a hard pedig 204800 (200MB = 204800*1KB). Ha elmentettük a qouta-táblánkat (Ctrl+O, majd Ctrl+X a kilépés a nanoból) már csak le kell tesztelnünk a beállítást. Ehhez diak-ként adjuk ki a qouta parancsot: 12
diak@fekete1:~$ quota Disk quotas for user diak (uid 1000): Filesystem blocks quota limit /dev/sda1 16 102400 204800 diak@fekete1:~$
grace
files 4
quota 0
limit 0
grace
Láthatjuk, hogy a beálításaink valóban élnek. Teszteljük is le a limitet dd segítségével: diak@fekete1:~$ dd if=/dev/zero of=asd sda1: warning, user block quota exceeded. sda1: write failed, user block limit reached. dd: írás a következőbe: "asd": A lemezfeladag túllépése 399569+0 beolvasott rekord 399568+0 kiírt rekord 204578816 bájt (205 MB) másolva, 1,60558 mp, 127 MB/mp diak@fekete1:~$
A dd-nek megadtuk, hogy a bemeneti fájl a /dev/zero (végtelen darab 0), a kimenet pedig az asd nevű fájl. Mivel blokklimitet nem adtunk meg ez a dd addig fog futni amíg a fájlunk el nem éri a kvótánk határát. Mivel a jelenlegi hard limit 200MB ezért ekkora fájl legenerálása után szakítja meg a kernel a dd futását (feltételezve, hogy a diak felhasználónak nincs egyéb fájlja az adott kvótázott partíción). Végezetül szüntessük meg a limitet. Ezt egyszerűen megtehetjük úgy, hogy edquota segítségével a fenti 2 beállított limitet visszaírjuk 0-ra. Ezek után ha diak-ként újra megnézzük, valóban megszűnik a korlátozás: diak@fekete1:/root/proba1$ quota Disk quotas for user diak (uid 1000): none
Feladat: Ulimit Állítson be a diak felhasználónak 10MB-os maximális fájlméretet. Ellenőrizze a korlátozás működését, majd szüntesse meg azt!
Megoldás:
Használjuk az ulimit parancsot: fekete1:~# ulimit -f 10240
Az -f kapcsolóval mondjuk meg, hogy a fájlméretet szeretnénk limitálni, a 10240 pedig a 10MB-os limitünk 1KB-os blokkokban (10MB = 10240*1KB). Teszteljük ezt a beállítást is a dd segítségével: diak@fekete1:~$ dd if=/dev/zero of=asd Elérte a fájl méret határt
diak@fekete1:~$ ls -lh összesen 11M -rw-r--r-- 1 diak diak 10M nov 29 14.27 asd
A shell a 10MB-os határ elérésekor megszakítja a dd futását. Ha megnézzük ls segítségével, valóban egy 10MB-os fájl jött létre. Szüntessük meg a korlátozást: fekete1:~# ulimit -f 0
Fontos: az ulimit segítségével rendszerszintű korlátozásokat adhatunk meg (tehát ezek minden felhasználóra vonatkozni fognak), de a limitek csak akkor kerülnek értelmezésre és betartásra ha minden user ulimit-et támogató shellt használ! (pl. bash)
13
Feladat: Állítsa be, hogy maximum 30 processzt indíthatnak a felhasználók, tesztelje működését un. forkbombbal.
Megoldás: használjunk ulimitet:
fekete1:~# ulimit -u 30
-u, tehát a user processzek számát korlátzzuk és 30 (tehát 30 db folyamat) a korlát. Teszteljük a beállítást forkbomb-al: FONTOS! Forkbombot csak akkor robbantsunk ha meggyőződtünk, hogy van beállítva processz limit, különben a rendszerünket csak egy hard-reset kelti újra életre. Továbbá forkbombot SOHA nem robbantunk rootként!!! diak@fekete1:~$ f(){ f|f& };f [1] 2726 diak@fekete1:~$ bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen bash: fork: Erőforrás ideiglenesen elérhetetlen
Látható, hogy a 30-as limit elérése után a forkbomb nem tud tovább 'osztódni', így elkerülhető, hogy a renszerünk túlterhelődjön. Érdekesség: A 'forkbomb' működése: f(){ f|f& };f Amint látható egy egyszerű f() függvényt definiálunk, amely saját magát hívja meg, majd a létrejött 'fork'-ot (gyermek folyamatot) a háttérbe küldi, így az sosem fog befejeződni (tehát törlődni). A definíció után álló f pedig a lavinát elindító első függvényhívás. Nagyon vigyázzunk a forkbomb-bal, mert ha nem jól állítottuk be az erőforrás limitet, könnyedén kiakaszthatjuk a gépünket és akkor csak az újraindítás segít!
Feladat: pam_limits Állítson be 1 perc maximum processzoridőt a /etc/security/limits.conf-ban a diak felhasználónak, majd tesztelje dd segítségével.
Megoldás: Szerkesszük a /etc/security/limits.conf -ot és szúrjuk be a következő sort a fájlba: diak
hard
cpu
1
A korlátozás a diak felhasználóra vonatkozik, típusa hard és a cpu időt korlátozza 1 percre (percben megadva). Ezek után teszteljük le működik-e a korlátozás: diak@fekete1:~$ dd if=/dev/zero of=/dev/null
A dd most a /dev/zero-t másolja a /dev/null-ba (végtelen sok nullát egy végtelen nyelőbe), tehát ez a processz nem érne véget amíg kézzel meg nem állítjuk, vagy esetünkben a korlátozás életbe nem lép: diak@fekete1:~$ dd if=/dev/zero of=/dev/null Leállítva
(Ha közben egy másik terminálon ps-el figyeljük, láthatjuk, hogy a dd 1 perc után áll meg, hiszen ez alatt az egy perc alatt folyamatosan használta a processzort.) 14
VI. Mérés: IPTABLES Feladat: Állítsa össze a következő hálózatot:
3. ábra. A VI. méréshez szükséges fizikai hálózat.
Megoldás: A mérés megkezdése előtt a mérésvezető összeköti a gépeket a fenti módon, így a fizikai összeállítással már nem kell foglalkoznunk. A fekete gép a szerver, a fehér gép a kliens lesz a hálózatban. A beállításoknál látható, hogy melyik parancsot melyik gépen adjuk ki: ( fekete1:~#, Először a fekete1 gépen állítjuk be a hálózatot a következőképpen: fekete1:~# dhclient eth4
Ezzel egy címet kérünk a labor dhcp szerverétől. fekete1:~# route add default gw 192.168.100.1
Ezzel beállítjuk, hogy az alapértelmezett átjáró a labor routere. fekete1:~# ifconfig eth1 10.10.10.1/24 up
Ezzel a paranccsal kézzel megadjuk az eth1 interfész címét.
15
feher1:~#)
A beállítások után a fekete gépen az ifconfig parancsot kiadva meggyőződünk róla, hogy minden beállítás helyes-e: fekete1:~# ifconfig eth1 Link encap:Ethernet HWaddr 08:00:27:36:66:f3 inet addr:10.10.10.1 Bcast:10.10.10.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth4
Link encap:Ethernet HWaddr 08:00:27:cf:5c:9f inet addr:192.168.100.210 Bcast:192.168.100.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fecf:5c9f/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:40 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1420 (1.3 KiB) TX bytes:9271 (9.0 KiB)
(Az ifconfig kimenete ennél hosszabb, de minket most csak ez a 2 interfész érdekel.)
Ha mindezt beállítottuk akkor a fekete gépen működnie kell az internetelérésnek. Ezt a legegyszerűbben úgy tesztelhetjük, ha megpingelünk egy ismert kiszolgálót (pl. index.hu): fekete1:~# ping index.hu PING index.hu (217.20.130.97) 56(84) bytes of data. 64 bytes from sportgeza.hu (217.20.130.97): icmp_seq=1 ttl=58 time=13.2 ms 64 bytes from sportgeza.hu (217.20.130.97): icmp_seq=2 ttl=58 time=10.3 ms ^C --- index.hu ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1015ms rtt min/avg/max/mdev = 10.302/11.789/13.276/1.487 ms
Ha minden működik átléphetünk a fehér gépre.
Feladat: Állítson be statikus IP-t a fehér gépen a 10.10.10.10+gépszám/24-es hálózatból.
Megoldás:
feher1:~# ifconfig eth0 10.10.10.11/24 up feher1:~# route add default gw 10.10.10.1
Nálam a gépszám 1, tehát az IP cím 10.10.10.11/24 lesz. Az alapértelmezett átjáró a fekete gép megfelelő interfészének IP címe (ezt állítottuk be az előbb a fekete gépen). Ha mindent jól csináltunk a feher1 gép ifconfig kimenete: feher1:~# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:20:2e:96 inet addr:10.10.10.11 Bcast:10.10.10.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe20:2e96/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14 errors:0 dropped:0 overruns:0 frame:0 TX packets:57 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:990 (990.0 B) TX bytes:11829 (11.5 KiB) Interrupt:10 Base address:0xd020
(a kimenet itt is hosszabb, de minket csak az eth0 érdekel) Ha ezzel is készen vagyunk, akkor a beállítások után CSAK a fekete1 gép felénk eső 10.10.10.1 interfészét szabad elérnünk, semmi mást nem. Ellenőrizzük is le, így van-e:
16
feher1:~# ping 10.10.10.1 PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data. 64 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=7.30 ms 64 bytes from 10.10.10.1: icmp_seq=2 ttl=64 time=0.470 ms 64 bytes from 10.10.10.1: icmp_seq=3 ttl=64 time=1.07 ms ^C --- 10.10.10.1 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2006ms rtt min/avg/max/mdev = 0.470/2.947/7.302/3.089 ms feher1:~# ping 192.168.100.1 PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data. ^C --- 192.168.100.1 ping statistics --4 packets transmitted, 0 received, 100% packet loss, time 3011ms
A rendszer tehát működőképes, engedélyeznünk kell még a fekete gépen az ip forwardolást a kernelben, és kezdhetjük is megoldani az iptables feladatokat: fekete1:~# echo '1' > /proc/sys/net/ipv4/ip_forward
Feladat: Állítsa be a fekete gépen, hogy az IPTABLES NAT-olja a 10.10.10.0/24-es hálózatot.
Megoldás:
fekete1:~# iptables -t nat -A POSTROUTING --src 10.10.10.0/24 -o eth4 -j MASQUERADE
Teszteljük is le a működést a feher1 gépen:
feher1:~# ping index.hu PING index.hu (217.20.130.97) 56(84) bytes of data. 64 bytes from sportgeza.hu (217.20.130.97): icmp_seq=1 ttl=57 time=21.5 ms 64 bytes from sportgeza.hu (217.20.130.97): icmp_seq=2 ttl=57 time=22.8 ms ^C --- index.hu ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1020ms rtt min/avg/max/mdev = 21.554/22.182/22.811/0.645 ms
Feladat: Írjon olyan tűzfalszabályt mely, tiltja a fehér gépről HTTPS hozzáférést.
Megoldás:
fekete1:~# iptables -A OUTPUT -p tcp --src 10.10.10.2 --dport 443 -j DROP
Feladat: Írjon olyan tűzfalszabályt mely, tiltja a fekete gépre a TCP 8080-as portra érkező kéréseket.
Megoldás:
fekete1:~# iptables -A INPUT -p tcp --dport 8080 -j DROP
Feladat: Írjon olyan tűzfalszabályt mely, a fekete gép TCP 6666-os portjára irányuló kéréseket átirányítja a TCP 22es portra.
Megoldás: fekete1:~# iptables -t nat -A PREROUTING -p tcp --dport 6666 -j REDIRECT --to-port 22
Feladat: Írjon olyan tűzfalszabályt mely, a fekete gép 80-as portjára érkező kéréseket a teacherb.tilb.sze.hu 80-as portjára dobja (a teacherb IP címe: 192.168.100.205).
Megoldás: fekete1:~# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.100.205:80
17
VII. Mérés: DHCP, DNS szolgáltatás Feladat: Állítson össze egy hálózatot, mely két gép keresztkábellel való összekötéséből áll! Azon a fekete gépen melyen a DHCP szerver fog futni az alaplapi (eth4) legyen a hálózatba kötve, míg a Intel 4portos kártyából (eth0) (10.10.X.1/24) legyen keresztkábellel összekötve a második gép alaplapi hálózati kártyájába!
Megoldás:
A VI. mérés elején ismertetett módon állítsuk össze a hálózatot, majd a feladatban megadottak szerint konfiguráljuk be az ip címeket ifconfig segítségével (ugyan az, mint a VI. mérésnél ,csak az IP-k változnak).
Feladat: Oldja meg DHCP segítségével hogy a második gép a 10.10.X.10-50 tartományból kapjon IP címet, valamint ossza ki a fekete gép 10.10.X.1-es IP-jét mint névkiszolgáló és alapértelmezett átjáró, majd a fekete gépen IPtables segítségével oldja meg a NAT-olást.
Megoldás:
Telepítsük fel a dhcp3-server csomagot: fekete1:~# apt-get install dhcp3-server
Szerkesszük a /etc/dhcp3/dhcpd.conf fájlt a feladatnak megfelelően: (csak a számunkra érdekes, vagy átállítandó beállításokat közöltem)
option domain-name ”tilb.sze.hu”; option domain-name-servers 193.224.130.161, 193.224.128.1; option routers 193.224.130.161; subnet 10.10.1.0 netmask 255.255.255.0 { range 10.10.1.10 10.10.1.50; option routers 10.10.1.1; option domain-name-servers 10.10.1.1; }
Az első 3 option a laborban állandó. Alatta egy subnet deklarációja következik amelyben megadjuk a feladatban előírt alhálózatot (10.10.1.0/24 nálam). A range-el adjuk meg mettől meddig osztogathat címeket a dhcp szerver ebben az alhálózatban. Az alatta található 2 opció sorban az alapértelmezett átjárót és a dns szerver címét közli azokkal a gépekkel akik a DHCP-től címet kérnek. A nat beállítása szintén a VI. mérésből: fekete1:~# echo '1' > /proc/sys/net/ipv4/ip_forward fekete1:~# iptables -t nat -A POSTROUTING --src 10.10.10.0/24 -o eth4 -j MASQUERADE
FONTOS lépés: Mivel a fekete gép több hálózathoz is csatlakozik nagyon fontos megmondanunk, hogy a DHCP szerverünk mely interfészeken érkező kérésekre válaszolhat. Ha ezt nem tennénk meg akkor előfordulhatna, hogy a laborháló felé is elkezdene a szerverünk címeket (és ott hibásnak számító beállításokat) osztogatni! Állítsuk tehát be, hogy DHCP kérésekre csak az eth0 interfészen szabad válaszolnunk: Módosítsuk a /etc/default/dhcp3-server fájlt az alábbi módon: INTERFACES="eth0"
Ha mindez kész indítsuk újra a dhcp szervert: fekete1:~# /etc/init.d/dhcp3-server restart
Most térjünk át a fehér gépre és állítsuk be, hogy kapjon is IP címet a DHCP-től. Szerkeszzük a /etc/network/interfaces fájlt az alábbiak szerint: 18
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp
A számunkra fontos sort kiemeltem. Ha most megnézzük az interfészünknek nincs IP címe:
feher1:~# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:2f:90:fe BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Írjuk fel a HWaddr után található MAC címet, mert a későbbiekben még szükség lesz erre. Indítsuk újra a teljes hálózati szolgáltatást: feher1:~# /etc/init.d/networking restart
Most látnunk kell ahogy a dhcp kliens IP címet kér a szervertől: Internet Systems Consortium DHCP Client V3.1.1 Copyright 2004-2008 Internet Systems Consortium. All rights reserved. For info, please visit http://www.isc.org/sw/dhcp/ Listening on LPF/eth0/08:00:27:2f:90:fe Sending on LPF/eth0/08:00:27:2f:90:fe Sending on Socket/fallback DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 DHCPOFFER from 10.10.1.1 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPACK from 10.10.1.1 bound to 10.10.1.10 -- renewal in 227 seconds.
(új IP-t kézzel is kérhetünk a dhclient eth0 parancs kiadásával). Ha minden rendben ment és a NAT-olás is jól van beállítva mostantól el kell tudnunk érni a hálózat többi részét a fehér gépről is. (Vigyázat! Mivel DNS szerver még nem fut ezért nincs névfeloldás! Csak IP címeket próbálhatunk pingelni!) feher1:~# ping 192.168.100.1 PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data. 64 bytes from 192.168.100.1: icmp_seq=1 ttl=61 time=3.14 ms 64 bytes from 192.168.100.1: icmp_seq=2 ttl=61 time=2.31 ms ^C --- 192.168.100.1 ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1013ms rtt min/avg/max/mdev = 2.317/2.730/3.144/0.416 ms
Feladat: Oldja meg hogy a második gép minden DHCP kérésre fixen a 10.10.X.13-as IP címet kapja meg (HOST).
Megoldás:
Ehhez egy host bejegyzést sort kell hozzáadnunk a fekete gépen található /etc/default/dhcp3-server fájlhoz: 19
host fehergep { hardware ethernet 08:00:27:2f:90:fe; fixed-address 10.10.1.13; }
A host bejegyzéssel elneveztük a gépet (a név tetszőleges), majd megadtuk a fehér gépben található eth0 interfész MAC címét amit korábban felírtunk, továbbá megadtuk, hogy ez a MAC című interfész mindig a 10.10.1.13-as címet kapja a szerverünktől. A beállítás érvényesítéséhez indítsuk újra a szervert, majd menjünk át a fehér gépre és kérjünk új IP címet: feher1:~# dhclient eth0 There is already a pid file /var/run/dhclient.pid with pid 2683 killed old client process, removed PID file Internet Systems Consortium DHCP Client V3.1.1 Copyright 2004-2008 Internet Systems Consortium. All rights reserved. For info, please visit http://www.isc.org/sw/dhcp/ Listening on LPF/eth0/08:00:27:2f:90:fe Sending on LPF/eth0/08:00:27:2f:90:fe Sending on Socket/fallback DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPNAK from 10.10.1.1 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 DHCPOFFER from 10.10.1.1 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPACK from 10.10.1.1 bound to 10.10.1.13 -- renewal in 259 seconds.
Ha mindent jól csináltunk a beállított címet kapjuk meg.
Feladat: Telepítse fel a fekete gépre a bind9 csomagot, majd konfigurálja be a következőképpen. (A zónát az ns.tilb.sze.hu-n ledelegáltuk.) • Állítsa be egy zonaX.tilb.sze.hu zónát, melyhez a feketeX az elsődleges DNS kiszolgáló. (ahol X a mérőhely száma) • Állítsa be, hogy a 10.10.X.13 gép Domain neve amd.zonaX.tilb.sze.hu legyen. • Hozzon létre egy CNAME-t www néven, melyre szintén a 10.10.X.13 gép válaszol.
Megoldás: Első lépésként tegyük fel a bind9-et:
fekete1:~# apt-get install bind9
Nyissuk meg a /etc/bind/named.conf fájlt és konfiguráljuk be a feladatnak megfelelően. Adjuk hozzá a saját master típusú zónánkat és megadjuk a zónaleíró-fájl helyét: zone "zona1.tilb.sze.hu" { type master; file "/etc/bind/db.zona1"; };
Most létre kell hoznunk a zónaleíró fájlunkat. A legegyszerűbb ha a már meglévő db.local fájlról készítünk egy másolatot: fekete1:~# cp /etc/bind/db.local /etc/bind/db.zona1
Nyissuk meg a friss másolatunkat és végezzük el a mérési leírásnak megfelelő konfigurációt:
20
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA zona1.tilb.sze.hu. root.zona1.tilb.sze.hu. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS zona1.tilb.sze.hu. amd IN A 10.1.1.13 www IN CNAME amd
Ebben a fájlban adjuk meg a zónánk adatait. Figyeljünk rá, hogy FQDN-t kell használnunk, azaz fontos a lezáró pont a domain név végén! Az első rekord a névkiszolgáló neve, utána az adminisztrátor e-mail címe. (ebben a @ helyett pontot kell használnunk!) Alatta található a serial, amelyet a fájl minden egyes módosításakor KÖTELEZŐEN egyel növelnünk kell! Ezután következnek különböző frissítésre vonatkozó értékek. Ezeket hagyhatjuk alapbeállításon. a SOA rekord után található még 3 beállítás: az első a névszerverre vonatkozik. Ezek jelen esetben mi magunk vagyunk. A másik sor egy szimbolikus névhez rendel egy IP címet. Mivel az amd után nem tettünk pontot ezért az az amd.zona1.tilb.sze.hu-t fogja jelenteni. Alatta egy CNAME azaz egy névhivatkozás található ami a www nevet az amd-hez rendeli. Ha megvagyunk a módosítással mentsük el a fájlunkat. Figyeljünk a serial növelésére! Indítsuk újra a dns szervert a szokott módon: fekete1:~# /etc/init.d/bind9 restart
Ha mindent jól csináltunk, működnie kell a beállításoknak. Mielőtt azonban kipróbálnánk a névfeloldást ellenőrizzük le, hogy a gépeink valóban használják-e a bekonfigurált névszerverünket. Nézzük meg a fekete gép /etc/resolv.conf -ját és ha nem szerepel benne a lokális szerver, adjuk hozzá a névszerver lista elejére: nameserver 127.0.0.1
Mentsük el a fájlt, majd próbáljuk meg megpingelni a másik gépet amd vagy www néven hivatkozva rá: fekete1:~# ping amd.zona1.tilb.sze.hu PING amd.zona1.tilb.sze.hu (10.10.1.13) 56(84) bytes of data. 64 bytes from amd.zona1.tilb.sze.hu (10.10.1.13): icmp_seq=1 ttl=64 time=2.23 ms 64 bytes from amd.zona1.tilb.sze.hu (10.10.1.13): icmp_seq=2 ttl=64 time=0.854 ms 64 bytes from amd.zona1.tilb.sze.hu (10.10.1.13): icmp_seq=3 ttl=64 time=0.155 ms ^C --- amd.localhost ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2012ms rtt min/avg/max/mdev = 0.155/1.082/2.238/0.865 ms
Lépjünk át a fehér gépre és ellenőrizzük ott is /etc/resolv.conf -ot. Mivel a DHCP szerverünknél ezt korábban már megadtuk a dhcp kliens beállította nekünk a névszervert és a fájlban ez az egy sor szerepel: (Ha mégsem így van akkor javítsuk ki) nameserver 10.10.1.1
Próbáljuk meg innét is megpingelni az amd vagy www nevű gépet (vagyis jelen esetben saját magunkat):
21
feher1:~# ping amd.zona1.tilb.sze.hu PING amd.zona1.tilb.sze.hu (10.10.1.13) 56(84) bytes of data. 64 bytes from feher1.local (10.10.1.13): icmp_seq=1 ttl=64 time=0.015 ms 64 bytes from feher1.local (10.10.1.13): icmp_seq=2 ttl=64 time=0.026 ms 64 bytes from feher1.local (10.10.1.13): icmp_seq=3 ttl=64 time=0.177 ms ^C --- amd.localhost ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 0.015/0.072/0.177/0.074 ms
Feladat: Állítsa be a mérőhelyéhez tartozó ip tartomány reverse DNS-ét.(X.10.10.in-addr.arpa) Majd tesztelje ennek működését. (host –t PTR 10.10.X.13)
Megoldás: Szerkesszük ismét a /etc/bind/named.conf-ot és adjuk hozzá a következő zónabejegyzést: zone "1.10.10.in-addr.arpa." { type master; file "/etc/bind/db.rev"; };
Itt a zóna bejegyzése a 10.10.1 alatt található hálózatra vonatkozik és a reverse DNS működésének megfelelően fordítva kell bejegyeznünk .in-addr.arpa. végződéssel (mivel ez az rDNS gyökere). Mentsük el a fájlt, majd hozzuk létre a hivatkozott reverse-zónafájlt. MIvel az rDNS és a DNS zónafájlok nem sokban különböznek egyszerűen másoljuk le a korábbi zónafájlunkat: fekete1:~# cp /etc/bind/db.127 /etc/bind/db.rev
Módosítsuk a fájlunkat és adjuk hozzá az rDNS bejegyzést: ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA zona1.tilb.sze.hu. root.zona1.tilb.sze.hu. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS zona1.tilb.sze.hu. 13 PTR amd.zona1.tilb.sze.hu.
Itt elkezdhetjük 1-től a serial számozását mivel ez a fájl most kerül először forgalomba a dns szerverek közt. A bejegyzésünk 13, hiszen ez jelenti a 10.1.1.13-at (fordítva 13.1.1.10). Mentsük el a fájlt és indítsuk újra ismét a bind9-et. Ha ez is kész akkor már csak a tesztelés maradt hátra: fekete1:/etc/bind# host -t PTR 10.10.1.13 13.1.10.10.in-addr.arpa domain name pointer amd.zona1.tilb.sze.hu
Feladat: • Ellenőrizze a mérés működését, kérdezze le saját zónájának az NS és SOA rekordját. • Ping-elje az index.hu-t a fehér gépről. • Törölje a dhcp3-server és bind9 csomagokat a konfigurációs fájlokkal együtt.
22
Megoldás: fekete1:/etc/bind# host -t NS zona1.tilb.sze.hu fekete1:/etc/bind# host -t SOA tilb.sze.hu feher1:~# ping index.hu PING index.hu (217.20.130.97) 56(84) bytes of data. 64 bytes from sportgeza.hu (217.20.130.97): icmp_seq=1 ttl=57 time=15.3 ms 64 bytes from sportgeza.hu (217.20.130.97): icmp_seq=2 ttl=57 time=18.2 ms ^C --- index.hu ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1006ms rtt min/avg/max/mdev = 15.300/16.784/18.268/1.484 ms
(az utolsó feladat előtt persze várjuk meg amíg a mérésvezető leellenőrzi az eddigi munkánkat) fekete1:~# apt-get remove --purge dhcp3-server bind9
23
VIII. Mérés: Naplózás Feladat: Telepítse fel a syslog-ng csomagot a fekete és fehér gépekre és oldja meg a mérésvezető útmutatása alapján, hogy a fehér gépen található Debian rendszer a fekete gépre naplózzon.
Megoldás: Telepítsünk:
fekete1:~# apt-get install syslog-ng feher1:~# apt-get install syslog-ng
Szerkesszük a fekete gépen a /etc/syslog-ng/syslog-ng.conf fájlt és adjuk hozzá a következőket: (csak a fájl részeit másoltam be, hogy látni lehessen mi hová kerül.) ###### # sources source feher { tcp( port(514) keep-alive(yes) max-connections(100) );
}; # all known message sources
...
###### # destinations destination feher_file { file("/var/log/feher.log"); }; ###### # logs # order matters if you use "flags(final);" to mark the end of processing in a # "log" statement log { };
source(feher); destination(feher_file);
... A fenti beállításokkal megadtuk, hogy az 514 tcp porton várunk távoli gépről érkező logokat és ezek a feher nevű forrásba kerüljenek. Megadtunk egy feher_file nevű célt ahová logolni tudunk. Továbbá megadtunk egy log direktívát, hogy a feher nevű forrásból érkező naplóbejegyzéseket naplózzuk bele a feher_file nevű célba. Indítsuk újra a syslog-ng-t: fekete1:~# /etc/init.d/syslog-ng restart
Menjünk át a fehér gépre és állítsuk be ott is a syslog-ng-t. Szerkesszük a /etc/syslog-ng/syslog-ng.conf fájlt és adjuk hozzá a következő részeket: ###### # destinations destination fekete { tcp("10.10.1.1" port(514)); };
...
24
###### # logs # order matters if you use "flags(final);" to mark the end of processing in a # "log" statement log { source(s_all); destination(fekete); };
... Itt megadunk egy célt ami a 10.10.1.1 gép 514-es portja, majd egy log bejegyzéssel megmondjuk, hogy a helyi gépről az összes naplóbejegyzést küldjük el a távoli célnak. Indítsuk újra a syslog-ng-t ezen a gépen is:
feher1:~# /etc/init.d/syslog-ng restart
Mivel a fekete gép már fel van készítve a logok fogadására a távoli logolás innentől működik. Próbáljuk is ki: Nézzük meg a fehér gépről érkező log végét folyamatos frissítéssel a fekete gépen: fekete1:~# tail -f /var/log/feher.log
Most generáljunk valamilyen naplóüzenetet a fehér gépen: feher1:~# logger teszt log a feher geprol
Most nézzünk vissza a fekete gépre: fekete1:~# tail -f /var/log/feher.log Dec 2 23:13:28 10.10.1.2 syslog-ng[3256]: syslog-ng starting up; version='2.0.9' Dec 2 23:23:31 10.10.1.2 logger: teszt
Feladat: Töltse le a dev2.tilb.sze.hu/probalog.log fájlt, mely a labor publikus IP- cím tartomány forgalmának egynapos naplója.
Megoldás: A letöltéshez használjunk pl. wget-et:
fekete1:~# wget http://dev2.tilb.sze.hu/probalog.log
Feladat: • Nézze meg milyen gyakran kapcsolódik a 92.52.216.17-es IP cím a laborhálózatba, és milyen célból? • Nézze meg hány alkalommal kapcsolódik a laborhoz egy távoli gép HTTPS kapcsolaton. • Egy nap alatt kimenő vagy bejövő kapcsolatokból van több? • Állapítsa meg logfájl alapján melyik hálózati interfész kapcsolódik az internethez! • Állapítsa meg hányan próbáltak meg belépni ssh segítségével 1 nap alatt a 193.224.130.177-es IPre (tegyük fel hogy senki nem használta aznap az ssh kapcsolatot)! • Állapítsa meg hány csomag érkezett a 193.224.130.173-as IP http portjára!
Megoldás:
Nézzünk bele a logfájlba pl. mcedittel. Láthatjuk, hogy a log formátuma az IPTABLES rövidítéseihez és elnevezésihez hasonló csupa nagybetűs változónevekből és egyenlőségjellel hozzájuk rendelt értékekből áll. A megadott feladatokhoz egyszerűen alkothatunk reguláris kifejezéseket. Pl: Nézze meg hány alkalommal kapcsolódik a laborhoz egy távoli gép HTTPS kapcsolaton. fekete1:~# cat probalog.log | egrep "^.*IPTABLES_PUBLIC_IN.*DPT=443.*$" | wc -l a kapcsolat bejövő, tehát IPTABLES_PUBLIC_IN a célport pedig DPT=443 az így kiszűrt sorokat
egyszerűen összeszámoljuk.
25
pedig
IX. Mérés: SSH, ProFTPd, Samba Feladat: sshd Lépjen be a fekete gépen található Debian rendszerbe diak-ként! Generáljon 1024 bites publikus/privát kulcspárt az ssh-hoz, Az előadáson bemutatott módon helyezze el a megfelelő kulcsot a fehér gépen úgy, hogy jelszó használata nélkül be tudjon lépni.
Megoldás:
Generáljunk kulcsot. A generáláskor feltett kérdésekre egyszerűen nyomjunk entert (mivel a fájlok alapbeállításban megfelelőek nekünk, jelszót pedig nem akarunk megadni): diak@fekete1:~$ ssh-keygen -t rsa -b 1024 Generating public/private rsa key pair. Enter file in which to save the key (/home/diak/.ssh/id_rsa): Created directory '/home/diak/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/diak/.ssh/id_rsa. Your public key has been saved in /home/diak/.ssh/id_rsa.pub. The key fingerprint is: 74:59:60:eb:f5:88:56:a4:3e:b8:91:e4:a3:1d:e2:28 diak@fekete1 The key's randomart image is: +--[ RSA 1024]----+ | o.o | | . * | | o = o | | + * + o | | . S * . . | | o + * . | | E . o o | | . | | | +-----------------+ diak@fekete1:~$
Most lépjünk át a fehér gépre. Mivel ebben az esetben a fehér lesz az a gép amihez csatlakozni szeretnénk fel kell rá telepítenünk az openssh-server csomagot: feher1:~# apt-get install openssh-server
Most térjünk vissza a fekete gépre és másoljuk át az ssh kulcsunkat a fehérre: diak@fekete1:~$ ssh-copy-id 10.10.1.2 The authenticity of host '10.10.1.2 (10.10.1.2)' can't be established. RSA key fingerprint is 81:eb:72:34:15:27:37:f1:f6:19:11:c0:ac:1e:b9:7d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.10.1.2' (RSA) to the list of known hosts. [email protected]'s password: Now try logging into the machine, with "ssh '10.10.1.2'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. diak@fekete1:~$
A kulcsmásoló script be fog jelentkezni a fehér gépre diak-ként, tehát meg kell adnunk a diak jelszavát (diak) Próbáljunk meg most bejelentkezni a fehér gépre a feketéről:
26
diak@fekete1:~$ ssh 10.10.1.2 Linux feher1 2.6.26-2-amd64 #1 SMP Thu Nov 25 04:30:55 UTC 2010 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. You have mail. Last login: Mon Nov 29 21:49:24 2010 diak@feher1:~$
Ha mindent jól csináltunk jelszó megadása nélkül ssh autentikációval léptünk be és kaptunk egy parancssort a fehér gépen.
Feladat: Az sshd konfigurációs állományában állítsa be a következőket: a. Tiltsa le a root hozzáférést! b. Tiltsa le a PAM alapú autentikációt!
Megoldás: Módosítsuk a következő értékeket a fehér gép /etc/ssh/sshd_config fájljában: PermitRootLogin no
...
UsePAM no
Indítsuk újra az ssh szervert: feher1:~# /etc/init.d/ssh restart
Feladat: ProFTPd Telepítse fel a proftpd csomagot. Hozzon létre egy ftpuser1, ftpuser2 felhasználót. Az ftpuser2 felhasználó shelljét állítsa át /bin/false-ra!
Megoldás: Telepítsünk:
fekete1:~# apt-get install proftpd (A telepítés közben feltett kérdésre válasszuk a standalone lehetőséget)
Hozzuk létre a két felhasználót (a -m kapcsoló létrehozza a létrejövő userek home könyvtárait is): fekete1:~# useradd -m ftpuser1 fekete1:~# useradd -m ftpuser2
Most a /etc/passwd fájlban keressük meg az ftpuser2 sorát és módosítsuk a shelljét: ftpuser2:x:1002:1002::/home/ftpuser2:/bin/false
Feladat: Állítsa be a következőket a proFTPd konfigurációs állományában a következőket: a. A ftp eléréshez szükséges a felhasználóknak tényleges shell-el rendelkezniük b. A legfelső könyvtár a saját home könyvtár legyen
Megoldás:
Szerkesszük a /etc/proftpd/proftpd.conf fájlt a következőképpen: # Use this to jail all users in their homes DefaultRoot ~ # Users require a valid shell listed in /etc/shells to login. # Use this directive to release that constrain. RequireValidShell on
27
A konfiguráció módosítása után ne felejtsük el újraindítani az ftp szerverünket: fekete1:~# /etc/init.d/proftpd restart
Feladat: Az ftpuser1 felhasználó könyvtárban hozza létre a következő könyvtárstruktúrát: upload tantargyak egyeb
Megoldás:
Ha nem akarunk a jogosutságbeállítással külön foglalkozni cészerű a mappákat az ftpuser1 nevében létrehozni: fekete1:~# su ftpuser1 fekete1:/root$ cd fekete1:~$ mkdir upload tantargyak egyeb
Feladat: Állítsa be, hogy az upload könyvtárba lehessen feltölteni, a többibe ne! Állítsa be, hogy a upload könyvtárból ne lehessen se könyvtárat, se fájlt törölni.
Megoldás: Adjuk hozzá a szabályokat a /etc/proftpd/proftpd.conf fájl végéhez: Deny All DenyAll AllowAll
Ezekkel a könyvtárakra vonatkozó direktívákkal megteremtjük a feladatban szereplő feltételeket.
Feladat: Samba Az ftpuser2 home könyvtárát ossza meg az előadáson látott módon samba segítségével, úgy hogy: • A megosztás neve usersamba • Böngészhető legyen • Csak olvasható legyen • Bárki számára hozzáférhető legyen
Megoldás: Telepítsünk samba-t:
fekete1:~# apt-get install samba (a munkacsoportot állítsuk TILB -re, a második kérdésre válaszoljunk nemmel)
Szerkszesszük a /etc/samba/smb.conf fájlt és állítsuk be a következőket: # "security = user" is always a good idea. This will require a Unix account # in this server for every user accessing the server. See # /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html # in the samba-doc package for details. security = share
28
Ez a beállítás mondja meg, hogy a gép mindenki számára elérhető akkor is ha nincs ezen a gépen érvényes felhasználója. Adjuk hozzá a megosztásunkat a fájl végéhez: [usersamba] path=/home/ftpuser2 browseable = yes read only = yes guest ok = yes
A megosztásunk életbeléptetéséhez indítsuk újra a samba szervert: fekete1:~# /etc/init.d/samba restart
Feladat: Ellenőrizze a fájlmegosztásokat. Próbálja meg felcsatolni a fehép gép Windows 2003-as szerverére a megosztást.
Megoldás: Indítsuk újra a fehér gépet és bootoljunk be a Windows 2003 rendszerbe. Lépjünk be, majd bizonyosodjunk meg róla, hogy elérjük a fekete a gépet. (Ha nem megy az IP konfiguráció Windows alatt, kérjük a mérésvezető segítségét.) Ha elérjük a fekete gépet nyissunk egy sajtgépet és egyszerűen a címsorból próbáljuk meg elérni a fekete gép megosztását (írjuk be a fekete gép hálózati címét NT formátumban):
4. ábra. A megosztás tesztelése
29
X. Mérés: Webszerver konfiguráció Feladat: Kösse össze a fekete gép eth1-es portját és fehér gép eth0-ás portját. Állítsa be a fekete gép eth1-es portjára a következő paramétereket: • address:10.10.10.1 • netmask 255.255.255.0 • broadcast 10.10.10.255 Állítsa be a fehér gép eth0-es portjára a következő paramétereket: • address 10.10.10.2 • netmask 255.255.255.0 • broadcast 10.10.10.255 • gateway 10.10.10.1 Állítsa be a fehér gépen, hogy a fekete gép legyen a névkiszolgáló.
Megoldás:
A fizikai összeállítást a mérésvezető már elvégezte helyettünk, így azzal nem kell foglalkoznunk. A feladatot a már ismert módon, ifconfig segítségével oldhatjuk meg:
fekete1:~# ifconfig eth1 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 up
Hasonlóan járunk el a fehér gépen is (figyeljünk oda melyik interfészt állítjuk!): feher1:~# ifconfig eth0 10.10.10.2 netmask 255.255.255.0 broadcast 10.10.10.255 up
Itt meg kell még adnunk az alapértelmezett átjárót is: feher1:~# route add default gw 10.10.10.1
Ha eddig eljutottunk, már tudnunk kell pingelni mindegyik gépet a másikról.
Feladat: Telepítse fel a bind9 csomagot, majd konfigurálja fel a már tanult módon, úgy hogy a zóna zonax.tilb.sze.hu (ahol az x a gépszámot jelöli). Adja meg a zónafájlban, hogy a fehér gép szimbolikus neve: www.zonax.tilb.sze.hu legyen, majd állítson be egy CNAME bejegyzést ugyanerre az IP-re www2.zonax.tilb.sze.hu, és www3.zonax.tilb.sze.hu néven. Ellenőrizze ping segítségével a működést.
Megoldás: A névkiszolgáló telepítése és konfigurálása megegyezik a VII mérésben leírtakkal, csak a konkrét konfigurációban változik néhány dolog. Végezzük el a telepítést és a beállítást a VII. mérésben leírtak szerint, majd amikor a névfeloldás megfelelően működik, módosítsuk a zónafájlunkat az alábbiak szerint: ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA zona1.tilb.sze.hu. root.zona1.tilb.sze.hu. ( 6 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS zona1.tilb.sze.hu. www IN A 10.10.10.2 www2 IN CNAME www www3 IN CNAME www
(Figyeljünk rá, hogy itt más az IP cím, mint a VII mérésben, illetve a serialt se felejtsük el növelni!) 30
Pingeljük meg a beállított címeket mindkét gépről:
fekete1:~# ping www.zona1.tilb.sze.hu PING www.zona1.tilb.sze.hu (10.10.10.2) 56(84) bytes of data. 64 bytes from www.zona1.tilb.sze.hu (10.10.10.2): icmp_seq=1 ttl=64 time=0.363 ms 64 bytes from www.zona1.tilb.sze.hu (10.10.10.2): icmp_seq=2 ttl=64 time=0.001 ms ^C --- www.zona1.tilb.sze.hu ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.001/0.182/0.363/0.181 ms
Ha mindent jól csináltunk mind a www, mind a www2 www3 címeket pingelve mindig a 10.10.10.2-es (azaz a fehér) géphez jutunk.
Feladat: Telepítse fel az apache2 web szervert a fehér gépre az előadáson látott módon, majd konfigurálja fel a következőképpen: • hozzon létre 2 virtuális webszervert melyeknek Documentroot-ja a /var/www/{www1,www2} • Hozza létre az előbbi könyvtárakat, melyekben index.html néven szerepeljen egy fájl melyben megtalálható a saját könyvtárának neve (így egyszerűbb az ellenőrzés.) • Állítsa be a Szervernévnek a {www,www2}.zonax.tilb.sze.hu nevet! • Állítsa be hogy a 2 virtuális webszerver külön naplófájlba naplózzon pl.:/var/log/apache2/ {www,www2}/{access,error}.log • Ellenőrizze működését a fekete gépről web böngésző segítségével!
Megoldás:
Mivel a webszerverünk a fehér gépen lesz, így minden beállítást itt eszközölünk. Első lépésként: feher1:~# apt-get install apache2
Majd hozzuk létre a két kívánt mappát:
feher1:~# mkdir /var/www/{www1,www2}
Hozzunk létre mindkét mappában egy index.html fájlt amelyek tartalma a mappa elérési útja legyen: a www1-ben lévő index.html tartalma: /var/www/www1
a www2-ben lévőé pedig:
/var/www/www2
(A html nyelv szintaktikájával ne foglalkozzunk, jelenleg nekünk ez bőven elég a feladathoz)
Most konfiguráljuk be a két oldalunkat, hogy az apache ki tudja őket szolgálni: Először létre kell hoznunk a két virtuális szervert leíró fájlokat. Az első esetben (www) könnyű dolgunk van hiszen az apache alapbeállításban ezt használja. Nekünk elég tehát ha a /etc/apache2/sites-available/default fájlt szerkesztjük: ServerAdmin webmaster@localhost DocumentRoot /var/www/www1 Options FollowSymLinks AllowOverride None ErrorLog /var/log/apache2/www1/error.log CustomLog /var/log/apache2/www1/access.log common # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn (Az itt feltüntetett fájlból kidobáltam az alap directory szabályokat, azonban ha a vastagon szedett részeket megfelelően állítjuk be, ez a fájl így elég a működéshez)
31
Ezzel az első virutalhostunk már működik is. Másoljuk most le ezt a fájlt www2 néven: feher1:/etc/apache2/sites-available# cp default www2
Most írjuk át a szükséges változókat:
ServerAdmin webmaster@localhost ServerName www2.zona1.tilb.sze.hu DocumentRoot /var/www/www2 Options FollowSymLinks AllowOverride None ErrorLog /var/log/apache2/www2/error.log CustomLog /var/log/apache2/www2/access.log common # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn
(itt a ServerName ami újdonság, ennek a beállítására figyeljünk oda!) A default (vagyis a www) már engedélyezve van, az új www2-t azonban még engedélyeznünk kell: feher1:/etc/apache2/sites-available# a2ensite www2
Most, hogy minden készen van újra kell indítanunk a webszerverünket, hogy működjenek a beállítások: feher1:~#/etc/init.d/apache2 restart Restarting web server: apache2 failed! feher1:~#
Ha nem akar elindulni a webszerver annak egyik oka lehet, hogy a megadott log fájlok könyvtárai nem léteznek. Ha így van hozzuk őket létre kézzel: feher1:~# mkdir /var/log/apache2/{www1,www2}
Kíséreljünk meg még egy újraindítást:
feher1:~#/etc/init.d/apache2 restart Restarting web server: apache2. feher1:~#
Teszteljük a beállításainkat egy webböngésző segítségével (akár a fehér akár a fekete gépen)
5. ábra. Az apache hosztnév alapján a megfelelő oldalt (index.html-t) szolgálja ki nekünk.
32
Feladat: Állítsa be a /etc/apache2/sites-available/default-ssl fájlban, hogy ez a virtuális webszerver a www3.zonax.tilb.sze.hu-ra hallgasson.
Megoldás: (A megoldást a mérési feladat maga tartalmazza)
Az Apache v2 (lenny óta) automatikusan generál ssl kulcsot a webszervernek. Melyet a /etc/apache2/sites-available/default-ssl állományban be is állít. Nekünk csak be kell kapcsolni az apache2-höz az ssl képes site-ot. Ezt a következőképp tehetjük meg. a2ensite default-ssl
Majd engedélyezni kell a ssl modult a titkosított kommunikációhoz: a2enmod ssl
Majd újra kell indítani az Apache2 webszervert. /etc/init.d/apache2 restart
Az apache2 virtualhost ssl-képes konfigurációs fájlunk részlete: ServerAdmin webmaster@localhost ServerName www3.zona1.tilb.sze.hu SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem DocumentRoot /var/www/www3/ Options FollowSymLinks AllowOverride None
... Természetesen itt is figyeljünk oda, hogy létezzenek a beállított könyvtárak, illetve a /var/www/www3 könyvtárba is helyezzünk el egy index.html-t!
Feladat: Ellenőrizze a www3.zonax.tilb.sze.hu működését web böngésző segítségével.
Megoldás:
6. ábra. A kapcsolat mostantól kódolt, így az elküldött adatokat nem lehet lehallgatni.
33
XI. Mérés: Squid, Dansguardian, Postfix Feladat: Állítsa össze a már megismert mérési összeállítást! Kösse össze a fekete gép eth1-es portját és fehér gép eth0-ás portját. Állítsa be a fekete gép eth1-es portjára a következő paramétereket: address:10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 Állítsa be a fehér gép eth0-es portjára a következő paramétereket: address 10.10.10.2 netmask 255.255.255.0 broadcast 10.10.10.255 gateway 10.10.10.1 Állítsa be az IPtables segítségével a natolást és engedélyezze a fekete gépen a csomagtovábbítást.
Megoldás: A megoldás eleje teljesen azonos a IX feladat elején ismertetettel:
fekete1:~# ifconfig eth1 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 up feher1:~# ifconfig eth0 10.10.10.2 netmask 255.255.255.0 broadcast 10.10.10.255 up
Itt meg kell még adnunk az alapértelmezett átjárót is: feher1:~# route add default gw 10.10.10.1
Be kell még állítanunk a csomagtovábbítást, illetve egy IPTABLES szabály segítségével a NAT-olást is: fekete1:~# echo 1 > /proc/sys/net/ipv4/ip_forward fekete1:~# iptables -t nat -A POSTROUTING -o eth4 -j MASQUERADE
Ha eddig eljutottunk, már tudnunk kell pingelni mindegyik gépet a másikról, illetve mindkét gépről el kell érnünk a külső hálózatot (azaz pl. az index.hu-t is).
Feladat: Telepítse fel a squid proxy daemont, majd a dansguardian-t. Állítsa be a fehér gép böngészőjében a 10.10.10.1:8080-t proxynak. Állítsa be, hogy a 10.10.10.0/24-es hálózatból fogadjon csak web kéréseket. Állítsa át a Dansguardian daemon nyelvét „hungarian”-ra! A /etc/dansguardian/lists/bannedextensionlist ben tiltsa le a .js kiterjesztésű fájlokat! Ellenőrizze az index.hu-t egy proxy nélkül és proxyval! Ellenőrizze a tartalomszűrő működését (pl.: keressen rá a „sex” szóra)!
Megoldás:
fekete1:~# apt-get install squid dansguardian
A fehér gépen a Proxy-t böngészőtől függően a böngésző saját beállításaiban tehetjük meg. Ha nem tudjuk, hogyan állítsuk be, kérjük a mérésvezető segítségét. Mivel a squidben konkrétan nincs ilyen jellegű beállítás, állítsuk be a gépünket, hogy csak a megadott hálózatból jövő web kérésekkel foglalkozzon és ezeket dobja át a proxynak. Ezt egy IPTABLES szabállyal tehetjük meg: fekete1:~# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.10.1:3128
34
A squid /etc/squid/squid.conf fájljában keressük meg a következő sort és egészítsük ki a következőképpen: http_port 3128 transparent
(A beállítás után indítsuk újra a squid-et a szokott módon.) A dansguardian nyelvét a /etc/dansguardian/dansguardian.conf -ban állíthatjuk át magyarra a következő sor módosításával: # language to use from languagedir. language = 'hungarian'
Tiltsuk le a /etc/dansguardian/lists/bannedextensionlist -ben a .js fájlokat: (vegyük ki a kommentelő # jelet a js sor elől:) js # JScript file - often needed in web pages
Feladat: Telepítse fel a fekete gépre a postfix csomagot, majd állítsa be a következőket: • A Postfix Maildir formátumban dolgozzon, majd hozza létre a diak felhasználó home könyvtárában a maildirmake paranccsal a Maildir-t. • Az e-mail küldés mindenképpen HELO/EHLO-val kezdődjön! • A HELO/EHLO után valódi, létező FQDN-nek kell állnia! • A küldő e-mail címe rendes e-mail címnek kell lennie!
Megoldás: Telepítsünk:
fekete1:~# apt-get install postfix
A telepítés alatt válasszuk az Internet site lehetőséget, majd adjuk meg a gépünk FQDN-jét! Ahhoz, hogy legyen maildirmake parancsunk fel kell még telepítenünk a maildrop csomagot is: fekete1:~# apt-get install maildrop
Lépjünk be diak-ként és hozzuk létre a maildir-ünket: diak@fekete1:~$ maildirmake Maildir
Ha megnézzük láthatjuk, hogy a maildirmake létrehozta a Maildir formátumhoz szükséges alkönyvtárakat: diak@fekete1:~$ ls Maildir/ cur new tmp
Állítsuk be a postfixet a feladatban megadottak szerint: Szerkesszük a /etc/postfix/main.cf fájlt és adjuk hozzá a következő direktívákat a fájl végéhez: mailbox_home = Maildir/ smtpd_helo_required = yes smtpd_recipient_restrictions = reject_non_fqdn_sender reject_invalid_hostname permit
A mailbox_home mondja meg, hogy Maildir formátumot fogunk használni és, hogy a maildirünk Maildir név alatt található (ezt hoztuk létre korábban a maildirmake paranccsal). Alatta a HELO/EHLO használatát kényszerítjük ki (ez a spammerek egy részét már ki is szűri). A következő direktívában (smtpd_recipient_restrictions) megadjuk, hogy csak fqdn formában megadott email címről küldhetünk, és a HELO után, nem csak, hogy megfelelő formátumú, de valóban működő (A rekordal rendelkező) domain nevet kell megadnunk. Ha ezek a feltételek mind teljesültek, akkor permit, azaz engedélyezzük a levélküldést. Figyeljünk rá, hogy itt FONTOS a kapcsolók sorrendje! Ha elkészültünk egyszerűen indítsuk újra a postfixet a már ismert módon: fekete1:~# /etc/init.d/postfix restart
Ha a postfix sikeresen újraindult, kipróbálhatjuk a levélküldést pl.a mutt karakteres email klienssel. 35
Ábrajegyzék 1. ábra. A kde3 bejelentkező képernyője.......................................................................................................6 2. ábra. A menuconfig ncurses felülete........................................................................................................10 3. ábra. A VI. méréshez szükséges fizikai hálózat.........................................................................................15 4. ábra. A megosztás tesztelése...................................................................................................................29 5. ábra. Az apache hosztnév alapján a megfelelő oldalt (index.html-t) szolgálja ki nekünk........................32 6. ábra. A kapcsolat mostantól kódolt, így az elküldött adatokat nem lehet lehallgatni.............................33
36