Se vogliamo proteggere l'accesso all'area amministrativa di un'installazione WordPress (il classico www.nomedominio.com/wp-login.php ), in maniera da scoraggiare tentativi di accesso non autorizzato o attacchi brute-force, è possibile farlo in maniera semplice, efficace ed efficiente inserendo poche righe nel file .htaccess
Per limitare l'accesso solo da pochi determinati IP
(utile se, per esempio, per collegarci utilizziamo una connessione con IP statico oppure una VPN)
Inserire all'inizio del file .htaccess le seguenti righe (nota: sostituire 111.111.111.111 con il proprio IP!):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
E' possibile aggiungere una riga per ciascun IP da autorizzare; per esempio:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111$
RewriteCond %{REMOTE_ADDR} !^222\.222\.222\.222$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
permetterà l'accesso solo dagli IP 111.111.111.111 e 222.222.222.222
Per limitare l'accesso con password
E' possibile limitare l'accesso ad una determinata path o directory solo a chi si autenticherà con le credenziali corrette; quindi, proteggendo l'URL di accesso amministrativo di WordPress, sarà necessario fornire DUE coppie di credenziali username/password: una prima volta per accedere all'URL, ed una seconda volta per effettuare il login in WordPress.
Il vantaggio è che la protezione dell'URL di accesso tramite .htaccess è di gran lunga più efficiente di quella offerta dal login di WordPress: ed un attacco brute-force massiccio diretta all'URL di accesso può incidere sensibilmente sulle prestazioni del nostro servizio, mentre lo stesso attacco diretto al login tramite .htaccess comporterà un consumo di risorse praticamente irrisorio.
Inserire all'inizio del file .htaccess le seguenti righe:
Protect wp-login
<Files wp-login.php>AuthUserFile ~/.htpasswd
AuthName "Private access"
AuthType Basic
require user myusername
</Files>
(nota: sostituire myusername con lo username desiderato: evitare i soliti admin, administrator e simili)
E creare un file di testo di nome .htpasswd contenente:
mysername:guN56VfdlEb9Vf3wXdc7
(nota: sostituire myusername con lo username desiderato, e guN56VfdlEb9Vf3wXdc7 con la password desiderata)