WordPress savjeti – kako pojačati sigurnost
[photo credit: CarbonNYC]
WordPress kao CMS platforma je uslijed svojih čestih ažuriranja dosta siguran, no neke stvari što se tiče sigurnosti kao da se namjerno zapostavljaju. Na sreću, relativno je lako poboljšati stanje kroz par ovdje navedenih poteza uz napomenu – ove upute (osim stvari koje je moguće podesiti već kod instalacije) su za iskusnije budući da uključuju mijenjanje koda i promjene u bazi; vrlo je lako moguće da onesposobite svoju instalaciju WordPress-a ako ne znate što radite – stoga oprezno s ovdje navedenim promjenama.
Zadani korisnik – admin
Budući da je “admin” kao korisničko ime već predloženo kod instalacije, većina ga korisnika neće ni pokušati promijeniti; što je poprilično loša ideja – time napadač već zna korisničko ime administratorskog računa i potrebno mu je “samo” pogoditi lozinku. Stoga mu otežajte posao i već prilikom instalacije postavite korisničko ime koje baš nije “admin”, “administrator” ili ime domene.
Ukoliko već imate funkcionalnu instalaciju WordPress-a, primijetiti ćete da korisničko ime nije moguće mijenjati, bar ne direktno iz web korisničkog sučelja. Kako bi korisničko ime promijenili, potrebno je malo čeprkanja po bazi WordPressa (ovdje navedeno pretpostavlja novo korisničko ime ‘novikorisnik’ te ‘wp_’ kao prefiks baze.
update wp_users set user_login='novikorisnik' where user_login='admin';
Navedeno je potrebno pokrenuti preko phpMyadmin-a ili nekog drugog klijenta za MySQL.
Prefiks tablica baze – ‘wp_’
Predloženi prefiks tablica u bazi ‘wp_’ je ustvari samo interna oznaka WordPress-a i ustvari nećete imati prilike se susretati s ovim ako direktno nešto ne uređujete po bazi, ali svejedno predstavlja određenu sigurnosnu prijetnju – gotovo svi SQL injection napadi koji su namijenjeni za WordPress ciljaju ‘wp_…’ tablice u bazi. Postavljanjem drugog prefiksa tablica će ovo biti onemogućeno.
Prilikom instalacije je lako promijeniti prefiks – u jednom od koraka instalacije se samo promijeni predloženi ‘wp_’ prefiks u nešto drugo – ustvari i nije važno što, važno da se razlikuje od standardnog ‘wp_’ (bolje su ipak vrijednosti s nekoliko slova i brojeva). Naknadno je ovo dosta teže, jer ovisno i o pluginovima i verziji WordPress-a nije dosta promijeniti samo imena tablica i pripadajući parametar u wp_config.php datoteci već i neke vrijednosti u tablicama.
WordPress verzija
Ovisno o temi koju imate pokrenuto vjerovatno se uz osnovne informacije o stranicama ispisuje i meta polje “generator” koje odaje koju verziju WordPress-a koristite. Ovaj podatak može koristiti napadaču da upotrijebi napad koji iskorištava ranjivost određene verzije WordPress-a.
Iako bi trebali biti dosta sigurni ako redovito ažurirate WordPress – zašto riskirati: unutar datoteka teme (header.php ili functions.php) se može naći linija koja generira ovo meta polje – možete ga maknuti u potpunosti ili pak samo izbaciti ovu funkciju:
bloginfo('version');
koja vraća trenutnu verziju WordPress-a i zamijeniti je tekstom po izboru (WordPress verzija 99.999 – zašto ne ;)).
Zadani ulaz za administraciju – /wp-admin
Za razliku od drugih CMS-ova, WordPress nažalost (još uvijek) nema mogućnost mijenjanja ulazne adrese prijave za administraciju – ona je zadano postavljena kao wp-admin. Kao općepoznata činjenica, ovo automatski postavlja wp-admin stranicu kao najnapadaniju WordPress stranicu, koja se obično bombardira kombinacijama korisničkih imena i lozinki kako bi se omogućio pristup.
Laganog rješenja u obliku plugin-a nema, no promjenom samo par linija koda je moguća promjena stranice za prijavu, rješenje koje prenosimo je predloženo ovdje. Pristup na wp-admin stranicu bez prijave završava na početnoj stranici te time nepozvanom gostu nije ni omogućen upis korisničkih podataka. Nedostatak je što će ovdje opisane promjene nestati s ažuriranjem na novu verziju WordPress-a te će biti potrebno opet ih ponoviti
Dodavanjem nekoliko linija unutar .htaccess datoteke te u wp-login.php datoteku se stvara novi login (ovdje primjer ako želimo npr. postaviti ‘wpprijava’ kao stranicu za prijavu za administraciju), ‘wpprijava’ se u ovom slučaju spominje jednom u .htaccess datoteci i jednom u wp-login.php datoteci:
Unutar .htaccess datoteke dodati sljedeće
<IfModule mod_rewrite.c> RewriteRule ^wpprijava$ wp-login.php [L,NC,QSA] </IfModule>
iznad “# BEGIN WordPress”.
Na početak (odmah ispod “<?php” linije) u wp-login.php datoteci postaviti sljedeći kod:
session_start(); list($file,$arguments) = explode("?", $_SERVER['REQUEST_URI']); if("/wp-login.php?loggedout=true" == $file ."?" .$arguments || "action=logout" == substr($arguments, 0, 13)) { session_destroy(); header("location: /"); } if(isset($_SESSION['valid_entrance']) && $_SESSION['valid_entrance'] == true) { } elseif($file == "/wp-login.php" && !isset($_SESSION['valid_entrance'])) { header("Location: /"); exit(); } elseif ($file == "/wpprijava") { $_SESSION['valid_entrance'] = true; }
Navedeni komentari mjesta za postavljanje vrijede za WordPress verziju 3.0.
Nakon ovih promjena se prijavljujete preko /wpprijava linka dok će neželjeni posjetitelji neuspješno pokušavati prijaviti se preko /wp-admin stranice.
Tagovi: howto, sigurnost, wordpress