14 / 02

Articolul acesta va prezenta cele mai paranoice metode de a securiza un blog care foloseste platforma wordpress , vom incepe cu cele mai comune si de bun simt metode dupa care o sa trecem si la lucruri mai avansate .

1 Primul lucru de bun simt este sa aveti o parola a administratorului diferita de orice alta parola a orcarui alt cont , este indicat ca parola sa fie de peste 150 bites si sa arate cam asa : ” j2R;O2XfaeMI%Ngy5Ae>+m8Uf “.

2 Nu folositi ca nume de logare numele “admin” care exista din oficiu la wordpress , acel nume nu merge schimbat din wordpress direct dar merge cu orice alt manager de mysql (navicat , mysql administrator , phpmyadmin ) , prin query-ul

  1. UPDATE `nume-baza-de-DATE`.`nume-tabela-useri` SET `user_login` = ‘noul-nume-pt-login’ WHERE `nume-tabela-useri`.`display_name` =‘nume-de-display’ LIMIT 1 ;

din pacate id-ul nu se poate schimba pentru ca el ne asigura statutul de administrator .

3 Nu folositi prefixul de tabele acordat din oficiu “wp_” schimbati-l in ceva de genul “w843d32_” si nu uitati sa modificati si wp-config.php dupa ce ati schimbat acest prefix la toate tabelele .

4 Este indicat sa aveti un singur Javascript encriptat ca cel de aici
http://azrael-sub7.ro/wp-content/plugins/script-compressor/jscsscomp.php?q=wp-content/plugins/vipers-video-quicktags/resources/swfobject.js?ver=2.1 puteti face asta folosind pluginul script-comprerssor .

5 Nu lasati fisierul wp-config.php accesibil , cea mai utilizata metoda este sa introduceti in .htaccess urmatorul cod :

  1. # Protect wpconfig.php
  2. <FILES wp-config.php >
  3. order allow,deny
  4. deny from all
  5. </FILES>

6 Nu lasati datele de conectare in wp-config.php , cel mai bine e ca datele de conectare sa se afle intr-un folder care nu este accesibil pe internet , acum la majoritatea hosturilor (care sunt pe distributii *nix) folderul in care este webiste-ul este /home/nume-cont/public_html/ deci cel mai convenabil este sa separam wp-config.php in 2 fisiere iar fisierul ce contine datele de conectare sa fie pus in /home/nume-cont/ , deci fisierul care il vom muta va arata asa :

  1. <?php
  2.  /* This file is used by the wp-config.php creation script during the
  3.  * installation. You don’t have to use the web site, you can just copy this file
  4.  * to "wp-config.php" and fill in the values.
  5.  *
  6.  * @package WordPress
  7.  */
  8.  
  9. // ** MySQL settings – You can get this info from your web host ** //
  10. /** The name of the database for WordPress */
  11. define(‘DB_NAME’, ‘db-mysql’);
  12.  
  13. /** MySQL database username */
  14. define(‘DB_USER’, ‘user-mysql’);
  15.  
  16. /** MySQL database password */
  17. define(‘DB_PASSWORD’, ‘password-mysql’);
  18.  
  19. /** MySQL hostname */
  20. define(‘DB_HOST’, ‘host-mysql’);
  21. ?>

iar cealata care va ramane pe servar

7 Daca webhostul tau suporta ssl poti forta ssl in administratie prin adaugarea liniei define(‘FORCE_SSL_ADMIN’, true); in wp-config.php .

8 Userul de mysql nu trebuie sa aiba toate privilegile , userul care il folosesti ca sa te conectezi la mysql poate avea numai urmatoarele privilegii :
select, insert, update, delete , create, drop and alter .

9 Nu permiteti vizualizarea folderelor , metoda asta e cunoscuta dar totusi e foarte folositoare , tot ce trebuie sa facem e sa introduceti in .htaccess urmatorul cod :

  1. # Prevents directory listing
  2. Options -Indexes

10 Legati cookie-urile de ip folosind Safer cookies .

11 Ascundeti folderul wp-admin asta se poate face folodind stealth-login , eu am reperat insa un mic bug la acest plugin , si anume ca pe ultimele versiuni de wordpress actuale ( 2.7.1 ) daca instalezi acest plugin pe orice director in afara de index iti face redirect catre autentificare , dar acest bug merge fixat destul de usor , dupa ce stealth-login va genereaza .htaccess-ul intrati manual in .htaccess si cautati urmatoarea linie partiala :

  1. wp-login.php?stealth_out_key

dupa acea linie puneti urmatoarele linii

  1. RewriteCond %{REQUEST_URI} wp-admin/
  2. RewriteCond %{REQUEST_URI} wp-login\.php

aceste doua linii vor specifica clar ca numai in cazul in care se cer acele doua locatii sa functioneze RewriteRule .

12 Scoateti meta-tagul care raporteaza versiunea de wordpress cel mai simplu mod de a face asta este sa modificatii function.php din interiorul templatului si sa puneti in el urmatorul cod :

  1. //Security
  2. remove_action(‘wp_head’, ‘wp_generator’);

13 Restrictionati accesul pe ip in folderu-ul wp-admin cel mai simplu mod prin adaugarea unei file .htaccess cu codul :

  1. AuthUserFile /dev/null
  2. AuthGroupFile /dev/null
  3. AuthName "Security R1"
  4. AuthType Basic
  5. <LIMIT GET >
  6. order deny,allow
  7. deny from all
  8. allow from ip
  9. allow from ip
  10. allow from ip
  11. </LIMIT>

14 Restrictionati orice conexiune la mysql care nu provine din localhost .

15 Folositi transfer prin sftp , cand folositi transferul prin ftp obisnuit parola se trimite sub forma de text , ceea ce nu este foare indicat ..

16 Restrictionati indexarea folderelor ce incep cu wp- , in robots.txt trecem :

  1. User-agent: Googlebot
  2. Disallow: /wp-
  3. Disallow: /uploads/
  4. Disallow: /feed/
  5. Disallow: /comments/feed
  6. Disallow: /feed/$
  7. Disallow: /*/feed/$
  8. Disallow: /*/feed/rss/$
  9. Disallow: /*/*/feed/$
  10. Disallow: /*/*/feed/rss/$
  11. Disallow: /*?*
  12.  
  13. Disallow: /wp-
  14. Disallow: /uploads/
  15. Disallow: /feed/
  16. Disallow: /comments/feed
  17. Disallow: /feed/$
  18.  
  19. User-agent: Googlebot-Image
  20. Allow: /*

acest cod interzice si indexarea feed-ului pentru a nu produce in google continut dubicat .

17 Folositi login-lockdown pentru a va proteja impotriva unui posibil atack brute force .

18 Folositi login-encryption pentru a securiza autentificarea prin algoritmele rsa si dsa .

19 Upgradati mereu wordpress-ul la ultima versiune .

20 Si nu in ultimul rand verificati dupa fiecare update fiecare variabila $_GET sau $_POST din website impotriva atacurilor de tip Xss si SQL INJECT .

21 Rewrite in functie de ip se poate face cu urmatorul cod in .htaccess :

  1. <IfModule mod_rewrite.c>
  2. RewriteCond %{REQUEST_URI} wp-login.php
  3. RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.0
  4. RewriteRule .* http://www.domain.com/ [R,L]
  5. </IfModule>

Optional :
21 Puteti instala si un “firewall” de tip php care sa blocheze atacurile Xss, sql inject si anumite programe de crawl sau folositi scriptul php de configurare a ip-tables (mai recomandat ) .
Exista si alte metode mai avansate de protectie dar nu se pot aplica decat daca aveti un servar dedicat



Comentarii : Reguli si Informatii :

  • Comentarile ce constituie o jignire indirecta sau directa adresata oricarei persoane vor fi inlaturate !
  • Folosirea unui limbaj trivial , licentios nejustificat poate duce la inlaturarea sau cenzurarea comentariului .
  • Daca doresti o imagine asociata comentariului trebuie sa foloesesti Gravatar.com
  • Toate comentarile sunt aprobate in mod automat .
  • Comentarile nu trebuie sa contina in mod excesiv linkuri ce au ca scop promovarea unor siteuri sau produse !
  • Comentarile care contin peste 4 linkuri vor fi automat oprite pentru evaluare ! .
  • Comentarile prin care se fac cereri absurde vor fi ignorate !

Un Comentariu la “Wordpress inpenetrabil .”

Leave a Reply