Cum să-ţi securizezi site-ul
Disclaimer: sfaturile vin de la cineva care a devenit delăsător şi care, deci, a fost hackerit.
Nu există un manual general valabil în care să scrie cum să-ţi securizezi site-ul şi nu este o singură metodă care aplicată să dea rezultate spectaculoase. Din contră, pentru a ajunge la un nivel de securitate de 99% (rezistă la majoritatea atacurilor) trebuie depusă multă muncă.
Acest articol este scris din perspectiva unuia care foloseşte Joomla! pentru site. Alţii folosesc altceva. Este doar o chestie de gust (preferinţe).
Acestea fiind spuse, să începem cu prezentarea subiectului. Pentru a-ţi securiza site-ul iată nişte sfaturi de bun simţ:
- Foloseşte un CMS (Joomla!, WordPress, Drupal, etc) sigur. Joomla! este sigură (Top 3) însă nu toate extensiile acesteia sunt sigure. Dacă:
- Foloseşti Joomla! înainte de a instala ceva uită-te în Joomla! Vulnerable Extensions List şi upgradează cât mai repede la ultima versiune. Mai mult, upgradează periodic extensiile, mai ales dacă ai vreuna în stadiu de beta.
- Foloseşti alt CMS uită-te ce extensii sunt periculoase, upgradează la ultima versiune, etc.
- Foloseşte cu atenţie permisiunile la fişiere. După ce am fost hackerit toate folderele şi fişierele mele sunt read only după principiul "paranoia e mai bună decât paguba".
- Dacă nu este musai ca utilizatorii să aibe parte de o funcţie de upload (încărcare a fişierelor pe server) atunci cel mai bine este să o dezactivezi de tot. Dacă este musai ca utilizatorii să aibe parte de upload, atunci trebuie să verifici ca toate fişierele uploadate să fie de tipul declarat, adică să nu urce cineva un script PHP dar redenumit ca şi GIF sau mai ştiu eu ce.
- Fişierul .htaccess este mama şi tata securităţii. Este plin de tutoriale pe internet despre cum se foloseşte pentru a securiza site-ul. Eu vă spun doar atât, cu titlu de exemplu:
#Begin blindness code
php_value display_errors Off
php_flag html_errors "0"
php_flag display_startup_errors "0"
php_flag log_errors "1"
php_flag allow_url_fopen "0"
php_flag register_globals Off#End blindness code
#Begin SQL injection protection
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off#End SQL injection protection
#Begin some code injection protection
php_flag allow_url_fopen off
#End some code injection protection
Funcţiile shell_exec, passtru, etc trebuiesc oprite. Dacă hosting-ul le are activate (hosting prost, că ăia buni nu fac de-astea) le opriţi manual, folosind:
php_flags nume_variabilă valoare (ca în exemplele de mai sus).
Accesul la fişierele .htaccess (puteţi avea câte unul pentru fiecare director) îl tăiaţi cu:
# Disable .htaccess viewing from browser
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>- Site-ul este la fel de sigur ca şi cea mai slabă verigă (server, site, ciomputerul administratorului) aşa că mare grijă la ce instalaţi pe computerul sau computerele de pe care accesaţi site-ul propriu, în special panoul de control.
- Să foloseşti parole puternice şi nume de utilizator greu de ghicit. De exemplu nici eu nu ştiu unele parole de la site, dar le "calculez" şi aşa reuşesc să intru pe site. De paranoic ce sunt. Şi nu, parolele nu se spun şi nici nu se scriu pe foaie sau în vreun fişier aflat pe hard disk sau un alt dispozitiv de stocare.
- Dacă eşti hackerit roagă-te să ai hosting bun şi să aibe un backup recent. Dai restore la backup-ul respectiv, nu înainte de a tăia complet accesul la site cu:
order deny, allow
deny from all
#eventual permiţi accesul doar de la IP-ul propriu dar nu prea ajută în caz de IP spoofing.
allow from 12.34.56.78- Testează-ţi singur site-ul. Sunt exemple pe internet.
Legat de testare trebuie să vorbesc despre un program extrem de bun, numit Acunetix Web Vulnerability Scanner. Versiunea gratuită vă ajută să vă scanaţi site-ul pentru a vedea dacă este vulnerabil la XSS (Cross Site Scripting). Versiunea cu plată vă ajută să scanaţi site-ul şi împotriva altor genuri de atacuri.
Nu am testat decât versiunea gratuită. ATENŢIE: Eu am primit ban de la hosting (am scris deja că am primit ban) aşa că mare grijă! No bun. Să vorbim un pic despre acest program. AWVS permite scanarea unui site, care scanare se realizează în mai mulţi paşi:
- Sunt indexate paginile site-ului. Dacă aveţi câteva mii, ca mine, va dura ceva, poate chiar câteva ore.
- Fiecare pagină este testată împotriva unor tipuri de atacuri. De aceea nu mai am nici forum şi nici carte de oaspeţi. Această operaţie durează extrem de mult la site-uri mari.
Versiunea gratuită are nişte limitări, adică testează doar XSS şi doar pe un singur site.
Pentru a scana site-ul Dvs. la pornire vă va apărea automat un fel de wizard (ca la instalarea de software) de unde puteţi selecta nişte opţiuni. De exemplu eu am scanat:
- www.robintel.ro
- use heuristics
- optimize for PHP (dar ştie şi ASP, etc)
- restul opţiunilor îmi scapă şi nu mai pornesc programul ca să nu îmi iau iarăşi ban.
Dacă wizard-ul nu vă apare (am impresia că apare o singură dată) faceţi în felul următor, indicat şi în imaginile următoare. Porniţi programul. Vă apare mesajul cu limitările. Daţi OK. Apoi vă apare fereasta principală. Selectaţi Web Scanner.
Apoi daţi click pe Start (dreapta sus)
Vă va apărea fereastra de scanare.
După ce se termină scanarea verificaţi log-ul fără să închideţi aplicaţia (mi se pare că versiunea gratuită nu îl salvează, dar nu mai ştiu). Veţi vedea acolo nişte treburi pe care trebuie să le corelaţi (eventual reparaţi) cu .htaccess (dacă este posibil) sau cu o altă metodă. Nu pot să ofer exemple specifice, pentru că nu mai am instalate extensiile problemă (logic, nu?). Ştiu, însă, că a găsit probleme şi singura rezolvare rezonabilă a fost dezinstalarea lor. Oricum programul vă va spune.
Dintre "bunătăţile" pe care le scanează enumăr câteva (din 659 de fişiere ce conţin minim o vulnerabilitate):
- Drupal_v.4.7.2_Cross-Site_Scripting
- Joomla_v.1.5.5_Remote_Admin_Password_Change
- Joomla_v.1.5_beta_2__Remote_Code_Execution
- phpBB_2.0.15_Viewtopic.php_Remote_Code_Execution_Vulnerability
- phpBB_Addon__Hacks_List_v.1.20_Local_File_Inclusion
- phpBB_XS_Build_058_File_Inclusion
- PHP_multiple_vulnerabilities
- WordPress_database_credentials_disclosure
- WordPress_v.2.0.1_Path_Disclosure
- WordPress_v.2.0.3_SQL_Injection
- WordPress_v.2.0.5_Trackback_UTF-7_SQL_Injection
- WordPress_v.2.0.6_Trackback_(Zend_Hash_Del_Key_Or_Index)_Injection
- WordPress_v.2.1.1_-_Compromised_Installation
- WordPress_v.2.1.2_(year)_Cross-Site_Scripting
- WordPress_v.2.3.1_(GBK_Big5_s)_SQL_Injection
- WordPress_v.2.3_(edit-post-rows.php)_Cross-Site_Scripting
- WordPress_v.2.x_(Text_Link_Ads)_SQL-Injection
Deci sfatul meu este să scanaţi, pe cât posibil şi fără să luaţi ban, site-urile voastre. Spor la treabă!
foarte tare programul , multumesc mult , lam folosit pentru http://www.fetebaieti.com si mi-a fost de mare ajutor , inca odata 10x :cheer:
😉 Cu plăcere. 😉
oricum , sper sa nu contina nici un fel de scam…. , ca in ultima vreme m-am cam ars cu diverse scripturi gen viralinviter si altele de acest gen 🙁 :unsure:
😆 Dude, crezi sincer că îmi bat joc de cititori? 😆