5 највећих безбедносних рупа у инсталацијама ВордПресс-а

Vaša WordPress instalacija može biti sigurna ili nesigurna, u zavisnosti od toga koliko pažnje posvetite njenoj zaštiti. Hajde da razmotrimo pet ključnih aspekata koji su najvažniji za sigurnost vašeg sajta.

Brige i pritužbe u vezi sa sigurnošću WordPressa nisu nikakva novost.

Ako vam je potreban CMS i konsultujete se sa nekim ko se ne bavi WordPressom, sigurnost će biti glavni argument protiv njega. Da li to znači da svi treba da napuste WordPress i pređu na statičke generatore sajtova ili CMS bez glave?

Ne, jer, kao i svaka istina, i ova ima više aspekata.

Da li je WordPress zaista toliko nesiguran?

Pogledajmo neke od velikih web stranica koje su izgrađene pomoću WordPressa:

  • TechCrunch
  • The New Yorker
  • BBC America
  • Bloomberg
  • MTV News
  • PlayStation blog

Šta je to što ove kompanije, sa ogromnim resursima i osobljem, drži pri WordPressu? Ako mislite da je razlog zastareli kod, razmislite ponovo: za ova imena, bezbednost podataka i javni imidž su mnogo važniji od jednostavne migracije koja bi, po mojoj proceni, koštala manje od 200.000 dolara.

Sigurno njihovi inženjeri znaju šta rade i ne vide fundamentalne sigurnosne probleme sa WordPressom koji se ne mogu rešiti?

Čak i ja imam sreću da upravljam WordPress instalacijom koja beleži 3.5-4 miliona poseta mesečno. Ukupan broj sigurnosnih incidenata u poslednjih osam godina? Nula!

Dakle… da li je WordPress siguran?

Izvinjavam se ako ovo zvuči kao trolanje, ali evo mog odgovora:

To kažem zato što je, kao i svaka istina u životu, situacija kompleksna. Da bismo došli do validnog odgovora, prvo moramo razumeti da WordPress (ili bilo koji gotov CMS) nije kao ormar koji negde postavite i zaboravite na njega.

To je složen softverski sistem sa mnogim zavisnostima:

  • PHP, jezik kojim je napisan
  • Javno dostupna mašina koja hostuje instalaciju
  • Web server koji se koristi za obradu posetilaca (Apache, Nginx, itd.)
  • Baza podataka koja se koristi (MySQL/MariaDB)
  • Teme (skupovi PHP, CSS i JS datoteka)
  • Dodaci (skupovi PHP, CSS i JS datoteka)
  • I još mnogo toga, u zavisnosti od toga šta vaša instalacija treba da postigne

Drugim rečima, svaki propust u bilo kom od ovih delova sistema se može nazvati propustom sigurnosti WordPressa.

Ako je root lozinka servera bila admin123 i ako je kompromitovana, da li je to bezbednosna greška WordPressa?

Ako je PHP verzija imala sigurnosnu ranjivost, ili ako je novi dodatak koji ste kupili i instalirali sadržao očiglednu rupu u zaštiti; i tako dalje. Da sumiramo: podsistem zakaže, i to se smatra sigurnosnim propustom WordPressa.

Ne dozvolite da ovo ostavi utisak da PHP, MySQL i Apache nisu bezbedni. Svaki softver ima ranjivosti, a broj tih ranjivosti je neverovatan kada je reč o open-source softveru (jer je svima dostupan za pregled i analizu).

Ono što iz ovoga možemo naučiti jeste:

Ništa nije samo po sebi bezbedno ili nesigurno. Različite komponente čine karike u lancu, a lanac je jak onoliko koliko je jaka njegova najslabija karika. Istorijski gledano, „nesigurnost“ WordPressa potiče od kombinacije starih verzija PHP-a, deljenog hostinga i dodavanja dodataka/tema iz nepouzdanih izvora.

Istovremeno, neki prilično uobičajeni propusti čine vašu WordPress instalaciju ranjivom na one koji znaju kako da ih iskoriste i odlučni su u tome. I o tome govori ovaj tekst. Dakle, bez daljeg odlaganja (i ponavljanja), da počnemo.

Najveće rupe u WordPressu koje hakeri mogu da iskoriste

Prefiks WordPress tabela

Čuvena petominutna instalacija je odlična za WordPress, ali kao i svi čarobnjaci za instalaciju, čini nas lenjim i ostavlja stvari na podrazumevanim vrednostima.

To znači da je podrazumevani prefiks za vaše WordPress tabele wp_, što rezultira nazivima tabela koje je lako pogoditi:

  • wp_users
  • wp_options
  • wp_posts

Sada razmislite o napadu koji se zove SQL Injection, gde se zlonamerni upiti baze podataka ubacuju i izvršavaju u okviru WordPressa (imajte na umu – ovo nije napad ekskluzivan za WordPress/PHP).

Iako WordPress ima ugrađene mehanizme za suzbijanje ovih napada, niko ne može garantovati da se to neće desiti.

Dakle, ako napadač na neki način uspe da izvrši upit kao što je DROP TABLE wp_users; DROP TABLE wp_posts;, svi vaši nalozi, profili i objave će biti izbrisani u trenutku bez mogućnosti oporavka (osim ako nemate rezervnu kopiju, ali čak i tada ćete izgubiti podatke od poslednje rezervne kopije).

Jednostavna promena prefiksa tokom instalacije je velika stvar (a ne zahteva nikakav napor).

Preporučuje se nešto nasumično kao sdg21g34_, jer je besmisleno i teško pogoditi (što je prefiks duži, to je bolje). Najbolja stvar je to što ne morate da pamtite ovaj prefiks; WordPress će ga sačuvati i više nećete morati da brinete o tome (kao što ne brinete ni o podrazumevanom wp_ prefiksu!).

Podrazumevana URL adresa za prijavu

Kako znate da web stranica koristi WordPress? Jedan od znakova je da vidite stranicu za prijavu na WordPress kada dodate „/wp-login.php“ na adresu sajta.

Na primer, uzmimo moju web stranicu (http://ankushthakur.com). Da li je napravljena u WordPressu? Pa, samo dodajte deo za prijavu. Ako ste lenji, evo šta se dešava:

¯_(ツ)_/¯

WordPress, zar ne?

Kada napadač ovo sazna, može da protrlja ruke od zadovoljstva i počne da koristi sve trikove iz svog arsenala. Jadan ja!

Rešenje je da promenite podrazumevanu URL adresu za prijavu i date je samo pouzdanim ljudima.

Na primer, ova web stranica takođe koristi WordPress, ali ako posetite http://wdzwdz.com/wp-login.php, dobićete samo veliko razočarenje. URL za prijavu je skriven i poznat samo administratorima.

Promena URL adrese za prijavu nije nikakva nauka. Samo preuzmite ovaj dodatak.

Čestitamo, upravo ste dodali još jedan sloj zaštite od napada grubom silom.

Verzija PHP-a i web servera

Već smo rekli da je svaki softver koji je ikada napisan (ili će biti napisan) pun grešaka koje samo čekaju da budu otkrivene.

Isto važi i za PHP.

Čak i ako koristite najnoviju verziju PHP-a, ne možete biti sigurni koje ranjivosti postoje i koje bi mogle biti otkrivene preko noći. Rešenje je da sakrijete određeni header koji šalje vaš web server (niste čuli za headere? Pročitajte ovo!) kada se pretraživač poveže sa njim: x-powered-by.

Evo kako to izgleda kada proverite alate za razvoj u vašem omiljenom pretraživaču:

Kao što vidimo ovde, web stranica nam govori da radi na Apache 2.4 i da koristi PHP verziju 5.4.16.

To je već mnogo informacija koje prosleđujemo bez razloga, pomažući napadaču da suzi izbor alata.

Ovaj (i slični) headeri moraju biti sakriveni.

Na sreću, to se može uraditi brzo; nažalost, potrebno je određeno tehničko znanje, jer ćete morati da uđete u unutrašnjost sistema i da radite sa važnim fajlovima. Zato vam savetujem da zamolite svog hosting provajdera da to uradi umesto vas; ako to ne mogu, obratite se konsultantu, mada će to zavisiti od vašeg hostinga i da li su ove opcije uopšte dostupne.

Ako ništa ne uspe, možda je vreme da promenite hosting provajdera ili pređete na VPS i angažujete konsultanta za sigurnosne i administrativne poslove.

Da li se isplati? To morate sami da odlučite. 🙂

Oh, i ako želite da se bavite sigurnosnim headerima, evo rešenja za vas!

Broj pokušaja prijave

Jedan od najstarijih trikova u hakerskom priručniku je takozvani Dictionary Attack.

Ideja je da isprobate ogroman broj (milione, ako je moguće) kombinacija lozinki dok jedna ne bude tačna. Pošto su računari neverovatno brzi, ova strategija je moguća i daje rezultate u razumnom vremenskom periodu.

Jedna uobičajena (i izuzetno efikasna) odbrana je dodavanje kašnjenja pre prikazivanja greške. Ovo tera napadača da čeka, što znači da će, ako je to skripta koju koristi haker, predugo trajati. To je razlog zašto vaš računar ili omiljena aplikacija malo zastanu, a zatim kažu: „Ups, pogrešna lozinka!“.

U svakom slučaju, poenta je da treba da ograničite broj pokušaja prijavljivanja na vaš WordPress sajt.

Nakon određenog broja pokušaja (recimo, pet), nalog bi trebalo da bude zaključan i trebalo bi ga otključati samo putem e-pošte vlasnika naloga.

Srećom, ovo je lako uraditi pomoću ovog dodatka.

HTTP naspram HTTPS

SSL sertifikat zbog kojeg vas vaš provajder gnjavio je važniji nego što mislite.

To nije samo alat za reputaciju koji prikazuje zeleni katanac u pretraživaču na kojem piše „Sigurno“; instaliranje SSL sertifikata i prisiljavanje svih URL adresa da rade na „https“ čini da vaš web sajt od otvorene knjige postane misterija.

Ako ne razumete kako se to dešava, pročitajte o takozvanom Man-in-the-Middle napadu.

Drugi način za presretanje saobraćaja koji ide sa vašeg računara na server je njuškanje paketa, što je pasivan oblik prikupljanja podataka i ne mora čak ni da se pozicionira „u sredini“.

Za sajtove koji rade putem običnog „HTTP-a“, osobe koje presreću mrežni saobraćaj mogu da vide vaše lozinke i brojeve kreditnih kartica u čitljivom formatu.

Izvor: comparetech.com

Zastrašujuće, zar ne?

Ali kada jednom instalirate SSL sertifikat i svi URL-ovi se konvertuju u „https“, ovi osetljivi podaci se prikazuju kao besmislena kombinacija znakova koju samo server može da dešifruje. Drugim rečima, ne brinite se oko tih nekoliko dolara godišnje. 🙂

Zaključak

Da li će vam ovih pet stvari pomoći da obezbedite vaš web sajt?

Ne, ne u potpunosti. Kao što mnogi članci o bezbednosti kažu, nikada niste 100% sigurni, ali je moguće eliminisati veliku većinu problema uz razuman napor. Možete razmisliti i o korišćenju Sucuri cloud WAF-a za sveobuhvatnu zaštitu vašeg sajta.