Publicado el Viernes 25 de Mayo del 2007 @ 20:46 por Armonth.
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:
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.
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.
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.
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.
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
(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 ;).
(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):
user_ID distinto).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.
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 :)
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.
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
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.
Yo encuentro muy útiles estos consejos, sobre todo para los que estamos a medio camino entre el programador y el usuario. Gracias de nuevo.
nunca he visto un blog hackeado
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.
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.
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
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.
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.
Buenos consejos, los tomare en cuenta, saludos.