Quantcast
Channel: Dnevni Avaz
Viewing all articles
Browse latest Browse all 849

Usporedba sigurnosnih rizika Apache i IIS web servera

$
0
0



Sigurnosni problemi u racunalnim programima i operativnim sustavima podrucje je na kojem CARNet CERT kontinuirano radi.

Rezultat toga rada je i ovaj dokument, koji je nastao suradnjom CARNet CERT– a i LS&S–a, a za koji se nadamo se da ce Vam koristiti u poboljšanju sigurnosti vašeg sustava.


Quote:

Dokument je izdan prije par godine i moze nam posluziti kao osnov za daljnu diskusiju. Pozivam sve koji su zaintertesovani za diskusiju bez obzira koliko su upoznati sa radom web servera.

Donekle sam upoznat sa radom Apache web servera dok sa IIS veoma slabo ali vjerujem da cemo zajednicki uspjeti razviti jednu korisnu diskusiju.

http://security.lss.hr/documents/Lin...008-09-239.pdf
http://www.carnet.hr/

1. Uvod

Apache i Microsoft Internet Information Server (IIS) su dva danas najzastupljenija web poslužitelja, kojima je
funkcija rukovanje web sadržajem. Može se reci da web poslužitelj prima zahtjeve korisnika (od njegovog
web klijenta) te na temelju tog zahtjeva i prethodno definiranih pravila oblikuje web stranicu koju dostavlja
korisniku (njegovom web pregledniku). Istraživanje provedeno u veljaci 2008. godine otkriva da na Internetu
postoji oko 160 milijuna web stranica. Usprkos tome što je Microsoft glavni proizvodac programskih rješenja
na mnogim poljima, kada su u pitanju web poslužitelji, Apache je uspio napraviti kvalitetan besplatan web
poslužitelj koji svojim tehnickim mogucnostima ne zaostaje za IIS-om pa je cest izbor administratora. U prilog
toj tvrdnji stoji i cinjena da više od polovice Internetskih stranica opslužuje neka od inacica Apache web
poslužitelja..

Prema istraživanju kompanije Netcraft, na Internetu je u veljaci 2008. godine postojalo 158,209.426 web
stranica, što je povecanje od 2,6 milijuna u odnosu na sijecanj. Od toga, njih 50,93% koristi Apache
poslužitelj, dok 36,20% koristi IIS (slika 1). Dakle, oko 87% svih web stranica poslužuje jedan od ova dva
poslužitelja.

Ovi podaci namecu logicno pitanje svim administratorima: koji poslužitelj izabrati? Jedna od važnijih stvari
prilikom odabira svakako bi trebala biti i razina sigurnosti koju pojedini poslužitelj pruža. Ovaj dokument
objašnjava sigurnosne aspekte pojedinog poslužitelja, daje usporedba sigurnosnih rizika ova dva poslužitelja
te osnovne savjete kako povecati sigurnost, bilo da se radi o IIS-u ili Apache web poslužitelju.


Slika 1. Zastupljenost web poslužitelja u svijetu (izvor: Netcraft)


Revizija 1.12 CCERT-PUBDOC-2008-09-239 Stranica 4/23



2. Povijesni razvoj

2.1. Razvoj Microsoft IIS poslužitelja

Prvi Microsoftov web poslužitelj napravljen je još davne 1995g. kao znanstveni projekt za European
Microsoft Windows NT Academic Centre (EMWAC) i bio je distribuiran kao besplatan paket. Kako se
EMWAC nije mogao zadovoljavajuce nositi s velikom kolicinom prometa prema microsoft.com web
stranici, Microsoft je morao sam razviti vlastiti web poslužitelj – IIS za svoj tadašnji operativni sustav
Windows NT 3.51. 1996.g. izlazi Windows NT 4.0 sa novim IIS 2.0, a 1997. izlazi „Service pack 3“ zakrpa s
podrškom za IIS 3.0. Ova inacica web poslužitelja je po prvi puta imala ugradenu podršku i za obradu
dinamickih stranica - Active Server Pages (ASP). 1998. izlazi IIS inacice 4.0, takoder kao nadogradnja za
Windows NT 4.0 operacijski sustav i donosi unaprijedeni ASP (inacicu 2.0). U istoj verziji izbacena je
podrška za Gopher protokol , koja se mogla preuzeti kao zasebni modul. Godine 2000. Microsoft
objavljuje operacijski sustav „Windows 2000“ s integriranim IIS 5.0 web poslužiteljem, koji sada u sebi
ima poprilican niz novih tehnoloških mogucnosti (podrška za ASPI i CGI, modul za obradu XML sadržaja i
dr), ali i prvi put znacajnija poboljšanja na razini sigurnosti. Jedna od znacajnijih novina u inacici 5.0,
koju koriste i kasnije inacice IIS-a, jest podrška za nekoliko autentifikacijskih mehanizama:


• Basic access authentication

• Digest access authentication

• Integrated Windows Authentication

• NET Passport Authentication

2003. godine na tržištu se pojavljuje operacijski sustav „Windows Server 2003“ s podrškom za novu
inacicu IIS poslužitelja (6.0), a 2008. godine i „Windows Server 2008/Vista“ s IIS 7.0 web poslužiteljem.
Najnovija inacica IIS-a (7.0) istice se po jednoj novoj karakteristici, a to je modularna arhitektura. Za
razliku od monolitnog servera koji pogoni sve servise, IIS 7.0 koristi tzv. core web server engine. To znaci
da se moduli za razlicite funkcije mogu jednostavno dodati po potrebi, a to je velika prednost u
ocuvanju resursa, ali i sa stajališta sigurnosti jer se koriste samo oni moduli (funkcije) koje su stvarno
potrebne. IIS 7.0 inicijalno dolazi s vecinom modula koji su korisniku potrebni, a postoji i mogucnost
preuzimanja dodatnih modula s javnih Microsoftovih poslužitelja. Moduli koji dolaze u „osnovnoj“
instalaciji, a vezani su na sigurnost su:

1. HTTP Modules – osnovni modul za rukovanje HTTP (eng. Hyper Text Transmission Protocol)
paketima

2. Security Modules –skupina modula koja implementira sigurnosne elemente web
poslužitelja. Sadrži module za:


  • autorizaciju korisnika, kao npr: AnonymousAuthModule, BasicAuthModule, WindowsAuthModule),
  • module za rukovanje certifkatima: CertificateMappingAuthenticationModule, DigestAuthModule, i


  • module za upravljan vezom: UrlAuthorizationModule i RequestFilteringModule


3. Content Modules – skupina modula za oblikovanje sadržaja

4. Compression Modules – moduli za komprimiranje i optimizaciju web sadržaja

5. Caching Modules – moduli koji se koriste za optimizaciju dohvacanja sadržaja prema
trenutnim zahtjevima klijenata

6. Logging and Diagnostics Modules – služe za bilježenje aktivnosti web poslužitelja, akcija
udaljenih klijenata (prijava, zahtjeva za stranicama, pokušajima autorizacije) te
dijagnosticiranju nepravilnosti u radu poslužitelja. U ovu skupinu modula pripadaju:
  • CustomLoggingModule,
  • FailedRequestsTracingModule,


Revizija 1.12
CCERT-PUBDOC-2008-09-239 Stranica 5/23



  • HttpLoggingModule,
  • RequestMonitorModule i
  • TracingModule


Iako se na prvi pogled cini znatno složenija, ova „nova“ arhitektura zasnovana na modulima se pokazala
kao pozitivan pomak u izradi web poslužitelja. Razlog tome, sa stajališta sigurnosti, je prvenstveno u
tome da je lakše definirati, oblikovati i ispitivati manje cjeline (u ovom slucaju module) te poslije te iste
povezivati u cjelinu umjesto da se oblikuje jedan „veliki“ sustav sa svim ukljucenim funkcionalnostima.

2.2. Apache kroz povijest

Prvu verziju Apache web poslužitelja izradio je Rober McCool 1995 godine., kada je nakon odlaska iz
NCSA (1994.) zajedno s nekoliko istomišljenika (Apache grupe) osmislio i izradio Apache HTTP
poslužitelj. Prva javno dostupna inacica - 0.6.2, zasnovana je bila na NCSA httpd 1.3 poslužitelju. Apache
je bio prva jaca alternativa tadašnjem programskom rješenju: „Netscape Communications Corporation
web server“. U pocetku, Apache je bio veliki hit zbog svoje jednostavnosti, efikasnosti i naravno cijene
(besplatan, otvorenog koda), što dokazuje cinjenica da je do sredine 1996. bio najpopularniji web/
poslužitelj. Popularnost 1.3.x inacice Apache web poslužitelja vidljiva je i danas kada veliki broj
administratora kojima nisu neophodne novine „modernih“ web poslužitelja radije biraju posljednju

1.3.x inacicu Apache-a nego neki noviji poslužitelj. Razlog tome, uz niske zahtjeve za resursima, je
svakako sigurnost, koja je kroz brojne iteracije ispravaka i optimiziranja dovedena na vrlo visoku razinu.
Dakle, proizvodac (Apache razvojni tim) novu inacicu objavljuje samo u svrhu uklanjanja sigurnosnih
propusta, što je sve rjede i rjede.
2002. izlazi verzija Apachea 2.0, koja donosi brojne novine, uz cinjenicu da je gotovo sav programski kôd
ponovno napisan (neki izvori tvrde da je cak 90% kôda izmijenjeno). Od glavnih novina mogu se
izdvojiti:

• Threading – Apache sad može raditi i na racunalima s više procesora i/ili jezgri rasporedujuci
zadatke na raspoložive resurse. novina za sada je dostupna samo za Linux/Unix okruženja, dok se
za Windows inacice to tek ocekuje.

• New Apache API – mnogi problemi s modulima za prioritete i poretke obavljanja procesa, koje su
bile problem u inacicama 1.3, su uklonjeni. Rezultat toga je povecanje efikasnosti i fleksibilnosti
poslužitelja

• IPv6 Support – ugradena podrška za novi Internet protokol – inacicu IPv6
• Better support for non-Unix platforms – dizajneri i programeri nove inacice Apache web
poslužitelja posebnu pažnju posvetili su i Windows okruženju tako da se sada puno bolje koriste
naredbe operacijskog sustava (npr. API funkcije) i raspoloživi resursi (pravo na procesor,
memorija)

• Simplified configuration – mnoge zbunjujuce naredbe za podešavanje su pojednostavljene
Po pitanju sigurnosni, strucnjaci koji razvijaju Apache, svakom novom inacicom donose neke novitete
kako bi unaprijedili sustav zaštite bez narušavanja performansi ili mogucnosti poslužitelja. Tako je u
posljednjoj inacici (2.2), objavljenoj u prosincu 2005. godine, uvedeno:

• Smart Filtering – sustav za obradu upita, koji sada uzima više parametara u obzir prilikom
donošenja odluke o daljnjim akcijama (zahtjev korisnika, varijable okoline, prethodni upiti i sl.)

• Proxying – promjene u nacinu korištenja resursa prilikom rada kao proxy poslužitelj

• Caching – poboljšanja u balansiranju opterecenja pojedinog servisa

• Authn/Authz – preraspodjela funkcija medu modulima mod_auth_basic, mod_auth_db
mod_authn_file te dodavanje novog modula za rad s simbolickim vezama - mod_authn_alias
Trenutna inacica – 2.2.9 ne donosi bitna tehnicka poboljšanja u odnosu na inacicu 2.2.0, ali zato donosi
niz ispravaka uocenih problema, pa se svakako preporuca njeno korištenje.

Revizija 1.12
CCERT-PUBDOC-2008-09-239 Stranica 6/23



3. Tehnicke karakteristike

3.1. Okruženje za izvršavanje

Usporedujuci IIS i Apache web poslužitelje može se reci da rade na vrlo razliciti nacin, tako da se može
reci da svaki ima svojih prednosti i mana, tj. razloga da ga se odabrati, ili ne. IIS je prvenstveno
dizajniran, i dostupan je jedino u inacici, za MS Windows okruženja. S verzijom IIS 6.0 jedina platforma
koja je podržana je Windows Server 2003 (2k3). Iako je to ogranicenje platforme IIS-u veliki hendikep,
istodobno omogucava i brojne prednosti u vidu bolje kooperacije s operativnim sustavom, lakšu
administraciju i kontrolu kroz niz standardnih alata samog Windows operacijskog sustava.

U IIS 6.0, kooperacija operativnog sustava i samog web poslužitelja jaca je nego ikada prije. Za razliku
od prethodnih inacica, komponenta zadužena za primanje zahtjeva od klijenata i ona za obradu
pristiglih zahtjeva, sada su dvije razdvojene komponente.

Modul jezgre zadužen za primanje zahtjeva - Kernel mod (Http.sys), osluškuje i prihvaca zahtjeve
klijenata, postavljajuci zahtjeve u jedan ili više redova cekanja. IIS potom obraduje zahtjeve iz redova
po principu FIFS (eng. First In First Served) koristeci barem jedan „radni“ proces (proces koji obraduje
pojedini zahtjev) da kontrolira izvršenja pojedinacnih zahtjeva i aplikacija. Na primjer ako poslužitelj
dobije pet zahtjeva za nekom web stranicom i ima na raspolaganju 2 procesora, Kernel mod je taj koji
ce prva dva zahtjeva proslijediti procesoru na obadu, a preostale staviti u red cekanja. Kada se neki
zahtjev obradi, Kernel mod modul ce iz reda cekanja aktivirati slijedeci zadatak i predati ga na obradu.
Ako se pojavi novi zahtjev, isti ce biti postavljen na kraj reda cekanja. Kernel mod završava svoj posao
kada više ne postoji niti jedan zahtjev koji ceka na obradu.

Ovaj razdvojeni proces omogucuje zahtjevima da budu prihvaceni i u slucajevima kada procesi za
obradu zahtjeva nisu aktivni i takoder omogucuje finiju kontrolu radnih procesa koji upravljaju
zahtjevima. Na taj nacin administrator (ili poslužitelj automatski) mogu ponovno iskoristiti zahtjeve u
slucaju aplikacijskih grešaka za koje bi prethodno bilo potrebno gašenje i ponovno pokretanje IIS
servisa ili, u iznimnim slucajevima, ponovno pokretanje cijelog servera.

Glavni potez za Apache 2.0 je bilo ponovno pisanje dijelova koda iz prethodnih verzija. Medu brojnim
promjenama, poslužitelj je sada dostupan izravno na razlicitim platformama, ukljucujuci (Windows,
Linux/Unix). Redizajn poslužitelja omogucio je optimizaciju korištenja posebnosti pojedinog
operacijskog sustava, a sve u svrhu boljeg iskorištavanja raspoloživih resursa.

Središnji dio sustava je Apache Portable Runtime (APR), koji omogucuje Apache jezgri da radi više manje
na svakom sustavu koji ima prevoditelj programskog jezika C. Skupina multiprocesnih modula
(MPMs) pruža potporu za stvarno prihvacanje i obradu pojedinog zahtjeva. Pod Unix-zasnovanim
operacijskim sustavima, to može biti tradicionalni model zasnovan na procesima i podprocesima (eng.
forked model) ili novi model koji koristi dretve za paralelnu obradu (eng. threaded model). Na
operacijskom sustavu „Windows“ se takoder koristi model temeljen na dretvama, koji je u nekim
znacajkama slican modelu kojeg koriste radni procesi IIS-a. Tablicni prikaz tih znacajki vidljiv je u
tablici 1.

Viewing all articles
Browse latest Browse all 849

Trending Articles