Limitare l'accesso a xmlrpc.php

1 ago 2014, 16:33:07
Visualizzazioni: 14.4K
Voti: 2

Sono abbastanza nuovo su WordPress e recentemente ho notato un'enorme quantità di traffico verso il seguente file:

162.242.170.222 - - [01/Aug/2014:08:18:54 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:01 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:01 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:02 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:11 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861
162.242.170.222 - - [01/Aug/2014:08:19:13 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861
162.242.170.222 - - [01/Aug/2014:08:19:18 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861

Ho bloccato l'indirizzo IP che è una soluzione temporanea. Esiste una soluzione permanente per bloccare queste richieste, soprattutto se non ho bisogno

0
Tutte le risposte alla domanda 4
0
10

Se il tuo server è Apache, puoi bloccare l'accesso prima che WordPress venga raggiunto con una sola riga nel tuo file .htaccess:

Redirect 403 /xmlrpc.php

Puoi aggiungere un'altra riga per mantenere la risposta breve:

ErrorDocument 403 "no"

Questo invierà una risposta molto minimale (due byte più gli header HTTP) e conserverà le tue risorse per traffico più utile.

1 ago 2014 20:55:43
5

Ci sono plugin per questo: ad esempio http://wordpress.org/plugins/disable-xml-rpc/

Puoi anche scrivere un filtro personalizzato

add_filter('xmlrpc_enabled', '__return_false');

Puoi semplicemente aggiungere questo codice al tuo functions.php del tema (si trova in wp-content/themes/il_tuo_tema).

Tuttavia, ti consigliamo di creare un child theme (http://codex.wordpress.org/Theme_Development) in modo che le tue modifiche non scompaiano quando aggiorni il tema.

In alternativa, puoi creare il tuo plugin (http://codex.wordpress.org/Writing_a_Plugin) dove inserirai tutte le tue personalizzazioni per WordPress.

Aggiungo anche il seguente codice per una protezione migliore:

/**
 * Proteggi WordPress rimuovendo la versione
 */
remove_action('wp_head', 'wp_generator');


/**
 * Proteggi WordPress nascondendo gli errori di login
 */
function hide_login_errors($errors) { return 'login error'; }
add_filter('login_errors', 'hide_login_errors', 10, 1);
1 ago 2014 16:43:16
Commenti

Sarebbe bello se aggiungessi una spiegazione su dove inserire il codice e le implicazioni dell'uso di questo metodo

Mark Kaplun Mark Kaplun
1 ago 2014 17:15:11

Assolutamente :) Ho modificato la risposta

YaFred YaFred
1 ago 2014 20:36:30

Per favore non usare create_function(). Mai. È difficile da leggere e non può essere memorizzato in un opcache.

fuxia fuxia
1 ago 2014 20:56:39

Cosa suggeriresti?

YaFred YaFred
1 ago 2014 21:09:42

O una funzione separata o una closure.

fuxia fuxia
3 ago 2014 04:06:29
0

Un altro modo è inserire questo nel tuo file .htaccess:

<Files "xmlrpc.php">
order allow,deny
deny from all
errordocument 403 /noaccess.html
errordocument 404 /noaccess.html
</Files>
9 set 2014 13:53:46
0

oppure per nginx

# Disabilita xmlrpc.php perché viene abusato da script kiddies
location ~ xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
    return 444;
}
13 apr 2023 00:29:31