VÉDEKEZÉSI SZINTEK AKADÉMIAI HÁLÓZATON
Kadlecsik József, kadlec@sunserv.kfki.hu
KFKI RMKI SZHK
1. Miért van szükség védekezésre?
Az Internethez kapcsolódva a hálózati betörések ellen védekeznünk kell, mert védenünk kell
Lehetnek olyan adataink, amelyeket titokban kívánunk tartani (magánlevelezésünk, vagy akár kutatási/fejlesztési adataink). Adataink értékét azok váratlan elvesztésekor becsüljük meg igazán: egészen biztosan nem szeretnénk, ha bármely adatunkat (pl. egy beküldés előtt álló fontos cikkünket) egy betörő véletlenül vagy szándékosan letörölné. Mégha rendelkezünk biztonsági másolattal, az elveszett vagy módosított adatok helyreállítása időt, többletmunkát igényel - akár fontos határidőt késhetünk le miatta.
Számítógépeink (processzoridő, memória, diszkterület, stb.), hálózati erőforrásaink (sávszélesség) pénzbe kerülnek. A betörők ezeket pazarolják, vagy éppen használják el/foglalják le előlünk. Egy betörés után - hacsak nem rombolták le az egész rendszert és nem töröltek le mindent - annak kiderítése, hogy mi történt, mit módosítottak, mit tettek tönkre, ezek helyreállítása, sok-sok emberi munkaórát - erőforrást - igényel.
Az egyes személyek, intézmények jó híre pénzben ki nem fejezhető érték. A betörők a hálózatunkon megszerzett adatokat más hálózatokba való betörésre használhatják fel. Terjeszthetnek rajtunk keresztül illegális, lopott szoftvereket, jogvédett vagy pornográf anyagokat. Önhibánkon kívül vagy sem, nevünk, intézményünk neve tiltó, fekete listákra kerülhet föl, amelyekről azután csak nehezen lehet majd eltávolítani. Noha nem tekinthető szigorúan véve betörésnek, ez jól látható az Internet jelenlegi pestise, az E-mail szemét, a spam elleni harcon: domain-ek, amelyek keresztül spam terjed, a spam ellen küzdők tiltó listáira kerülnek föl és hosszú időre kizáródnak a szabad E-mail forgalomból.
2. Speciális igények
Egy tipikus profit szférába tartozó hálózat védekezésénél szigorúan konfigurált tűzfal rendszereket alkalmaznak, amelyek vagy gondosan kontrollálják-monitorozzák a kifelé irányuló hálózati forgalmat, vagy gyakran teljesen megakadályozzák azt. Az Internet felé nyújtott publikus szolgáltatásaikat olyan rendszerekről nyújtják, amelyek egy tűzfal mögött, de még a második tűzfallal védett belső hálózatukon kí
vül helyezkednek el (semleges zóna). Ha lehetővé tesznek interaktív belépést, akkor azt csak bizonyos hálózatokról és/vagy csak szigorú ellenőrzés után engedik meg.
Akadémiai hálózatok nagyobb nyitottságot követelnek meg. Felhasználóinknak szükségük van a (majdnem) teljes és korlátozás-mentes Internet elérésre, kutatási eredményeiket, adataikat szintén az Interneten keresztül akarják mások számára szabadon elérhetőv
é tenni. Csoportok alakulnak, amelyeknek a tagjai csak az Interneten keresztül érintkeznek, kommunikálnak. Konferenciák résztvevői levelezésüket, adataikat távolról is el akarják érni. Ugyanakkor általában nincs elegendő anyagi forrás kereskedelmi biztonsági szoftverek, eszközök beszerzésére, semleges zónák, publikus-nem publikus szerverek beállítására.
3. Szintek, modellek
3.1 Védekezés rendszerenként a lokális hálózaton
Bizonyos esetekben előfordulhat, hogy hálózatunk rendszereit csak individuálisan tudjuk vagy akarjuk megvédeni. Ez
t a megoldást választhatjuk akkor, ha kisméretű a hálózatunk még kezelhető számú rendszerrel, amelyeket valóban meg tudunk egyenként védeni. Erre kényszerülünk akkor is, ha az Internet kapcsolatunkat biztosító routerünk nem képes tűzfalként működni és a router valamint a lokális hálózatunk között nincs mód tűzfal gépet elhelyezni.
Melyek lehetnek ekkor a védekezésünk elemei:
A modell nyilvánvalóan rendelkezik hibákkal. Minden egyes gép szabadon látható az Internetről, mindegyik egy-egy gyenge láncszem. Bármelyikre betörve az egész LAN biztonsága sérül. Ha következetesek akarunk lenni, alapvető szolgáltatásokat tiltanunk kell
a hálózaton (pl. NFS) és ez nem mindíg keresztülvihető. Igen nehéz meghúzni a határt a még engedett/már tiltott szolgáltatásoknál úgy, hogy mindenki értse és elfogadja mit miért tiltunk és ne legyen kísértés egyes szabályok esetleges belső megsértésére. (Nincs minden egyes gép fölött kezünkben az állandó és teljes kontroll, nincs módunk az egységes védekezési módszer mindenkori betartatására.)
3.2 Tűzfallal védett LAN
Az előző modell biztonságát nagyban növelhetjük, ha el tudunk helyezni egy tűzfalat a LAN és az Internet között:
A védekezés mélysége ebből a modellből is hiányzik: ha betörnek egy kapugépre, az egész LAN-ra törnek be. Azonban valóban kellően kisszámú, jól karbantartott kapugéppel, biztonságosnak tekintett protokollok támogatásával és propagálásával minimal
izálhatjuk ennek az esélyét.
3.3 Tűzfallal védett LAN semleges zónával kiegészí
tve
A tűzfallal védett LAN biztonságát tovább növelhetnénk egy semleges zóna (DMZ: de-militarized zone) kialakításával. A felhasználó-nélküli kapugépek (DNS, publikus FTP, WWW, stb.) ekkor átkerülnek a semleges zónába, amelyet a belső LAN-tól egy második tűzfal választ el: így ha ezekre betörnek, a LAN biztonsága még nem sérül. Az Internetről való interaktí
v bejelentkezés biztonságát közönséges protokollok (telnet, FTP) esetén nem javíthatjuk azzal, ha az ezeket szolgáltató kapugépeket a DMZ-ben helyezzük át (az Internet ® kapugép közti forgalom lehallgatható): megoldást csak titkosított bejelentkezési módszerek (Sesame, ssh, SRP, stb.) támogatása, alkalmazása jelentheti.
Noha kívánatos lenne, semleges zónák kialakítása az akadémiai/egyetemi hálózatokon ma még általában praktikusan nem lehetséges: nincs elegendő pénz a kellő számú megfelelő számítógép beszerzéséhez. Az akadémiai/egyetemi hálózatokon felépített nagy FTP, WWW archívumok mindegyike (az általában egyetlen) nagy szervergépen üzemel, amelyek még sok lokális felhasználót szolgálnak ki. A pénzügyi források jó ha (az általában pályázatokon nyert) szerverek karbantartását, esetleg lassú bővítését fedezik, nem közel megduplikálásukat.
4. Tűzfallal védett LAN: elemek
4.1 A tűzfal: routerből vagy célszámítógépből?
Természetesnek tűnő gondolat, hogy ha tűzfalat akarunk felállítani, akkor használjuk a modern routerek access listáit szűrésre, a routerünk legyen egyben a tűzfal is. A router mint tűzfal megoldás számos előnnyel rendelkezik:
Ha lehetőség van a router és a belső hálózat közé elhelyezni egy a tű
zfal szerepét átvevő célszámítógépet, annak a megoldásnak is vannak előnyei:
Ha ez utóbbi megoldást választjuk, akadémiai szféra lévén egy PC alapú ingyenes UNIX rendszerből kialakított tűzfal a valószínű megoldás.
Körülbelül mekkora feladattal kerül szembe egy számítógép, amelyik tűzfalként üzemel? Az alábbi táblázatban összefoglaljuk a maximális csomag/másodperc arányokat különböző sebességű Internet kapcsolatok és csomagméretek esetén (a legkisebb még érvényes IP csomag mérete 20 byte/s; a legkisebb még érvényes TCP-t hordozó IP csomag mérete 40 byte/s; az átlagos csomagméret egy Ethernet szegmensen méréseink alapján 512 byte/s):
|
Kapcsolat |
56Kb/s bérelt vonal |
T-1 bérelt vonal |
Ethernet |
Ethernet, FDDI |
|
bit/s |
56.0 0 0 |
1.544.0 0 0 |
10 .0 0 0 .0 0 0 |
10 0 .0 0 0 .0 0 0 |
|
pps (20 byte/s) |
350 |
9.650 |
62.50 0 |
625.0 0 0 |
|
pps (40 byte/s) |
175 |
4.825 |
31.250 |
312.50 0 |
|
pps (512 byte/s) |
14 |
377 |
2.441 |
24.414 |
Ezek a számok természetesen az elméleti maximumok, és jól látszik, hogy az átlagos csomagméret mennyire meghatározza a tűzfal tényleges leterheltségét. Mindenesetre mivel az Internet-LAN közötti forgalmak nagyrészt TCP protokoll alapúak, ezért az ún. stateful tűzfalak, amelyek nyomonkövetik egy-egy TCP kapcsolat állapotát, jobb teljesítményre képesek, mint az egyszerű csomagszűrő tűzfalak.
4.2 Alapbeállítások és az alapelv
A csomagszűrő tűzfalunkon van néhány alapszabály, amelyet be kell állí
tanunk, amelyek nélkül nem indulhatunk el:
El kell döntenünk, hogy a tűzfal épí
tése során melyik alapelvet követjük:
Csábító lehet a mindent szabad, kivéve amit tilos elv, de ne felejtsük el: ekkor soha nem lesz biztonságos kontroll alatt a hálózatunk. Bárki, bármikor tetszőleges alkalmazást (akár telnet) indíthat tudtunk nélkül egy magas, nem ellenőrzött porton.
4.3 ICMP forgalom
Az alábbi táblázatban összefoglaljuk, hogy az összes lehetséges közül melyek azok az ICMP típusok, amelyek forgalmának a megengedésén el kell gondolkodnunk:
|
ICMP típus |
Megnevezés |
|
0 |
echo reply |
|
3 |
destination unreachable |
|
4 |
source quench |
|
8 |
echo request |
|
11 |
time exceeded |
|
12 |
parameter problem |
Ha teljesen megtiltjuk az ICMP forgalmat, hálózatunk vakká válik a hálózati és protokoll-problémákkal, azok detektálásával és bizonyosfajta kezelésével szemben. Ha viszont ezek forgalmát megengedjük, nem veszítjük el a hálózatmenedzseléshez szükséges ICMP típusokat, de szembe kell néznünk azzal, hogy DOS (denial-of-service) támadások még érhetik a hálózatunkat.
A megoldást a fenti ICMP típusok forgalmának a megengedése és dinamikus szabályok létrehozására alkalmas tűzfalak alkalmazása jelentheti, amelyek még ilyen típusú DOS támadások ellen is tudnak bizonyos fokú védelmet nyújtani.
4.3 UDP forgalom
Az UDP protokoll jellemzője, hogy az egyes csomagok függetlenek, a kérdés-válasz csomagok nem alkotnak kapcsolatot. Ez igen megnehezíti az UDP alapú alkalmazások tűzfalon keresztül való átengedését. Például tegyük fel, hogy a következő sematikus szabályokkal megengedjük a felhasználóink számára a (részben) UDP alapú talk használatát:
|
Irány |
Protokoll |
Forrás IP |
Címzett IP |
Forrás port |
Címzett port |
Megjegyzés |
|
Kifelé |
UDP |
Belső |
Külső |
> 10 23 |
517 vagy 518 |
Belső kliens hozzákapcsolódik a külső szerverhez |
|
Befelé |
UDP |
Külső |
Belső |
517 vagy 518 |
> 10 23 |
Külső szerver válaszol a belső kliensnek |
Mivel az UDP csomagoknál nincs irányultság, pusztán a csomagok IP és UDP headerjeiből nem lehet megállapítani hogy ki a kezdeményező. A fenti szabályok ezért az alábbiakkal ekvivalensek:
|
Irány |
Protokoll |
Forrás IP |
Címzett IP |
Forrás port |
Címzett port |
Megjegyzés |
|
Befelé |
UDP |
Külső |
Belső |
517 vagy 518 |
> 10 23 |
Külső kliens hozzákapcsolódik a belső szer verhez |
|
Kifelé |
UDP |
Belső |
Külső |
> 10 23 |
517 vagy 518 |
Belső szerver válaszol a külső kliensnek |
Vagyis megengedtük bárkinek, hogy az 517 vagy 518-as UDP portokról bármely 10 23 port fölött szolgáltató szerverünkkel (pl. NFS) kommunikálhasson.
Az UDP protokoll ezen sajátossága miatt nem engedhető át tűzfalon olyan UDP alapú alkalmazás, amelynél a belső kliensünk véletlenszerűen kiválasztott portról külső szerverrel kíván kommunikálni.
Nézzük meg röviden az egyes fontosabb UDP alapú alkalmazásokat:
A traceroute csomagoknál a kliens által küldött UDP csomagokban a forrás és címzett portok a megvalósítástól, a parancs argumetnumaitól függenek. Általában igaz, hogy a forrás port 32768 fölött, míg a címzett port 33434 és 33523 között van. A válasz nem egy UDP csomag, hanem ICMP destination unreachable üzenet.
Az NFS-el túl sok probléma van ahhoz, hogy tűzfalon átengedjük: csupán az IP cím alapján engedélyezi a hozzáférést; a kliens hoston múlik, hogy mely felhasználó használhatja a file rendszert; az NFS szerver csak egyszer ellenőrzi a klienst, a továbbiakban annak csak érvényes file kezelőt kell hasznáni, amely egyébként kitalálható/próbálgatható, stb, stb.
Az NTP UDP alapú, de két NTP szerver egymás közt a 123-as forrás és címzett portokon kommunikál. Így ha a belső hálózatunkon nincs pontos időforrás, adott külső NTP szerverek - adott belső NTP szerver közti forgalom tűzfalon keresztül átengedhető.
A talk nemcsak UDP alapú, hanem egy meglehetősen bonyolult protokoll: a kliens a szerverrel való kommunikációra UDP-t használ (forrás: > 10 23, címzett 517 vagy 518), majd a két kliens TCP-vel beszélget (forrás: > 10 23, címzett: > 10 23). Amennyiben a tűzfal nem ismeri a talk protokollt, az biztonsággal nem engedhető át :-(.
Az archie kliens-hívások az UDP miatt nem engedhetők ki. Lehetséges megoldások, hogy a szolgáltatást mégsem veszítsük el:
4.4 TCP forgalom
A TCP egy megbízható, kapcsolat-létesítő, folytonos adatforgalmat biztosító protokoll. A kapcsolat irányultsága (ki a kliens és ki a szerver) a csomagfolyamból egyértelműen megállapítható. Ezért modellünkben minden kifelé irányuló kliens-kérést engedélyezhetünk, míg befelé csak az egyes kapugépekre és csak az azokon futtatott szolgáltatást tesszük elérhetővé.
Csupán a legfontosabb protokollokat érintjük vázlatosan:
MX rekordokkal minden, felhasználót érintő probléma nél
kül elérhetjük, hogy a teljes befelé irányuló E-mail forgalom egy vagy csupán néhány nagy mail szerver gépen keresztül történjen, és a tűzfallal biztosíthatjuk, hogy csak azokon keresztül történhessen. A biztonsági megfontolásokon kívül a központi mail szerverek használata kényelmessé teszi az engedély nélküli E-mail relay és spam elleni harcot.
A lehallgatható, meghamisítható, stb. interaktív belépési lehetőséget nyújtó protokollokkal sajnos együtt kell élnünk. Biztonságos alternatívaként támogatnunk és propagálnunk kell a nem lehallgatható protokollokat (pl. ssh) vagy a legalább biztonságos felhasználói azonosítást lehetővé tevő protokollokat (pl. az SRP alapú telnetet és ftp-t).
Az ftp-t esetében a protokoll egyébként is nehézségeket okoz. Normál módú ftp-nél az adat-csatornát a szerver (kliensként) nyitja meg a kliens (ebben az esetben szerver) által megadott véletlenszerű porton. Ha a tűzfalunk érti az ftp protokoll ezen sajátosságát, ez nem jelent problémát. Ha azonban egyszerű csomagszűrő tűzfalunk van, a megoldást az ún. passive módú ftp használata adhatja, amikor az adatcsatornát is a kliens nyitja meg, kliensként. Ennek megtanulása/elfogadása nehézséget okozhat a felhasználók számára.
Mint nem biztonságos protokollokat, ne engedjük át. Bizonyos mértékig helyettesíthetők telnet-el és ftp-vel, ssh, slogin, scp esetén pedig a teljes funkcionalitás biztonságosan megőrizhető.
Ssh esetén nem szabad megfeledkezni arról, hogy a szerver a default 22-es porton kívül általában a 6010, 6011, ..., 60nn portokon is figyel (X11DisplayOffset), valamint hogy az ssh kliens Rhosts és RhostsRSA autentikációk esetén 1023 alatti portról kezdeményezi a kapcsolatokat.
Bejövő news kliens kéréseket elegendő a news szerver felé beengednünk -
ha egyáltalán akarunk news-t szolgáltatni mások számára is, egyébként elégséges a news szerverek közti forgalmat engedélyeznünk.
A tűzfallal - azon kívül, hogy a WWW szerver felé beengedjük a forgalmat - sokat nem tehetünk a szerver védelméért. Azt a szerveren magán kell kezelnünk: megfelelően konfigurált, ismert biztonsági problémát nem tartalmazó szerver; csak a minimális számú, és biztonsági szempontból ellenőrzött CGI script, stb.
A DNS-t említhettük volna az UDP-nél is, mivel az alkalmazás mindkét protokollt használja:
A fentiek alapján a DNS szerverünkre beengedhetünk minden kliens/szerver hívást, mind UDP, mind TCP protokollokkal. Ugyanakkor kifelé csak TCP, UDP alapú szerver, és TCP alapú kliens kéréseket engedhetünk ki, azaz az UDP alapú kliens kihívásokat - az UDP protokoll fentebb említett problémái miatt - tiltanunk kell. Ez szerencsére egyrészt ritkán fordul elő (pl. nslookup-al külső szerverhez kapcsolódunk), másrészt csak lassítja az alkalmazás használatát, de nem teszi lehetetlenné.
Az X11 Window System speciális, mivel fordított protokoll a többihez képest: ahol a képernyő/billentyűzet/egér fizikailag található, ott a szerver, míg ahonnan az alkalmazás ablaka megjelenik a képernyőnkön, ott a kliens. Másrészt biztonsági problémákkal szembesülünk az X11-nél: egy támadó például leolvashatja a képernyőnkent, a billentyű-leütéseinket, vagy akár gépelhet helyettünk. Az X11 rendelkezik ez elleni védelemmel, de sajnos ezek a mechanizmusok vagy gyengék és rosszul használtak (xhost), vagy nem mindíg alkalmazottak (magic cookie).
Ezért az a furcsa helyzet áll elő, hogy távoli gépek számára engedélyezhetjük az X ablak felhozatalát a lokális hálózatunkról, mí
g a lokális hálón nem engedélyezhetjük a távoli ablak felhozatalát, azaz tiltanunk kell kívülről a belső 6000, 6001, ..., 600n valamint 2000, 2001, ..., 200n szerver-portokhoz való hozzáférést.
Két megoldás kínálkozik: a biztonságos ssh propagálása X11 használatához, vagy hogy az X11 klienseket például az mxconns proxy program segítségével engedjük be. Az mxconns a felhasználók számára kényelmetlenebb, mint az ssh, viszont ssh-t nem támogató hostokhoz kapcsolódva is használható, valamint veszélyes X kérések letilthatók vele (statikus linkeléssel megkerülhető hátránya, hogy szükség van hozzá a Motif toolkit-re).
Összefoglalás
Vázlatosan áttekintettük, melyek a főbb lehetőségek az akadémiai hálózatok védelmére. Áttekintést adtunk a lehetséges tűzfal-megoldásokról, a fontosabb alkalmazások protokolljairól, valamint az azoknál felmerülő kérdésekről és esetleges megoldásokról.Több kérdést, lévén nincs egyértelmű válasz, nyitva hagyunk
Ajánlott irodalom, szoftverek
Simson Garfinkel and Gene Spafford: Pratical UNIX and Internet Security,
O Reilly & Associates, 1996
D. Brent Chapman and Elizabeth D. Zwicky: Building Internet Firewalls,
O Reilly & Associates, 1995
Steve Bellowin and Bill Cheswick: Firewalls and Internet Security,
Addison-Wesley, 1994
The sf Firewall Software:
http://www.ifi.unizh.ch/ikm/SINUS/firewall.html
Linux IP Firewalling and Accounting:
http://simba.xos.nl/linux/ipfwadm/
Linux IP Firewall Chains:
http://www.adelaide.net.au/~ rustcorp/ipfwchains/ipfwchains.html
IP Filter:
ftp://coombs.anu.edu.au/pub/net/kernel
SSH (Secure Shell) Remote Login Program:
http://www.cs.hut.fi/ssh/
The SRP (Secure Remote Password) Authentication System:
http://srp.stanford.edu/srp/
mxconns:
http://wwwinfo.cern.ch/dis/security/x/mxconns/
SESAME:
http://www.esat.kuleuven.ac.be/cosic/sesame3.html
ssh, SRP és IP Filter mirror:
http://www.kfki.hu/ftp.html