
Proteger WordPress con htaccess
Proteger WordPress con htaccess
En éste tutorial vamos a aprender cómo proteger WordPress con htaccess, sin necesidad de usar plugins que ralenticen nuestra web y engorden nuestra base de datos.
Un archivo .htaccess
(hypertext access) es un archivo en formato ASCII popularizado por el Servidor HTTP Apache, que es el más usado en el mundo cuando hablamos de servidores Web. Permite definir diferentes directivas de configuración para cada directorio.
Los archivos .htaccess
se usan, entre otras cosas, para especificar restricciones de seguridad. Y eso es lo que vamos a ver en éste tutorial. Vamos a mejorar muchísimo la seguridad de nuestro WordPress añadiendo unas pocas líneas de código.
Por defecto, un archivo .htaccess
tras una instalación de WordPress está así:
1
2
3
4
5
6
7
8
9
10
|
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !–f
RewriteCond %{REQUEST_FILENAME} !–d
RewriteRule . /index.php [L]
# END WordPress
|
Pues bien,vamos a ir añadiéndole pequeños trozos de código para proteger nuestro WordPress.
1.Restringimos el acceso al directorio /wp-includes
Éste directorio contiene, esencialmente, el core de WordPress. Nada ni nadie debería tocarlo. Ni nosotros(en la mayoría de los casos), ni un plugin, un theme, etc…
Para hacerlo, pegamos en nuestro .htaccess
el siguiente código:
1
2
3
4
5
6
7
|
RewriteEngine On
RewriteBase /
RewriteRule ^wp–admin/includes/ – [F,L]
RewriteRule !^wp–includes/ – [S=3]
RewriteRule ^wp–includes/[^/]+\.php$ – [F,L]
RewriteRule ^wp–includes/js/tinymce/langs/.+\.php – [F,L]
RewriteRule ^wp–includes/theme–compat/ – [F,L]
|
2.Restringimos el acceso al archivo wp-config.php
El archivo wp-config.php contiene, entre otras cosas, los datos de acceso a nuestra base de datos (nombre, usuario, contraseña, etc.)
Lo protegemos añadiendo:
1
2
3
4
|
<Files wp–config.php>
Order Allow,Deny
Deny from all
</Files>;
|
3.Protegemos el propio .htaccess
¿Quién protege a .htaccess
?. Pues éste código:
1
2
3
4
5
|
<Files ~ “^.*\.([Hh][Tt][Aa])â€>
Order allow,deny
Deny from all
Satisfy all
</Files>
|
4.Cerramos el acceso a todos los directorios de themes y de plugins.
Vamos a proteger el acceso a todos los directorios de themes y de plugins, es decir, todo lo que esté en los directorios:
wp-content/plugins
wp-content/themes
1
2
3
4
5
6
|
RewriteCond %{REQUEST_URI} !^/wp–content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp–content/plugins/directory/to/exclude/
RewriteRule wp–content/plugins/(.*\.php)$ – [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp–content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp–content/themes/directory/to/exclude/
RewriteRule wp–content/themes/(.*\.php)$ – [R=404,L]
|
5.Bloqueamos en el login, todas las IP´s (menos la nuestra)
Pues eso, si alguien intenta loguearse desde una IP no autorizada, le saldrá un error 403 de acceso prohibido:
1
2
3
4
5
|
<Files wp–login.php>
Order Allow,Deny
Deny from all
Allow from 127.0.0.1
</Files>
|
Tendréis que cambiar esa IP por la vuestra, puedes hacer clic aquí para saber cuál es tu IP. Pero cuidado!, tenéis que tener una IP fija para hacer esto.
6. Bloqueamos el acceso a subdirectorios
1
|
Options –Indexes
|
7. Bloquear SPAM
1
2
3
4
5
6
|
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp–comments–post.php*
RewriteCond %{HTTP_REFERER} !.*tu_dominio.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
|
8. Bloquear IP´s específicas de SPAM
Con éste código bloqueamos IP´s específicas que no estén haciendo SPAM, cambia la IP del ejemplo por la que quieras bloquear:
1
2
3
4
5
|
<Limit GET POST>;
order allow,deny
deny from 159.89.156.129
allow from all
</Limit>
|
Pues con estos sencillos trozos de código,y sin tener que usar ningún plugin, hemos mejorado muchísimo la seguridad de nuestra web en WordPress.
Fuente: diegofresno.com