5. Biztonság A rendszer elsodleges célja a hallgatók vizsgáztatása, így nagy hangsúlyt kell fektetni a rendszert érinto biztonsági kérdésekre. Semmiképpen sem szabad arra számítani, hogy a muködo rendszert nem akarják majd feltörni, különösen a BME Villamosmérnöki és Informatikai Karán, ahol a hallgatók már eloadásokon megkapják az ehhez szükséges ismereteket. Számos eset bizonyítja, hogy a hallgatók nagy része gyakran hajlamos a könnyebb utat választani a sikeres vizsga érdekében, és a tananyag elsajátítása helyett más módszereket választ, ha erre adott a lehetosége. Természetesen 100%-os biztonság nem létezik (mint ahogyan valaki egy hálózati biztonsággal foglalkozó fórumon megjegyezte: még a kikapcsolt gép sem biztonságos, mert azt még el lehet lopni ), de mindent meg kell tenni a kockázattal arányos védelem elérése érdekében. A feladat többrétu: a webes felületnek biztosítania kell, hogy a benne tárolt adatokhoz csak az arra jogosult férjen hozzá, esetenként csak adott helyhez és idohöz kötve, azonban korántsem elegendo a problémának csak a rendszert közvetlenül érinto részével foglalkozni, ugyanekkora figyelmet kell szentelni annak a környezetnek, amelyben majd a rendszer helyet foglal, eloször ezeket vesszük sorra. 10
5.1 Környezet A rendszert környezetét vizsgálva nem csupán szoftver módszerekrol, programozói technikákról van szó, hanem sokkal inkább hardver megoldásokról és adminisztrációs fegyelemrol. 5.1.1 Hálózati topológia A rendszer egyszeruen fogalmazva egy hálózatba kötött számítógépen futó alkalmazás, amellyel a felhasználók a hálózaton keresztül tartják a kapcsolatot. A használt hálózati protokoll a TCP/IP, amely a biztonságot tekintve igen gyenge láncszem. A gondot az jelenti, hogy kello körültekintés nélkül kezelve a problémát a TCP/IP hálózaton történo forgalom lehallgatható, sot, hamisítható, miközben a rendszer használata közben adminisztrátori hozzáférést biztosító jelszavak, vizsgakérdések és hasonló, nem publikus adatok is folyhatnak át a hálózaton. A probléma kezelésére több lehetoség is van, ezek együttes alkalmazása hozhat megnyugtató eredményt. Elsoként biztosítani kell, hogy a számítógép olyan hálózatra kerüljön, ahol fizikailag nem lehetséges a hálózat lehallgatása. Ez pl. egy Ethernet hálózat esetén úgy oldható meg, ha a rendszert futtató számítógép a többi számítógéptol külön, saját hálózatba vagy hálózati szegmensre kerül. Az elterjedt UTP-s hálózatot tekintve ez legegyszerubben pl. switch használatával érheto el, a gépet egy külön switch porthoz kell csatlakoztatni. Nem szabad elfelejtenünk azonban azt, hogy hiába van a mi számítógépünk biztonságban, a veszély még mindig fennáll, hiszen a felhasználó oldalán is hozzáférhetnek a hálózathoz, és lehallgathatják azt. 11
5.1.2 Titkosított kommunikáció A lehallgatás és hamisítás problémájára egy másik megoldás a Netscape által bevezetett és elterjedt Secure Socket Layer, röviden SSL. A technika lényege, hogy a kliens és a szerver közötti HTTP kommunikáció titkosítottan történik: browser HTTPS SSL TCP IP LAYER 2 LAYER 1 webszerver HTTPS SSL TCP IP LAYER 2 LAYER 1 A módszernek a lehallgatás és a hamisítás mellett további elonyei is vannak: IP cím, ill. DNS hamisítás ellen is véd. A megoldás az ún. nyilvános kulcsú titkosítás, melynek során a kommunikáló felekhez (jelen esetben a browserhez, ill. a szerverhez) egy-egy kulcspár tartozik, ahol a kulcspár két részbol áll: egy titkos és egy nyilvános kulcsból. A titkos és a nyilvános kulcs szerepe szimmetrikus. Ha N jelöli a nyilvános kulcs alkalmazását, T a titkos kulcsét és x egy kódolandó információ, akkor N(T(x)) = x és T(N(x)) = x A módszer lényege, hogy rendkívül nehéz T-bol N-et meghatározni, továbbá T nem törheto fel választott nyílt szöveggel. A kommunikációban részt vevo feleknek generálniuk kell a maguk részére egy nyilvános/titkos kulcspárt. Ezután a nyilvános kulcsot minél 12
szélesebb körben ismertté kell tenni, a titkos kulcsra értelemszeruen vigyázniuk kell. Bárki, aki titkosított üzenetet akar küldeni, nem kell mást tennie, mint a fogadó nyilvános kulcsával kódolnia az üzenetet. A nyilvános kulcs ismerete nem segít abban, hogy a titkos kulcsot megfejtsük, ezért ha egy üzenetet valaki nyilvános kulcsával kódoltunk, akkor már magunk sem tudjuk azt visszafejteni, csakis a fogadó. A módszer alkalmas titkosítás nélkül csak hitelesítésre is, azonban ezt a lehetoséget itt nem használjuk ki. Ezeket a követelményeket teljesíti például az MIT-n kidolgozott RSA algoritmus. Az algoritmus neve a szerzok nevének kezdobetuibol származik: Rivest-Shamir-Adleman. Az RSA algoritmus védett, nem ingyenes. Tulajdonosa az RSA Security Inc. Biztonság alapelve: nagy számok tényezokre bontásának nehézsége, például egy 200 jegyu szám felbontása a mai számítógépekkel 4 milliárd évig tart.?? Válasszunk két nagy prímszámot, amelyek > 10 100?? n = p*q és z = (p-1)*(q-1)?? legyen d z-hez képest relatív prím?? keressünk egy olyen e-t, amelyre e*d mod z = 1?? a titkos kulcs a (d, n) pár, a nyilvános kulcs az (e, n) pár?? kódolás: C = P e mod n?? dekódolás: P = C d mod n A kódolás fix méretu blokkokra tördelve történik, a kódolandó blokkok log 2 n-nél kevesebb bites egységek. A kód feltöréséhez feltöréshez n-et fel kellene bontani p-re és q-ra, hogy z és ebbol d meghatározható legyen. 13
Igen fontos, hogy ha valakinek a nyilvános kulcsát használjuk, akkor biztosak legyünk abban, hogy nem hamis, lejárt vagy érvénytelen a kulcs. A web technológiánál a kulcsok hitelesítését az ún. kulcstanúsító szervezetek végzik. Az ilyen hitelesített kulcs beszerzése azonban utánjárásba és pénzbe kerül, így a jelenlegi rendszer nem hitelesített kulccsal üzemel, amely azért a fent vázolt biztonsági elonyök nagy részét ugyanúgy nyújtja. 5.1.3 A számítógép Biztonsági szempontból kritikus a magát a rendszert futtató számítógép biztonsága, hiszen ha valaki illetéktelenül plusz jogosultságok hoz jut a gépen, akkor az magát a programot is tetszés szerint módosíthatja, ill. a rendszer teljes adatbázisát megszerezheti. Ennek a veszélynek a minimalizálása miatt javasolt, hogy a számítógépen ne legyenek felhasználók és minél kevesebb szolgáltatás fusson rajta (webszerver, adatbázis szerver, sshd), azaz dedikált szerver legyen. Felhasználók létrehozása azért is ellenjavallott, mert egyrészt a támadó egy felhasználó jelszavát megszerezve bejuthat a gépre, és ott már sokkal könnyebben szerezhet plusz jogosultságokat, mintha csak távolról, hálózaton keresztül tudna próbálkozni. Másik indok a helyi felhasználók ellen, hogy a PHP kód jelszavakat is tartalmaz, amelyek az adatbázishoz való hozzáférést biztosítják, és ezeket a jelszavakat a gépen belül ismét csak sokkal könnyebb megszerezni. Elofordulhat, hogy a gép operációs rendszerében vagy az egyéb futtatott alkalmazásban idovel biztonsági hibákra derül fény, ezért a folyamatos felügyeletre és karbantartásra is szükség van. 14
5.2 A rendszer biztonsági kérdései A védelem legyen: Teljeskörû Zárt Kockázattal arányos Folyamatos A rendszerelemek: környezet, infrastruktúra hardver szoftver dokumentáció személyek Az alapfenyegetettségek: bizalmasság hitelesség sértetlenség rendelkezésre állás funkcionalitás 15