Gravatar de Armonth

Cinco consejos de seguridad para WordPress

Con el tiempo y la experiencia uno se va dando cuenta de que los riesgos (siempre presentes) en la seguridad de scripts en PHP y especialmente WordPress — el que más conozco — se pueden minimizar, aquí van 5 consejos enfocados 100% a WordPress para ello:

  1. Desactiva wp-db-backup. Los motivos son de sobra conocidos, un fallo en este plugin o cualquier otro fallo que dé acceso a una cuenta de administrador permite al atacante descargar una copia de la base de datos.

    Como administrador, el atacante puede generar muchos daños: borrar artículos, comentarios, insultar en tu nombre, borrar usuarios, cambiarles las contraseñas pero si no puede hacerse con una copia de la base de datos “en principio” no puede saber la contraseña de los otros posibles usuarios. No es ningún consuelo y realmente ante un ataque lo mejor es cambiar las contraseñas de todos los usuarios pero si son muchos y esto no es posible es mejor que no acceda a la BBDD: mejor tener que cambiar una contraseña que no todas.

    Además, wp-db-backup guarda la BBDD en un directorio generado aleatoriamente dentro de wp-content: nunca se deben guardar backups accesibles por web, es mejor tenerlos fuera (y si aún así acceden a ellos es que ya tienen control sobre toda tu máquina), un fallo en Apache podría hacer que medidas como el no mostrar el índice de ficheros dejarán de ser efectivas y obtener la BBDD fácilmente. Si aún así quieres usarlo algunas opciones a tener en cuenta son:

    • Añade un .htaccess en el directorio de backups que impida el listado de ficheros del directorio:

      Options -Indexes
    • Obliga a introducir una contraseña para acceder al directorio de backups, en el .htaccess debajo de lo anterior añade:

      AuthUserFile /home/tuusuario/.htpasswd
      AuthGroupFile /dev/null
      AuthName EnterPassword
      AuthType Basic
      require user usuarioparaacceder

      El directorio /home/tuusuario/ debe ser un directorio fuera del acceso a la web por ejemplo si el raíz de tu web es /home/tuusuario/tudominio.com el fichero .htpasswd debe estar fuera de tudominio.com: nunca dejes el fichero .htpasswd accesible por web.

      Una vez hecho esto, creamos el fichero .htpasswd con el contenido siguiente que será el usuario y la contraseña separados por dos puntos juntos (:):

      usuarioparaacceder:contraseñaparaacceder

      Sobra decir que las rutas (/home/tuusuario) y usuarioparacceder debe coincidir en los dos ficheros.

  2. Elimina los ficheros de instalación y los importadores. Una vez hecha la instalación o actualización de WordPress se deben borrar los ficheros de instalación:

    /wp-admin/install.php
    /wp-admin/upgrade.php
    /wp-admin/installer-helper.php

    El tercero es opcional (aunque todo código que no sea necesario se debe borrar), el primero y segundo si no se borran son un agujero de seguridad del tamaño del Gran Cañón del Colorado. Luego además podemos borrar los importadores:

    Los importadores (los ficheros de dentro de wp-admin/import/) sirven para importar contenido (es decir: modificar la base de datos) desde otros sistemas de blogging por lo que pueden ser vulnerables a ataques otra vez más la máxima es: si no lo necesito lo borro. ¿Quién importa a WordPress entradas desde 15 sistemas distintos? Pues eso: borra los que no uses.

  3. Limita el uso de plugins. Los plugins suelen ser vulnerables, sobretodo a ataques XSS (una plaga hoy en día), si puedes prescindir de un plugin no lo dudes y hazlo.

    Los plugins que potencialmente son más peligrosos son aquellos que permiten la entrada de parámetros mientras que aquellos que solo devuelven una salida (por ejemplo: añadir un dato sacado de la BBDD al diseño de la web) lo son menos.

  4. Protege /wp-admin/. De la misma forma que en el primer paso hemos protegido el directorio de backups, podemos hacerlo para el directorio /wp-admin/, quizá sea algo molesto pero si sabes a ciencia cierta en un momento dado que tu WordPress es vulnerable en el directorio wp-admin y todavía no hay solución puedes activar momentaneamente esta restricción.

  5. Utiliza una cuenta de autor. El bug anterior es un buen ejemplo: permite editar información de usuarios si estás como administrador.

    Crea una segunda cuenta con privilegios de “Autor” y usara para escribir, comentar, moderar comentarios, etcétera. Si en algún momento tienes que des/activar un plugin o editar un comentario de otro usuario tendrás que entrar como administrador pero es un mal menor.

    Por ejemplo, mi usuario es un “Autor” pero mediante los “Roles” tiene como permisos extendidos editar páginas/entradas (propias), moderar comentarios (sólo permite los tuyos), subir ficheros y escribir HTML no filtrado. Mientras que el resto de “Autores” tienen permisos básicos pero no pueden moderar…

    Las tareas tales como activar plugins, importar, administrar opciones, editar ficheros / plugins / plantillas / usuarios, administrar categorías / encuestas o cambiar temas requieren que entre como administrador pero no suelo necesitarlo

  6. (Bonus) Lee sitios que anuncien fallos: aquí en SigT solemos dar la brasa bastante con temas de WordPress, además que considero más práctico parchear (cuando son pocas líneas) que no “obligar” a actualizar todo WordPress cada vez, en Buayacorp Alex suele dar la brasa a los desarrolladores de WordPress con fallos y en el Planet Webdev o el Planeta WordPress cada vez que aparece un fallo de seguridad damos la brasa a lo menos 10 bloggers distintos por cada Planet: sale un bug y aparecen 20 entradas ;).

  7. (Bonus II) Quita el usuario administrador: o mejor dicho: desactiva el primer usuario administrador. Truco sólo para gente que sepa lo que hace. Muchos exploits automáticos atacan al user_ID = 1 de wp_users en la base de datos, una posible táctica para que estos exploits fallen sería (aunque aviso que hay que probarlo bien, no sea que algún plugin o algo también falle):

    • Crea un nuevo usuario con permisos de administrador (para que tenga un user_ID distinto).
    • Deja el usuario admin antiguo como “lector” (sin privilegios).

Actualmente WordPress se ha ganado el nombre de WordStress a pulso pero considero que los desarrolladores trabajan duro para solucionar los problemas, creo que poco a poco se hará menos común el ver tantos fallos seguidos en tan poco tiempo.

15 Comentarios (feed)

  1. Gravatar de Alex Alex nos comenta:

    Tu guía está hecha para asustar a la gente que usa Wordpress. Realmente no es necesario hacer todo lo que tu pides, me parece muy bien lo que recomiendas, pero no es tan importante seguir esos consejos. El mejor consejo que se puede dar, es siempre actualizar a la última versión de Wordpress, estar pendiente del Timeline de Wordpress y me gusto el consejo de usar pocos plugins, eso si es algo cierto, me parece una locura la gente que usa miles de plugins, primero que vuelve a Wordpress inseguro y aparte que lo hace pesado y tarda en cargar.

    Saludos,
    Alex

    PD: Espero que no te ofendas por lo que dije, es solo que me parece una exageración todos los consejos que das, aunque por supuesto son muy válidos :)

    Sábado, 26 de Mayo/2007 @ 1:52

  2. Gravatar de CTX Ken CTX Ken nos comenta:

    Va a depender exclusivamente de si alguien te ataca si estos consejos son necesarios, pero por si algo llegase a pasar, nunca están de más.

    Por cierto, muy buenos los consejos, este post se va a mi del.icio.us, me va a servir mucho.

    Sábado, 26 de Mayo/2007 @ 2:30

  3. Gravatar de Armonth Armonth nos comenta:

    Alex no me ofendo, los consejos son eso: consejos. Si fuera una guía “paso a paso” te daría la razón pero si son 5 consejos “sueltos” cada uno puede aplicar los que crea oportunos (o todos o ninguno).

    Realmente si tengo que auto-opinar sobre ellos el primero lo veo necesario: ante ataques evitar que se lleven todos los datos, el segundo es de “cajón”, el tercero estamos deacuerdo :P, el 4º esta de más es un “ya que sabes hacer lo del password, si sabes que tienes el culo al aire pon el password hasta que actualices” más pensado en un “ahora no puedo actualizar” y el 5º te digo yo que merece la pena, al principio puede que moleste pero al final lo agradeces: una vez deje el WordPress abierto en casa ajena y no me hicieron la puñeta gracias a eso xD los bonus pues son eso: bonus :P

    CTX Ken :)

    Sábado, 26 de Mayo/2007 @ 3:02

  4. Gravatar de Alex Alex nos comenta:

    Armonth, en lo de “no usar tantos plugins” yo incluyo al WP Database Backup. A mi me parece un plugin peligroso y fui testigo de un blog que fue totalmente hackeado al usar ese plugin.

    Es preferible, que uno mismo haga los backups o esos “backups diarios” que incluyen algunos hosting como DreamHost.

    Saludos,
    Alex

    PD: Antes escribia en planeta wordpress con el blog “En la Tierra Media”, ahora lo hago en AlexSEO

    Sábado, 26 de Mayo/2007 @ 4:42

  5. Gravatar de Armonth Armonth nos comenta:

    Sí, es cierto, pero el WP Database Backup merece un punto y aparte o mención especial ya que mucha gente no lo considera peligroso, por eso me enrollo tanto en ese punto y enlazo a un tuto-ejemplo para hacer backups automáticos aparte :)

    Sábado, 26 de Mayo/2007 @ 4:46

  6. Gravatar de Albert Albert nos comenta:

    En cuanto al punto 7, decirte que yo lo primero que hice fue crear un usuario con rol de administrador y borrar el admin.

    Y de momento no he encontrado ningún problema.

    Un saludo.

    Sábado, 26 de Mayo/2007 @ 10:39

  7. Gravatar de Angeles Angeles nos comenta:

    Yo encuentro muy útiles estos consejos, sobre todo para los que estamos a medio camino entre el programador y el usuario. Gracias de nuevo.

    Domingo, 27 de Mayo/2007 @ 17:23

  8. Gravatar de javi javi nos comenta:

    nunca he visto un blog hackeado

    Domingo, 27 de Mayo/2007 @ 20:36

  9. Gravatar de Armonth Armonth nos comenta:

    Javi pues pocos has visto tú (xDDD), aunque es cierto que lo que es “ataques automáticos” pensados para explotar X vulnerabilidades y buscando victimas en Google mediante un “Powere by XXX versión YYY” no hay tantos como en phpBB2.

    Domingo, 27 de Mayo/2007 @ 21:12

  10. Gravatar de Alex Alex nos comenta:

    Es que la mayoria de los blogs hackeados, no son famosos xD Porque son blogs de gente que pone contraseñas simples o cosas asi jaja.

    Pues, es que hackear un blog directamente no es fácil, pero los hackers pueden aprovecharse de ciertas vulnerabilidades de tu blog.

    Domingo, 27 de Mayo/2007 @ 23:42

  11. Gravatar de milton milton nos comenta:

    Considero muy bueno los consejos, pues nunca sobran, y conozco mas de uno que los quería tener siempre a la mano. Todos son relativos a la seguridad, que tal una serie de consejos, en el manejo de las plantillas que se ofrecen por ahí? o una visión general sobre los tan mencionados plugins?, hay algunos que todavía no me atrevo a instalar y quisiera; por conocerlos. Todavía soy algo bisoño y se que nos vendrían bien.
    gracias Armonth por tus consejos.

    Jueves, 31 de Mayo/2007 @ 21:37

  12. Gravatar de nadie007 nadie007 nos comenta:

    mmm la verdad si se mira algo paranoico, pero bueno son solo consejos que algono deberiamos tomar no todos hay unos muy extremos y bueno sirve de algo saber todo esto! saludos

    Sábado, 10 de Noviembre/2007 @ 19:55

  13. Gravatar de berny polania berny polania nos comenta:

    Interesantes consejos, para tener en cuenta, aunque el sistema Wordpress queda un poco por debajo de tono, Joomla tambien tiene exploits, typo3,radiant,xoops,php-nuke, tambien los tienen,entonces porque pordebajear un buen sistema, si las falencias son de todos y en general, mejor aconsejar globalmente, y no perjudicar un sistema sano y eficiente, ya las pilas deben ponerselas los administradores y actuar en consecuencia para controlar su web, gracias por los consejos.

    Jueves, 24 de Enero/2008 @ 20:28

  14. Gravatar de ronyn ronyn nos comenta:

    Hola, los consejos le pueden resultar paranoicos a gente que tienen experiencia con Wordpress, pero a los que no tenemos ni idea nos vienen genial.
    Yo tengo un blog y hay un gracioso que se dedica a cambiarme el index por otro en el que pone su nick y sus tonterias, supongo que esto es un mal menor, pero jode.
    Tengo la ultima version de Wordpress y aun asi me pasa lo que he comentado, voy a intentar seguir los consejos y poner el archivo que describes, .htaccess, a ver si asi soluciono el problema.
    No obstante si alguien sabe como solucionarlo le estaria muy agradecido.

    Enga saludos.

    Sábado, 29 de Marzo/2008 @ 10:09

  15. Gravatar de Roberto Silva Roberto Silva nos comenta:

    Buenos consejos, los tomare en cuenta, saludos.

    Domingo, 6 de Abril/2008 @ 3:30

No seas tímido, da tu opinión

Sé respetuoso con los demás, la diferencia de opiniones enriquece la discusión, los comentarios bajo ciertas circunstancias pueden ser moderados y requerir aprobación.