Odbranite sajt od napada

фебруар 3, 2019
Aleksandar Gazibara

Ako ste vlasnik ili radite kao webmaster (developer) na manjem ili nesto većem sajtu u ovom članku ćete saznati kako da primenite neke jednostavne a ipak vrlo jednostavne metode kako biste se odbranili od potencijalnih napada.

Kako se poboljšava sigurnost?

Sigurnost vašeg sajta možete da poboljšate tako što ćete da detektujete probleme, da zabranite pristup potencijalnim napadačima, te da izbegnete manje napade koje izvode botovi ili manje ozbiljni napadači.

Moguća rešenja

Ima raznih modula koje možete da koristite kako biste poboljšali sigurnost vašeg sajta i vrlo često se ova rešenja koriste paralelno, dakle više od jednog istovremeno.

To su:

  • Firewall / iptables – prevencija na nivou IP saobraćaja
  • CDN – detekcija i prevencija korišćenjem eksternih servisa
  • Fail2Ban, MOD_EVASIVE – detekcija i banovanje
  • MOD_REQTIMEOUT, MOD_SECURITY – detekcija i izbegavanje

Fail2Ban

Fail2Ban je efikasan program koji služi za prevenciju mogućih brute-force napada, čija je instalacija vrlo jednostavna.

Fail2Ban traga za potencijalnim prekršiocima i prepoznaje sumnjiv saobraćaj tako što analizira logove i primenjuje prethodno definisane akcije.

Na primeru ispod vidite osnovnu konfiguraciju Fail2bana koju možete da podesite pomoću Fail2ban jail.local fajla. Dakle, ne menja se Fail2ban jail.conf.

Za SSHD jail je definisan dodatni port (2202), jer je to ponekad potrebno. Apache jail je uključen bez dodatnih modifikacija.

Modsecurity jail je uključen, a broj dozvoljenih ponovnih pokušaja (maxretry) je sveden na 1.

MySQL jail je dodat uz promenjeni logpath. Dakle, ako iz bilo kog razloga log nije na podrazumevanoj lokaciji, možete da navedete bilo koju drugu.

Recidive jail je takodje uključen. Ovaj jail je specifičan po tome što ne pregleda logove aplikacija već samo logove Fail2Bana.

Na primer, ako je neko banovan više puta Recidive će to da detektuje i da ga banuje na mesec dana. Ovu vrednost naravno možete da promenite tako da zabrana bude duža ili čak trajna.

Takodje, Fail2Ban ima svoj klijent koji možete da koristite kako biste brzo proverili status svih jailova.

Evo primera loga koji je Fail2Ban napravio posle dva dana.

Uglavnom se radi o akcijama koje je izveo Recidive banujući uporne napadače, gde se pokazao kao izuzetno koristan alat.   

MOD_EVASIVE

MOD_EVASIVE je Apache modul koji se koristi za zaštitu od manjih i srednjih DDoS napada. Kao i kod Fail2Ban-a instalacija je vrlo jednostavna.

Zatim, kao i Fail2Ban, MOD_EVASIVE pregleda i analizira saobraćaj i banuje prekršioce na taj način što prekida konekcije (drop).

Može da se podesi tako da banuje preko iptables programa ili nekog drugog firewall-a, ali i čak je i njegov osnovni mehanizam za banovanje dovoljno efikasan za manje napade.

Njegova osnovna konfiguracija je dobra za manje i srednje sajtove.

  • DOSPageCount po default-u je podešen na 2, što znači da je za svaku IP adresu dozvoljeno maksimalno 2 zahteva po sekundi (podešava se pomoću parametra DOSPageCount Interval). Kada je ovo ograničenje prekoračeno, IP adresa će biti blokirana. Ovu vrednost možete da prilagodite u zavisnosti od toga šta je za vaš sajt normalna količina saobraćaja kako biste izbegli nepotrebno blokiranje dobronamernih posetilaca.
  • DOSSiteCount je podešen na 50 i označava maksimalni dozvoljeni broj zahteva za jednu stranu sa odredjene IP adrese, po sekundi (podećava se pomoću parametra DOSSiteCount Interval).
  • DOSLogDir prikazuje adresu do log fajla u kome se nalaze informacije o napadima ukoliko ih je bilo.
  • DOSWhitelist – služi za definisanje svih IP adresa koje treba da budu izuzete od ovih pravila i koje nikada neće biti blokirane; kao jednu od IP adresa možete da navedete poznate crawlere (na primer Google, Yandex, Microsoft, etc) kako biste izbegli njihovo blokiranje.

Jedno od bitnih ograničenja koja važe za MOD_EVASIVE je to što on besprekorno funkcioniše na svim verzijama Apache-a do verzije 2.2. Već na Apache-u 2.4 više ne radi tako dobro zbog načina na koji Apache rasporedjuje konekcije.

MOD_SECURITY

MOD_SECURITY je open source WAF, odnosno Web Application Firewall, koji takodje ima jednostavnu instalaciju, nakon čega ga konfigurišete pomoću conf.d na Apache-u.

Kao i Fail2ban, MOD_SECURITY analizira saobraćaj i primenjuje akcije na osnovu pravila koja su definisana putem regularnih izraza. Razlika u odnosu na ostale programe je to što u slučaju da je detektovao sumnjivo ponašanje MOD_SECURITY ne banuje, već prekida konekciju.

MOD_SECURITY ima svoj open source modul koji se zove OWASP, koji se takodje jednostavno instalira i dovoljno je dobro rešenje jer rešava većinu potencijalnih sigurnosnih problema.

Na primeru ispod možete da vidite dva blokirana pokušaja SQL injection napada, kao i Googlebot-a koji je posetio wp-login.php stranu, što je popularna meta na internetu.

MOD_REQTIMEOUT

MOD_REQTIMEOUT je malo stariji Apache modul koji se koristi za sprečavanje sporih HTTP napada (slow attack). Kada HTTP zahtev nije kompletan ili kad je prenos podataka spor, server rezerviše resurse čekajući na ostatak podataka. Kada broj konekcija dosegne maksimum, to prouzrokuje DDoS.

MOD_REQTIMEOUT je modul koji dolazi uz Apache, ali u novijim verzijama (od verzije 2.3) nije odmah uključen nakon instalacije.  

Glavna funkcija ovog modula je da ne dozvoli da neko otvori konekciju i da je nikada ne zatvori. Da bi ovo sprečio, MOD_REQTIMEOUT prekida konekciju ka serveru.

Spori napadi napadi su opasni jer za njih nije potrebno mnogo resursa i zbog toga je ovaj modul veoma važan. Konfiguracija ovog modula je izuzetno jednostavna.

U primeru iznad podeseno je da klijent ima 10 sekundi na raspolaganju da zahteva header i body. Ukoliko klijent isporuci 500 bajtova, vreme će biti produženo za jednu sekundu, a imaće maksimalno 20 sekundi da isporuči sve podatke, u modsuprotnom konekcija će biti prekinuta.

Firewall

Do sada smo opisivali probleme koji su doprli do Apache-a, a sada ćemo se pozabaviti time kako da pomoću Firewall-a koji je dobro konfigurisan jednostavno ne propustite loš saobraćaj i prekinete ga u startu.

Koristeći firewall možete da zaustavite primanje nevalidnih paketa, kao i da prekinete konekcija koje nemaju SYN flag. Takodje, firewall može da odbaci razne čudne kombinacije flegova, kao pakete sa privatnih mreža na javnom interfejsu (spoofed packets).

Firewall može da ograniči broj novih konekcija po IP-u, kao i broj novih TCP konekcija po sekundi za odredjeni IP.

Konačno, firewall može da ublaži SYN flood napad, posebnu vrstu napada pri kome napadač šalje veliku količinu SYN zahteva s namerom da zauzme toliko resursa na serveru da onemogući njegovo dalje normalno funkcionisanje.

IP adresu koja vam je sumnjiva možete da blokirate i na mCloud portalu. Unutar strane za podešavanje vašeg servera izaberite opciju Firewall iz menija Mreža. Ovo ipak neće pomoći ako se radi o DDoS napadu gde se može raditi o hiljadama IP adresa.

Unesite IP adresu i dodajte je kao novo pravilo. Saobraćaj sa te IP adrese neće više stizati do vašeg servera već će se završavati na hipervizoru.

Ukoliko ste trenutno napadnuti, uvek možete da proširite resurse i da na taj način ublažite problem ili da čak dodate novu IP adresu i predjete na nju.

CDN: Cloudflare

Ukoliko ne želite sami da se bavite zaštitom svog sajta, možete taj posao da prepustite nekom CDN-u (Content Delivery Network).

U tom slučaju vaš saobraćaj će ići preko CDN-a koji će da vodi računa o prevenciji DoS napada.

Jedno od najboljih rešenja je Cloudflare koji ima jednostavan interfejs i besplatan je za lične sajtove i blogove. DNS serveri su im brzi i imaju mnogo lokacija sa kojih mogu da isporučuju sadržaj.  Pogledajte u članku Cloudflare – podešavanje i benefiti neka osnovna podešavanja.

Bez komentara

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *

mCloud mailing lista
Da li želiš da se prijaviš na mCloud mailing listu i svake nedelje dobijaš informacije o našim tekstovima na blogu i novostima iz mCloud-a?
Nemoj više prikazivati