Seguridad en WordPress. Firewall 6G

Tabla de contenidos

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.

¿Qué es un Firewall?

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.

Seguridad en WordPress. Firewall 6G

Apache y el fichero .htaccess

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.

apache-powered

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.

Módulos de Apache

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.

Reglas del firewall 6G para la Seguridad en WordPress

Este firewall contempla las siguientes reglas:

  • Query Strings: Bloquea todas las peticiones con query strings concretas, por ejemplo cuando se intenta acceder a alguna variable, por ejemplo este caso bloquea timthumb y otras reglas más.
  • Modos de peticiones: POST y GET son modos de peticiones, esta regla lo que hace es bloquear todos los demás.
  • Referencias: Bloquea referencias de los hosts que se indican.
  • Request Strings: Es similar a Query String pero se mira toda la URL.
  • Agentes de usuario: El User-Agent indica cual es el usuario que se está conectando a la web, los bots de internet tienen los suyos propios, así como los navegadores, etc…
  • Bloqueo de IPs: Limita el acceso a diferentes modos de petición de la web a algunas IPs en concreto.
# @ 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)/(\$(\&)?|\*|\"|\.|,|&|&amp;?)/?$
  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.

Compartir en facebook
Compartir en twitter
Compartir en linkedin

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

También te puede interesar

Lo que no son cuentas, son cuentos

Descarga nuestros paneles de control para monitorizar la rentabilidad de tu negocio y deja de creer en falsas promesas.

100% libre de humo