WordPress varnostne nastavitve, ki jih morate poznati

Zakaj je varnost WordPressa kritična
Najbolj uporabljani CMS poganja več kot 43 % vseh spletnih mest na internetu, kar ga naredi za najpogostejšo tarčo hekerjev. Vsak dan se zgodi približno 90.000 napadov na WordPress spletna mesta. Hekerji uporabljajo avtomatizirana orodja, ki skenirajo internet in iščejo spletna mesta z znanimi ranljivostmi - ni vam treba biti pomembna tarča, da bi bili napadeni. Dovolj je en zastarel vtičnik ali šibko geslo.
Dobra novica je, da večino napadov lahko preprečite z uporabo osnovnih varnostnih nastavitev. Ni vam treba biti programer ali varnostni strokovnjak - potrebno je le, da sledite preizkušenim postopkom iz tega vodnika in jih uporabite na svojem spletnem mestu.
Zaščita datoteke wp-config.php
wp-config.php je najpomembnejša datoteka na vašem WordPress spletnem mestu. Vsebuje dostopne podatke za podatkovno bazo, varnostne ključe, predpono tabel in druge kritične konfiguracije. Če napadalec pridobi dostop do te datoteke, ima popoln nadzor nad vašim spletnim mestom.
Premik datoteke wp-config.php
WordPress samodejno išče wp-config.php en imenik nad spletnim korenom (web root). To pomeni, da lahko to datoteko premaknete iz public_html/ v imenik nad njim, kjer ni dosegljiva prek spletnega brskalnika. To je eden najpreprostejših, a najučinkovitejših zaščitnih ukrepov. Če vaše gostovanje ne dovoljuje dostopa do imenika nad public_html, se obrnite na cPanel podporo.
Varnostni ključi in salt-i
wp-config.php vsebuje 8 varnostnih ključev (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY in njihovi pari SALT), ki se uporabljajo za šifriranje piškotkov in sej. Če so ti ključi privzeti ali prazni, so seje uporabnikov ranljive. Generirajte edinstvene ključe na strani WordPress.org Secret Key API in jih prilepite v wp-config.php. Te ključe občasno menjajte - to bo samodejno odjavilo vse uporabnike in razveljavilo obstoječe piškotke.
Onemogočanje urejanja datotek
WordPress ima vgrajen urejevalnik, ki omogoča urejanje datotek PHP tem in vtičnikov neposredno iz skrbniške nadzorne plošče. To je ogromno varnostno tveganje - če napadalec pridobi dostop do skrbniškega računa, lahko prek urejevalnika vstavi zlonamerno kodo neposredno. To onemogočite tako, da v wp-config.php dodate vrstico define('DISALLOW_FILE_EDIT', true);. To ne preprečuje posodobitev vtičnikov in tem, le onemogoča neposredno urejanje kode.
Razhroščevanje (debug) v produkciji
Nikoli ne puščajte vključenega WP_DEBUG na produkcijskem spletnem mestu. Način razhroščevanja prikazuje napake in opozorila PHP obiskovalcem, kar razkriva informacije o strukturi spletnega mesta, poteh do datotek in različicah programske opreme. Na produkcijskem spletnem mestu nastavite define('WP_DEBUG', false);. Če potrebujete informacije o razhroščevanju, uporabite define('WP_DEBUG_LOG', true); z define('WP_DEBUG_DISPLAY', false);, da se napake beležijo v datoteko, namesto da se prikazujejo obiskovalcem.
Datotečna dovoljenja
Pravilna datotečna dovoljenja so prva obrambna linija na ravni strežnika. Napačna dovoljenja napadalcem omogočajo, da berejo, spreminjajo ali izvajajo datoteke na vašem strežniku.
Priporočena dovoljenja
WordPress priporoča naslednja dovoljenja: imeniki naj bodo 755 (lastnik lahko bere, piše in izvaja; skupina in ostali lahko berejo in izvajajo), datoteke naj bodo 644 (lastnik lahko bere in piše; skupina in ostali lahko le berejo), wp-config.php naj bo 640 ali 600 (le lastnik lahko bere in piše). Nikoli ne uporabljajte dovoljenj 777 - to pomeni, da lahko vsak na strežniku bere, piše in izvaja vaše datoteke.
Zaščita imenika wp-includes
Imenik wp-includes vsebuje jedrne datoteke WordPressa, ki nikoli ne smejo biti neposredno dosegljive. V datoteko .htaccess v korenskem imeniku dodajte pravilo, ki blokira neposreden dostop do datotek PHP v wp-includes. To preprečuje napadalcem, da bi neposredno izvajali jedrne datoteke, kar je pogosta tehnika pri napadih na WordPress.
Zaščita imenika uploads
Imenik wp-content/uploads je edini imenik, v katerega mora WordPress pisati (za naložene slike, dokumente itd.). Napadalci pogosto poskušajo naložiti zlonamerno datoteko PHP, prikrito kot sliko, in jo nato izvedejo. To preprečite tako, da v imenik uploads dodate pravilo .htaccess, ki prepoveduje izvajanje datotek PHP. To pomeni, da tudi če napadalec uspešno naloži datoteko PHP, je strežnik ne bo izvedel.
Onemogočanje XML-RPC
XML-RPC (xmlrpc.php) je starejši protokol, ki zunanjim aplikacijam omogoča komunikacijo z WordPressom. Bil je uporaben pred REST API-jem, danes pa predstavlja znatno varnostno tveganje.
Zakaj je XML-RPC nevaren
XML-RPC se uporablja za dve vrsti napadov: napade s surovo silo (brute force) (napadalec lahko v enem zahtevku XML-RPC preizkusi na stotine gesel z uporabo metode system.multicall in tako zaobide omejevanje hitrosti na prijavni strani) in napade DDoS (funkcionalnost pingback je mogoče zlorabiti za amplifikacijske napade DDoS, kjer vaše spletno mesto postane del botneta). Večina sodobnih funkcionalnosti WordPressa (mobilna aplikacija, Jetpack) uporablja REST API namesto XML-RPC.
Kako onemogočiti XML-RPC
Najpreprostejši način je dodajanje pravila v datoteko .htaccess, ki blokira dostop do datoteke xmlrpc.php in vrne status 403 Forbidden. Druga možnost je uporaba filtra v functions.php: add_filter('xmlrpc_enabled', '__return_false');. To onemogoči funkcionalnost XML-RPC, vendar še vedno dovoljuje dostop do datoteke (kar pomeni, da strežnik še vedno obdeluje zahtevek). Za popolno blokado je metoda .htaccess boljša.
Varnostne glave (security header-ji)
Varnostne glave HTTP so navodila, ki jih strežnik pošlje brskalniku za izboljšanje varnosti spletnega mesta. Za implementacijo teh glav niso potrebne spremembe v kodi WordPressa - dodajo se v .htaccess ali nginx konfiguracijo.
Content-Security-Policy (CSP)
Glava CSP nadzoruje, katere vire sme brskalnik naložiti na vaši strani. To je najmočnejša zaščita pred napadi XSS (Cross-Site Scripting), saj preprečuje izvajanje nepooblaščene kode JavaScript. Začnite z glavo Content-Security-Policy-Report-Only, da preizkusite politiko, ne da bi blokirali vire, nato pa preklopite na način uveljavljanja (enforcing). Pri WordPressu je lahko konfiguracija CSP zapletena zaradi vrstičnih (inline) skript in zunanjih virov, ki jih uporabljajo teme in vtičniki.
X-Content-Type-Options
Glava X-Content-Type-Options: nosniff preprečuje, da bi brskalnik ugibal vrsto MIME datoteke. Brez te glave lahko napadalec naloži zlonamerno datoteko z napačno končnico in brskalnik jo bo poskušal izvesti na podlagi vsebine namesto končnice. To je preprosta glava, ki nima negativnih učinkov - vedno jo vključite.
X-Frame-Options
Glava X-Frame-Options: SAMEORIGIN preprečuje nalaganje vašega spletnega mesta znotraj iframe-a na drugem spletnem mestu. To ščiti pred napadi clickjacking, kjer napadalec postavi prozoren iframe vašega spletnega mesta čez svoje spletno mesto, da pretenta uporabnike, da kliknejo nekaj. SAMEORIGIN dovoljuje iframe-e samo z iste domene.
Strict-Transport-Security (HSTS)
Glava HSTS prisili brskalnik, da vedno uporablja šifrirano povezavo HTTPS do vašega spletnega mesta. Ko brskalnik enkrat prejme glavo HSTS, bo samodejno preusmerjal vse zahtevke HTTP na HTTPS, ne da bi stopil v stik s strežnikom. To ščiti pred napadi SSL stripping. Uporabite Strict-Transport-Security: max-age=31536000; includeSubDomains (1 leto). POMEMBNO: HSTS vključite šele potem, ko ste prepričani, da SSL pravilno deluje na vseh straneh.
Referrer-Policy
Referrer-Policy nadzoruje, koliko informacij brskalnik pošlje v glavi Referer, ko uporabnik klikne povezavo. Referrer-Policy: strict-origin-when-cross-origin pošlje poln URL za zahtevke z istega izvora, le izvor za zahtevke HTTPS z drugega izvora in nič za zahtevke HTTP. To ščiti zasebnost uporabnikov in preprečuje uhajanje parametrov URL na zunanja spletna mesta.
Dodatne varnostne nastavitve WordPressa
Sprememba prijavnega URL-ja
Privzeti prijavni URL WordPressa je /wp-admin/ ali /wp-login.php, kar pozna vsak napadalec. Sprememba prijavnega URL-ja v nekaj nestandardnega (npr. /moj-dostop/) odpravi večino avtomatiziranih napadov s surovo silo, saj boti ne bodo našli prijavne strani. Uporabite vtičnik, kot je WPS Hide Login, za preprosto spremembo brez spreminjanja jedrnih datotek.
Dvofaktorska avtentikacija (2FA)
2FA dodaja drugo plast zaščite poleg gesla. Tudi če napadalec izve vaše geslo, ne more dostopati do računa brez drugega faktorja (običajno kode s telefona). Uporabite vtičnik, kot je Google Authenticator ali Wordfence Login Security, za implementacijo 2FA za vse skrbniške račune. To je eden najučinkovitejših zaščitnih ukrepov - odpravi praktično vse napade s surovo silo in credential stuffing.
Omejevanje poskusov prijave
WordPress privzeto dovoljuje neomejeno število poskusov prijave, kar omogoča napade s surovo silo. Uporabite vtičnik, kot je Limit Login Attempts Reloaded, ki blokira IP-naslov po določenem številu neuspešnih poskusov (priporočeno: 3-5 poskusov). Kombinirajte ga s CAPTCHA na prijavnem obrazcu za dodatno zaščito.
Redno posodabljanje
To je najpomembnejši varnostni ukrep od vseh. 86 % ogroženih WordPress spletnih mest uporablja zastarelo različico WordPressa, teme ali vtičnika. Vključite samodejne posodobitve za manjše (minor) različice WordPressa (varnostni popravki) in vsaj enkrat tedensko preverjajte posodobitve vtičnikov in tem. Izbrišite neaktivne vtičnike in teme, saj ima lahko tudi deaktiviran vtičnik ranljivost, ki jo je mogoče izkoristiti.
Zaključek
Varnost WordPressa ni enkratna naloga, temveč neprekinjen proces. Nastavitve iz tega vodnika izvajajte eno za drugo: zaščitite wp-config.php, nastavite pravilna datotečna dovoljenja, onemogočite XML-RPC, dodajte varnostne glave, spremenite prijavni URL, omogočite 2FA in redno posodabljajte vse. Vsak od teh ukrepov odpravi celotno kategorijo napadov. Pri BeoHostingu naši hosting paketi prihajajo z vnaprej konfigurirano zaščito na strani strežnika, vključno z ModSecurity WAF, samodejnimi varnostnimi kopijami in skeniranjem zlonamerne programske opreme, vendar zaščita na strani strežnika najbolje deluje v kombinaciji s pravilno nastavljenim WordPressom.
BeoHosting Ekipa
10+ let izkušenj — Strokovnjaki za spletno gostovanje in infrastrukturo
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Zadnja posodobitev: