Sicurezza e .htaccess - Proteggi la tua installazione WordPress
Circa un mese fa ho avviato un blog WordPress su un server hosting relativo a un hobby. Quindi, al momento sono nuovo in questo campo.
Essendo preoccupato per la sicurezza, una cosa che ho fatto è stata installare il plugin WP Security Scan. Secondo i risultati del plugin, il mio sito è a posto tranne per questo avviso in rosso:
Il file .htaccess non esiste in wp-admin/ (ho verificato via ssh e infatti non esiste)
Ho fatto ricerche approfondite sull'argomento ma ho trovato troppe informazioni su .htaccess. Ho letto la guida "Hardening WordPress" sul sito WordPress.org, ecc. E mi sono imbattuto in questo articolo: http://digwp.com/2010/07/wordpress-security-lockdown/
In sostanza, mi sono confuso con la moltitudine di informazioni disponibili.
Cosa dovrebbe contenere il file .htaccess in wp-admin? Ho letto che questo file .htaccess dovrebbe proteggere con password la directory wp-admin, ma ho anche letto che potrebbe causare problemi di funzionalità.
Un aiuto su questo argomento sarebbe molto apprezzato.
Grazie. -wdypdx22
Aggiornamento Non sono loggato nel mio blog e sto usando un computer diverso dal solito. Quando inserisco l'url www.mysite.com/wordpress/wp-admin/ viene effettuato un reindirizzamento alla pagina di login. Se questo è ciò che accade, allora è davvero necessario un file htaccess nella directory wp-admin?
AGGIORNAMENTO: Quando ho pubblicato la mia risposta inizialmente ho mancato il fulcro della domanda; la mia risposta riguardava la sicurezza generale di .htaccess
ed è ora elencata sotto la doppia linea (guarda in basso se ti interessa.) Sfortunatamente non ho esperienza specifica con la protezione di /wp-admin/
utilizzando .htaccess
, quindi elencherò semplicemente le due risorse che approfondirò quando e se ne avrò bisogno:
Il primo raccomanda quanto segue (e qui c'è alcuna discussione al riguardo.)
<Files ~ "\.(php)$">
AuthUserFile /etc/httpd/htpasswd
AuthType Basic
AuthName "restricted"
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any
</Files>
Il secondo contiene molte informazioni, specialmente nei commenti, ma ammetto che fornirti una lista da leggere non è la risposta che cercavi.
Mi dispiace non essere stato più utile su questo argomento.
========================================
Tipicamente WordPress ha solo quanto segue che gestisce l'elaborazione dei permalink e non è correlato alla sicurezza:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Recentemente ho trovato il plugin WP htacess Control che gestisce molto di .htaccess
per te e mi piace molto. Dopo aver modificato le sue impostazioni, ha aggiunto le seguenti opzioni:
# WPhtC: Disable ServerSignature on generated error pages
ServerSignature Off
# WPhtC: Disable directory browsing
Options All -Indexes
# WPhtC: Protect WP-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
# WPhtC: Protect .htaccess file
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
</files>
Ha anche aggiunto queste opzioni che riguardano le prestazioni piuttosto che la sicurezza:
# WPhtC: Setting mod_gzip
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
# WPhtC: Setting mod_deflate
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent env=!dont-vary
</IfModule>
Oltre a questo, ci sono alcuni plugin che non ho provato ma che si concentrano sulla sicurezza e che interagiscono con .htaccess
- potresti provarli ciascuno solo per vedere cosa fanno al file .htaccess
:
- WP Super Secure and Fast htaccess (anche)
- BulletProof Security
- Silence is Golden Guard
- WP-BlockYou
- Stealth Login
- HTTP Authentication
- AskApache Password Protect
Oltre a ciò, se vuoi conoscere la risorsa (IMO) #1 per la sicurezza di Apache relativa a WordPress puoi trovarla su AskApache.com; questo tizio è davvero hardcore! Il suo blog non risolverà il tuo problema di "troppe informazioni" ma almeno puoi considerarlo una risorsa autorevole!
Ecco alcuni esempi (anche se non tutti sono direttamente correlati a WordPress, tutti sono applicabili):
- Advanced WordPress wp-config.php Tweaks
- Example .htaccess for WordPress
- Advanced WordPress 404
- Mod_Security .htaccess tricks
- .htaccess Plugin Blocks Spam, Hackers, and Password Protects Blog
Spero che questo sia utile.

Ottime informazioni per la sicurezza generale, ma non risponde riguardo alla cartella /wp-admin/

Anche se queste informazioni possono essere utili, nessuna di esse ha a che fare con la domanda. Tutto questo riguarda .htaccess nella directory principale. La domanda originale era su .htaccess nella sottodirectory wp-admin.

@Insanity5902 @Doug: Colpa mia. Semplicemente non l'avevo notato quando stavo leggendo.

Ho accettato la tua risposta fondamentalmente perché, in sintesi, la sicurezza complessiva è il mio obiettivo. Il mio blog è molto nuovo, ma il traffico sta crescendo. In pratica, voglio solo avere misure di sicurezza pronte per quando e se inizierò davvero ad avere molto traffico. -Grazie

L'idea alla base è che, se hai file orfani rimasti indietro da aggiornamenti passati o per attacchi zero-day, il tuo sistema potrebbe essere violato. Inoltre, proteggere wp-admin con un altro metodo aiuterà contro gli attacchi brute-force.
Un'idea) Se sei l'unico a modificare il sito, puoi limitare l'accesso alla cartola per indirizzo IP facendo qualcosa come:
<Files *>
Order deny,allow
Deny from All
Allow from 1.2.3.4
</Files>
Per renderlo un po' più tollerabile per sistemi con IP dinamici; dovresti essere in grado di consentire l'accesso da un sottoblocco, quindi se il tuo pool IP è sempre compreso tra 1.2.3.128 - 1.2.3.255, potresti fare qualcosa come 1.2.3.128/25
Un'altra idea) richiedi HTTPS, restituisci un permesso negato se provano ad accedere via HTTP. Ma non reindirizzarli all'HTTPS. Puoi usare un certificato autofirmato o uno di CA Cert per cavartela senza acquistarne uno.

Includo sempre un file .htaccess in wp-admin, anche se non ci metto mai nulla dentro, perché annulla il file della directory root. Alcune persone usano il file .htaccess di wp-admin per nascondere l'intera directory a tutti tranne che a un indirizzo IP, altri lo usano per proteggere con password la directory.
Tuttavia, proteggere con password la sezione di amministrazione tramite .htaccess disabiliterà le comunicazioni ajax, poiché interagiscono con wp-admin/admin-ajax.php.
In generale, non vedo molte ragioni per aggiungere qualcosa al file .htaccess di amministrazione a meno che non siate estremamente paranoici. Gli attacchi di solito prendono di mira wp-content comunque.

Un file .htaccess in una sottodirectory può sovrascrivere le direttive nella directory principale, ma un file .htaccess vuoto non annulla nulla.

Utilizzo anche la libreria sseqlib per una maggiore sicurezza e diversi hack nel file .htaccess; vedi i link
