Seguridad en WordPress.
WordPress es el gestor de contenidos más usado en Internet, ya cerca del 27.1% de Internet usa WordPress para sus páginas web.
Esto es beneficioso por un lado ya que la comunidad crece y crece y más atención y mejoras le pueden dedicar a este CMS, pero por otro lado, como sucede en la mayoría de los casos en Internet… cuando un elemento es usado masivamente todos los ataques se ciernen sobre el.
WordPress tiene la fama de inseguro, por lo que la seguridad en WordPress cobra especial relevancia, y es que a lo largo de su historia ha tenido importantes agujeros de seguridad, no obstante hoy en día está todo bastante asegurado pero nunca viene mal incorporar una capa de seguridad propia.
En esta entrada vamos a hablar del Firewall 6G de Perishable Press.
El concepto de Firewall o Cortafuegos es muy simple y se puede aplicar en cualquier entorno cuando hablamos de seguridad, incluida la seguridad en WordPress. Un cortafuegos son una serie de reglas que impiden el acceso ya sea a una web, a un ordenador o a cualquier otro elemento.
La descripción de firewall es bastante gráfica pues basta con imaginarse un cortafuegos en el monte. Impide que se propaguen problemas de seguridad.
Existen muchos tipos de cortafuegos pero en este caso vamos a hablar de los cortafuegos implementado en los ficheros de configuración de Apache.
Apache es un servidor HTTP, es uno de los mayoritarios en el mundo de Internet aunque nos podemos encontrar otros como NGINX o IIS. Este servidor se encarga de recibir, procesar y servir las peticiones HTTP.
Cuando escribimos una URL en la barra de direcciones y pulsamos Enter se realiza una solicitud HTTP al servidor con una serie de cabeceras, el servidor las interpreta y las devuelve al navegador, de esto se encarga Apache.
Dado que Apache se encarga de recibir y procesar las peticiones HTTP también puede filtrarlas y decidir si decide procesarlas o no.
Esto es básicamente lo que hace el Firewall 6G de Perishable Press: nos indica una serie de reglas a incluir en el fichero .htaccess para bloquear ciertas peticiones al servidor que se han visto pueden ser dañinas o el inicio de un ataque web o simplemente el proceso de una investigación para atacarnos.
El fichero .htaccess permite modificar la configuración de Apache a nivel de directorio y normalmente siempre nos encontramos este fichero en la raíz de nuestro sitio web aunque hay que saber que también puede haber uno por cada directorio que se quiera o necesite.
Las reglas de este firewall usan algunos módulos de Apache que son bastante conocidos:
mod_rewrite: Este módulo permite reescribir URLs «al vuelo» de forma que cuando se recibe una petición Apache puede reescribir la URL que se ha pedido. Este módulo usa la potencia de las expresiones regulares para poder buscar patrones para reescribirlos.
mod_setenvif: Cuando este módulo está activo permite establecer variables de entorno cuando se cumple alguna condición que también puede ser buscada usando expresiones regulares.
mod_authz_core: Permite establecer autorizaciones de acceso a diferentes partes de la web.
Este firewall contempla las siguientes reglas:
# @ https://perishablepress.com/6g/
# 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|delete|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> Estas reglas deben ser actualizadas frecuentemente, yo recomendaría una vez al mes tras ver Analytics, ver si tenemos Spam por Referrals o si están intentando hacer algo raro, también usaria alguna herramienta como Apache Log Viewer para analizar el trasiego de información que nos puede ofrecer el servidor para detectar intentos de peticiones fraudulentos.
Ya sabéis que tenéis toda la información en la web oficial del Firewall 6G y que quedo a vuestra disposición para cualquier duda que tengáis y recordad, la seguridad en WordPress es esencial… bueno, igual que en cualquier proyecto web.
Muy pocas veces la conversión sobre un activo digital sucede solamente a través de un…
Si eres dueño o dueña de un negocio en Internet, y ese negocio es un…
Hay algunos elementos que hay que merece la pena analizar. Te enseñamos cuáles son.
Esta web usa cookies.