INFINIUS

WordPress savjeti – kako pojačati sigurnost

Security
[Creative Commons Licensephoto 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: , ,

 
  • http://www.mojportal.com.hr Robi

    Evo i mojih prijedloga plugina za pojačavanje sigurnosti.

    1. Block Bad Queries (BBQ)- štiti od base64 napada

    2. Login LockDown – Blokira pristup administraciji nakon X pokušaja logina s krivom lozinkom.

    3. OTP – jednokratna lozinka

  • http://www.mojportal.com.hr Robi

    Evo i mojih prijedloga plugina za pojačavanje sigurnosti.

    1. Block Bad Queries (BBQ)- štiti od base64 napada

    2. Login LockDown – Blokira pristup administraciji nakon X pokušaja logina s krivom lozinkom.

    3. OTP – jednokratna lozinka

  • http://www.infinius.hr darkmares

    Login LockDown i One Time Password su dobri plugin-ovi i razmišljao sam da li da ga uvrstim u tekst ili ostavim za kasnije (uz razne exploit scannere) – hvala na podsjećanju na njih ;)
    Za BBQ nisam znao, izgleda zanimljivo.

    Kao jedan od najvećih (ujedno i najlakše rješivih unutar core-a) sigurnosnih propusta WordPressa je što će vam nažalost WordPress sam odgovoriti da li korisnik postoji na sustavu ako se pokušate prijaviti čime je napadaču posao dosta olakšan (probajte na bilo kojem WP sajtu upisati neko korisničko ime i bezveze lozinku – poruka greške će vam odmah otkriti da li navedeno korisničko ime postoji – admin je vrlo čest ;))

    Sve u svemu, daleko da je ova tema iscrpljena ovim jednim člankom – ima tu još dosta toga…

  • http://www.infinius.hr darkmares

    Login LockDown i One Time Password su dobri plugin-ovi i razmišljao sam da li da ga uvrstim u tekst ili ostavim za kasnije (uz razne exploit scannere) – hvala na podsjećanju na njih ;)
    Za BBQ nisam znao, izgleda zanimljivo.

    Kao jedan od najvećih (ujedno i najlakše rješivih unutar core-a) sigurnosnih propusta WordPressa je što će vam nažalost WordPress sam odgovoriti da li korisnik postoji na sustavu ako se pokušate prijaviti čime je napadaču posao dosta olakšan (probajte na bilo kojem WP sajtu upisati neko korisničko ime i bezveze lozinku – poruka greške će vam odmah otkriti da li navedeno korisničko ime postoji – admin je vrlo čest ;))

    Sve u svemu, daleko da je ova tema iscrpljena ovim jednim člankom – ima tu još dosta toga…

  • http://www.sufara.ba/ arapska slova

    Meni se desava evo i nakon sto sam promjenio hosting sa 3ixa na HG da mi neko na neki nacin ubaci u upload folder neku skriptu koja zaspama server kako to rijesiti na koji nacin to uspije?

  • Hrvoje

    Hvala na ovome, dosta mi je pomoglo!