WordPress, kao jedan od najpopularnijih CMS-ova današnjice je svakodnevno prvi na udaru kada je reč o pronalaženju sigurnosnih propusta. Naši sistem administratori svakodnevno imaju glavobolje zbog mnogobrojnih propusta u WordPress temama i pluginima jer ljudi obično naprave sajt i više ne brinu o njemu. Iako naš web hosting poseduje napredni Ultimo malware & exploit skener u realnom vremenu, ponekada se desi da je rupa toliko, da niko ne može pomoći takvom sajtu i biva oboren ili još gore – nastavi da funkcioniše sa svim tim skrivenim zlonamernim skriptama sa redirekcijama, reklamama, spam porukama koje šalje u vaše ili tuđe ime.
Znamo da ne želite da se to desi sa vašim sajtom zato predstavljamo 7 koraka za obezbeđivanje i optimizovanje WordPress-a za što bolji rad.
Verovatno ste videli taj fajl, on pored podataka za vezu sa bazom, može imati neke dodatne parametre, a mi predstavljamo neke od njih i funkcije.
WP_DEBUG uključujete kada imate problem sa sajtom, a ne možete pronaći grešku, u suprotnom treba biti isključen.
WP_POST_REVISIONS ne čuva više od XX revizija, mi smo izabrali da je zlatna sredina 10. Time olakšavate bazu i ne čuvate nepotrebne edite postova i stranica.
Ako želite da očistite svoj WordPress što se tiče revizija, a da ne koristite automatski metod koji je dole ispisan, pratite uputstvo iz našeg članka od pre par godina.
EMPTY_TRASH_DAYS služi za brisanje stranica ili postova koje su u Trash-u (kanti za brisanje). Preporuka da period ne bude manji od 10-20 dana.
WP_ALLOW_REPAIR može biti koristan ukoliko server na kome se nalazi sajt doživi problem, iznenadni reboot ili sličnu grešku hardversku ili softversku. Šansa da se srušila neka od tabela koja je bila aktivna je preko 20%. Tada je neophodan REPAIR odnosno oporavak baze, ova komanda će automatski pokrenuti REPAIR tabele čim dođu posetioci.
WP_MEMORY_LIMIT – limit virtualne memorije koju će koristiti WordPress, preporuka da se postavi barem 512M.
WP_CRON_LOCK_TIMEOUT – korisno podići na 480 sekundi da se ne pokreće sa svakom novom posetom, alternativa je potpuno isključivanje što ne preporučujemo, svakako komanda je prikazana ispod.
Šta je cron? U bukvalnom prevodu posao, okidač. Svaki posetilac služi kao okidač ka WordPress jezgru sa listom zadataka koje treba da uradi. To može biti objava članka, razni tipovi ažuriranja, komentara i sl.
define('WP_DEBUG', false);
define('WP_POST_REVISIONS', 10);
define('EMPTY_TRASH_DAYS', 20 );
define('WP_ALLOW_REPAIR', true);
define('WP_MEMORY_LIMIT', '512M');
define('WP_CRON_LOCK_TIMEOUT', 480 );
WP cron se pokreće sa svakom novom posetom, ako želite da potpuno isključite, što ne preporučujemo (bolja opcija je limitiranje na određeno vreme) to možete uraditi sa komandom ispod.
define('DISABLE_WP_CRON', 'true'); //potpuno isključivanje CRON-a
Želite da onemogućite ažuriranje teme i plugina te onemogućivanje neautorizovanih korisnika da to isto rade? Koristite sledeće komande. Razmotrite da li ćete koristiti ove funkcije.
define( 'DISALLOW_FILE_MODS', true );
define( 'DISALLOW_FILE_EDIT', true );
Ako koristite CDN kao što je MaxCDN ili JetPack, preporuka je da definišete cookie, tako ćete ubrzati sam sajt:
define( 'COOKIE_DOMAIN', 'imedomena.com' );
Autosave funkcija dok pišete članak može biti izuzetno korisna, ali prečesto automatsko čuvanje može dodatno opteretiti posećen sajt koji je na manjem paketu, stoga preporuka je da povećate vrednost na 180 sekundi.
define('AUTOSAVE_INTERVAL', 180);
Ako koristite javne WiFi mreže, obavezno koristite HTTPS konekciju za pristupanje Administraciji WordPress-a, ispod imate dodatnu komandu da pristupanje uvek ide preko enkripcije. (Ne podešavajte ukoliko Vaš WordPress nije podešen na HTTPS saobraćaj ili nemate SSL sertifikat na sajtu).
define( 'FORCE_SSL_ADMIN', true );
.htaccess fajl imate ukoliko koristite Apache ili Litespeed server kao osnovni web server, što je velika verovatnoća. Fajl je sakriven, možete ga videti kroz FTP/SSH, ali je providniji od ostalih zbog prefiksa tačke.
Preporuka je da zabranite javni pristup fajlovima xmlrpc.php i wp-config.php iz sigurnosnih razloga.
<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
</Files>
<Files "wp-config.php">
Order Deny,Allow
Deny from all
</Files>
.htaccess fajl mora sadržati i sledeći deo (verovatno će već upisan, ali ako nije znajte da je neophodan jer u suprotnom neće raditi mod_rewrite i imaćete greške na sajtu u vidu nepronađenih stranica.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Takođe, neretko se koriste komande mod_deflate, mod_mime, mod_setenvif da bi se omogućilo keširanje.
Veoma je bitno da uključite indeksiranje fajlova, tako ćete sprečiti vršljanje botova po folderima vašeg sajta i svi rezultati će voditi na sam sajt.
Options All -Indexes
Komentari na WordPress-u su generatori spama, može ih biti neverovatno mnogo, svakodnevno. Ako su neophodni koristite Akismet plugin ili Captcha zaštitu. U slučaju da je sajt prezentacionog tipa i komentarisanje vam nije važno, možete potpuno blokirati određene IP range-ove.
ErrorDocument 503 "Komentarisanje zabranjeno"
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^60.173 [OR]
RewriteCond %{REMOTE_ADDR} ^218.10
RewriteCond %{REQUEST_URI} ^/wp-comments-post.php$
RewriteRule .* - [R=503,L]
No još je lakše da instalirate plugin koji to potpuno onemogućuje, samo potražite i instalirajte “Disable comments”. Postoji još načina, ali o tome ćemo u narednom blogu.
U slučaju da želite WordPress saobraćaj potpuno da usmerite na HTTPS (čak i gde stranica nije podešena tako) koristite ovo:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
Dozvole na fajlovima menjate kroz File Manager u cPanel-u, FTP ili SSH. Najosetljiviji fajl na čitavom sistemu je wp-config.php, postavite dozvole 0400 odnosno 400 na njega (r——–). U tom slučaju samo vlasnik (server) može da čita taj fajl i niko ne može menjati. Dozvole na folderima wp-content, wp-includes, wp-admin trebaju biti 0755 i to je verovatno već tako podešeno. Na ostalim PHP fajlovima 0644.
Naša hosting platforma omogućuje promenu PHP verzije, počev od prastare 5.3 do najnovije 7.4. Od neverovatnog je značaja da koristite ažurnu PHP verziju, jer osim što starija verzija (PHP 5.4, 5.5 pa i 5.6) neće pružiti puni potencijal WordPress-a, ona će dovesti do potencijalnih sigurnosnih propusta.
Ne morate koristiti najnoviju verziju jer često u prvih par meseci od objave nije kompatibilna sa određenim temama i pluginovima, ali koristite podržanu aktuelnu verziju kao što je trenutno 7.4 i 7.3 (jul 2020.).
Da biste promenili PHP verziju uđite u cPanel i izaberite opciju Select PHP version. Uputstvo možete pronaći OVDE.
Preporuka je da povećate memory_limit na barem 512 MB, zavisno od provajdera. Unlimited.rs dozvoljava do čak 2 GB.
Onemogućite trećim licima pristup wp-admin stranici. Ovo je bitno iz više razloga, jer sve i da neko zna Vašu šifru on neće znati URL na koji pristupate WordPress administraciji. Na stotine bot skripti će vršiti brutal force attack na Vaš sajt svakodnevno, zašto bi dozvolili da se to dešava kada ovaj problem možete rešiti za par minuta?
Jednostavno uđite u administraciju, izaberite Plugin pa Add new i pronađite plugin Rename wp-login.php ili mnoge druge plugine slične namene.
Pažljivo birajte broj plugina koji su vam neophodni, svaki od njih je određeni sigurnosni rizik. Birajte samo proverene plugine koji su svežiji od godinu dana, dakle ako plugin nije ažuriran duže od godinu dana razmotrite o opciji da pronađete alternativu za isti.
Nije svako ažuriranje dobro ažuriranje, i “Update” ponekad oteža život, barem 3 puta godišnje ažurirajte plugine, a preporučljivo je i temu jer napadači često ulaze i kroz bušne teme. Sve teme koje ne koristite potpuno obrišite ili stavite dozvole 0000 na njihove foldere. Isto važi i za plugine, nije ih dovoljno deaktivirati.
Ukoliko nema potrebe za tim, ne zaboravite onemogućiti članstva – registraciju korisnika ako ste slučajno uključili opciju (podrazumevano je isključena opcija).
Poželjno je da da postavite neki vid sigurnosne provere na stranice koje zahtevaju interakciju sa korisnicima kao što su kontakt forme ili formulari, kako biste sprečili gomilanje masovnih spam poruka koji prolaze kroz Vaš sajt odnosno hosting. Najčešći CAPTCHA sastoji se od slike sa iskrivljenim slovima, uz moguće razlike u bojama, postojanje šarene pozadine ili uz prisustvo drugih elemenata koji imaju zadatak da softveru učine nemogućim rešavanje testa.
Skoro svi poznatiji plugini imaju integraciju sa reCAPTCHA, dovoljno je samo da preuzmete API pristupajući sa svog google naloga na ovom linku.
Dovoljno “hakerisanja” za danas, nastaviće se.
Imaš pitanje ili komentar?