WordPress je danas zasigurno jedan od najpopularnijih CMS (Content Management System) sustava na kojem se prema procjenama vrti svaki šesti web site. Upravo zbog toga WP je izrazito privlačna meta Zainteresiranim Stranama: hakerima, autorima raznih invazivnih skripti, ili objesnoj djeci koja iz dosade pokušavaju srušiti susjedovu stranicu. Iskorištavanjem sigurnosnih propusta same aplikacije ili pluginova koji se koriste na istoj, oni pokušavaju (nerijetko i uspijevaju) na servere postaviti maliciozni sadržaj putem kojega su u mogućnosti pokretati DDOS napade, slati velike količine SPAMA, ili uzrokovati manje probleme koji utječu na rad servera na kojemu se nalazi kompromitirana web stranica, ili drugih servera koje će njihov napad ciljati.
No, gotovo sve sigurnosne rupe su uzrokovane tzv. “lošom praksom” prilikom same početne instalacije WP-a, ili kasnijim izostankom redovitog održavanja aplikacije. Naime, katkada primimo upite oblika “Zašto to (aplikacija) sada ne radi, a radilo je zadnjih XY godina?”, koji sami u sebi i sadrže odgovor – korištenje iste, nenadograđene aplikacije nekoliko godina (period je naveden primjera radi, katkada je dovoljno i nekoliko mjeseci) je ekvivalent postavljanju ogromnog znaka nad zabunom otvorena vrata na kući, koji govori “Slobodan ulaz, nema nikoga doma!” – prije ili kasnije će se dogoditi nešto loše. Od ostavljanja poruke “Hej, zaboravili ste zatvoriti vrata!” (ili ostavljanja tekstualne poruke sa potpisom “hakera” u folderu aplikacije, do potpunog uništenja svega u kući (ili brisanja važnih dokumenata, postavljanja malicioznih skripti na server preko kojih se omogućuje pokretanje raznih napada, rušenje stabilnosti servera, i slično).
U ovom tekstu ćemo proći neke od korisnih postupaka koje biste trebali proći prilikom nove instalacije WP-a na Linux serverima.
1. Korištenje Admin korisnika
Prilikom instalacije WP-a nudi se izbor naziva administratorskog korisnika koji će imati pristup svim stavkama aplikacije koju ćete koristiti. Mnoge skripte automatski pokušavaju napasti nazivdomene/wp-admin pristupno sučelje korištenjem standardnih admin, Admin, administrator, Administrator, root ili Root korisničkih imena, pa je pametno i preporučljivo koristiti neki alternativni naziv za glavni login.
2. Korištenje kompleksne lozinke
Standardna sigurnosna preporuka je korištenje kombinacije velikih i malih slova, brojeva i posebnih znakova, duljine od 10 pa na više znakova, kako biste otežali posao automatiziranim invazivnim skriptama. Najkorištenijih pet automatskih pokušaja probijanja lozinki korištenih u masovnim napadima ranije ove godine su bili: admin, 123456, 111111, 666666, i 12345678. Iako su zbog jednostavnosti ove (i slične) lozinke vrlo privlačne, također se njima otvara nepotrebna vrlo iskoristiva sigurnosna rupa, kojom ćete si uzrokovati puno veće probleme nego što bi bio trud pamćenja (ili bilježenja na sigurno mjesto) i korištenja lozinke oblika 4vAl0n3!2$.
3. Promjena WP “nickname”-a
Automatizirane skripte će često pregledati sve postove objavljene na vašoj web stranici u potrazi za oznakama, odnosno, nazivima autora, te pokušati koristiti navedene nazive za pristup administraciji stranice. Kako biste izbjegli problem, u WP administraciji, pod Profile ili Users dodajte Nickname i za vrijednost “Display name publicly as” odaberite različitu vrijednost od one koju koristite za pristup.
4. Organizacija backupa
Svakako periodički snimajte lokalno, na sigurnu lokaciju, backupe cijelog root foldera aplikacije i same baze podataka, kako biste u slučaju probijanja sigurnosti imali početnu točku za otklanjanje problema. Naime, ako se radilo o iskorištavanju sigurnosnog propusta koji je prisutan u stanju aplikacije koje imate u svom backupu, sam postupak vraćanja backupa na server na mjesto ugrožene aplikacije neće i otkloniti problem, ali ćete skratiti vrijeme koje biste potrošili postavljanjem potpuno novog sadržaja.
5. Promjena prefiksa instalacije u bazi
Prilikom nove instalacije WP-a sama aplikacija će vam ponuditi prefiks u bazi podataka “wp_”, koji je preporučljivo promijeniti kako biste otežali posao nekoj skripti koja će eventualno pokušati provesti napade na samu bazu podataka.
6. Ograničavanje korištenja raznih pluginova, dodataka i tema
Osim podizanja razine nesigurnosti sustava, korištenje mnogih dodataka i tema u vašoj aplikaciji može uzrokovati i sporiji rad same web stranice. Ograničite korištenje pluginova samo na one koje zaista i koristite, te obrišite sve nekorištene dodatke i teme, kako biste smanjili mogućnost upada na stranicu. Također je važno i instalirati sve najnovije nadogradnje za navedene dijelove aplikacije, kako biste održali razinu sigurnosti. Ako se neki od pluginova prestane nadograđivati, ili postane nekompatibilan sa novijim verzijama WP-a, svakako ga obrišite i pronađite zamjenu, pitanje je vremena kada će se u istome pronaći neki propust kroz koji riskirate potencijalni upad u vašu aplikaciju. Ako dođe do eventualnog upada, održavanje “čistog” sustava (brisanjem svih nekorištenih komponenti) će vam omogućiti lakše i bezbolnije dijagnosticiranje i otklanjanje problema.
7. Uklanjanje informacija o verziji aplikacije
Uklanjanje informacija o tome koju verziju aplikacije koristite je mali, ali ipak koristan korak u otežavanju posla automatiziranim skriptama koje se koriste za napade na WP. Kako biste to učinili, u functions.php datoteci teme koju koristite dodajte:
// uklanjanje informacija o verziji
function complete_version_removal() { return ''; } add_filter('the_generator', 'complete_version_removal');
8. Onemogućavanje registracije novih korisnika
Ako vodite blog ili web stranicu u kojoj nije predviđeno registriranje više korisnika osim samog administratora, unutar administracije (General settings) onemogućite registraciju novih korisnika (“Membership” – isključite “Anyone can register“). Također, kako biste izbjegli daljnje moguće automatizirane napade, obrišite datoteku wp-register.php unutar vaše aplikacije, ili ju preimenujte, ako se pokaže potreba za daljnjim korištenjem.
9. Zaštita wp-config.php datoteke
Kako biste onemogućili pristup wp-config.php datoteci neodobrenim korisnicima, u .htaccess datoteku vaše aplikacije možete dodati sljedeći kod:
<Files "wp-config.php"> order allow,deny deny from all </Files>
Na taj način datoteka neće biti dostupna ni na koji način osim putem ftp-a ili kroz cPanel administraciju. Drugi način zaštite je datoteku prenijeti u “parent” direktorij (ako ste instalirali WP unutar /public_html/ direktorija, tada prebacite wp-config.php u home direktorij). Također promijenite prava čitanja/pisanja po datoteci na 0600, kako biste onemogućili ubacivanje izmjena.
10. Zabrana pristupa “include-only” datotekama
Kao dodatnu mjeru sigurnosti, putem .htaccess datoteke onemogućite pristup putem web preglednika dijelu aplikacije kojemu biste samo vi trebali imati pristup kroz administraciju. Dodajte sljedeće linije:
RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L]
Na ovaj način će svaki pokušaj pristupa standardnim folderima u svakoj WP instalaciji biti onemogućen vanjskim stranama.
11. Omogućavanje SSL prijave
Ako na vašoj web stranici koristite SSL certifikat, dodavanjem sljedećih linija u wp-config.php datoteku ćete omogućiti slanje informacija o pristupnim podacima putem zaštićene veze:
//SSL za prijavu obicnih korisnika
define('FORCE_SSL_LOGIN', true);
//SSL za prijavu administratora
define('FORCE_SSL_ADMIN', true);
12. Brisanje readme i drugih nepotrebnih datoteka
WP i mnogi pluginovi koriste readme.html datoteke u kojima se nalaze informacije o verzijama i drugi podaci za koje nema potrebe da su javno dostupni, te ih je dobro obrisati sa servera. Također je uputno brisati sve datoteke za koje ste sigurni da ih niste sami dodali na server.
Ostali savjeti su osnove sigurnosti korištenja WP-a
1. Držite WP i pluginove na zadnjoj verziji
Držanje WP-a i pluginova na zadnjim verzijama je jedan od neophodnih koraka za održavanjem sigurne aplikacije, a u najvećem broju slučajeva samo morate kliknuti “Update” gumb. Naime, kako je WP besplatan CMS, javno je dostupan svim zainteresiranim stranama, što također znači i kako osobe s lošim namjerama starenjem određene verzije CMS-a imaju i više vremena pronaći i iskoristiti sigurnosne propuste u istom. Ako plugin koji koristite razvojni tim prestane razvijati, pokušajte mu pronaći zamjenu. Pošto broj pluginova kreiranih za WP svakodnevno raste, gotovo je sigurno kako ćete pronaći neki iste (ili bolje implementirane) funkcionalnosti, koji će i dalje biti siguran.
2. Brinite se o lokalnoj sigurnosti
Koristite antivirusnu zaštitu na računalu s kojega se spajate na administraciju stranice, te nemojte istoj pristupati s neprovjerenih računala. Keyloggeri (programi za praćenje utipkanih podataka na računalu) su jedan od najčešćih uzročnika proboja lozinki.
3. Preuzimajte pluginove i teme sa sigurnih lokacija
Tražite pluginove i teme preko same tražilice u WP administraciji, ili putem službenih stranica. Većina stranica na koje naiđete potragom besplatnih dodataka za WP preko raznih tražilica je zaražena nekom vrstom malwarea, te je samo pitanje sreće i vremena kada biste naišli na probleme.
Naravno, ovi koraci nisu svi koje možete poduzeti kako biste bili sigurni. Koje radnje vi poduzimate kako bi vaša aplikacija bila sigurna?
Odličan članak kako koristiti CMS u WordPressu, meni je pomogao, hvala 😉
Lijepo napisan i ilustriran članak, hvala na uputama!