Tartalmi kivonat
- Hálózatok ( 36 tétel ) – Linux ( 9 tétel ) 1. A Linux ext2 fájlrendszer (jogosultsagok,felép,mount,link,lemezellstb) A modern filekezelő rendszereknek hierarchikus a szerkezetük. A felhasználó a fileokat megfelelő alkönyvtárokban helyezheti el, így a fileokat könnyebben megtalálhatja és rendszere is könnyebben áttekinthető. Abszolút, vagyis a gyökérkönyvtártól kezdődő útvonal és relatív, vagyis az aktuális könyvtárhoz képest előírt útvonal egyaránt megadható. A DOS-sal ellentétben különbőző partíciókhoz meghajtókhoz nem betűjelet rendel, hanem egyetlen fileredszerben egyesíti. Ez azt jelenti a felhasználó számára, hogy egy nagy meghajtó létezik egyetlen könyvtárrendszerrel. Jogosultságok.: A többfelhasználós operációs rendszerekben, -így természetesen a linuxban is,- szabályozni kell, hogy az állományok (file-ok) használatakor kinek, milyen jogai vannak. Ez azonban csak akkor oldható meg, illetve csak akkor van
értelme, ha az adott operációs rendszer ezeket a jogosultságra vonatkozó adatokat tárolni tudja. A linuxnál minden fájlrendszer beli bejegyzéshez 3 csoport és csoportonként 3 jog tartozik. A három csoporttal a felhasználókat szabályozzuk, ezek a következõk: tulajdonos, a tulajdonos csoportja, és mindenki más. Mindegyik csoportnak külön állíthatjuk be a 3 jogosultásot: olvasás, írás, futtatás (könyvtárak esetében: tartalom kiolvasása, bejegyzések szerkesztése, belépés). A jogosultságokat szerkeszthetjük parancssorból a chmod paranccsal, vagy egyéb eszközökkel (például Midnight Commander felületérõl). Ezen kívül minden fájlhoz egy felhasználó van hozzárendelve, mint tulajdonos és egy csoport Ezeket a rendszergazda (root) változtathatja meg. A tulajdonos módosíthatja a fájl hozzáférési jogait, más hiába írhatja a fájlt, a jogokat nem változtathatja meg (, kivéve a rendszergazda). A chmod használata (a "$"
karakter a promptot jelöli, nem tartozik a parancshoz!): $ chmod <kapcsolók> <jogok> <fájl> /A <jogok>-hoz egy háromjegyû számot adhatunk meg (4=olvasás, 2=írás, 1=futtatás (ha több jogot szeretnénk megadni egy könyvtárra egyszerre, akkor ezek összegével adhatjuk meg, hogy mien jogokat állítson be a program a könyvtárra.)) A <jogok> három jegyû száma a 3-as osztásnak felel meg, tehát: elsõ a tulajdonos, második a csoport, harmadik pedig mindenki más. Tehát például, ha mi minden jogot szeretnénk adni magunknak, de másnak semmit, akkor ez a szám 700 lesz./ Felépíttés és mountolás: A fájlrendszer alapkoncepciója, hogy minden fájlként tárolódjon. Mégis vannak könyvtárak a userek álltal látható rendszerben! Ez úgy lehetséges, hogy minden könyvtár egy a felhasználók álltal nem látható fájl, amely tárolja, hogy mien további fájlok tartoznak hozzá. Ez a fájl tárolja továbbá a jogosultságokat,
dátumokat és miden a fájlokra vonatkozó adatot is. A fájl és könyvtárnevek bármien karaktert tartalmazhatnak a "/" jelen kívül, mivel ez a könyvtárelválasztó karakter. Speciális karakterek használata is lehetséges, mint például a "*" karakteré, de nem ajánlott! Az átlagos felhasználó azt is megszokhatta (DOS és Windows miatt), hogy meghajtók léteznek. Itt nincsenek meghajtók, eszközeinket máshogy érhetjük el. A fájlrendszer egyetlen gyökérként csatolódik be, a root (másnéven gyökér) (jele: "/") alá. Minden egyéb eszközünket (floppy, cd, dvd, stb.) a root, vagy annak bármely könyvtárába létrehozott üres könyvtárba mountolhatjuk (fûzhetjük be). Eszközünk ezután a fájlrendszer részeként jelenik meg. Fontos, hogy az eszköz eltávolíttása elõtt az eszközt le is kell választanunk (umount), ugyanis az operációs rendszer ekkor írja ki véglegessen az adatokat az eszközre. A mount használata:
$ mount <eszköz> <könyvtár> Ahol az <eszköz> a /dev könyvtár valamelyik meghajtóeszköze például, a <könyvtár> pedig az a könyvtár, ahova az eszközt mountoljuk (itt jelenik meg tartalma). Az umount parancs használata: $ umount <könvtár> Ebben az esetben a <könyvtár> azt a könyvtárat jelöli, ahova az eszközt elõzõleg mountoltuk. 1 Inode: Az inode-ok egy-egy fájl minden adatát tartalmazzák a nevén kívül. A név ugyanis a könyvtárban tárolódik az inode sorszámával együtt. Az inode több adatblokk sorszámát tartalmazza, melyek a fájl adatait tárolják Az inode írja le egy fájl lemezen való elhelyezkedését, a fájl tulajdonosát, a hozzáférési jogosultságokat és idoket. Minden fájl egy és csak is egy inode-dal rendelkezik, míg neve több is lehet. A néven keresztül lehet kapcsolatot teremteni az inode-dal, amely azután elvezet a fájlban tárolt információhoz. Az inode-hoz rendelt minden
egyes nevet egy-egy kapcsolatnak (link-nek) nevezik. Linkek: A linkeknek az ext2 fájlrendszerben 2 typusa létezik: hard link és soft (vagy másnéven szimbolikus) link. Ha egy fájltra mutató linket hozunk létre, akkor arra azután a link nevével is hivatkozhatunk. A két link közötti különbség, hogy ha hard linket hozunk létre, akkor a fájlra mutató i-node bejegyzések között létrejön mégeg a fájlra mutató bejegyzés. Ha viszont szimbolikus linket hozunk létre, akkor a létrejön egy fájl, amely az adott fájl nevére mutat. Amennyiben a fájlt töröljük a hard linknél a fájl addig a winchesteren marad, amíg van rá mutató másik hard link. A szimbolikus linknél a fájl letörlõdik és az összes rá mutató szimbolikus link, broken (törött) link lesz. Mindegyik estben az eredeti fájl jogait tartja meg a létrehozott link és a link jogait, ha módosítjuk, akkor az eredeti fájl jogait (és ezzel együtt a link jgait is) módosítjuk. Létrehozásuk
történhet segédprogrammal (például Midnight Commander), vagy az ln paranccsal Az ln parancs használata: $ ln <kapcsolók> <fájl> <link> A <kapcsolók> között fontos a -s kapcsoló, mellyel szimbolikus linket hozhatunk létre. Ha nem adjuk meg, akkor hard link jön létre! A <fájl> legyen a fájl neve (relatív, vagy abszolult eléréssel), a link neve, pedig egy még nem létezõ fájlnév (elérés szintén vagy relatív, vagy abszolult (A könyvtárak létezzenek, ahova létre akarjuk hozni!)). Szabad terület: A szabad terület megállapíttására többféle parancs is létezik. Ha a köteteken lévõ szabadhelyre vagyunk kíváncsiak, akkor a df parancsot használhatjuk. Amennyiben egy könyvtár méretét szeretnénk megtudni, akkor pedig a du parancsot vehetjük igénybe. Fontos, hogy ezek a parancsok 5%-al kisebb helyet jeleznek Ez azért van, mert a kötetek 5%-át a rendszer a root felhasználónak tartja fenn. Ehhez az 5%-hoz, csak õ
férhet hozzá A df parancs használata: $ df <kapcsolók> A df parancsot, ha a "-h" kapcsolóval futtatjuk, akkor mindenhova az "emberbarát" formátumok kerülnek. Ez azt jelenti, hogy Mega- és Gigabájt formátumokat használ a kiírás során kilóbájtok helyett. A du parancs használata: $ du <kapcsolók> <könyvtár> Ha a du parancsot, ha a "-h" kapcsolóval futtatjuk, akkor ugyanazt az eredményt érhetjük el, mint a df parancsnál. A<könyvtár> megadása nem kötelezõ, ha nem adjuk meg, akkor az aktuális könyvtár méretét kaphatjuk. Ha a parancsot a "-s" kapcsolóval futtatjuk, akkor nem fájlonként adja vissza a méreteket, hanem csak egy végeredményt kapunk (az adott könyvtár méretét). Fájlrendszer létrehozása: Fájlrendszer létrehozás többféle képpen történhet. Használhatjuk az fdisk, vagy cfdisk parancsokat, vagy használhatjuk az mkfs parancsot. A cfdisk az fdisk menüvezérelt
változata Az fdisk pedig egy mindent magábanfoglaló partícionáló program. Egy partíciót megformázni azonban sokszor egyszerûbb a parancssorból az mkfs-el Az mkfs parancs használata: $ mkfs.ext2 <kapcsolók> <partíció> A linuxnak mára két nagyon gyakran használt fájlrendszere az ext2 és az ext3. Az ext3 az ext2 továbbfejlesztett változata. A kettõ közötti különbség mindössze annyi, hogy az ext3 egy naplózó fájlrendszer Amennyiben ext3 fájlrendszert szeretnénk létrehozni, akkor az mkfs.ext2 parancs helyett az mkfsext3 parancsot használjuk, a parancs paraméterei ugyanazok, mint az mkfs.ext2 parancsé Kapcsolók megadása nem kötelezõ, de a partíció megadása igen! A <partíció> -hoz az eszközhöz tartozó /dev könyvtárban található fájlt kell megadni (Például: mkfs.ext2 /dev/hda1 ). Az mkfsext2 -höt tartozik egy fontos kapcsoló, ami az mkfsext3 nál nincs meg A "-j" kapcsoló, amellyel elérhetjük, hogy az
ext2 fájlrendszerünk egy fájlba naplózza ugyanazt, amit amúgy az ext3 csinálna. 2 Lemezellenõrzés: A lemezt az fsck paranccsal lehet ellenõriztetni és javíttani is. A program az ellenõrzés futtatása közben kérdez rá, hogy javítsa e a hibákat. Az fsck parancs használata: $ fsck.ext2 <kapcsolók> <partíció> Az fsck.ext2 -nek megvan az fsckext3 változata is természetessen A <kapcsolók> között találhatunk néhány rendkívül hasznossat. Például, ha winchester tükrözést csinálunk és az egyik winchester megsérül, akkor ellenõriztethetjük a meglévõ fájlrendszerünk, a másik superblockjait használva. Így megtudhatjuk, hogy mennyi az adatvesztesség A "-y" kapcsoló használatával megadhatjuk például, hogy minden kérdésre YES-el feleljen a program magának. Ha sok hiba van az adott eszközön, akkor ez rendkívül hasznos lehet. A <partíció> -hoz itt is a /dev könyvtárban található eszközt kell
megadni. 3 - Hálózatok ( 36 tétel ) – Linux ( 9 tétel ) 2. Folyamatok a Linux-ban (processzek menedzselése,ehhez alkalmazások) Programok és folyamatok A UNIX, mint multitasking rendszer, képes arra, hogy egyszerre több feladat futhasson a gépen. Ennek kapcsán két igen fontos fogalom merül fel, amelyek szorosan összefüggenek ugyan, de egymással nem helyettesíthetőek be: a program és a folyamat (process). A program egy futtatható (akár gépi kódot tartalmazó bináris, akár a shell által értelmezhető parancsokból álló) fájl; valahányszor egy programot elindítunk, egy új folyamat jön létre. Némileg leegyszerűsítve, a folyamat egy programnak egy futó példánya, a saját külön adatterületével. Lehetséges tehát, hogy ugyanazt a programot egyszerre többen is futtassák a rendszerben - ilyenkor ugyanabból az egy programfájlból annyi darab önálló, egymástól teljesen független folyamat jön létre, ahányan elindították a
programot. (Csak zárójelben jegyezzük most meg, egy elindított folyamat több másik, ún. gyermekfolyamatot is elindíthat) A háttérfolyamatoknak egy speciális válfaja a démon (daemon) folyamat. Ez egy olyan folyamat, amit rendszerint automatikusan indít el a rendszer, s valamilyen felügyeleti szerepet ellátva állandóan fut a háttérben. Démon folyamatok gondoskodnak például a nyomtatási kérelmek besorolásáról és végrehajtásáról, a terminálvonalak figyeléséről, hogy van-e újonnan belépő felhasználó, de démonok felügyelik a memóriahasználatot éppúgy, mint a lokális hálózaton történő belépéseket. A rendszer "üresjáratában", amikor éppen nincs bejelentkezett felhasználó, általában több tucat ilyen démonfolyamat fut, biztosítva a rendszer folyamatos működését. A démonoknak végrehajtásra átadott nyomtatást és egyéb kérelmeket job-oknak (feladatoknak) nevezik, ezeket a démon sürgősségi és egyéb
szempontok alapján sorba rendezi (queue), és egyenként hajtja végre őket. Alkalmazások és a folyamatok állapotai: Mindegyik program kijelzi a folyamatok állapotát, amely lehet: sleeping (futó, de inaktív folyamatok) running (aktívan futó folyamatok) zombie (végzett, várja, hogy a child folyamatok is kilépjenek. erõforrást nem fogyaszt) stopped (megállított) A folyamat típusa pedig lehet:user , system , nice Az IDLE nem folyamattípus, hanem a rendszer üresjáratát jelöli! Ebben a programban továbbá megjelenik néhány más adat is a folyamatokról, amelyeket a felhasználó ki- és bekapcsolhat. Ilyen például a processzor terhelése a folyamatnak, vagy a memóriafoglalása 1 A ps paranccsal minden felhasználó megnézheti az általa elindított folyamatokat, egyes rendszerekben megengedett a mások álltal elindított folyamatok listáztatása is. A ps parancs használata: $ ps <kapcsolók> A ps parancs leggyakrabban az "ax", vagy
"aux" paraméterekkel használt. Az "a" minden folyamatot kijelöl a terminálon. Az "u" kiírja a folyamatok mellé a felhasználóneveket is Az "x" azokat folyamatokat is megjelenítti, amelyeknek nincs kontrolláló termináljuk. Egy másik alkalmazás a top, amely már kicsit barátságosabb, de egy sok folyamatot futtató rendszeren használhatatlan is lehet, ugyanis a folyamatokból mindíg csak annyit látunk, amennyi egy képernyõre kifér. A többi rejtve marad A program elõnye, hogy különbözõ szempontok szerint rendeztethetjük a folyamatok listáját, valamint az, hogy a képernyõre kiírt adatok folyamatossan frissülnek a program leállításáig. Indíttása a "top" parancs kiadásával történik Előfordulhat, hogy egy folyamatot nem tudunk leállíttani. Ez esetben a kill parancsot használhatjuk A kill parancs használata: $ kill <pid> A <pid> helyére a folyamatunk id-je kerül, melyet mondjuk a ps,
vagy top program használata során deríthetünk ki. Folyamatok ütemezése: Ere két program is létezik, de mindegyik másra jó. Mindkét program támogatja az egyszeres és többszörös ütemezést is, de mindegyiket csak a saját "szakterületének" megfelelõen szoktuk használni. A "cron"-t többnyire többszörös ütemezésre használják. Használata kissé körülményes az eddig bemutatott progikhoz képest. Egy szöveges fájlba kell beírnunk a futtatási idõt és a program elérését, ezúttal csak a teljes elérési út az elfogadott azonban! A cron használata: $ crontab <fájl> Ez a parancs a <fájl> nevû fájlban tárolt cron táblát teszi a felhasználó számára aktívvá. A cron az aktív táblákat a /var/spool/cron/crontabs könyvtárban tárolja. A crontab fájl egy sorának kinézete: <perc> <óra> <nap> <hónap> <év> <parancs> Ha mondjuk minden órában akarunk futtatni egy
parancsot, akkor így fog kinézni: 0 * <parancs> Minden lefutott parancsról, ami értéket ad vissza emailt kapunk, így tudhatjuk, hogy mikor volt sikeres és mikor volt sikertelen / hibás a parancsok futtatása. A crontab fájlunk a fent megadott sorokból álljon, mindegyik új sorban kezdõdjön! Miután kész a fájl, a crontab parancs segítségével frissítsük az éppen aktív táblánkat. Az "at"-t inkább csak egyszeres ütemezésre használjuk. Az at parancs használata: $ at <kapcsolók> <idõ>[Enter] <parancs 1>[Enter] <parancs 2>[Enter] . <parancs n>[Ctrl+D] Az at parancs után megadott idõben fognak a parancsok lefutni. Ha elrontottunk valamit, akkor az atq parancs kiadásával megnézhetjük a parancsok sorszámát, majd az atrm <parancssorszám> parancs kiadásával törölhetjük a hibás parancsot. Folyamatok tulajdonságai: Minden folyamathoz tartozik egy tulajdonos és egy PID (Process ID). A PID egy
egyéni azonosíttó szám, két egyforma PIDel rendelkezõ folyamat nem futhat egy idõben. Ezt az azonosíttót operációs rendszer osztja ki A folyamatok tulajdonságaihoz sorolhatók az állapotok és típusai is. 2 - Hálózatok ( 36 tétel ) – Linux ( 9 tétel ) 3. Alkalmazás-szintű protokollok megv Linux alatt (http,ftp,ssh,telnet) Portok: Számítógépünk több tízezer kapun (porton) keresztül kommunikál az internettel. A portok egy hálózati kommunikációs csatorna végpontjai, ezek a legtöbb programban megváltoztathatóak. (Ugyanakkor nem tanácsos megváltoztatni, mivel a kliensprogramok között rengeteg olyan létezik, amely nem engedi a portot változtatni. Így szolgáltatásunk nem lesz elérhetõ számukra!) A portok használata teszi lehetõvé, hogy egy adott számítógépen futó alkalmazások, ugyanazt a hálózati erõforrást használva a beérkezõ csomagokból csak a nekik szóló csomagokat kapják meg. A portokat számokkal is tudjuk
azonosítani, értékük 0 és 65535 között lehet. Ezeket a portokat három csoportba soroljuk: • • • jól ismert portok (well known ports) regisztált portok dinamikus vagy privát portok A jól ismert portok a 0-1023-as sávban lévõ portok, amelyeket általában csak rendszerfolyamatok vagy rendszerprogramok használnak, és ezek szorosan kötõdnek valamilyen szolgáltatáshoz: a 20 és 21-es port az FTP-hez, 22-es az SSH-hoz, 23-as a telnethez, 25-ös az SMTP-hez, a 80-as a HTTP-hez stb. A regisztrált portok (1024-49151) sokkal kevésbé kötõdnek egy-egy szolgáltatáshoz, ilyen portszám többféle célra is felhasználható. A privát portokhoz (49152-65535) nem kapcsolódik semmilyen szolgáltatás. Minden portnak három állapota lehet az adott rendszertõl függõen: • • • Open: Az ilyen portok teljesen nyitottak az internet felé. Ha van nyitott portunk, számítógépünk sebezhetõ Closed: A portok zárva vannak ugyan, de látszanak az internet felé.
Különbözõ hacker eszközökkel a számítógép így is sebezhetõ Stealth: Ezek a portok teljesen láthatatlanok az internet felé. Nagyon fontos, hogy az automatizált támadások ellen a Stealth portok jelentik az egyetlen védekezési módot. HTTP: A World Wide Web napjaink leggyakrabban használt internet szolgáltatása. Kommunikációjához a HTTP (HyperText Transfer Protocol)-t használja. Ez a protokoll lehetõvé teszi, hogy a HTTP kliensek (browser) oldalakat töltsenek le a HTTP szerverekrõl, és információkat küldjenek vissza a szervernek. Amikor a browser-el (Netscape, Internet Explorer, Lynx) lekérünk egy oldalt, a browser elküld egy HTTP kérést a Web szervernek, majd megjeleníti a szerver által visszaadott adatokat. Az állomány amit visszakap bármilyen tipus lehet Általaban egy HTML (HyperText Markup Language) nyelv használatával felépített web oldal. Mint sok más kliens a HTTP browser is kiküld egy parancsot, majd várakozik a szerver
válaszára. Ez a válasz tartalmazhat egyszerû szöveg állományt, HTML oldalt, képeket, hang állományokat, animációkat, és minden egyebet amit fájlokban tárolni lehet. Eredetileg a HTTP egy-egy új kapcsolat felépítését igényelte minden kéréshez. Azonban már a 10-ás verzió vége felé megjelent bõvítésként, késobb az 1.1 verziótól kezdve pedig már szerves része a protokollnak, egy opció, amellyel a browserek kérhetik a szervertõl, hogy egy kapcsolattal több adatot is átvihessenek. Mint az elõzõekbõl kiderült, több verziója is van a protokollnak. Lehetõség van arra, hogy a különbözõ verziójú browserek, proxyk, és szerverek is együtt mûködjenek. Ez úgy valósulhat meg, hogy mindegyik eszköz támogatja visszamenõleg is a különbözõ verziókat. A közös HTTP verzióban, illetve opciókban az egyes eszközök úgy állapodnak meg, hogy a saját képességeiknek megfelelõen korlátozzák a kommunikációs szintet. Vagyis a
gyakorlatban a browser a kérés fejlécében közli, az általa támogatott legnagyobb HTTP verziót, illetve legcélszerûbb opciókat. Ezeket a továbbítás során a proxy, illetve válasz során a szerver korlátozza az általa támogatott legnagyobb verziójú protokollra, illetve az ismeretlen opciókat kiszûri. Ezáltal a kommunikáció végére kialakul az eszközök által közösen támogatott legjobb protokoll. Elterjed HTTP szerver program például az Apache webszerver (régebbi linuxokban httpd szerver volt a neve). Gyakran használt böngészõ program például az Internet Explorer (Windows), vagy a Mozilla (Windows / Linux). 3/1 FTP: Az Interneten az állományok mozgatására (lehozására a távoli szerverekrõl, vagy a feltöltésre) leggyakrabban az FTP(File Transfer Protocol) használatos. Amikor használjuk a az FTP protokollt, akkor kilistázhatjuk a másik Internet site állományait, lemásolhatjuk az állományait, vagy feltehetünk újakat. Az FTP
kliensek általában az alábbi funkciókkal rendelkeznek: • • • • • • • kapcsolódás a távoli géphez könyvtár váltás az aktuális könyvtár kilistázása állományok letöltése az aktuális könyvtárból állimányok feltöltése az aktuális könyvtárba kapcsolat bontása Ezeken kívul gyakran támogatják bináris és az ASCII (szöveges) átviteli módok közötti választás lehetõségét. A szöveges átvitel során a rendszer elvégzi az eltérõ operációs rendszerek közötti konvertálást. Elterjedt FTP szerver pédául a ProFTPd. Gyakran használt kliens például a Windows/Total Commander, vagy CuteFTP. Telnet: A hálózati terminál protokoll (TELNET) a felhasználók távoli gépekre való bejelentkezését kezeli. A távoli viszonyt (session) annak a gépnek a megadásával kell kezdeni, amelyhez csatlakozni szeretnénk. Attól kezdve bármit is gépelünk be, minden adat a megadott géphez kerül a viszony befejeztéig. Vegyük észre,
hogy a felhasználó valójában még mindig a saját számítógépével kommunikál. A telnet program az, amelyik a futása alatt ezt láthatatlanná teszi a felhasználó elõtt. Minden begépelt karakter közvetlenül a másik rendszerhez kerül A távoli géppel meglévõ kapcsolat nagyjából hasonlít egy modemes vonalhoz ( dial-up connection). Ez azt jelenti, hogy a távoli rendszer elõször a bejelentkezést kéri, majd egy jelszót, ugyanúgy, ahogy ez egy modemes kapcsolat esetén történne. A kijelentkezéskor a telnet program kilép a vonalból, és ismét a saját gépünk kommunikál velünk. A telnet program kisszámítógépes megvalósításai általában egy elterjedt termináltípus emulációját is tartalmazzák. (A specifikációt lásd az RFC 854 és az RFC 855 dokumentumokban. Az RFC 854 -- 860 a TELNET opcióit írja le) SSH: A Telnet protokoll nem biztonságos: a belépéshez használt jelszót és az átvitt adatokat nem titkosítja, ezért könnyen
lehallgatható. Ezért találták ki az SSH protokollt, amely minden adatot titkosítva küld Az SSH protokollnak két, egymással nem kompatibilis verziója van: SSH 1 és SSH 2. A régebbi SSH 1 protokollnak két fõ alvariánsa van: az 1.3 protokoll és az 15 protokoll Mindkettõt támogatja az OpenSSH. Mindkettõ az RSA aszimmetrikus titkosítási algoritmust (melynek már lejárt az USA szabadalmi joga, így mindenki szabadon használhatja) használja kulcs egyeztetéshez, azután valamelyik szimmetrikus algoritmust az adatok elrejtéséhez: 3DES és Blowfish. (Valaha volt néhány másik algoritmus is mint pl az RC4, de ezek megvalósitásában biztonsági problémák voltak). Néhány SSH 1 protokoll megvalósítás használja az IDEA szimmetrikus algoritmust, de mivel ez több országban is szabadalommal védett és mivel a másik két algoritmus is elegendõ, az OpenSSH nem támogatja az IDEA kódolást. Az SSH 1 protokoll egy egyszerû CRC-t használ az adatok épségének
ellenõrzésére, amelyrõl kiderült, hogy törött és ismert ellene egy támadás, azonban az évek alatt elvégzett nagyszámú javításnak köszönhetõen ezt a támadást nagyon nehéz kivitelezni. A 3DES kódolást használva ez a támadás még sokkal kevésbé lehetséges (Talán hamarosan megoldjuk ezt is) Az SSH másik fõ verziója az SSH 2 protokoll. Az SSH 2-t azért fejlesztették ki, hogy elkerüljék az RSA szabadalmi problémákat (melyek megszûntek mivel a szabadalom lejárt) és hogy kijavítsák az SSH 1 CRC hibáját, meg számos más technikai ok miatt. Az aszimmetrikus DSA és DH algoritmusok használatával a 2 protokoll kikerül minden szabadalmat. A CRC probléma is megoldott a valós HMAC algoritmus segítségével Az SSH 2 protokoll támogat sok más szimmetrikus kódolást és egyéb újabb szolgáltatásai is vannak. 3/2 - Hálózatok ( 36 tétel ) – Linux ( 9 tétel ) 4. Levelezőrendszer-szolgáltatások Linuxon (SMTP,POP3,Imap,Postfix) Az
elektronikus levelezés alapvetõen két összetevõbõl áll.Az MTA (Mail Transfer Agent) feladata a levél kézbesítése a hálózat (legyen az helyi vagy maga az Internet) különbözõ részhálózatain keresztül. A MUA (Mail User Agent) pedig az a levelezõ-program, amit a felhasználó az elektronikus levél fogadására,elkészítésére, illetve postázására használ (pl.: Sylpheed, mutt).Az MTA-k közötti üzenetváltás protokollja az SMTP 1. 2. Post Office Protocol Version 3 POP3 Általános Információk: Ez a protokoll azokon a gépeken alkalmazható, amelyek vagy hardware szűke miatt, vagy pedig a nem folyamatos internet kapcsolat miatt nem üzemeltethetnek valamilyen Message Transport System-et (MTS) például STMP servert. Ezek a gépek ezzel az egyszerű és kevés szolgáltatást nyújtó protokollal érhetik el leveles ládáikat. Mivel a POP3 egy egyszerű protokoll - az előbb említett okok miatt -, így nem nyújt túl sok szolgáltatás leveleink
eléréséhez. Alapvető működés: A server a 110 port folyamatos figyelésével várja a kapcsolat felvételét. Amikor egy kliens a szolgáltatást szeretné használni, kiépít egy TCP kapcsolatot a szerverrel. Amikor a kapcsolat felépült a POP3 server egy üdvözletet küld Ezután kezdődhet az üzenetváltás a kliens és a szerver között, amíg a kapcsolatot valamelyik fél le nem zárja. A POP3 parancsokban megkülönböztetik a kis és nagy betűket. A parancsot egy vagy több argumentum követheti Minden parancsot CRLF zár. A parancsok és argumentumok nyomtatható ASCII karakterekből állnak A parancsokat és a paramétereket space-ek választják el. A parancsok 3-4 karakter hosszúak az argumentumok akár 40 karakter hosszúak is lehetnek A válaszok egy állapot jelzőből és egy kulcsszóból állnak amit esetleg más, kiegészítő információk követhetnek. A válaszok 512 karakter hosszúak lehetnek. Minden választ CRLF zár Két állapot jelző van a
pozitív: +OK és a negatív: ERR jelzők A server ezeket nagybetűsen küldi Több parancs válasza több soros A több soros válasz sorait CRLF zárja. Amikor a teljes válasz megérkezett a szerver egy CRLF párt küld (pont - ASCII:46 - és CRLF) Ha a válasz bármely sora ponttal kezdődik akkor az egy byte sor lesz. Ezért a több soros válaszokat CRLFCRLF ötös zárja Ha valamely sor pontal kezdődik akkor meg kell nézni, hogy a következő egy CRLF pár-e és ha igen akkor az a válasz végét jelenti. Ha pontot nem CRLF követi akkor a pontot eldobjukA kapcsolat kiépítése után a server üdvözletet küld Ez után a session az azonosítási (AUTHORIZATION) szakaszba lépett. Ekkor a kliensnek azonosítani kell magát Ha ez sikerült az átviteli (TRANSACTION) állapotba kerül a szerver. Ekkor fogadhatunk adatokat és küldhetünk parancsokat a szervernek. A szerver ekkorra lefoglalta a mailboxunkat Ezután a Quit parancsal léphetünk át a frissítési (UPDATE)
állapotba. Ebben az állapotban a server felszabadítja lefoglalt erőforrásokat, elköszön és zárja a kapcsolatot. IMAP4.1 IMAP = INTERNET MESSAGE ACCESS PROTOCOL 2.1 Általános Információk Az IMAP4.1 lehetővé teszi, hogy egy kliens hozzáférjen és manipuláljon egy szerveren elhelyezkedő levelesladakat, es a bennük elhelyezkedő elektronikus üzeneteket. Ezeket a távoli levelesladakat olyan modon kezelhetjük, mintha helyben lennének. OFFLINE clienseknek lehetővé teszi a szerverrel való szinkronizálást IMAP4.1 műveletek: mailbox-ok létrehozása, törlése és átnevezése; új üzenetek jelzése;üzenetek végleges törlése; flagek beállítása és törlése; keresés; üzenetek vagy üzenet részek lekérése, beleértve az üzenethez tartozó attributumok önálló lekérését. Az üzenetekhez mailbox-beli sorszámukkal vagy egy egyedi azonosítóval lehet hozzáférni. A sorszám egy egyedi egész szám, 1 és a mailboxban éppen meglévő üzenetek
száma között, azaz törléskor átszámozódik, míg egy új üzenet a legkisebb, még szabad természetes számot kapja. Az egyedi azonosítóra ezzel szemben csak az az előírás, hogy növekvő legyen, de az egymásutániság nem követelmény és tilos az átszámozás egy szekció idején. Az egyedi azonosító szekciókon át megmarad lehetővé téve, hogy OFFLINE cliens szinkronzáljon a serverrel. • • • IMAP4.1 alapesetben egyetlen szervert támogat MAP4.1-nek nem feladata a levél postázása, ezt az [SMTP] ill egyéb protokollok végzik IMAP4.1 megbízható adatátvitelt feltételez,mint amilyet a TCP nyújt TCP használata esetén az IMAP4 server a 143-as portot használja. 4/1 Simple Mail Transfer Protokol (SMTP) Az SMTP célja, hogy leveleket (mailt) tudjunk megbízhatóan és hatékonyan szállítani.Az SMTP független a szállító közegtől, csak egy megbízható, sorrendtartó adatfolyamcsatornára van szükseg. Az SMTP modell: 1) A küldő fél
létrehoz egy kétirányú kapcsolatot a 25 ös porton keresztül (SMTP port) Ezen a csatornán zajlik a parancsküldés, nyugtázás, és magának a levélnek a továbbítása is. 2) Amikor létrejött a kapcs, a két gép (host) köszönti egymást, hogy megbizonyosodjanak arrol, tényleg azzal beszélgetnek akiről azt hiszik. HELO <SP> <domain> <CRLF> A köszöntő üzenetet úgy kell értelmezni mintha azt mondanák: "Hello, én vagyok <domain>". 3) A beszélgetés a MAIL parancsal kezdődik, ami azonosítja a küldő felet. Legalábbis az itt megadott "név" szerepel az üzenetben feladóként. Ellenőrizni, már nem ellenőrzi MAIL <SP> FROM:<reverse-path> <CRLF> Ennek hatására a fogadó inicializálja a buffereket, állapot-táblákat. stb és ha kész a levél fogadására, nyugtázza a parancsot: 250 OK 4) Második lépésben a címzett címét kell elküldeni. Ez a RCPT (recipient) parancsal történik RCPT
<SP> TO:<forward-path> <CRLF> Hatására a fogado SMTP ellenőrzi, hogy ismeri e a címzettet. (szerintem nem ellenőrzi Még a "brrr" emilcímet is OKval nyugtázta) Ha ismeri akkor 250 OK Ha nem ismeri, akkor 550 FAILURE Egyeb esetek is lehetségesek: nem a fogadó SMTP kezelése alatt áll a cízett de továbbítható.stb FONTOS: Az RCPT parancs után következhet újabb RCPT parancs, függetlenül attól, hogy az előzőt a fogadó-SMTP elutasította vagy sem! Ekkor a nyugtázott címzettek mindegyike meg fogja kapni az üzenetet. 5) A küldő fél a DATA parancsal jelzi, hogy a levél szövege következik. DATA <CRLF> Ha a fogadó fél felkészült az adatok fogadására, ezt megerősíti 354 Start mail input üzenettel. Innentől kezdve mindent amit kap úgy tekint mint a levél szövegének a részét Zárást a <CRLF><CRLF> kombináció jelenti. Amit a fogadó szintén megerősít: 250 OK 4/2 - Hálózatok ( 36 tétel ) –
Linux ( 9 tétel ) 5. Webszerver-szolgáltatás Linux alatt (apache,htaccess,naplózás,virtdomain) HÁLÓZATI ALAPOK Az internet hálózati protokollja az IP (Internet Protocol). A szállítást két protokoll végzi, az összeköttetés-alapú TCP (Transmission Control Protocol) és az összeköttetés-mentes UDP (User Datagram Protocol). Mindkét átviteltípusnak vannak elönyei és hátrányai. A szolgáltatások többsége a TCP-t használja Egy IP kapcsolatot a forráscímen és a célcímen kívül a forrás- és cél portok azonosítanak. A portok egyfajta logikai kapuk 0-65535ig 0-1023-ig ú privilegizált portok helyezkednek el, ide csak rendszergazda jogú felhasználó helyezhet el szolgáltatást. A http (hypertext transfer protocol) felelös a webkiszolgáló program és az ügyfél böngészöje közti adattovábbításért (ez magasabb szintu, mint a hálózati átvitel). A http oda-vissza irányú, azonosítást is kezel Legtöbbször mégis névtelenül, letöltésre
vesszük igénybe. 3 metódusa használt, a GET (általában letöltés), a POST (általában kitöltött urlapok továbbítása a szerverre) és a PUT (rendszerint fájlfeltöltés). Pl a webböngészö "GET indexhtml" parancsára megkezdödik az kért fájl letöltése a kliensre. A webszolgáltatás egyezményes helye a 80-as TCP port A kiszolgáló itt várja a kéréseket. AZ APACHE Jogosultságok: Az apache konfigurációja az /etc/apache/httpd.conf fájl szerkesztésével történik Minden érdemi változtatás után a szolgáltatás újraindítása szükséges: /etc/init.d/apache restart A konfigurációs fájl részletesen dokumentált. ServerRoot :A szerver konfigfájljainak helye DocumentRoot :A szerver webtartalmának gyökérmappája Port : A szerver TCP portjának helye LoadModule:Tetszöleges apache modul betöltése Alias: Adott könyvtár elérése más néven pl: Alias /linux/ /home/web hahatására a http://servernév/linux URL-en a /home/web látszik
ScriptAlias: Az Alias-szal megegyezik, annyi különbséggel, hogy a benne található fájlokat a szerver futtatni próbálja KeepAlive: A TCP kapcsolat életben tartása a kérés kiszolgálása után is. letöltését, vagy a rövid idön belüli újabb kéréseket. Ez meggyorsítja a sok kisebb fájl KeepAliveTimeOut: Az ido, ameddig egy TCP csatornát a szerver életben tart egy kliensgép számára. Ha letelt, a port újra kiosztható lesz. TimeOut:A normál webkérések idotúllépése (ha ezután sem válaszol a gép, le lesz választva) PidFile: Ebben a fájlban tárolja az Apache a saját fofolyamatának folyamatazonosítóját (Process ID). Az újraindításhoz és a leállításhoz <Directory /könyvtárnév> AllowOverride AuthConfig Limit: Az azonosítás és az elérési jogok helyileg felülírhatók a .htaccess-ben) Options ExecCGI:Engedjük a CGI szkriptek futtatását Options Indexes: Engedjük a könyvtárlista megtekintését, ha nincs alapértelmezett
dokume-tum Options FollowSymLinks: (Engedjük a symlink-ek követését) Options SymlinksIfOwnerMatch: Symlink-ek követése, ha a mutatott fájltulajdonosa megegyezik a symlink létrehozójával <Limit GET>: (Korlátozzuk a webtartalom elérését, csak az egi.jaiszhu hostról lehet) Order Allow,Deny Allow from egi.jaiszhu Deny from All </Limit> </Directory> 5/1 http://httpd.apacheorg/docs/howto/authhtml#access A webszerver egy főfolyamatként fut, méghozzá a root user jogaival, de a konfigurációs fájlban megadott MinSpareServers és a MaxSpareServers közötti darabszámú gyerekfolyamatot (child process) tart életben a bejövö kérések kiszolgálására. A futó folyamatok számát mindig a megadott két érték közt tartja, a szerver terheltségének megfelelöen. A szerver annyi folyamatot indít, amennyit a "Startservers" opcióban megadunk: StartServers 10 Ez az indulás után beáll a fentebb részletezett két küszöbérték közé.
A "MaxRequestPerChild" opcióban megadott küszöbérték elérése esetén a gyerekfolyamat megszűnik, és helyette a szerver újat indít. Erre azért van szükség, mert bizonyos platformokon a hosszú ideig futó gyerekfolyamatok "elfogyasztják" a memóriát. Hozzáférés-vezérlés helyileg (nem root, hanem felhasználó által) => .htaccess: Lehetőség van a hozzáférés-vezérlés helyi megadására. Ilyenkor az apache egy megadott nevű fájlt keres a kért könyvtárban (alapértelmezésként .htaccess), és ha van ilyen, az abban levő engedélyek lesznek érvényesek A .htaccess-ek keresését, figyelembe vételét a root az apache konfigjában, az AllowOverride opcióban szabályozhatja Az ilyen fájlok neve nem törvényszeruen .htaccess kell legyen, az AccessFileName opcióban megadhatunk alternatív fájlnevet is: AccessFileName jogosultsagok.dat Egy .htaccess fájl lehetséges tartalma: AuthName "Titkos adatok!" AuthType Basic
AuthFileName /home/user/jelszavak Require valid-user A fenti konfigfájl a htpasswd parancs segítségével kreált "jelszavak" állományban létező usernevet/jelszót vár, ennek hiányában megtagadja az aktuális könyvtár lekérését. Kérhetjük még a jelszófájlban létezö, "valós" felhasználóné megadása helyett egy konkrét userrel való belépést is: Require user valaki, senki (valaki és senki nevu felhasználókkal lehet csak belépni) A htpasswd használata: htpasswd [-c] jelszófájl fejlhasználónév A -c kapcsolóra új fáj létrehozásánál van szükség, második felhasználó hozzáadásakor el kell hagyni, különben felülírja a régit. Naplózás: Az apache logfájljai a /var/log/apache könyvtárban taláhatók : - access.log (a szerverre érkezo kérések, honnan, mikor, melyik fájlokra) - error.log (futás közbeni, és sikertelen lekéréssel kapcsolatos hibák) Naplófájlokat célszerü a tail -f {naplofajl neve}
paranccsal folyamatosan figyelni. A tail parancs a paraméterként adott szöveges fájl végét jeleníti meg, -f kapcsolóval folyamatosan listázza, amennyiben azok tartalma bővül pl. tail -f accesslog <-- a szerverre érkező kérések folyamatos figyelése Az apache konfigurációs fájljában a HostNameLookups opció bekapcsolásával a szerver a bejövő kérések forrását IP címek helyett hostnevekként naplózza. 5/2 Minden módosíás után a konfigfájl újraolvasására van szükség: ( etc/init.d/apache reload) A konfigurációs fájl ErrorLog opciójában megadhatjuk a hibanapló helyét. A naplófájlok formátuma a LogFormat opcióban adható meg, pl: LogFormat "%h %l %u %t "%r" %>s %b" common létrehoz egy "common" nevű logformátumot, amelyben a kérés idejét, helyét, a kért URL-t, a kliens típusát rögzíti. Ennél részletesebb is lehetséges: LogFormat "%h %l %u %t "%r" %>s %b
"%{Referer}i" "%{User-Agent}i" %T %v" full Ha a LogFormat-tal megadtunk egy ilyen naplóformátumot, a CustomLog opcióval a kérelzeket tartalmazó fájlt adhatjuk meg, amelybe a fent megadott formátum szerint kerülnek be az adatok a kapcsolatról. A HostnameLookups opció bekapcsolt állapotában a naplófájlokban nem IP címek, hanem hostnevekké alakított formájuk jelenik meg. Kikapcsolva a szerver IP címeket naplóz Virtuális webkiszolgáló A HTTP protokoll lehetőséget ad arra, hogy a HTTP kérés hostname mezőjében a kliensgép eltárolja, milyen néven hivatkozott a szerverre.Az 1 db IP címmel, de több ahhoz rendelt domainnévvel rendelkezo szerverek így különbséget tudnak tenni a kérések közt aszerint, hogy milyen néven hivatkoztak rájuk. Pl: www.erdekeshu --> 1234-es IP www.unalmashu --> 1234-es IP (szintén) Attól függően, hogy milyen hostnévvel hivatkoztak rá, a webszerver képes más-más tartalmat szolgáltatni. Ez
az ún virtuális webszerver szolgáltatás (több virtuális webszerver egy fizikai hoston) A fenti példának megfelelő konfigfájl-részlet: <VirtualHost 1.234> ServerAdmin egik@egik.hu DocumentRoot /var/www/erdekes ServerName www.erdekeshu ErrorLog /var/log/apache/erdekes/error.log CustomLog /var/log/apache/erdekes/access.log common </VirtualHost> <VirtualHost 1.234> ServerAdmin valaki@mas.hu DocumentRoot /home/unalmas ServerName www.unalmashu ErrorLog /var/log/apache/unalmas/error.log CustomLog /var/log/apache/unalmas/access.log common </VirtualHost> A névhozzárendelés-alapú virtuális kiszolgáló fenti konfigurálásához még egy sor szükséges a httpd.conf-ba: NameVirtualhost {szerver ip címe} Pl: NameVirtualhost 1.234 5/3 - Hálózatok ( 36 tétel ) – Linux ( 9 tétel ) 6. Felhasználókezelés Linuxon (useres,csoportok felvétele törlése,UID,GID) BEVEZETŐ: Mint tudjuk a Linux egy többfelhasználós (multiuser) és többfeladatos
(multitask) operációs rendszer. Mivel több felhasználó is használhatja egyszerre a rendszert, annak el kell tudni döntenie, hogy ki milyen jogosultságokat kaphat. Ezért a felhasználóknak azonosítaniuk kell magukat a rendszer számára. Tehát minden felhasználó egyedi azonosítóval rendelkezik (UID - felhasználói azonosító), és egy vagy több csoportba tartozik (GID - csoportazonosító). Ezeket az információkat az /etc/passwd és az /etc/group fájlok tartalmazzák. Létezik még ezeken kívül az /etc/shadow fájl is, ami a titkosított jelszavakat tartalmazza és csak a root számára olvasható. A név azonban nem minden. Egy számla (account) az összes fájlt, erőforrást és információt jelenti, mely egy felhasználóhoz tartozik. Az elnevezés a bankokra utal, és az üzleti rendszerekben valóban pénz kapcsolódik a számlához, amely fogy a rendszer használatával. Pl a lemezterületnek lehet napi ára megabájtonként, a feldolgozási időnek pedig
másodpercenkénti ára lehet. A Linux kernel maga egyszerű számokként kezeli a felhasználókat. Mindegyik felhasználót egy egyedi egész szám, az ún. felhasználói azonosító (user id vagy uid) azonosít, mivel a számítógép gyorsabban és könnyebben kezeli a számokat, mint a szöveges meghatározásokat. A rendszeradminisztrátor (root) UID–je és GID-je mindig 0, míg egy rendes felhasználó 1000 vagy 1000 feletti. Tehát ha egy felhasználónak, mindkét mezőnél 0 érték szerepel, akkor annak root jogai lesznek. A kernelen kívül létezik egy adatbázis, mely egy szöveges nevet, a felhasználói nevet hozzákapcsolja egy felhasználói azonosítóhoz. Az adatbázis még más információkat is tartalmaz FELHASZNÁLÓK/CSOPORTOK FELVÉTELE/TÖRLÉSE Felhasználó felvétele: Egy felhasználó létrehozásához a felhasználó személyről információkat kell bevinni az adatbázisba és egy home könyvtárat kell létrehozni számára, ahol saját fájljait
tárolhatja. A legtöbb Linux terjesztésben található program a számlák=>felhasználók létrehozására. Több ilyen létezik Két (viszonylag általánosan ismert) parancssori program, melyek egymásnak alternatívái az adduser és a useradd; de léteznek grafikus felületű (GUI) programok is. Bármelyik programot is használjuk, kevés, jóformán semennyi munkát kell végeznünk puszta kézzel. Még ha a részletek tekervényesek is, ezek a programok csupa magától értetődő dolgot művelnek. Egy új felhasználó felvétele után meg kell adni számára a bejelentkezéshez szükséges jelszót. Ezt a passwd felhasználónév parancs kiadával tehetjük meg Ezzel van egy új felhasználónk, érvényes jelszóval. A LINUX rendszerek alapvető felhasználói adatbázisa a /etc/passwd szöveges fájl, amit jelszófájlnak (password file) nevezünk. Ez felsorolja az összes érvényes felhasználói nevet és a hozzájuk kapcsolt információkat Mindenkinek tudnia kell
olvasni (sok segédprogram, pl. ezt használja hogy a felhasználói azonosítókhoz (UID-khez) neveket rendeljen), de írási jogot csak a rendszergazdának szabad kapnia. A régi szép időkben nem is volt ezzel semmi baj: mindenki olvashatta a felhasználók kódolt jelszavait, de mivel az akkori hardware-körülmények nem tették lehetővé a jól megválasztott jelszavak törését, és a felhasználók alapvetően jóindulatúak voltak, ez nem okozott problémát. Manapság szinte mindenki shadow-zott jelszavakat használ, amikor is a /etc/passwd fájl-ban a jelszavak helyett csak egy „x” karakter áll. Ha „*” szerepel a jelszó helyén, akkor a login(1) parancsal nem lehet bejelentkezni. Soronként egy bejegyzés található, a következő formában: usernév:x(jelszó):UID:GID:valódi név:home mappa:shell, 6/1 A fájlban minden felhasználói névhez egy sor tartozik, és 7, kettősponttal elválasztott mezőre oszlik: 1. Felhasználói név (username) 2. Egy x
karakter, mely a jelszóra utal 3. Felhasználói azonosító szám (uid) 4. Csoportazonosító szám (gid) 5. Teljes név, vagy egyéb leírás 6. Home könyvtár 7. Bejelentkezési burok (login shell), azaz a bejelentkezéskor futtatandó program A rendszer minden felhasználója olvashatja a jelszófájlt, így pl. megtanulhatják a többi felhasználó nevét A Linux rendszer rendelkezik az árnyék jelszó (shadow password) lehetőségével: a titkosított jelszó ekkor egy külön fájlban, a /etc/shadow-ban van, melyet csak a root olvashat. Ekkor a /etc/passwd fájl csak egy speciális jelet tartalmaz a második mezőben(x). Minden program, melynek egy felhasználó azonosításával kell törődnie, el kell érje az árnyék jelszőfájlt A szokásos programok elérhetnek a jelszón kívül minden információt az eredeti jelszófájlból, de magát a jelszót nem. Amikor egy új felhasználó home könyvtára létrejön, a /etc/skel tartalma alapján töltődik fel új
tartalommal. Ezért ebbe a könyvtárba a rendszeradminisztrátor létrehozhat egy szép környezetet az új felhasználók számára. Pl létrehozhat egy /etc/skel/.profile fájlt, amely az EDITOR környezeti változót egy népszerű, új felhasználóknak szánt szövegszerkesztőre állítja be. Általában az a legjobb, ha a /etc/skel a lehető legkisebb, mivel csaknem lehetetlen a már létrehozott felhasználói fájlok frissítése. Pl ha a közkedvelt editor megváltozik, minden már létező felhasználónak meg kell szerkeszteni a profile fájlját. A rendszeradminisztrátor megkísérelheti ezt automatikusan, shell szkriptből megtenni, de ilyenkor nagyon nagy valószínűséggel sérülhet valakinek a módosított .profile fájlja Néha szükséges olyan buta számlák létrehozása, melyet nem használ egy ember sem. Pl egy anonymous FTP-szerver létrehozásához egy ftp nevű felhasználót kell létrehozni. Ilyen esetekben nem szükséges a jelszót beállítani, sőt,
jobb, ha nem tesszük meg, mert így senki sem tudja azt használni, csak a root, mivel ő minden felhasználó nevében dolgozhat. A felhasználók között a su felhasználónév parancsal lehet könnyen váltani, természetesen a jelszó megadása után. Természetesen a rendszeradminisztrátornak: root, nem kell jelszót megadni, ha egy egyszerű felhasználóhoz akar átjelentkezni. Csoportok felvétele: Hasonlóan a felhasználókéhoz, a csoportok felvételélre is léteznek megfelelő parancsok: Így a groupadd valamint az addgroup parancs is új csoport létrehozására alakalmas. Tehát nincs más dolgunk, mint kiadni a fenti parancsok egyikét: addgroup csoportnév. Ezzel létrejött egy új csoport, s ezáltal egy új bejegyzés az /etc/group fileban: csoportnév:x(jelszó):GID Felhasználók/ csoportok törlése: Egy felhasználó törléséhez először le kell törölni az összes fájlját, levelesládáját, nyomtatási feladatait, cron és at feladatait, és minden
egyéb hivatkozást a felhasználóra. Azután törölhető a megfelelő sor a /etc/passwd fájlból, és a rá vonatkozó bejegyzések a /etc/group-ból. Jó ötlet először kikapcsolni a számlát, ahogy fentebb láttuk, majd utána elvégezni ezeket, hogy ne használhassa a rendszert a felhasználó, miközben töröljük számláját. Figyeljünk arra, hogy a felhasználónak lehetnek fájljai a home könyvtárán kívül is. A find parancs használható ezek keresésére. Azonban létezik egy sokkal egyszerűbb megoldás a felhasználók eltávolítására. Felhasználók törlésére ugyanis két parancs is rendelkezésre áll, melyek neve deluser sználónáv vagy userdel. Igaz, ez a munka kézzel is könnyen elvégezhető, és ekkor biztosak lehetünk abban, hogy minden rendben és hiánytalanul zajlott. Hasonlóan a felhasználókéhoz, a csoportok törlésére is léteznek a fenti parancsok megfelelői. Így: delgroup csoportnév, illetve groupdel csoportnév szolgálnak a
csoporttörlésére. Természetesen ez manuálisan is elvégezhető a /etc/group file megfelelő sorának eltávolításával. 6/2 - Hálózatok ( 36 tétel ) – Linux ( 9 tétel ) 7. A Linux kernel (kernel, patch-ek, modulok verziótematika, fordítás) Kernel A Linux kernel a közvetítõ, a programok és a hardver között. Menedzseli a memóriát az összes futó program (processz) számára, és biztosítja, hogy mind egyenlõen (vagy egyenlõtlenül, ha úgy tetszik) részesüljenek a processzor ciklusaiból. Továbbá egy kényelmes, hordozható felületet nyújt a programoknak, amelyen át kommunikálhatnak a hardverrel. Modulok Ezek a kernel program olyan részei, amelyek nincsenek közvetlenül beillesztve a kernelbe. Ezeket külön kell lefordítani, és szinte bármikor be lehet illeszteni õket a futó kernelbe, illetve ki lehet venni onnan őket. A rugalmassága miatt már ez a legelterjedtebb módszer bizonyos kernel-szolgáltatások programozására. Patchek A
pathcek általában forráspatchek, azaz olyan forrásfile-ok, melyek a kernelt egészítik ki új sorokkal, vagy módosítanak azon bizonyos beállításokat. Hasonlóan kell őket kezelni, mint magát a forrást Fordítás A legújabb kernelt az ftp.kernelorg -ról lehet letölteni Mielőtt nekiállnánk a fordításnak a gépünkön telepítve kell, hogy legyen az ncurses-dev nevű csomag, valamint a make nevű program. Ha nincs telepítsük fel őket: apt-get install ncurses-dev ; apt-get install make A kernelforrás egy csomagolt fájl, melyet letöltése után az /usr/src könyvtárba kell tenni. Első lépésként tömörítsük ki az állományt. Amennyiben a file kiterjesztése targz akkor a következőképpen járjunk el: tar –xvzf linux-verziószámtargz Amennyiben a kiterjesztésünk tar.bz2 úgy: bzcat linux-verziószámtarbz2 | tar xvf – Most elméletileg egy linux-verziószám nevű könyvtár jött létre a /usr/src könyvtába. Mivel a Linux alapértelmezetten a
/usr/src/linux könyvtárban keresi a forrást, ezért csinálni kell egy szimbólikus linket „linux” néven az előbbi könyvtárra hivatkozva. Tehát nincs más dolgunk, mint kiadni a következő parancsot: ln –s linux-verziószám linux Ha ezzel is megvagyunk, akkor lépjünk be a linux könyvtárba( szimbolikus link igazából), majd adjuk ki a make menuconfig parancsot. Ha mindent jól csináltunk akkor egy menüféleséget, kellet, hogy kapjunk, mely már maga a kernel beállítófelülete Ha egy elem elé * -ot teszünk, akkor az belefordul a kernelbe. Ha M betű áll előtte, akkor az csak modul lesz, amit a későbbiekben kell majd betöltenünk. A szükséges beállítások után menjünk az Exit gombra, és mentsük el a kernel beállításait Legelőször a függőségeket kell beállítani. Ezt a make dep paranccsal tehetjük meg Amennyiben a lefordított fileokat le szeretném törölni, adjuk ki a make clean parancsot, mely hasznos, ha teljesen újra akarok
fordítani egy kernelt. Mindezek után fordítsuk le magát a kernelt. Ezt a make bzImage parancs kiadásával tehetsük meg Lefutása egy korszerű gépen néhány percet vesz csupán igénybe. A létrejött imaget, mely a /usr/src/linux-verziószám/arch/i386/boot/bzImage file, másoljuk a /boot könyvtárba. (Tanácsos átnevezni az imaget az ő verziójára) Ha ezzel is megvagyunk, akkor le kell fordítani, majd fel kell telepíteni a modulokat is. Ugye még mindig a /usr/src/linux könyvtárban vagyunk! Adjuk ki tehát a következő két parancsot: make modules make modules install Ezek lefutása után a /lib/modules/linux-verziószám könyvtárban találhatók a kernel modulok karagóriák szerint csoportosítva. A modprobe kernelmodul paranccsal lehet egy modult betölteni. (Természetesen a kernelmodul teljes elérési útja kell a parancs kiadásakor). Egy másik parancs az insmod kernelmodulo , mely a példából is látszik, hogy itt konkrétan az object filet kell
betölteni, mely mint tudjuk a /lib/modules/linux-verziószám könyvtárban található. A betöltött modulokat az lsmod paranccsal lehet kilistáztatni. A modulok kezelésének megkönnyítésére hozták létre a modconf parancsot, mely egy menüs felülettel biztosítja a modulok betöltését. Ezek után nincs más teendőnk mint beállítani a LILO -t(LinuxLoader), hogy a frissen fordított kernelünket töltse be. Nyissuk meg tehát /etc/lilo.conf nevű állományt És szerkesszük a következő részeket: image=/boot/2.429 label=linux-2.429 root=/dev/hda1 read-only # Ez a kernelünk maga # Ezt fogja kiírni a Lilo menűje # Az partíció, ahol a Linux van # Csak olvasható Mentsük a változtatásokat, majd adjuk ki a lilo parancsot. Ha minden rendesen ment, akkor nincs más doldunk mint újraindítani a gépet, és a lilo menűjéből kiválasztani az új kerne-lünket. (Tanácsos a régi a imageket is meghagyni, abban az esetben, ha nem sikerült valami az új kernelnél)
1 - Hálózatok ( 36 tétel ) – Linux ( 9 tétel ) 8. A Linux tűzfal ( Netfilter: iptables ) A csomagszűrők (iptables) Bevezető A csomagszűrő egy programrész a Linux kernelében, mely figyeli a csomagok fejlécét miközben azok keresztülhaladnak rajta, és eldönti az adott csomag további sorsát. Ez lehet DROP, mely a csomag eldobását jelenti, (kidobja a csomagot, mintha sosem kapta volna meg), vagy REJECT, mely szintén kidobja a csomagot, csak küld a dobásról választ. ACCEPT, mely a csomag elfogadását jelenti (magyarán hagyja a csomagot továbbhaladni), vagy valami más, bonyolultabb eljárás. Linux alatt a csomagszűrés a kernelbe van beépítve (vagy teljesen beleépítve, vagy betölthető modulként szerepel), és jópár trükköt képes bemutatni a csomagokon, de ettől még az alapvető funkciója a csomagok fejlécének figyelése és az aktuális csomag további sorsának eldöntése. Az iptables szabályrendszerének ismertetése Mikor a kernel
elindul, 3 szabálysort tartalmaz a "szűrési" táblájában; ezeket a szabálysorokat tűzfal láncoknak vagy egyszerűen csak láncoknak hívjuk. A három beépített lánc az INPUT, OUTPUT és a FORWARD Tehát a Filter (szűrö) táblák: INPUT, OUTPUT, FORWARD Minden lánc szabályok sorozata. Minden egyes szabály azt mondja ki, hogy "ha a csomag fejléce olyan mint ez vagy az, akkor amazt kell a csomaggal csinálni". Ha a szabály nem illik a csomagra, a lánc következő szabálya kerül vizsgálatra. Végül, ha minden szabályt végignéztünk, a kernel megnézi a lánc policy-ját (irányelv arra az esetre, ha egy szabály sem illik a csomagra) hogy eldöntse, mit kell tenni a csomaggal. Egy tudatosan biztonságra törekvő rendszerben ez általában azt jelenti, hogy a kernel a csomagot eldobja (DROP). 1. 2. 3. 4. Ha egy csomag bejön (például a hálózati csatolón keresztül) a kernel először is megnézi a csomag célcímét, vagyis azt, hogy
hova kell azt továbbítani: ezt hívják "routolás"-nak vagy útválasztásnak. Ha a célcím ezen a gépen van, a csomag "lefele" megy a diagramon, az INPUT lánc felé. Ha az átengedi, a csomag átkerül a feldolgozását végző processhez. Egyébként, ha a kernelben a továbbítás (FORWARD) nincs engedélyezve, vagy a kernel nem tudja eldönteni, hogy hogy továbbítsa a csomagot, a csomag eldobásra kerül. Ha a továbbítás engedélyezve van, és a csomag egy másik hálózati interfészre lett címezve (már amennyiben van olyan), a csomag a diagramon jobbra vándorol, a FORWARD lánc felé. Ha a lánc elfogadja, a csomagot a kernel elküldi Végül vannak olyan programok a gépen, melyek csomagokat továbbítanak a gépedről. ezek a csomagok az OUTPUT láncon keresztül hagyhatják el a gépet: ha az elfogadja őket (ACCEPT), a csomagok folytatják útjukat a céljuk felé. NAT (Network Address Translation) táblák: PREROUTING, POSTROUTING
Működése: 8/(3)1 Iptables paraméterei: iptables -A . iptables -D . iptables -L . iptables -F . szabály hozzáfűzése szabály törlése szabályok listázása flush, a szabályok kiürítése -j ACCEPT csomag elfogadása -j DROPcsomag elutasítása válasz nélkül -j REJECT csomag elutasítása értesítéssel -p tcp -p icmp -p udp szabály csak a megadott protokollra vonatkozzon -i eth0 azon csomagokra, melyek bejövö interfésze eth0 -o ppp0 azon csomagokra, melyek kimenö interfésze ppp0 -s {forráscím/tartomány} -d {célcím/tartomány} --sport {forrásport} --dport {célport} szabályok mentése: /etc/init.d/iptables save active szabályok betöltése: /etc/init.d/iptables load active vagy /etc/init.d/iptables start iptables -A INPUT -p icmp -j REJECT (tiltja a bejövö icmp kéréseket) iptables -A OUTPUT -p tcp --dport 80 -j DROP (tiltja a kimenö webes kéréseket) Egyebek /etc/ssh/sshd config /etc/ftpusers PermitRootLogin yes/no root bejelentkezés
szabályozása ssh-ban telnet sosem enged be root-ot az itt felsorolt userek nem ftp-zhetnek su {felhasználónév} su - {felhasználónév} (lefuttatja a felhasználó belépési parancsfájljait) rootnak su-záskor nem kell jelszót megadni su használatának szabályozása: /etc/pam.d/su pl. adott csoport számára engedélyezem csak Példa az iptables-re: iptables -F iptables -t nat -F iptables -P INPUT ACCEPT # valamelyik gep teljes letiltasa iptables -A INPUT -j REJECT -s 10.002 # localhost es localnet iptables -A INPUT -j ACCEPT -s 127.000/8 -d 127000/8 iptables -A INPUT -j ACCEPT -s 10.000/24 #transzparens proxy iptables -t nat -A PREROUTING -i eth0 -s 10.000/24 -d ! 10000/24 -p tcp --dport 80 -j REDIRECT --to-port 3128 #proxy portok ircnek # egyes portok tiltása REJECTtel iptables -A INPUT -j REJECT -p tcp --dport 1080 iptables -A INPUT -j REJECT -p tcp --dport 3128 # egyes portok engedélyezése helyi szerver számára iptables -A INPUT -j ACCEPT -p tcp --dport 21 #ftp
iptables -A INPUT -j ACCEPT -p tcp --dport 80 #apache 8/(3)2 # Publikus portok iptables -A INPUT -j ACCEPT -m multiport -p tcp --dports ssh # Felépült kapcsolatok iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED # LAN maszk iptables --table nat -A POSTROUTING -s 10.000/24 -d ! 10000/24 -o ppp0 -j MASQUERADE # PING iptables -A INPUT -j ACCEPT -s 10.000/24 -p icmp # belső gépen futó ftp szervernek port forward #iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 21 -j DNAT --to 10.007:21 # portok forwardolása belső gépen futó irc kliensnek iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 1030 -j DNAT --to 10.007:1030 iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 1031 -j DNAT --to 10.007:1031 iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 1032 -j DNAT --to 10.007:1032 # port tartomány forwardolása belső gépnek iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 6881:6999 -j DNAT --to 10.007:6881-6999 # Alapértelmezett kapcsolódó
policy iptables -P INPUT DROP Bővebben: http://www.szabilinuxhu 8/(3)3 - Hálózatok ( 36 tétel ) – Linux ( 9 tétel ) 9. Proxy szerverek Linuxon ( squid,feladata,működése,előnyei,jogosultságok) A Web-caching-proxy egy olyan gyorsítótár-szerver, amely a Web-szerverekről lekért objektumokat tárolja. Ha egy új kérés érkezik, azt először a proxy kapja meg. Ha már megvan a tárolójában az adott objektum, és még érvényes annak a tartalma, akkor azt küldi el a kérőnek, és nem továbbítja a kérést a Web-szervernek. Főleg akkor hasznos, ha a belső hálózatunkat engedjük ki kliensként az Internetre. A Linux rendszereken a squid nevű Web-proxy szoftver a legelterjedtebb. Squid jelentése: tintahal Kezeli a HTTP, FTP, gopher, SSL és WAIS protokollokat. Fontos jellemzője, hogy a különböző gépeken futó szerverek hierarchiába rendezhetők. A proxy-k hierarchiájában szülő (parent) és/vagy testvér (sibling) kapcsolatokat definiálhatunk.
Egymással testvér viszonyban álló cache szerverek a hozzájuk befutó kérés esetén megkérdezik a másikat, de ha annak nincs meg a kért anyag, akkor azt a testvér nem tölti le. Ha a testvérek nem tudtak segíteni, akkor a proxy szerver a szülőjéhez fordul, ha van neki. Ha nincs, akkor ő maga hozza le az objektumot A szülő csak abban különbözik a testvértől, hogy ő a nála nem megtalálható anyagot letölti és továbbadja a gyereknek. A cache-ek egymással UDP-n keresztül kommunikálnak, míg a cache-browser párbeszéd a megbízhatóbb TCP-n keresztül történik. A Squidben definiálható, hogy mely objektumok tárolódjanak. A tárolásra alaphelyzetben egy könyvtárat kell kijelölni a filerendszerben A Squid konfigurációs filejában megadhatjuk, hogy ki fordulhat hozzá kérésekkel, illetve mely domainre irányuló kéréseket szolgál ki. Ezek a hozzáférési (access control) listák különböző szempontok alapján gyárthatóak: megadhatók IP
címek, illetve címtartományok, valamint domain nevek. A listák mind engedélyezésre, mind tiltásra felhasználhatók A Squid mind a kérésekről, mind a letöltésekről bejegyzéseket készít a log filejaiba. Ezekből különböző statisztikák készíthetők, melyek alapján képet kaphatunk a cache működéséről. Hardver: nem elsősorban CPU igényes alkalmazás, inkább a memóriára (RAM) fektessük a hangsúlyt, nem árt egy nagy méretű disk (tárterület) a letöltött objektumok tárolására. A squid alapértelmezett portja: 3128 9/(1)1