La instalación perfecta en WordPress: Plugins y recomendaciones
El pasado sábado estuve en WP Euskadi, participando en la mesa redonda de plugins.
Muchos me pidieron que hiciese un recopilatorio de plugins pero, en realidad, no soy muy de utilizar plugins; intento esquivarlos en la medida de lo posible.
De qué va esta entrada
Aquí intentaré explicar que es lo que hago (casi todo, seguro que algo se me escapa) nada más instalar un WordPress; independientemente de su plantilla o funcionalidad final.
Lógicamente, habrá cosas que quizá no te sirvan por la orientación de tu proyecto, pero intentaré que sea lo más general posible.
Introducción
Partimos de la base de que ya posees un sitio donde alojar tu web (hosting, host, alojamiento…) y te has descargado la última versión de la página oficial de WordPress, ¿vale?
Si aún no has instalado WordPress, te recomiendo que tengas en cuenta poner un prefijo de la tabla distinto a «wp_».
Además, supongo que sabes cómo instalar WordPress y que has sido completamente capaz de hacerlo funcionar hasta el punto de que tu sitio ya está operativo; con o sin contenido. Si no es así, te recomiendo que busques alguna guía sobre cómo instalar WordPress en tu propio servidor en otro lado, porque aún no he escrito una propia.
Además, en caso de que no hayas instalado la última versión tal y como te dije anteriormente, lo primero que deberás hacer es ir a actualizarla. ¡Corre insensato! ¡Tu página está en peligro!
Revisando los permisos de ficheros y carpetas
Aunque tengo una entrada dedicada sólo a los permisos correctos en WordPress; en resumen, deberás cuidar que se cumplan dos cosas:
- Carpetas (wp-content, wp-admin, wp-includes) con permisos 755 (rwx r-x r-x)
- Ficheros con permsiso 644 (rw- r– r–)
En algunas ocasiones, dependiendo de tu alojamiento, necesitarás que las carpetas tengan permisos 775 o rwx rwx r-x y los ficheros 664 o rw- rw- r–.
Esto es el mínimo antes de comenzar cualquier proyecto; por un lado nos aseguramos del correcto funcionamiento de WordPress y de que estará seguro por otro.
Ficheros mínimos a crear
Además de comprobar que todos los permisos sean correctos, deberemos asegurarnos de que WordPress sea capaz de crear los siguientes ficheros y carpetas, de no ser así le ayudaremos creándolo nosotros mismos:
- .htaccess: Le daremos permisos de escritura (644 o rw- rw- r–) y lo crearemos en la raíz del sitio, donde hemos instalado nuestro WordPress.
- robots.txt: Permisos de lectura (644 o rw- r– r–) y, al igual que el .htaccess, lo colocaremos en la raíz del sitio o instalación de WordPress.
- Carpeta wp-content/cache: Será donde WordPress genere la caché del sitio (agilizará la carga de la web); ha de tener permisos de escritura (755 o rwx rwx r-x)
- Carpeta wp-content/uploads: Será donde WordPress suba las imágenes y objetos que subamos desde su gestor. Permisos de escritura (755 o rwx rwx r-x)
Configuración mínima del robots.txt
Aunque WordPress es un buen amigo del SEO (y Google) hemos de tener cuidado de no duplicar contenidos y las páginas de categorías, etiquetas, archivos, autor o la propia paginación de WordPress puede jugarnos una mala pasada.
Además, aprovecharemos el robots.txt para indicarle a las arañas de los motores de búsqueda dónde se localiza nuestro sitemap, lo que facilitará la indexación muchísimo.
Sitemap: http://www.dominio.ext/sitemap.xml User-Agent: * Disallow: /*/feed/ Disallow: /*/trackback/ Disallow: /*/attachment/ Disallow: /author/ Disallow: /category/*/page/ Disallow: /category/*/feed/ Disallow: /tag/*/page/ Disallow: /tag/*/feed/ Disallow: /page/ Disallow: /comments/ Disallow: /xmlrpc.php Disallow: /*?s=
Con esto, cubrimos las páginas de categorías, etiquetas, autor, paginación y comentarios de WordPress. Además de evitar que indexe las páginas de adjuntos, trackbacks, feeds o búsquedas. Podemos estar «tranquilos».
Dosis de vitaminado para el .htaccess
Aunque lo más sencillo es ir a Ajustes->Enlaces permanentes dentro del escritorio de WordPress y seleccionar la estructura de enlaces que más nos guste (esto ya genera un .htaccess), a continuación os doy algunos consejos para evitar sustos.
Protegemos ficheros delicados desde .htaccess
Order Allow,Deny Deny from all Order Allow,Deny Deny from all Order Allow,Deny Deny from all |
Configurando wp-config.php
Configura parámetros como el idioma, activar la caché, desactivar la revisión de entradas, definir el intervalo de autoguardado o definir la raiz del sitio son algunas de las cosas que puedes hacer; yo suelo utilizar el mismo código siempre, modificando valores:
define('WPLANG', 'es_ES'); // El idioma de nuestro sitio define('WP_CACHE', true); // Activo la caché de WordPress define('WP_POST_REVISIONS', false); // Fuera las revisiones de post, no suelen gustarme porque manchan mucho la base de datos. define('AUTOSAVE_INTERVAL',140); // Intervalo de autoguardado, se puede reducir, pero mi experiencia con 140 segundos es buena. define('WP_SITEURL', 'http://www.example.com'); // Enlace a la raíz del sitio define('WP_HOME', 'http://www.example.com'); // Enlace a la raiz del sitio |
Además de la configuración inicial que realizo a la instalación de WordPress, hay una serie de cosas que suelo hacer para proteger (aún más) nuestra instalación y sentirnos más seguros:
Introduce «keys» únicas en tu wp-config.php
Esto ayudará a que tus cookies sean únicas (las de sesión también) y tu sitio sea más robusto en este aspecto; se trata de poner zancadillas a los malos, ¿no? :-D
Para ello, entra en https://api.wordpress.org/secret-key/1.1/salt/ y copia lo que te devuelve la página en tu wp-config.php.
Defino los parámetros del servidor FTP
define('FTP_BASE', '/'); // Directorio base donde se conectará nuestro FTP define('FTP_CONTENT_DIR', '/wp-content/'); // Carpeta de contenidos define('FTP_PLUGIN_DIR ', '/wp-content/plugins/'); // Carpeta de plugins define('FTP_USER', 'ftpusuario'); // Usuario FTP, para no tener que estar introduciéndolo cada vez que queramos instalar o actualizar algún plugin o WordPress define('FTP_PASS', 'ftpcontraseña'); // Contraseña del usuario FTP define('FTP_HOST', 'localhost'); // Servidor al que se conectará, localhost si es el mismo servidor donde está instalado WordPress define('FTP_SSL', false); // Si usamos SSL cambiaremos false por true. Yo suelo conectar por SSH. |
Configuraciones básicas de seguridad
Proteger nuestra web nunca está de más y por eso recomiendo las siguientes mejoras:
- Usuario administrador sólo para actualizar o instalar plugins. El usuario que utilizamos para redactar o crear contenidos que sea de rol «Editor». Así si descubren nuestra contraseña, no podrán hacer una barbaridad con nuestro sitio.
- Actualizaciones siempre al día: WordPress, plugins, temas… Todo siempre actualizado a la última versión.
- Registro siempre desactivado, si necesitamos tenerlo activado asegurarnos de que los nuevos usuarios entran con rol «Suscriptor» y nunca Colaborador, Editor o Administrador.
Estructura de enlaces
La estructura de enlaces, es la que utiliza WordPress para asignar «slugs» a tus entradas. Se modifica en Ajustes->Enlaces permanentes y, aunque es para gustos, yo suelo utilizar y recomendar /%postname%.html.
De la misma forma, podemos modificar el slug que tendrán las categorías y etiquetas. Recuerda que si modificas esta parte, deberás actualizar tu robots.txt para evitar la duplicación de contenido.
Plugins
como dije al principio, cada proyecto es un mundo y cada página web se nutrirá con unos u otros plugins, yo recomendaré algunos para mejorar la seguridad y funcionalidad mínima de WordPress.
- Akismet: Un antispam impresionantemente bueno. Si no te gusta este, puedes buscar algún otro antispam, pero SI O SI debes tener uno instalado.
- EliminaCabeceras: Lo conocí por JavierCasares (Síguelo en Twitter si no lo haces ya) y elimina cabeceras HTML que podrían comprometernos.
- Limit Login Attempts: Bloquea usuarios que fallan la contraseña un número concreto de veces. Bueno para evitar ataques de fuerza bruta.
- Google XML Sitemaps: genera dinámicamente nuestro Sitemap y lo envía a los buscadores para que indexen nuestro contenido
- PubSubHubbub: Mejora la difusión de nuestros contenidos enviándolo a otras redes.
- P3: Bueno para depurar errores en WordPress. No recomiendo tenerlo activado siempre, sólo activar cuando falle algo.
- WordPress Firewall 2: Evita inyecciones en los formularios, ataques por URL y alguna cosilla más. Realmente es una máquina de seguridad. 100% recomendado.
- WP Super Cache: WordPress cachea malamente (mejorable) y con WP Super cache lo que hacemos es gestionar esta cache de una manera mucho más eficiente. Otra alternativa es W3 Total Cache, personalmente prefiero el primero.
- Acunetix WP Security: Añadi un toque extra a la seguridad; oculta la versión de WordPress, protege contraseñas… Muy útil.
- All in One SEO Pack: No todo es Yoast, a mí personalmente me gusta más este plugin; sencillo y bien configurado es de agradecer.
- Jetpack: No es un imprescindible, pero ayuda a la difusión y tiene herramientas muy chulas, como Photon (CDN de tus imágenes en los servidores deWordPress.com)
- WordPress Database Backup: automatiza los respaldos de tu base de datos y te los envía al correo.
- WP Optimize: No lo tengas siempre activado, basta con que lo actives, le des un repaso a la base de datos y lo desactives.
Habrá muchos más plugins, y dentro de esta lista no todos son imprescindibles, pero son los más recurrentes para los proyectos que yo utilizo. Agilizan mucho las tareas de mantenimiento y protegen bien nuestro sitio web.
Conclusiones
No importa de qué sea tu proyecto, si está desarrollado en WordPress prácticamente la totalidad de esta entrada te será útil; configuraciones, seguridad y plugins recomendados que prometí en WP Euskadi.
Si te gusta la entrada, compártela y hazla llegar a todos tus contactos. Si tienes alguna duda o sugerencia, envía un comentario; ¡te lo agradeceré!
Buenas,
en mi caso prefiero instalar BulletProof Security [2] en lugar de WordPress Firewall 2 [1], que hace más de dos años que no se actualiza, Acunetix WP Security y Limit Login Attempts (mejor un módulo para «hacer lo que tres»).
Gracias por el post.
[1] http://wordpress.org/plugins/wordpress-firewall-2/
[2] https://wordpress.org/plugins/bulletproof-security/
– te recomiendo que tengas en cuenta poner un prefijo de la tabla distinto a “wp_”:
¿Por?
– “keys” únicas en tu wp-config.php: ¿Qué pasa si no lo hago?
Hola, gracias por el apunte.
El prefijo de la tabla distinto a «wp_» es porque, en caso de inyección SQL, le complicas el acceso a las tablas.
Las keys únicas, sirven para ejecutar muchas de las acciones de WordPress. Sin conocerlas, evitas muchas ejecuciones de código que podrían ser perjudiciales para tu sitio.
Saludos.