Hola! Antes de nada, me gustaría agradecer a Bruno por darme la oportunidad de escribir mi primer post como invitado en esta web, gracias compañero 😉
Dicho esto, comenzamos con un tema del que poco se habla, cómo proteger nuestro WordPress de ataques sin plugins (recuerda hacer SIEMPRE copias de seguridad antes de realizar cualquier modificación en los archivos alojados en tu servidor).
Ya habrás podido leer, en otro post de esta web, cómo proteger nuestra web usando plugins de seguridad para WordPress. Aquí vamos a dar un paso más allá y hablaremos de cómo proteger tu web, evitado usar el menor número de plugins posibles por 2 motivos, entre otros:
- Reducir el tiempo de carga de nuestra web, evitando instalar plugins que suelen ser pesados y que no ayudan a mejorar el rendimiento del mismo.
- No depender de terceras personas para proteger nuestro negocio en Internet.
Índice de contenidos
- 1 ¿Hay peligro de ataques en WordPress?
- 2 Cambiar contraseña de acceso al panel de administración de WordPress
- 3 Cambiar la URL de acceso a wp-admin con .htaccess
- 4 ¿Cómo proteger WordPress con .htaccess?
- 5 ¿Cómo proteger el archivo .htaccess?
- 6 Códigos para proteger WordPress de ataques con .htaccess
- 6.1 Protege tu archivo wp-config.php
- 6.2 Protege el archivo error_log
- 6.3 Protege tu área de administración de WordPress
- 6.4 Negar acceso durante una hora específica en el día
- 6.5 Negar acceso a un dominio específico
- 6.6 Proteger con contraseña la carpeta de administrador de WordPress
- 6.7 Protege tu sitio web de WordPress de la inyección SQL
- 6.8 Restringe el acceso directo a los archivos PHP de plugins y temas
- 6.9 Asegura el directorio wp-includes
- 6.10 Bloquear escaneos a las listas de autores
- 6.11 Previene la navegación de directorios
- 6.12 Previene el Hotlinking a tus imágenes
- 6.13 Archivos seguros de plugins de WordPress
- 6.14 Bloquear solicitudes XMLRPC de WordPress
- 6.15 Prevenir entrada por la puerta de atrás en PHP
- 6.16 Prevenir SPAM en los comentarios
- 6.17 Firewall 6G / Lista negra
- 6.18 HackRepairs Blacklist
- 7 Conclusión
¿Hay peligro de ataques en WordPress?
WordPress es el CMS más usado a nivel mundial para crear páginas web. Para que nos hagamos una idea, aproximadamente el 30% de las webs que existen en Internet, están creadas con WordPress. ¿Qué significa esto? Que WordPress es un software muy popular y, es por esta razón, que está siempre en el punto de mira por aquellos que buscan hackear un sitio web.
Pese a que tiene una gran comunidad, formada por desarrolladores que colaboran para mejorar este CMS, y que trabajan siempre para mejorar la seguridad de WordPress, debemos tomar medidas para mejorar esa protección contra ataques o, al menos, ponerlo un poco más difícil.
Según la web de WordCamp, actualmente hay más de 75 millones de sitios que usan WordPress.
Las principales vías de acceso, suelen ser las siguientes:
- Vulnerabilidades en la plataforma de alojamiento.
- Temas vulnerables de WordPress.
- Problemas de seguridad de los complementos de WordPress.
- Información de inicio de sesión débil.
Saber esto nos da mucha información sobre cómo aumentar la seguridad de WordPress. En este artículo, aprenderás cómo proteger tu web y que este no se vea comprometido en ninguna de las formas de acceso mencionadas anteriormente.
Cambiar contraseña de acceso al panel de administración de WordPress
Cambiar la contraseña de acceso a nuestro WordPress, es una de las primeras medidas que hay que tomar para poder dificultar el acceso al BackEnd de nuestra web. Puedes hacerlo siguiendo los siguientes pasos:
- Accede al panel de administración de tu WordPress.
- Ve a “usuarios” y selecciona el usuario al que quieres cambiar la contraseña.
- Guarda los cambios.
Puedes crear contraseñas aleatorias con este generador de contraseñas online.
Cambiar o Resetar la contraseña desde phpMyAdmin
- Accedemos al Panel del Hosting (cPanel).
- Desde el Administrador de Archivos en /public_html (o carpeta de la instalación de WordPress) localizamos el archivo wp-config.php.
- Editamos el archivo wp-config.php y comprobamos cual es la base de datos en uso (si usamos varias en el Hosting).
- Desde el Panel del Hosting accedemos al gestor de bases de datos phpMyAdmin.
- Desde phpMyAdmin cargamos la base de datos en uso.
- Localizamos la tabla wp_users.
- Si existen varios usuarios en la columna user_login localizamos el user «admin».
- Editamos dicho registro desde la opción «Editar» de dicho registro.
- En la fila user_pass, columna «Función» establecemos desde el selector en MD5.
- En la misma fila, columna «Valor» encontramos la actual contraseña encodeada en base64.
- Seleccionamos dicho valor y lo eliminamos escribiendo el nuevo valor en texto plano.
- Aplicamos los cambios pulsando en «Continuar».
- Verificamos desde la url de nuestro WordPress que podemos acceder a la url http://www.dominio.com/wp-login.php.
Puedes crear contraseñas cifradas con este generador de contraseñas md5.
Cambiar la URL de acceso a wp-admin con .htaccess
Si eres un usuario avanzado o si estás creando una web para hacer pruebas, puedes cambiar el acceso a wp-admin desde el .htaccess disponible en el directorio de instalación de WordPress.
- Entramos en nuestro FTP y vamos al directorio donde se ha instalado WordPress y localizamos el archivo .htaccess. NOTA: Puede que el archivo esté oculto. Para verlo tendrás que cambiar en preferencias/configuración para que te permita ver archivos ocultos.
- Agrega la siguiente línea de código en el archivo:
- RewriteRule ^nombre-acceso$ https://dominio.com/wp-admin.php [NC,L]
- Sustituye nombre-acceso por la palabra que desee y la url dominio.com por tu dominio.
- Por último, tan solo debes guardar el archivo y volverlo a subir. Para acceder al panel de administración debes usar la ruta que has establecido en el archivo. En nuestro caso quedaría así: https://dominio.com/nombre-acceso.
¿Cómo proteger WordPress con .htaccess?
Normalmente, los archivos .htaccess funcionan para poner restricciones de seguridad a un sitio web ya que desde él, se pueden bloquear IPs desconocidas, bloquear bots y también modificar las direcciones para hacerlas más amigables y/o seguras.
¿Cómo proteger el archivo .htaccess?
El archivo .htaccess por defecto viene en cualquier instalación de WordPress es:
# 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
Para proteger el archivo .htaccess de nuestro WordPress, aquí os presentamos algunos ejemplos:
Protección sensible a mayúsculas y minúsculas
El archivo .htaccess es uno de los archivos más importantes y necesita protección. Usa el siguiente fragmento de código para asegurar este archivo.
Si utilizas Apache 2.2
# Protege .htaccess en Apache 2.2 <files ~ "^.*\.([Hh][Tt][Aa])"> order allow, deny deny from all satisfy all </files>
Si utilizas Apache 2.4
# Protege .htaccess en Apache 2.4 <FilesMatch "^.*\.([Hh][Tt][Aa])"> Require all denied </FilesMatch>
Coincidencia de patrones débiles
Este método es altamente efectivo para asegurar los archivos .htaccess de tu web. Además, esta técnica también incluye la Satisfy Alldirectiva » » fortificante . Ten en cuenta que este código debe colocarse en el archivo .htaccess raíz de tu dominio:
# FUERTE PROTECCION HTACCESS <Files ~ "^.*\.([Hh][Tt][Aa])"> Order allow,deny Deny from all Satisfy all </Files>
Códigos para proteger WordPress de ataques con .htaccess
Como te decía al principio de este artículo, asegúrate de realizar copias de seguridad de tu página web completa antes de hacer cualquier modificación en este archivo, ya que es muy delicado. asegúrese de realizar una copia de seguridad completa de tu sitio web antes de realizar
Para hacer modificaciones en el .htaccess, puedes usar el Panel de control de tu hosting o puedes usar un software de clientes FTP, para cargar tus archivos y sus cambios. Si usas el plugin Yoast SEO, puedes usar el editor de archivos incluido en este para hacer los cambios.
Protege tu archivo wp-config.php
Este es otro archivo extremadamente importante, así que asegúrate de incluir el siguiente código en tu archivo .htaccess:
# Protect wp-config.php <files wp-config.php> order allow,deny deny from all </files>
Protege el archivo error_log
Es importante asegurarse de que no se pueda acceder a los registros de errores.
#Protect error_log <files error_log> order allow,deny deny from all </files>
Protege tu área de administración de WordPress
Limita el acceso únicamente a las direcciones IP seleccionadas. Simplemente copia y pega este código en tu archivo .htaccess:
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "WordPress Admin Access Control" AuthType Basic <LIMIT GET> order deny,allow deny from all # whitelist NombreUsuario IP address allow from xx.xx.xx.xxx # whitelist NombreUsuario IP address allow from xx.xx.xx.xxx </LIMIT>
Negar acceso durante una hora específica en el día
Si deseas bloquear el acceso a archivos en un directorio durante un momento específico en el día, agrega el siguiente código a tu archivo de .htaccess:
RewriteEngine On # If the hour is 16 (4 PM) RewriteCond %{TIME_HOUR} ^16$ # Then deny all access RewriteRule ^.*$ - [F,L]
Si alguien visita el directorio a cualquier hora entre las 6:00 – 6:59 pm, se mostrará error 500. Tu puedes especificar múltiples horas también.
RewriteEngine On # Multiple hour blocks # If the hour is 6 PM or 7 PM or 8 AM RewriteCond %{TIME_HOUR} ^17|18|19$ # Then deny all access RewriteRule ^.*$ - [F,L]
Negar acceso a un dominio específico
Esto niega acceso a cualquiera que se conecte a tu web desde www.dominio.com. Si alguien hace click en un link en ejemplo.com que redireccione a tu sitio, se verá un error 403:
SetEnvIfNoCase Referer "dominio.com" bad_referer Order Allow,Deny Allow from ALL Deny from env=bad_referer
Este ejemplo arroja un error 500 para cualquiera enlazando de dominio.com:
RewriteEngine on RewriteCond %{HTTP_REFERER} dominio\.com [NC,OR] RewriteRule .* - [F]
El siguiente ejemplo redirecciona a cualquier visitante conectando de dominio.com a google.com:
RewriteEngine On RewriteCond %{HTTP_REFERER} ^http://dominio.com/ RewriteRule /* http://www.google.com [R,L]
Proteger con contraseña la carpeta de administrador de WordPress
Podemos usar el archivo .htaccess para agregar una protección de contraseña adicional en tu área de administración de WordPress.
Primero, debes generar un archivo .htpasswds. Puedes crear uno fácilmente utilizando este generador online.
Carga este archivo .htpasswds fuera de tu directorio web de acceso público o carpeta /public_html/. Por ejemplo:
/home/user/.htpasswds/public_html/wp-admin/passwd/
Después, crea un archivo .htaccess y cárgalo en el directorio /wp-admin/ y luego agregue los siguientes códigos:
AuthName "Admins Only" AuthUserFile /home/yourdirectory/.htpasswds/public_html/wp-admin/passwd AuthGroupFile /dev/null AuthType basic require user putyourusernamehere <Files admin-ajax.php> Order allow,deny Allow from all Satisfy any </Files>
Importante: No olvides reemplazar la ruta AuthUserFile con la ruta del archivo .htpasswds y agrega tu propio nombre de usuario.
Protege tu sitio web de WordPress de la inyección SQL
Esto proporciona protección contra la inyección SQL de tu base de datos de WordPress.
#Protect from SQL Injection Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (< |%3C).*script.*(>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) RewriteRule ^(.*)$ index.php [F,L]
Restringe el acceso directo a los archivos PHP de plugins y temas
Esto asegurará que no se pueda acceder directamente a los archivos PHP.
# Restrict Direct Access to Plugin and Theme PHP files 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]
Asegura el directorio wp-includes
Esta carpeta es importante. Protégelo con el fragmento de código a continuación.
# Protect Include-Only files <ifmodule mod_rewrite.c> 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] </ifmodule>
Bloquear escaneos a las listas de autores
A veces, los hackers intentarán escanear tus listas de autores. Bloquéalo así:
# BEGIN block author scans RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} (author=\d+) [NC] RewriteRule .* - [F] # END block author scans
# Previene listado de directorios Options All -Indexes
Previene el Hotlinking a tus imágenes
Cómo evitar el hotlinking de tus imágenes y archivos, para que otros no se aprovechen de tus recursos.
# Previene hotlinking de imágenes RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?dominio.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ https://dominio.com/imagen-alternativa.png [NC,R,L]
Archivos seguros de plugins de WordPress
El siguiente código evitará que otros tengan acceso a los archivos de complemento:
<files ~ ".(js|css)$"="&”.(js|css)$&"> order allow,deny allow from all </files>
Bloquear solicitudes XMLRPC de WordPress
Si no está utilizando esta función, bloquéela.
# Block WordPress xmlrpc.php requests <files xmlrpc.php> order deny,allow deny from all </files>
Prevenir entrada por la puerta de atrás en PHP
Si utilizas Apache 2.2
# Protección contra backdoors en Apache 2.2 <Files *.php> deny from all </Files>
Si utilizas Apache 2.2
# Protección contra backdoors en Apache 2.4 <FilesMatch ".+\.php$"> Require all denied </FilesMatch>
Prevenir SPAM en los comentarios
RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post.php* RewriteCond %{HTTP_REFERER} !.*tudominio.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
Firewall 6G / Lista negra
Este script protege el ancho de banda y los recursos del servidor de cualquier sitio web con tecnología Apache, mientras protege contra la actividad maliciosa.
Solución de problemas
Si encuentras errores o no carga los recursos después de instalar 6G Firewall, elimina todo el bloque de código y restaure el archivo original .htaccess.
Error del Servidor
Si obtienes un error de servidor después de instalar 6G Firewall, comprueba que tu sitio cumple con los requisitos.
# 6G:[QUERY STRINGS] <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} (eval\() [NC,OR] RewriteCond %{QUERY_STRING} (127\.0\.0\.1) [NC,OR] RewriteCond %{QUERY_STRING} ([a-z0-9]{2000,}) [NC,OR] RewriteCond %{QUERY_STRING} (javascript:)(.*)(;) [NC,OR] RewriteCond %{QUERY_STRING} (base64_encode)(.*)(\() [NC,OR] RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC,OR] RewriteCond %{QUERY_STRING} (<|%3C)(.*)script(.*)(>|%3) [NC,OR] RewriteCond %{QUERY_STRING} (\\|\.\.\.|\.\./|~|`|<|>|\|) [NC,OR] RewriteCond %{QUERY_STRING} (boot\.ini|etc/passwd|self/environ) [NC,OR] RewriteCond %{QUERY_STRING} (thumbs?(_editor|open)?|tim(thumb)?)\.php [NC,OR] RewriteCond %{QUERY_STRING} (\'|\")(.*)(drop|insert|md5|select|union) [NC] RewriteRule .* - [F] </IfModule> # 6G:[REQUEST METHOD] <IfModule mod_rewrite.c> RewriteCond %{REQUEST_METHOD} ^(connect|debug|move|put|trace|track) [NC] RewriteRule .* - [F] </IfModule> # 6G:[REFERRERS] <IfModule mod_rewrite.c> RewriteCond %{HTTP_REFERER} ([a-z0-9]{2000,}) [NC,OR] RewriteCond %{HTTP_REFERER} (semalt.com|todaperfeita) [NC] RewriteRule .* - [F] </IfModule> # 6G:[REQUEST STRINGS] <IfModule mod_alias.c> RedirectMatch 403 (?i)([a-z0-9]{2000,}) RedirectMatch 403 (?i)(https?|ftp|php):/ RedirectMatch 403 (?i)(base64_encode)(.*)(\() RedirectMatch 403 (?i)(=\\\'|=\\%27|/\\\'/?)\. RedirectMatch 403 (?i)/(\$(\&)?|\*|\"|\.|,|&|&?)/?$ RedirectMatch 403 (?i)(\{0\}|\(/\(|\.\.\.|\+\+\+|\\\"\\\") RedirectMatch 403 (?i)(~|`|<|>|:|;|,|%|\\|\s|\{|\}|\[|\]|\|) RedirectMatch 403 (?i)/(=|\$&|_mm|cgi-|etc/passwd|muieblack) RedirectMatch 403 (?i)(&pws=0|_vti_|\(null\)|\{\$itemURL\}|echo(.*)kae|etc/passwd|eval\(|self/environ) RedirectMatch 403 (?i)\.(aspx?|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rar|rdf)$ RedirectMatch 403 (?i)/(^$|(wp-)?config|mobiquo|phpinfo|shell|sqlpatch|thumb|thumb_editor|thumbopen|timthumb|webshell)\.php </IfModule> # 6G:[USER AGENTS] <IfModule mod_setenvif.c> SetEnvIfNoCase User-Agent ([a-z0-9]{2000,}) bad_bot SetEnvIfNoCase User-Agent (archive.org|binlar|casper|checkpriv|choppy|clshttp|cmsworld|diavol|dotbot|extract|feedfinder|flicky|g00g1e|harvest|heritrix|httrack|kmccrew|loader|miner|nikto|nutch|planetwork|postrank|purebot|pycurl|python|seekerspider|siclab|skygrid|sqlmap|sucker|turnit|vikspider|winhttp|xxxyy|youda|zmeu|zune) bad_bot # Apache < 2.3 <IfModule !mod_authz_core.c> Order Allow,Deny Allow from all Deny from env=bad_bot </IfModule> # Apache >= 2.3 <IfModule mod_authz_core.c> <RequireAll> Require all Granted Require not env bad_bot </RequireAll> </IfModule> </IfModule> # 6G:[BAD IPS] <Limit GET HEAD OPTIONS POST PUT> Order Allow,Deny Allow from All # uncomment/edit/repeat next line to block IPs # Deny from 123.456.789 </Limit>
HackRepairs Blacklist
Esta es una lista negra que se usa en iThemes Security y creada por HackRepair.
# Start HackRepair.com Blacklist RewriteEngine on # Start Abuse Agent Blocking RewriteCond %{HTTP_USER_AGENT} "^Mozilla.*Indy" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Mozilla.*NEWT" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^$" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Maxthon$" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^SeaMonkey$" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Acunetix" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^binlar" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^BlackWidow" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Bolt 0" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^BOT for JCE" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Bot mailto\:craftbot@yahoo\.com" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^casper" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^checkprivacy" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^ChinaClaw" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^clshttp" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^cmsworldmap" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Custo" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Default Browser 0" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^diavol" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^DIIbot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^DISCo" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^dotbot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Download Demon" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^eCatch" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^EirGrabber" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^EmailCollector" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^EmailSiphon" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^EmailWolf" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Express WebPictures" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^extract" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^ExtractorPro" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^EyeNetIE" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^feedfinder" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^FHscan" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^FlashGet" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^flicky" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^g00g1e" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^GetRight" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^GetWeb\!" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Go\!Zilla" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Go\-Ahead\-Got\-It" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^grab" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^GrabNet" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Grafula" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^harvest" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^HMView" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Image Stripper" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Image Sucker" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^InterGET" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Internet Ninja" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^InternetSeer\.com" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^jakarta" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Java" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^JetCar" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^JOC Web Spider" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^kanagawa" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^kmccrew" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^larbin" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^LeechFTP" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^libwww" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Mass Downloader" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^microsoft\.url" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^MIDown tool" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^miner" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Mister PiX" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^MSFrontPage" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Navroad" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^NearSite" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Net Vampire" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^NetAnts" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^NetSpider" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^NetZIP" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^nutch" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Octopus" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Offline Explorer" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Offline Navigator" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^PageGrabber" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Papa Foto" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^pavuk" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^pcBrowser" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^PeoplePal" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^planetwork" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^psbot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^purebot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^pycurl" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^RealDownload" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^ReGet" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Rippers 0" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^sitecheck\.internetseer\.com" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^SiteSnagger" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^skygrid" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^SmartDownload" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^sucker" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^SuperBot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^SuperHTTP" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Surfbot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^tAkeOut" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Teleport Pro" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Toata dragostea mea pentru diavola" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^turnit" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^vikspider" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^VoidEYE" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Web Image Collector" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebAuto" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebBandit" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebCopier" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebFetch" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebGo IS" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebLeacher" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebReaper" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebSauger" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Website eXtractor" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Website Quester" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebStripper" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebWhacker" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WebZIP" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Widow" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WPScan" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WWW\-Mechanize" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^WWWOFFLE" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Xaldon WebSpider" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^Zeus" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "^zmeu" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "360Spider" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "CazoodleBot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "discobot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "EasouSpider" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "ecxi" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "GT\:\:WWW" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "heritrix" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "HTTP\:\:Lite" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "HTTrack" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "ia_archiver" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "id\-search" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "IDBot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Indy Library" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "IRLbot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "ISC Systems iRc Search 2\.1" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "LinksCrawler" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "LinksManager\.com_bot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "linkwalker" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "lwp\-trivial" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "MFC_Tear_Sample" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Microsoft URL Control" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Missigua Locator" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "MJ12bot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "panscient\.com" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "PECL\:\:HTTP" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "PHPCrawl" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "PleaseCrawl" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "SBIder" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "SearchmetricsBot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "SeznamBot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Snoopy" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Steeler" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "URI\:\:Fetch" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "urllib" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Web Sucker" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "webalta" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "WebCollage" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Wells Search II" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "WEP Search" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "XoviBot" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "YisouSpider" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "zermelo" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "ZyBorg" [NC,OR] # End Abuse Agent Blocking # Start Abuse HTTP Referrer Blocking RewriteCond %{HTTP_REFERER} "^https?://(?:[^/]+\.)?semalt\.com" [NC,OR] RewriteCond %{HTTP_REFERER} "^https?://(?:[^/]+\.)?kambasoft\.com" [NC,OR] RewriteCond %{HTTP_REFERER} "^https?://(?:[^/]+\.)?savetubevideo\.com" [NC] # End Abuse HTTP Referrer Blocking RewriteRule ^.* - [F,L] # End HackRepair.com Blacklist
Conclusión
Con estos códigos, esperamos ayudarte a mejorar la protección de tu web creada con WordPress.
Recuerda siempre hacer una copia de seguridad de tu archivo .htaccess antes de realizar cualquier cambio en este.
Seguramente, hay más códigos para poder proteger tu web. Y tú ¿Conoces algún código que te haya servido para proteger WordPress?
Faltaría esto mismo para nginx y seria un lujo
Muy Buen articulo gracias.
Super completísimo. Gracias y a tener en cuenta. Lo intentaremos implementar alguna de las medidas
Buenas tardes,
Vaya curradilla de post, muchas gracias, le iré sacando provecho.
Estaba intentando Cambiar la URL de acceso a wp-admin para evitar ataques a una web con Worpress, he probado tu método y funciona el cambio a la perfección; sin embargo si introduzco https://midominio.com/wp-admin.php continúa llevando a la página para introducir user y pass (se puede hacer un ataque de fuerza bruta).
Desde mi más absoluto desconocimiento he intentado hacer una redirección 301 de https://midominio.com/wp-login.php a https://midominio.com y he visto que nada de nada (otra gilipollez más conseguida a lo largo del día).
?Cual es el modo de que no se pueda acceder a https://midominio.com/wp-admin.php?
Gracias de antemano por tu atención.
Muchas gracias por la info David!
desde ya lo voy a implementar en los sitios que gestiono.
Uno de los mejores artículos que he leído en bastante tiempo. Y no me refiero solo en este sitio.
Será cuestión de ir probando cosas.
¡Muchas gracias David! ¡Feliz año nuevo!
¡Gran contenido, además detalladísimo y muy bien explicado! Muchas gracias por compartir, David. Ahora a empezar a implementar 🙂 ¡Un abrazo!
Muy buena información para tener en cuenta con la seguridad de nuestro CMS. Cada día los ataques son más comunes, es una guía muy completa si quieres hacer tu mismo.
¡Gracias David! información de calidad, ya lo estoy poniendo en marcha.
Felicitaciones por tremendo pedazote de info, solo una duda, para los que estamos en la mitad entre nuevos y ya con algo de experiencia, (mas lo primero que lo segundo) podrías explicar exactamente en donde se agregan estas lineas de codigo, antes de donde o despues de donde, no quiero ir a liarme algo por tratar de pegar los codigos, tambien… esto sigue vigente a hoy 2021?
Excelente artículo David, muchas gracias eres un crack