Kako da deaktivirate xmlrpc.php fajl na svom WordPress sajtu Idi do glavnog sadržaja

Kako da deaktivirate xmlrpc.php fajl na svom WordPress sajtu

xmlrpc.php je fajl koji često izaziva zabunu među korisnicima WordPress-a, pre svega zbog sigurnosnih rizika koje nosi sa sobom. Iako ovaj fajl obezbeđuje određene funkcionalnosti vašem WordPress sajtu, kao što su omogućavanje daljinskog pristupa sajtu i pingbacks i trackbacks funkcionalnosti, danas je pre svega poznat po potencijalnim problemima do kojih može da dovede.

U ovom tekstu ćemo objasniti šta je xmlrpc.php fajl, zašto može da predstavlja rizik i kako da ga bezbedno deaktivirate, kako biste zaštitili svoj WordPress sajt od potencijalnih napada.

Šta je xmlrpc.php?

xmlrpc.php je fajl u WordPress-u koji služi za komunikaciju sa spoljnim sistemima pomoću XML-RPC protokola. Glavna funkcionalnost ovog fajla jeste da omogući daljinski pristup različitim WordPress funkcijama i omogući da određeni zadaci (poput kreiranja ili izmene postova, upravljanja komentarima i sl.) mogu da se izvršavaju sa druge lokacije, a ne samo sa WordPress sajta. Inače sam naziv xmlrpc.php fajla dolazi od dva već dobro poznata pojma:

  • XML (eXtensible Markup Language) je univerzalni jezik za obeležavanje podataka, koji se koristi da bi različiti sistemi mogli lako da čuvaju i razmenjuju informacije.
  • RPC (Remote Procedure Call) je metoda komunikacije koja omogućava daljinsko pozivanje funkcija ili procedura u okruženju koje se nalazi na drugom serveru ili drugoj aplikaciji.

Zahvaljujući ovom fajlu, WordPress je ranije omogućavao da korisnici mogu sa telefona ili tableta da kreiraju i ažuriraju postove na sajtu, kao i da razne aplikacije i servisi mogu spolja da dodaju ili menjaju sadržaj na sajtu.

Pored toga mogao je da upravlja pingback/trackback funkcijama (kada jedan sajt pošalje signal drugom da ga je spomenuo ili citirao) Ova funkcionalnost je bila popularna u početnim verzijama WordPress-a.

Danas je većinu tih mogućnosti preuzeo REST API, koji je savremeniji i obezbeđuje veću fleksibilnost i sigurnost, pa se xmlrpc.php relativno retko koristi i sve češće onemogućava zbog potencijalnih bezbednosnih rizika.

Sigurnosni problemi sa xmlrpc.php

Iako ovaj fajl ima jasnu funkcionalnost i legitimnu namenu, njegova upotreba nosi nekoliko značajnih bezbednosnih rizika:

  1. Brute-force napadi
    xmlrpc.php omogućava višestruke pokušaje prijave pomoću samo jednog zahteva. Umesto da za svaki pokušaj prijave napadač mora da pošalje poseban zahtev, kroz xmlrpc.php može slati više kombinacija korisničkih imena i lozinki odjednom. Ovo olakšava brute-force napade, jer ih je moguće izvršiti brže i sa manje traga na serveru.
  2. DDoS napadi
    Pingbacks i trackbacks funkcionalnost u xmlrpc.php može se iskoristiti za masovno slanje lažnih zahteva, čime se server preopterećuje i dovodi do njegovog pada. Napadači često koriste više WordPress sajtova istovremeno kako bi stvorili distribuiranu mrežu i dodatno otežali zaštitu i pronalaženje izvora napada.
  3. Eksploatacija kroz zloupotrebu API-ja
    Napredniji napadači mogu koristiti xmlrpc.php za slanje malicioznih zahteva ili izvršavanje neovlašćenih radnji na sajtu. Ovo potencijalno uključuje ubacivanje zlonamernog koda, kreiranje lažnih naloga, menjanje postojećih podešavanja i pristup osetljivim podacima.

Treba li onda onemogućiti xmlrpc.php?

Odgovor na pitanje da li treba da onemogućite xmlrpc.php u velikoj meri zavisi od toga na koji način koristite WordPress i koje funkcionalnosti su vam stvarno neophodne. U nastavku su prikazane dve glavne situacije koje će vam pomoći da donesete odluku.

Kada je xmlrpc.php neophodan?

  1. Korišćenje mobilnih aplikacija za WordPress
    Ako se u svom radu oslanjate na mobilne aplikacije (zvaničnu WordPress aplikaciju ili neke druge third-party aplikacije) koje i dalje koriste XML-RPC protokol, xmlrpc.php je u tom slučaju za vas obavezan. U ovakvom scenariju onemogućavanje xmlrpc.php fajla prekinulo bi mogućnost daljinske administracije i unošenja sadržaja.
  2. Integracija sa alatima trećih strana
    Postoje neki servisi ili alati starije generacije (ili one koje iz bilo kog razloga nisu prešle na REST API) koji zahtevaju XML-RPC protokol za razmenu podataka sa WordPress-om. Ako su takve usluge deo vaše svakodnevne rutine, biće vam neophodno da xmlrpc.php ostane omogućen.

U slučaju da vam je xmlrpc.php neophodan, potrebno je da obratite posebnu pažnju na bezbednost. Ako morate da ostavite xmlrpc.php aktivnim, razmislite o primeni jakih lozinki, dvofaktorske autentifikacije (2FA) ili bezbednosnih plugina (firewall, ograničavanje broja pokušaja prijave i slično).

Kako onemogućiti xmlrpc.php u WordPress-u?

Postoji više načina da onemogućite ili ograničite pristup ovom fajlu, u zavisnosti od toga koliko predznanje posedujete. U nastavku su opisani najčešći i najefikasniji pristupi.

1. Korišćenje plugina

Za korisnike koji ne žele da se bave kodiranjem, plugini nude brzo i jednostavno rešenje. Ipak, imajte na umu da prekomerna upotreba plugina može da optereti sajt, pa je preporučljivo uvek koristiti samo one plugine koji su vam stvarno potrebni.

  • Disable XML-RPC
    Jednostavan plugin koji u potpunosti onemogućava xmlrpc.php. Dovoljno je da ga instalirate i aktivirate.
  • Wordfence Security
    Višenamenski sigurnosni plugin koji sadrži opciju za blokiranje xmlrpc.php poziva. Omogućava i širu zaštitu sajta, poput firewall-a, praćenja saobraćaja i skeniranja zlonamernih fajlova.

2. Onemogućavanje putem .htaccess fajla

Ako imate pristup serveru (obično putem cPanel-a ili preko FTP/SFTP konekcije) i želite detaljniju kontrolu, možete da blokirate pristup xmlrpc.php pomoću fajla .htaccess (na Apache serverima).

  1. U root folderu vašeg WordPress sajta (gde se nalazi i wp-config.php fajl) pronađite ili kreirajte .htaccess fajl.

Otvorite .htaccess fajl i dodajte sledeći kod na kraj dokumenta:

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
</Files>
  1. Sačuvajte promene i učitajte fajl (ako ste lokalno menjali).

Ova konfiguracija blokira sve zahteve usmerene ka xmlrpc.php još na nivou servera, tako da oni nikada ne dolaze do WordPress aplikacije. Ovo je jedna od najefikasnijih metoda za zaštitu od zloupotreba xmlrpc.php fajla.

Ukoliko želite da saznate više o .htaccess fajlu i njegovim prednostima, predlažemo da pročitate Kako da pomoću .htaccess fajla unapredite rad svog web sajta.

3. Onemogućavanje putem fajla functions.php

Ukoliko iz nekog razloga želite da uradite deaktivaciju xmlrpc.php fajla kroz WordPress temu, možete iskoristiti functions.php fajl koji se nalazi u folderu aktivne teme.

  1. Otvorite functions.php fajl vaše aktivne teme.

Na kraju fajla (ili na neko drugo prikladno mesto) dodajte sledeći kod:

add_filter('xmlrpc_enabled', '__return_false');

Sačuvajte fajl kako biste sačuvali izmene.

Na ovaj način, WordPress će prestati da dozvoljava bilo kakve zahteve koji idu preko xmlrpc.php.

Ovo rešenje ne zahteva pristup serveru niti instaliranje dodatnih plugina. Ipak, imajte na umu da promena teme (ili ažuriranje teme koja ne čuva izmene u child temi) može prebrisati ovaj kod, pa je preporuka da koristite child temu ukoliko se odlučite za ovakav pristup.

Ukoliko do sada niste imali iskustva sa kreiranjem child teme, predlažemo da pročitate Kako napraviti WordPress child temu.

Ukoliko želite da saznate više o functions.php fajlu, predlažemo da pročitate Čemu sve služi functions.php fajl.

4. Konfiguracija na nivou servera

Ako imate sopstveni server ili VPS (umesto klasičnog shared hostinga), možete blokirati xmlrpc.php direktno iz konfiguracionih fajlova za Apache ili Nginx:

Nginx
U okviru fajla za konfiguraciju servera dodajte:

location = /xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
}

Apache
Možete to uraditi pomoću direktiva u samom virtual host fajlu, slično kao u .htaccess-u:

<Files xmlrpc.php>
    Require all denied
</Files>

Ova metoda je efikasna jer sve zahteve odbija na samom početku, pre nego što dođu do WordPress-a. Međutim, može biti kompleksnija za korisnike koji nisu navikli na rad u serverskom okruženju.

Dodatni načini i najbolja praksa

Pored gore navedenih metoda, postoje i drugi načini da ograničite ili onemogućite xmlrpc.php:

  1. Promena naziva ili uklanjanje fajla xmlrpc.php:
    Ovo se obično ne preporučuje jer može izazvati greške u WordPress core-u, a i sva sledeća WordPress ažuriranja mogu vratiti xmlrpc.php fajl. Takođe, neki plugin ili integracija može da zahteva ovaj fajl, pa biste mogli nenamerno da oborite sajt.
  2. Ograničavanje pristupa po IP adresi:
    Ako tačno znate sa kojih IP adresa treba da se dozvoli daljinski pristup, možete ograničiti pristup xmlrpc.php-u samo na te IP adrese. Ovo se radi putem .htaccess ili server konfiguracije, ali je preporučljivo samo u situacijama gde postoji mali broj poznatih IP adresa.
  3. Upotreba WAF rešenja (Web Application Firewall):
    Neki WAF servisi (poput Cloudflare, Sucuri, Wordfence WAF i slično) omogućavaju da blokirate ili ograničite xmlrpc.php na nivou mreže ili aplikacije, pa čak i pre nego što zahtev dođe do vašeg servera.
  4. Praćenje logova i analiza:
    Povremeno proveravajte server log fajlove kako biste uočili eventualne čudne aktivnosti ili velik broj zahteva ka xmlrpc.php. Redovna analiza logova pomaže da na vreme identifikujete napade.

Potencijalni problemi nakon onemogućavanja

Iako onemogućavanje xmlrpc.php doprinosi bezbednosti sajta, treba imati na umu nekoliko mogućih posledica:

  1. Neispravnost određenih plugina ili aplikacija:
    Plugini ili aplikacije koje se oslanjaju isključivo na xmlrpc.php više neće moći da rade (npr. neke mobilne aplikacije za WordPress, stariji alati za objavljivanje i sl.).
  2. Gubitak pingbacks i trackbacks funkcionalnosti:
    Ako koristite ove funkcije kao deo blogovanja, one će biti onemogućene.
  3. Potencijalna potreba za prelaskom na REST API:
    Ako vam je ipak potreban daljinski pristup sajtu, možda je vreme da razmotrite prelazak na REST API. Pre prelaska obavezno proverite da li sva rešenja (pluginovi, mobilne aplikacije) podržavaju REST API.

Ako nakon onemogućavanja naiđete na probleme, najpre proverite da li je uzrok u nekoj aplikaciji, pluginu ili servisu koji zavisi od xmlrpc.php fajla.

Takođe, razmotrite da li postoje alternativna rešenja ili ažurirajte dodatke da koriste REST API, ukoliko je to moguće.

Zaključak

xmlrpc.php je nekada bio ključna komponenta za daljinski pristup WordPress sajtu, ali je danas, zbog sigurnosnih rizika i dostupnosti REST API-ja, postao uglavnom nepotreban za većinu korisnika. Onemogućavanje xmlrpc.php je preporučljivo za sve sajtove koji nemaju konkretne potrebe za ovom funkcionalnošću.

Blokiranje xmlrpc.php samo je jedan važan korak ka obezbeđivanju bezbednosti, naročito ako znate da vam ovaj fajl nije potreban za svakodnevni rad.

FAQ – Najčešća pitanja o xmlrpc.php i njegovoj bezbednosti

  1. Zašto uopšte postoji xmlrpc.php u WordPress-u?
    xmlrpc.php je prvobitno uveden da omogući daljinski pristup sajtu, posebno kroz mobilne aplikacije i third-party alate. Na primer, korisnici su mogli da kreiraju ili ažuriraju objave direktno sa telefona, pa čak i da upravljaju određenim funkcijama na sajtu bez potrebe za klasičnim web interfejsom.
  2. Koje su glavne bezbednosne pretnje povezane sa xmlrpc.php?
    Najčešći problemi su brute-force napadi, DDoS napadi i eksploatacija API-ja. Napadači mogu iskoristiti xmlrpc.php da istovremeno pošalju višestruke zahteve za prijavu (olakšavajući brute-force) ili da masovno preopterete server lažnim zahtevima (DDoS). U težim slučajevima mogu ubacivati zlonamerne kodove ili menjati konfiguracije na sajtu.
  3. Kako mogu znati da li treba da onemogućim xmlrpc.php?
    Ako ne koristite mobilne aplikacije za pisanje postova i nemate third-party alate koji zavise od XML-RPC protokola, velika je verovatnoća da vam ovaj fajl nije ni potreban. U tom slučaju, njegovo onemogućavanje smanjuje rizik od potencijalnih napada, pogotovo kada imate moderni REST API koji može da obavlja iste ili slične funkcije bez većine bezbednosnih problema.
  4. Koje su najjednostavnije metode za onemogućavanje xmlrpc.php?
    • Korišćenje plugina poput Disable XML-RPC ili Wordfence Security koje vam pružaju opciju blokiranja ovog fajla.
    • Izmena .htaccess fajla na Apache serveru da blokirate sve zahteve prema xmlrpc.php pre nego što stignu do WordPress-a.
    • Dodavanje kratke funkcije u functions.php koja gasi XML-RPC kroz WordPress filter.
    • Konfiguracija servera (Apache ili Nginx) da se direktno onemogući pristup ovom fajlu.
  5. Da li će onemogućavanje xmlrpc.php pokvariti neke WordPress funkcionalnosti?
    Može, ukoliko se oslanjate na:
    • Mobilne aplikacije za WordPress ili druge aplikacije koje zahtevaju XML-RPC.
    • Pingbacks i trackbacks, koji zavise od ovog fajla za obaveštavanje između sajtova.
      Ako vam ove funkcionalnosti nisu neophodne, verovatno nećete primetiti nikakav problem, a dobićete značajan benefit u bezbednosti sajta.

Nenad Mihajlović


Ostavite odgovor