Zaštita od DoS-a u Apacheu s mod cband - prednosti i mane

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Monika Cerjak i Martina Granić



Sadržaj

Uvod

Razvojem i dostupnošću tehnologija, mnogi su svoja poslovanja odlučili raditi koristeći Internet, ali i "obični korisnici" sve više koriste Internet kako bi doznali različite informacije, kupili proizvode i sl. Svi ljudi nemaju dobre namjere pa tako postoje i oni koji iz nekog razloga (profit, ego i sl.) napadaju stranice kako bi ukrali tuđe osodbne podatke, tajne podatke, onemogućili drugima da dođu do informacija ili naprosto onemogućili rad online uslugama.

Svaki napad na neku uslugu ne mora nužno biti DoS/DDoS napad jer onemogućavanje rada neke usluge ili sustava moguće ostvariti i na druge načine. Međutim, DoS napad može biti dio, odnosno jedan od nekoliko načina kojim se napadači koriste kako bi postigli svoj cilj. To je vrsta napada odnosno eksplicitni pokušaj napadača, kojim pokušava običnim, normalnim korisnicima sustava onemogućiti korištenje usluge.

DoS napad

DoS (Denial of service) napadima se računalne mreže preopterećuju s velikim brojem zahtjeva što uzrokuje usporavanje ili potpuno prekidanje normalne komunikacije između servisa i regularnih korisnika. To se radi na nekoliko načina. Jedan od njih je flood mreže čime se preoptereti mrežni promet, drugi je ometanje veze između dva računala, treći je onemogućavanje točno određenom pojedincu pristup stranici (usluzi), četvrti je ometanje rada usluge osobi ili na sustavu i posljednji uključuje zatrpavanje procesora na serveru sa SQL upitima koji uzimaju puno procesorskog vremena, odnosno namjerno zauzimaju resurse kako bi se server srušio. To se ne mora odnositi samo na CPU, resursi na koje napadači ciljaju mogu biti i mrežna propusnost, RAM, način obrade iznimaka, tvrdi disk, popunjavanje baze podataka, buffer overflow, mijenjanje podataka kako bi došlo do neočekivanih iznimki, SQL injection, upload jako velikih datoteka, modificiranje načina na koji se dretve natječu za procesorsko vrijeme u višedretvenim sustavima i preopterećivanje pool-a za konekciju na bazu/baze.

(Ne)zgodna stvar kod DoS napada je da napadač sa puno slabijom vezom i računalom može onesposobiti puno veće i jače računalo i mreže na kojima se vrte aplikacije i servisi (asimetrični napad). Za razliku od crva i trojanaca koji uzrokuju otkrivanje, štetu i slanje informacija o sustavu napadaču, DoS napad može ometati mrežnu uslugu kroz duži vremenski period. Primjer ove vrste napada su tzv. "Ping of Death" i "Teardrop" napadi koji koriste ograničenost TCP/IP protokola. Napad je relativno lako implementirati, pa zbog toga postoji mnogo vrsta i ovakvo ometanje web servera je jako često. Razlog tome je način uspostave komunikacije između klijenta i servera koji se u normalnom slučaju odvija na način da korisnik najprije pošalje poruku koju server mora autenticirati i korisniku poslati odgovor o odobravanju. Kada korisnik primi poruku o odobravanju, može početi komunikacija. Programi koji iskorištavaju nedostatak ove vrste uspostave komunikacije rade sljedeće: korisnik (napadač) šalje nekoliko zahtijeva za uspostavom komunikacije, ali umjesto vlastitog IP-a šalje lažnu adresu na koju server odgovara, zbog čega server odlazi u timeout, odnosno odluči neko vrijeme pričekati na odgovor (koji nikada neće stići), a napadač u međuvremenu šalje još lažnih zahtijeva. Primjer prethodno navedenog bi bio "Ping napad" kojim se koristi naredba ping, tj. šalje se ogroman broj ping paketa, a budući da je napadač lažirao adresu na koju dolazi ping odgovor, server će čekati na TCP/SYN-ACK paket zbog čega će na serveru ostati otvorena veza. Povećavanjem otvorenih veza se zauzimaju računalni resursi na serveru i smanjuje se mogućnost spajanja legitimnih korisnika.

Najčešće žrtve ovih napada su pružatelji raznih internet usluga te online poslovi tvrtki što uzrokuje direktne i indirektne štete za tvrtke. Direktna šteta su troškovi koji se očituju kroz gubitak novca i/ili potrebu za ulaganjem u računalnu mrežu, a indirektna šteta je gubitak ugleda, vjerodostojnosti, sposobnosti i povećani operativni troškovi. Ovom vrstom napada se osim onemogućavanja normalnog rada servera i nanošenja štete vlasniku servera i aplikacija, može i zaraditi novac. Tako je primjećeno kako napadači jednom kada uspješno flood-aju server koriste ucjenu kako bi zaradili ili će u protivnom jednostavno nastaviti s onemogućavanjem rada. Osim ucjene koristi se i sabotaža ukoliko su napadače unajmili konkurenti tvrtke čiji je server napadnut.

DoS mc.jpg
Slika 1: DoS napad

Razlika između DoS i DdoS (peer-to-peer) napada je ta što DDoS napade vrši više računala zaraženih trojancima ili virusima koje nazivamo zombijima (svi djeluju po istoj naredbi i imaju jedan cilj), dok DoS napad izvršava samo jedno računalo. Tri osnovna tipa DoS napada su iskorištavanje i preopterećivanje ograničenih resursa, uništavanje ili promjena konfiguracijskih podataka i fizičko uništavanje ili promjena postavki mrežnih uređaja.

Zaštita od DoS napada

Zaštita od ove vrste napada se ostvaruje pomoću alata za prepoznavanje DoS-a koji mogu preusmjeravati dolazne zahtjeve za uslugom na neki drugi mrežni resurs koji je manje opterećen, filtriranjem paketa i uočavanjem uzoraka (ponavljanja sumnjivih zahtjeva) - "sniffer", koji sve navedeno obavi prije nego zahtjevi dođu do web servera. Problem s kojim se ovi alati suočavaju je kako pravilno filtrirati, jer ukoliko odsijeku krivu komunikaciju prekinuti će komunikaciju legitimnog korisnika i servera. Zbog toga je potrebno klasificirati komunikaciju i detektirati anomalije, a istovremeno ne ometati normalnu komunikaciju. Jedna od mogućih podjela komunikacije može biti na normalni promet, napadački promet i sumnjivi promet, zbog pojavljivanja uzoraka. (Sumnjivi promet se ne blokira odmah jer ga slučajno ili zbog problema u vezi može prouzročiti legitimni korisnik.

Osim navedene vrste alata potrebno je i implementirati filtere na ruterima kako bi se spriječio TCP_SYN flood-ing, također instalirati zakrpe za OS ukoliko već nema zaštitu od TCP_SYN flood-inga, isključiti sve nepotrebne mrežne servise čime se smanjuje raspon mogućnosti na koji napadači mogu upasti na server, redovito pratiti ponašanje računala odnosno zauzeće memorije, diskova, procesora i mreže, obavljati rutinske provjere fizičke sigurnosti mrežnih uređaja, koristiti alate koji će alarmirati i dojaviti promjene u konfiguracijskim datotekama, uložiti u rezervnu mrežnu opremu koja se može brzo instalirati i zamijeniti ukoliko dođe do kvara na postojećoj opremi, postaviti redundantnu mrežnu konfiguraciju, uspostaviti i održavati redoviti backup i backup politike, te politike lozinki, pristupa i ovlaštenja računa.

Apache Web Server

Apache mc.png
Slika 2: Logo Apache Web Servera

Apache Web Server je Web Server otvorenog koda kojeg se često zove skraćeno samo Apache. Razvijen je 1995. godine, a temeljio se na NCSA httpd Web server. Iako je razvijen od grupe programera nazvanih Apache Group, programski kod je otvorenog tipa što znači da svako može prilagoditi server svojim potrebama, a također postoji i ogromni javni library za Apache dodatke (add-ons). Originalna verzija Apache-a rađena je za UNIX, ali danas ga se može pokrenuti na OS/2, Windowsima te ostalim platformama. Apache web server bio je prva alternativa Netscape Communications Corporation web serveru, trenutno poznatom kao Oracle iPlanet Web Server te je otada dominantan u odnosu na ostale web servere po funkcionalnosti i performansama. Od 1996. godine Apache je bio najpopularniji HTTP server softver u upotrebi, a od jeseni 2012. godine, procijenjeno je da poslužuje 54,98% svih aktivnih web stranica.

Samo ime Apache dobio je prema indijanskom plemenu Apache koji su bili poznati po izdržljivosti i vještini ratovanja. Kako je razvijen od postojećeg NCSA koda, s dodatnim zakrpama odnoso patchevima, često se misli da je ime dobio od patchy server.

mod_cband

Mod cband mc.png
Slika 3: Logo mod_cband-a

Kako bi se Apache prilagodio našim potrebama, postoje razni moduli kojima omogućujemo ili onemogućujemo određene „aktivnosti“ koje na ovaj ili onaj način utječu na rad servera. Što se tiče problema propusnosti, postoji modul za Apache 2 koji se zove mod_cband (ne radi s Apache 1.3.X). Mod_cband je modul koji rješava problem ograničavanja propusnosti uporabe za korisnike, virtual host-ove i destinacije. Radi na način da preusmjerava sve daljnje zahtjeve na lokaciju navedenu u konfiguracijskoj datoteci u slučaju da konfguracijski prijenos prijeđe granicu. Ovaj modul mogu koristiti tvrtke koje se bave hostingom budući da pomoću ovog modula se može ograničiti brzina skidanja (preuzimanja) datoteka za njihove korisnike (npr. 10 GB prometa na mjesec). Autor članka o kontroliranju propusnosti preporuča instaliranje modula mod_cband ako vaš server pruža uslugu skidanja ili „streamanja“. Navodi kako je pogodnost korištenja ovog modula pravda za sve: vlasnik servera može kontrolirati propusnost uporabe i ograničiti brzinu skidanja korisnika te imati kontrolu nad uporabom memorije na serveru, a za korisnika to znači visoku dostupnost poslužitelja te niti jedan korisnik ne dominira sam nad propusnošću.

Prema korisnicima Apache servera, instalacija modula mod_cband je vrlo jednostavna. Potrebano je najprije istalirati mod_cband za korisnikovu platformu te kreirati konfiguraciju za Apache kako bi se mod_cband mogao učitati. Zatim je potrebno kreirati /etc/apache2/cband-limit.conf kako bi definirali granične stope za vhosts (virtual hosting) te nakon toga dodati cband-ograničenje za svakog vhosta. Nakon toga, potrebno je ponovno pokrenuti server.

Primjer nedostupnosti stranice zbog velikog broja korisnika:

Goodreads.png
Slika 4: Primjer nedostupnosti stranice


Kako bismo zaštitili Apache server od DoS napda, uz mod_cband koji, kako je već ranije navedeno služi tome da ograničava propusnost korištenja servera, preporuča se korištenje još jednog modula, a to je mod_evasive koji otkriva napade koristeći različite metode za otkrivanje.

Praktični dio

CloudFlare

O CloudFlare-u

Najjednostavnije rečeno, CloudFlare je usluga koja radi jednu stvar, a to je da čini web stranice boljima. Nudi zaštitu od napada i ubrzanje web stranica usmjeravanjem zahtjeva kroz njihovu mrežu.

CloudFlare može koristiti svatko tko posjeduje web stranicu i vlastitu domenu, bez obzira na platformu. Dodavanje web stranice zahtjeva samo promjenu vaših DNS postavki. Nije potrebna instalacija hardvera ni softvera, kao ni mijenjanje postojećeg koda.

CloudFlare sprema sadržaj vaših web stranica na lokacijama diljem svijeta. Koristi DNS (domain name system) da usmjeri vaše zahtjeve na jednu od tih lokacija, ovisno o raznim faktorima. Kako bi podržavali ovu tehnologiju unutar DNS ograničenja, najbolje je koristiti ime hosta (npr. www.example.com) umjesto svoje domene apex (npr. example.com).

CloudFlare je izgradio novu generaciju CDN-a (content delivery network). Njihova tehnologija ima prednost u odnosu na nedavne promjene u hardveru, web server tehnologiji i mrežnom preusmjeravanju. Osim toga, smanjuje se broj skokava i latencija.U prosjeku,zahtjevu treba manje od 10 skokova i potrebno mu je 30 ms. Rezultat je lakše postavljanje, bolja pristupačnosti i performanse.

CloudFlare djeluje u 23 podatkovna centra diljem svijeta. Njihovi CDN –ovi automatski spremaju vaše statičke datoteke na rubne čvorove tako da su ove datoteke spremljene bliže posjetiteljima dok isporučuju vaš dinamički sadržaj direktno sa vašeg web servera. Rezultat toga je, u prosjeku, dvostruko brže učitavanje web stranice, bez obzira gdje se nalaze.

CDN cloudflare.PNG
Slika 5: CloudFlare-ovi podatkovni centri

Kreiranje CloudFlare računa

Kako bismo koristili CloudFlare, potrebno je otići na njihovu stranicu CloudFlare-a te u gornjem desnom uglu potražiti Sign up. Nakon što kliknemo na Sign up, otvara nam se stranica za kreiranje računa.

1 mc.PNG
Slika 6: Create an account

Prvi korak kreiranja traži nas da na označena polja unesemo svoju email adresu, ponovno je unesemo zbog potvrde te zatim na isti način moramo unjeti lozinku te na kraju označiti da se slažemo s pravilima korištenja i kliknemo na Create account now. Nakon što se kreirao račun, sljedeći korak je unošenje web stranice koju želimo zaštiti pomoću CloudFlare-a. Nakon unosa stranice u predviđeno polje, potrebno je kliknuti na +Add website kako bismo prešli na sljedeći korak.

2 mc.PNG
Slika 7: Select a website

U sljedećem koraku, CloudFlare skenira podatke te nakon što je gotov označavenjem ili odznačavanjem oblačića u tablici sa skeniranim podacima aktiviramo ono što želimo da Cloudflare zaštiti. Također, u slučaju da prilikom skeniranja nije pronađeno sve što želimo, možemo ručno dodati unosom podataka i klikom na Add. Za kraj, kliknemo na I'm done entering my DNS records.

Dns mc.PNG
Slika 8: Entering DNS records

U četvrtom koraku kofiguriramo određene postavke poput želimo li koristiti besplatnu verziju CloudFlare zaštite ili verziju koja se plaća. Drugi odabir odnosi se na performanse (CDN only (safest), CDN + basic optimizations (faster), CDN + full optimizations (bleeding edge speed)). Treća postavka odnosi se na sigurnost, a može se odabrati niska, srednja i visoka sigurnost.

4 mc.PNG
Slika 9: Chose initial settings

U zadnjem koraku potrebno je ažuritari vaš DNS server u CloudFlare DNS. Kada je račun kreiran u potpunosti, klikom na kotačić s desne strane, odabirom CloudFlare settings možemo prilagodtiti postavke svojim potrebama. Također je moguće promjeniti DNS settings ili ukloniti stranicu.

Cf.PNG
Slika 10: Updating DNS settings

CloudFlare settings nudi postavljanje opcija kroz tri kategorije (Settings overview, Security settings te Performance settings) te tako odabrati opcije koje smatrate najboljima za zaštitu svoje stranice.

Cfsett.PNG
Slika 11: CloudFlare settings

Korake kreiranja također je moguće pronaći i u obliku video tutorijala na YouTube-u poput ovog.

Prednosti i nedostatci

Neke od prednosti CloudFlare-a su:

1. Unaprijeđenje poslovnja web stranice: CloudFlare-ovi proxy poslužitelji nalaze se u cijelom svijetu. Smješteni su bliže svojim posjetiteljima, što znači da će učitavanje stranica biti brže. Mnoga su istraživanja pokazala da, ukoliko se stranica brže učitava, posjetitelj duže ostaje na njoj.

2. Zaštita od prijetnji: CloudFlare koristi podatke iz Project Honey Pot i drugih neovisnih izvora, kao i podatke iz svoje zajednice, kako bi se identificirale zlonamjerne online prijetnje i zaustavili napadi prije nego dođu do stranice.

3.Zaštita od spam komentara: CloudFlare koristi podatke iz trećih izvora kako bi se smanjio broj neželjenih komentara na stranici.

4. Upozoravanje posjetitelja na zaražena računala: CloudFlare upozorava posjetitelje koji imaju zaraženo računalo da je potrebno poduzeti mjere kako bi očistili neželjeni sadržaj koji imaju na svom računalu.

5. Izvanmrežni način pregledavanja: U slučaju da je server nedostupan, posjetitelj bi uvijek trebao biti u mogućnosti pristupti stranici jer CloudFlare serveri prikazuju web stranice iz svoje privremene memorije.

6. Nisko korištenje CPU – što manje zahtjeva dođe na naš server, to je manje CPU korištenje vašeg računa.

7. Nove statistike o stranici – Osim što CloudFlare može procijeniti dolazeći promet od strane ljudi na vašu stranicu, pomoću njega možete imati i uvid u pretraživače (crawlers) i prijetnje.


Nedostaci odnosno ograničenja u CloudFlare-u su:

1. Zahtjevi moraju biti usmjerni na www.domena umjesto na $domena što znači da treba napraviti određene promjene konfiguracije.

2. Cloudflare može utjecati na interne statističke programe koji čitaju izravno iz Apache dnevnika.

3. Budući da Cloudflare zbog smanjenja opterečenja poslužitelja sprema statički sadržaj web lokacije, postoji kašnjenje prije promjene izgleda ukoliko se napravi promjena postojeće statičke datoteke.

4. Osnovni način rada Cloufdflare-a ne može baratati SSL certifikatima te ukoliko morate koristiti taj certifikat, dio stranice treba biti na poddomeni koja nije zaštićena.

Zaključak

Kako bi neka stranica bila dostupna na internetu, potrebno ju je smjestiti na neki web server, odnosno web poslužitelj. Budući da se na web poslužiteljima nalaze različiti podaci, često važni i povjerljivi, jako je bitna razina sigurnosti koju taj web poslužitelj pruža korisnicima. Odgovarajućim mehanizmima zaštite potrebno je reagirati na veliki broj različitih oblika napada.

Napad koji smo mi obradili u radu je DoS napad, odnosno denial of service attack. To je napad u kojem se računalne mreže preopterećuju s velikim brojem zahtjeva što uzrokuje usporavanje ili potpuno prekidanje normalne komunikacije između servisa i regularnih korisnika. Najčešće žrtve ovih napada su pružatelji raznih internet usluga te online poslovi tvrtki.

Jedan od najpoznatijih web poslužitelja koji se danas u praksi koriste je Apache. Programski kod je otvorenog tipa što znači da svako može prilagoditi server svojim potrebama. Kako bi se Apache prilagodio našim potrebama, postoje razni moduli kojima omogućujemo ili onemogućujemo određene „aktivnosti“ koje utječu na rad servera. Što se tiče problema propusnosti, modul mod_cband rješava problem ograničavanja propusnosti uporabe za korisnike, virtual host-ove i destinacije.

U praktičnom dijelu rada koristili smo CloudFlare, odnosno uslugu koja čini web stranice boljim i to na način da nudi zaštitu od napada i ubrzanje web stranica usmjeravanjem zahtjeva kroz njihovu mrežu. Prikazali smo na koji način kreirati račun i zaštititi web stranicu, te smo naveli neke od prednosi i nedostataka ove usluge. Slika 11. prikazuje na koji način funkcionira CloudFlare.

Slika11.png
Slika 12: CloudFlare

Literatura

Web izvori:

1. http://www.applicure.com/solutions/prevent-denial-of-service-attacks

2. https://www.owasp.org/index.php/Application_Denial_of_Service

3. http://www.petefreitag.com/item/505.cfm

4. http://www.pentics.net/denial-of-service/white-papers/smurf.cgi

5. http://www.f5.com/glossary/denial-of-service.html

6. http://www.cert.org/tech_tips/denial_of_service.html

7. http://news.cnet.com/2100-1017-236728.html

8. http://www.radware.com/Solutions/Enterprise/Security/DoSProtection.aspx

9. http://www.webopedia.com/TERM/A/Apache_Web_server.html

10. http://dembol.org/blog/mod_cband/

11. http://tiki.org/HowToApacheModCbandRateLimiting

12. http://en.wikipedia.org/wiki/Apache_HTTP_Server

13. http://www.novell.com/coolsolutions/feature/19958.html

14. http://toolbar.netcraft.com/site_report?url=http://www.goodreads.com/

15. http://untame.net/2012/06/go-fast-speed-up-your-website-with-cloudflare-cdn/

16. http://support.hostgator.com/articles/specialized-help/technical/cloudflare/what-is-cloudflare-how-do-i-enable

17. http://www.cloudflare.com/features-cdn

18. http://en.wikipedia.org/wiki/CloudFlare


Izvori slika:

1. http://kaleidos.net/weapons/apache-webserver/

2. http://dhstudio.bg/mod_cband.html

3. http://www.pc1news.com/news/0221/botnets-fight-back-with-denial-of-service-attacks-.html

Podjela posla

Monika Cerjak - Uvod, Apache Web Server, mod_cband, Kreiranje CloudFlare računa, Nedostatci CloudFlare-a.

Martina Granić - DoS napad, Zaštita od DoS napada, O CloudFlare-u, Prednosti CloudFlare-a, Zaključak.

Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima