"Cuando el mundo se enfría y tú crees en la sociedad intentas buscar soluciones, remedios, ideas.
Las ideas dicen: son utópicas y faltas de consistencia; escuchas e intentas buscar soluciones dándote cuenta que nunca existe una solución definitiva, la amalgama de energías encontradas lo impiden. Tan solo queda buscar remedios, apaños, un 'tirar pa lante'.
Esto no satisface a nadie, tú no acabas de sentirte 'realizado' esa impotencia de saber que tus ideas sin querer ser perfectas pueden dar soluciones válidas al no desarrollarse se convierten en pequeños apaños que se minusvaloran, acaban denostadas y sus beneficiarios se sienten ninguneados y acaban despreciándote."
jueves, 28 de agosto de 2014
jueves, 10 de abril de 2014
Involución Social Actual
Es algo que me ocurrió el otro día y pienso que es una
muestra de la involución social actual. Fue durante una conversación de
sobremesa en la que estábamos comentando de ir de vacaciones al sur, más al sur
y quién dice al sur dice a Ceuta. La cosa era simple ir en coche y coger el ferry
de Algeciras a Ceuta. Y aquí surgió la discusión, yo sin haberme subido nunca a
dicho Ferry calculé rápidamente el tiempo de trayecto… unas dos horas así a ojo
de buen cubero, enseguida me espetaron desde el fondo de la mesa: "eso no
es así, el trayecto no dura más de media hora", yo para no entrar en
fuerte discusión rebajé y comenté bueno hay que contar el embarque, etc… y la
discusión continuó. La cosa no podría llegar a un término dialogado y zas!! Nuevas
tecnologías al poder, búsqueda en Google para localizar los trayectos que iban
de Algeciras a Tánger, Ceuta, Melilla… y bueno el trayecto dura aproximadamente
una hora y media.
Esta discusión, realmente banal, quedaría ahí pero en
realidad ando un poco ya cansado de los que se creen siempre poseedores de la
verdad absoluta y hacen cargo de sus años en sus espaldas, su dilatada
experiencia y su información sobre el terreno. Quién en este caso me discutía
sobre el trayecto se pasó más de año y medio en Ceuta cumpliendo con la patria,
como se decía antes, así que no sé que pasó pero esto podría ser un ejemplo de
la involución social a la que vamos abocados.
Esto lo podemos aplicar a muchas cosas, y el resultado es lo
que tenemos, una involución que unos achacan a los políticos actuales, otros a
la herencia recibida, pero en realidad los políticos son el resultado de una
sociedad, la actual. Ahora los políticos no sólo transgreden las leyes, se
atreven a denunciar sentirse perseguidos, además no consideran que se les pueda
pedir cuentas de sus gestiones, pero esto en vez de ser motivo de repulsa de
los ciudadanos es utilizado estos argumentos para atacarse entre unos
ciudadanos y otros acusándose de no sequé. Mientras como reza el refrán: "…mientras
la casa por barrer".
miércoles, 12 de marzo de 2014
Cómo incrementar la seguridad de una web creada con WordPress
Cómo incrementar la seguridad de una web creada con WordPress
Cómo incrementar la seguridad de una web creada con WordPress
Escrito el por Juan Díaz-Bustamante
Dado
el gran éxito de WordPress son cada vez más altas las preocupaciones de
sus usuarios por estar al día de todos los consejos relativos a la
seguridad de su web. No es raro encontrar usuarios a los que les han
hackeado su web, les han instalado un virus que borra toda la base de
datos, tienen cuentas de administradores fantasmas o de repente generan
miles de comentarios con enlaces a material adulto o de venta de viagra.
Al ser tan popular WordPress los ataques se disparan. Puedes pensar que
esto no te va a pasar a tí, pero si no tomas las medidas necesarias de precaución aumentarás la probabilidad de que te ocurra.
Para evitar estos problemas o, al menos, para ponérselo lo más difícil posible a cualquier hacker o a cualquier robot que ande por la red buscando instalaciones de WordPress desprevenidas lo mejor es seguir unas recetas básicas de seguridad antes, durante y después de la instalación de WordPress.
b) Antes de instalar WordPress hemos de decidir dónde instalarlo. Lo podemos instalar en el directorio raíz de tu web, que sería lo normal. Pero también podemos instalarlo en una carpeta a la que le podemos dar un nombre cualquiera, por ejemplo “comentarios” u otro que se nos ocurra (algunos autores recomiendan utilizar nombres absurdos y difíciles de imaginar). Si hemos elegido “comentarios”, y para que nuestra web no aparezca como en http://www.miweb.es/comentarios/, necesitaremos mover los archivos index.php y .htaccess desde dentro de la carpeta “comentarios” al directorio raíz. Después habría que cambiar dentro de index.php estas líneas:
a estas:
Una vez hayas instalado WordPress entra en tu panel de administración
(www.miweb.es/comentarios/wp-admin) y ve a Opciones/General y asegúrate
de que la Dirección de WordPress (URL) sea
http://www.miweb.es/comentarios/ (o cualquiera que sea en tu caso) y que
la Dirección del Blog (URL) sea http://www.miweb.es/
De esta manera se adquiere un plus extra de seguridad frente a bots escaneando la red buscando archivos de WordPress. Además, como ventaja, se obtiene un directorio raíz más limpio.
a) En primer lugar es recomendable cambiar el prefijo de de las tablas de la base de datos antes de que esta se genere. Este prefijo se cambia en el archivo wp-config.php. Por defecto aparece “wp_”. Cámbialo por cualquier otro prefijo. Por ejemplo:
Si ya hemos instalado WordPress y queremos cambiar el prefijo a posteriori, hay plugins que lo hacen por nosotros: WP Prefix Table Changer, WordPress Table Prefix Rename Plugin o Wp-Security Scan (del que hablaremos también más adelante).
b) Igualmente, en wp-config.php puedes definir cuatro claves de seguridad que te ayudan a incrementar la seguridad de WordPress. Estas claves se pueden crear manualmente o a través de WordPress.org. Estas cuatro claves se asignan a diferentes cookies y se utilizan en diversos lugares para incrementar la seguridad de WordPress. Estas claves son:
* AUTH_KEY
* SECURE_AUTH_KEY T
* LOGGED_IN_KEY
* NONCE_KEY
Símplemente copia los valores que hayas obtenido de manera automática en el enlace anterior de WordPress.org en cada línea correspondiente de tu wp-config.php, por ejemplo:
b) Utilizar acceso seguro. Si en tu solución de hosting tienes posibilidad de utilizar acceso vía SSL (Secure Socket Layer), aunque sea compartido, utilízalo. Para ello tendrás que activarlo en el archivo wp-config.php:
c) Cambiar el nombre del usuario. El usuario por
defecto de la nueva instalación será “admin”. Dejar este usuario es dar
facilidades a cualquiera malintencionado. Hay dos opciones: o crear un
nuevo usuario y borrar el usuario “admin” tal y como explico en un
artículo anterior (Primeros pasos tras una nueva instalación de WordPress)
o crear un nuevo usuario con funciones de administrador y al usuario
admin cambiarle el rol a Suscriptor, para que no pueda hacer nada.
d) Mover el archivo wp-config.php: También explicado en mi artículo anterior. Este archivo es vital para proteger la seguridad de tu web. En él están datos vitales como los que permiten el acceso a tu base de datos. WordPress permite mover este archivo a UNA carpeta superior dentro del alojamiento de la web. De esta manera podemos sacar este archivo fuera del acceso público sin ningún problema. Por ejemplo, si tenemos una estructura con varias carpetas en la que una es public_html, que es donde está la web, podemos sacar el archivo a la carpeta superior no accesible por el público general:

e) Suprimir el mensaje de error en la entrada al administrador: Cuando vamos a acceder al administrador de WordPress y nos equivocamos por ejemplo en la contraseña saldrá un mensaje que nos dirá que lo que está mal es la contraseña. Si no queremos dejar pistas podemos incluir esta línea en el archivo functions.php de nuestro tema:
f) Utilizar una contraseña segura, que sea difícil
de adivinar. Utiliza una contraseña larga, con mezcla de mayúsculas,
minúsculas, números… Que sea una contraseña única que no hayas utilizado
para ninguna otra cosa. Además es una buena idea cambiar de contraseña
cada cierto tiempo.
g) Haz copias de seguridad de tu Base de Datos tan frecuentemente como sea necesario. Para hacer copias de seguridad manualmente vía phpMyadmin puedes seguir esta guía paso a paso de WordPress.org. Hay también plugins que hacen la copia de seguridad por ti e incluso te la envían por email si así lo quieres, como WP-DBManager o WP-DB-Backup
h) Asegúrate de que el ordenador desde el que entras a tu panel de administración está libre de virus, spyware y cualquier programa malicioso. Es importante que tengas en tu ordenador un buen antivirus puesto al día.
i) Mantén tu versión de WordPress siempre actualizada a la última versión disponible. Hay ocasiones en la que incluso se crean nuevas versiones para hacer frente a agujeros de seguridad que se han descubierto en ese momento. Igualmente es importante mantener actualizados todos tus plugins.
j) Instala Plugins de Seguridad. Entre ellos destacan:
- WP Security Scan, que comprueba tu instalación de WordPress, busca áreas vulnerables y te propone acciones para corregirlas.
- WordPress Exploit Scanner, que busca entre los ficheros de la web y entre las entradas y comentarios en las tablas de la base de datos cualquier cosa sospechosa.También busca entre los plugins activos ficheros con nombres sospechosos. No borra nada, símplemente te informa de los resultados de sus análisis.
- Limit Login Attempts, que limita el número de intentos posibles para entrar en el área de administración. Por defecto WordPress permite un número ilimitado de intentos, lo cual es una facilidad añadida a cualquiera que quiera entrar mediante prueba-error.
- AntiVirus for WordPress, que se centra en la detección de software malintencionado que pueda atacar nuestra instalación de WordPress. Incluso te puede enviar notificaciones por email
- Askimet, que viene instalado con WordPress y sólo hay que activarlo, y que elimina todo el spam de los comentarios.
k) Seguridad vía .htaccess. Hay muchas opciones (ver Hardening WordPress with htaccess). Por ejemplo:
Si no podemos llevarnos el archivo wp-config.php como indicamos más arriba podemos protegerlo añadiendo en el archivo .htaccess que está en el directorio raiz lo siguiente para negar todos los accesos al archivo:
Si queremos negar todos los accesos excepto los de una IP en particular al archivo wp-config-php:
Si tu IP es dinámica (como suele ser normalmente) y varía entre dos números (por ejemplo, entre 123.456.789.1 y 123.456.789.255) puedes poner:
También podemos proteger el directorio wp-admin. La manera más
sencilla de hacerlo es a través del archivo .htaccess situado dentro de
dicho directorio (si no existiera puedes crearlo). Haríamos igual que
antes:
Debes tener cuidado al proteger el directorio wp-admin,
ya que puede bloquear el acceso a algunos plugins o a algunas
funcionalidades de WordPress. Para evitar jaleos puedes instalar un
plugin que haga esto por tí, como AskApache Password Protection o WP-Adminprotection
Además, podemos proteger toda una serie de archivos sensibles (.htaccess, .htpasswd, php.ini, scripts php, archivos flash .fla, archivos de photoshop .psd o archivos log) de igual manera:
l) Hay autores que aconsejan borrar el archivo wp-admin/install.php tras
realizar la instalación de WordPress ya que en alguna rara ocasión
puede suceder que tras un error WordPress piense que aún no está
instalado y trate de ejecutar el archivo install.php
Otra oción es sustituir el contenido del archivo por esto, mucho más útil, tal y como proponen en Important Security Fix for WordPress (lo he dejado en inglés, como en el original):
m) Dejar de mostrar la versión de WordPress que tenemos instalada.
Muchos temas de WordPress la muestran, lo cual no deja de dar pistas a
usuarios malintencionados. Para ello añadiríamos la siguiente línea al
archivo functions.php de nuestro tema:
n) Evitar que otras webs utilicen imágenes u otro contenido de tu web (lo que se suele llamar hotlinks).
Me ha ocurrido en ocasiones que otras webs han utilizado imágenes,
iconos, etc.. de webs mías simplemente enlazándolas con lo cual utilizan
ancho de banda mío. Para evitarlo lo podemos hacer vía el archivo
.htaccess:
Podemos encontrar más consejos sobre este particular en Creating the Ultimate htaccess Anti-Hotlinking Strategy.
o) En septiembre del 2009 hubo un ataque generalizado a muchas instalaciones de WordPress, que fueron infectadas con código malicioso. Recientemente Jeff Starr de Perishable Press ha propuesto una solución que protege igualmente de ataques futuros. Simplemente hay que crear un fichero php con este código y guardarlo en la carpeta plugins. Al activarlo desde el panel de administración nos protegerá silenciosamente detectando solicitudes con cadenas demasiado grandes (más de 255 caracteres) así como la presencia de “eval(” o “base64” en el URI solicitado.
Hay muchas más opciones recomendables, aunque con las anteriores se
conseguiría un nivel de protección muy alto. Es conveniente estar
suscrito a blogs de WordPress donde estar al día de las novedades que
vayan surgiendo sobre el particular, como por ejemplo el blog en Español
Ayuda WordPress.
Para evitar estos problemas o, al menos, para ponérselo lo más difícil posible a cualquier hacker o a cualquier robot que ande por la red buscando instalaciones de WordPress desprevenidas lo mejor es seguir unas recetas básicas de seguridad antes, durante y después de la instalación de WordPress.
Antes de la instalación
a) Muchas empresas de alojamiento ofrecen la posibilidad de instalar WordPress de manera automática mediante Fantástico. Aunque es una opción realmente cómoda, tiene un inconveniente: No nos permite configurar a nuestro gusto la instalación de WordPress, especialmente en cuanto al prefijo de las tablas en la base de datos, ya que se utilizará wp_, que es el que utiliza el programa de instalación por defecto. Si podéis, haced una instalación manual. Si preferís usar Fantástico recordad cambiar más adelante el prefijo de las tablas de la base de datos (veréis más adelante cómo hacerlo)b) Antes de instalar WordPress hemos de decidir dónde instalarlo. Lo podemos instalar en el directorio raíz de tu web, que sería lo normal. Pero también podemos instalarlo en una carpeta a la que le podemos dar un nombre cualquiera, por ejemplo “comentarios” u otro que se nos ocurra (algunos autores recomiendan utilizar nombres absurdos y difíciles de imaginar). Si hemos elegido “comentarios”, y para que nuestra web no aparezca como en http://www.miweb.es/comentarios/, necesitaremos mover los archivos index.php y .htaccess desde dentro de la carpeta “comentarios” al directorio raíz. Después habría que cambiar dentro de index.php estas líneas:
1
|
require('./wp-blog-header.php');
|
1
|
require('./comentarios/wp-blog-header.php');
|
De esta manera se adquiere un plus extra de seguridad frente a bots escaneando la red buscando archivos de WordPress. Además, como ventaja, se obtiene un directorio raíz más limpio.
Durante la instalación
Durante la instalación hay varios procedimientos que fortalecerán tu instalación de WordPress:a) En primer lugar es recomendable cambiar el prefijo de de las tablas de la base de datos antes de que esta se genere. Este prefijo se cambia en el archivo wp-config.php. Por defecto aparece “wp_”. Cámbialo por cualquier otro prefijo. Por ejemplo:
1
|
$table_prefix = 'wp57B458F_';
|
b) Igualmente, en wp-config.php puedes definir cuatro claves de seguridad que te ayudan a incrementar la seguridad de WordPress. Estas claves se pueden crear manualmente o a través de WordPress.org. Estas cuatro claves se asignan a diferentes cookies y se utilizan en diversos lugares para incrementar la seguridad de WordPress. Estas claves son:
* AUTH_KEY
* SECURE_AUTH_KEY T
* LOGGED_IN_KEY
* NONCE_KEY
Símplemente copia los valores que hayas obtenido de manera automática en el enlace anterior de WordPress.org en cada línea correspondiente de tu wp-config.php, por ejemplo:
1
2
3
4
|
define('AUTH_KEY', '+tmh1=-+IPI[w{e_a-}_iK{@f#=?O0x0r|kMQ@{2@p%RTy9c&GyCd)KavDk} H;F');
define('SECURE_AUTH_KEY', 'd,QY(bCxGwtdn>QR=Gyi]3cS0}$DEz-+`,+%j!R[F@wGci;9g$`9sx#dlyE>H6W|');
define('LOGGED_IN_KEY', '2!N--t@ML1]Xb|x0~Y C%J 4Q]-+~yBl$,k9ZX<<RxoG*B$1_r(_RPPi0HiRdIyA');
define('NONCE_KEY', '_w~2=`[pZpyZFf:]W.A{=)yuafy}QkZ@+X$@>DgQUD8}QRXg^z5*j!Z(x6|lr|KB');
|
Una vez instalado WordPress
a) Crear un archivo vacío index.html en aquellos directorios que no lo tengan, lo que permite que no se pueda listar el contenido del directorio. Como alternativa más sencilla podemos añadir esta línea en nuestro archivo .htaccess: Options -Indexesb) Utilizar acceso seguro. Si en tu solución de hosting tienes posibilidad de utilizar acceso vía SSL (Secure Socket Layer), aunque sea compartido, utilízalo. Para ello tendrás que activarlo en el archivo wp-config.php:
1
|
define ('FORCE_SSL_LOGIN', true);
|
d) Mover el archivo wp-config.php: También explicado en mi artículo anterior. Este archivo es vital para proteger la seguridad de tu web. En él están datos vitales como los que permiten el acceso a tu base de datos. WordPress permite mover este archivo a UNA carpeta superior dentro del alojamiento de la web. De esta manera podemos sacar este archivo fuera del acceso público sin ningún problema. Por ejemplo, si tenemos una estructura con varias carpetas en la que una es public_html, que es donde está la web, podemos sacar el archivo a la carpeta superior no accesible por el público general:
e) Suprimir el mensaje de error en la entrada al administrador: Cuando vamos a acceder al administrador de WordPress y nos equivocamos por ejemplo en la contraseña saldrá un mensaje que nos dirá que lo que está mal es la contraseña. Si no queremos dejar pistas podemos incluir esta línea en el archivo functions.php de nuestro tema:
1
|
add_filter('login_errors',create_function('$a', "return null;"));
|
g) Haz copias de seguridad de tu Base de Datos tan frecuentemente como sea necesario. Para hacer copias de seguridad manualmente vía phpMyadmin puedes seguir esta guía paso a paso de WordPress.org. Hay también plugins que hacen la copia de seguridad por ti e incluso te la envían por email si así lo quieres, como WP-DBManager o WP-DB-Backup
h) Asegúrate de que el ordenador desde el que entras a tu panel de administración está libre de virus, spyware y cualquier programa malicioso. Es importante que tengas en tu ordenador un buen antivirus puesto al día.
i) Mantén tu versión de WordPress siempre actualizada a la última versión disponible. Hay ocasiones en la que incluso se crean nuevas versiones para hacer frente a agujeros de seguridad que se han descubierto en ese momento. Igualmente es importante mantener actualizados todos tus plugins.
j) Instala Plugins de Seguridad. Entre ellos destacan:
- WP Security Scan, que comprueba tu instalación de WordPress, busca áreas vulnerables y te propone acciones para corregirlas.
- WordPress Exploit Scanner, que busca entre los ficheros de la web y entre las entradas y comentarios en las tablas de la base de datos cualquier cosa sospechosa.También busca entre los plugins activos ficheros con nombres sospechosos. No borra nada, símplemente te informa de los resultados de sus análisis.
- Limit Login Attempts, que limita el número de intentos posibles para entrar en el área de administración. Por defecto WordPress permite un número ilimitado de intentos, lo cual es una facilidad añadida a cualquiera que quiera entrar mediante prueba-error.
- AntiVirus for WordPress, que se centra en la detección de software malintencionado que pueda atacar nuestra instalación de WordPress. Incluso te puede enviar notificaciones por email
- Askimet, que viene instalado con WordPress y sólo hay que activarlo, y que elimina todo el spam de los comentarios.
k) Seguridad vía .htaccess. Hay muchas opciones (ver Hardening WordPress with htaccess). Por ejemplo:
Si no podemos llevarnos el archivo wp-config.php como indicamos más arriba podemos protegerlo añadiendo en el archivo .htaccess que está en el directorio raiz lo siguiente para negar todos los accesos al archivo:
1
2
3
4
5
|
# proteger wp-config.php
<files wp-config.php>
Order deny,allow
deny from all
</files>
|
1
2
3
4
5
6
|
# proteger wp-config.php
<Files wp\-config\.php>
Order Deny,Allow
Deny from all
Allow from 123.123.123
</Files>
|
Si tu IP es dinámica (como suele ser normalmente) y varía entre dos números (por ejemplo, entre 123.456.789.1 y 123.456.789.255) puedes poner:
1
2
3
4
5
6
|
# proteger wp-config.php
<Files wp\-config\.php>
Order Deny,Allow
Deny from all
Allow from 123.456.789
</Files>
|
1
2
3
4
5
6
|
# Proteger archivos de wp-admin
<FilesMatch "*.*">
Order Deny,Allow
Deny from all
Allow from 123.456.789
</FilesMatch>
|
Además, podemos proteger toda una serie de archivos sensibles (.htaccess, .htpasswd, php.ini, scripts php, archivos flash .fla, archivos de photoshop .psd o archivos log) de igual manera:
1
2
3
4
5
6
|
# Proteger archivos sensibles por tipo de fichero
<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log)$">
Order Deny,Allow
Deny from all
Allow from 123.456.789.0
</FilesMatch>
|
Otra oción es sustituir el contenido del archivo por esto, mucho más útil, tal y como proponen en Important Security Fix for WordPress (lo he dejado en inglés, como en el original):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php // install.php replacement page: http://perishablepress.com/press/2009/05/05/important-security-fix-for-wordpress/ ?>
<?php header("HTTP/1.1 503 Service Temporarily Unavailable"); ?>
<?php header("Status 503 Service Temporarily Unavailable"); ?>
<?php header("Retry-After 3600"); // 60 minutes ?>
<?php mail("your@email.com", "Database Error", "There is a problem with teh database!"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Error Establishing Database Connection</title>
</head>
<body>
<img src="images/wordpress-logo.png" />
<h1>Error Establishing Database Connection</h1>
<p>We are currently experiencing database issues. Please check back shortly. Thank you.</p>
</body>
</html>
|
1
|
<?php remove_action('wp_head', 'wp_generator'); ?>
|
1
2
3
4
5
6
7
8
9
|
# Protección frente a hotlinks de archivos .jpg, .jpeg, .jpe, .gif, .png
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g?|png)$ [NC]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?domain\. [NC]
RewriteRule \.(gif|jpe?g?|png)$ - [F,NC,L]
</ifModule>
|
o) En septiembre del 2009 hubo un ataque generalizado a muchas instalaciones de WordPress, que fueron infectadas con código malicioso. Recientemente Jeff Starr de Perishable Press ha propuesto una solución que protege igualmente de ataques futuros. Simplemente hay que crear un fichero php con este código y guardarlo en la carpeta plugins. Al activarlo desde el panel de administración nos protegerá silenciosamente detectando solicitudes con cadenas demasiado grandes (más de 255 caracteres) así como la presencia de “eval(” o “base64” en el URI solicitado.
1
2
3
4
5
6
7
8
9
10
|
<?php /* Plugin Name: Block Bad Queries */
if (strlen($_SERVER['REQUEST_URI']) > 255 ||
strpos($_SERVER['REQUEST_URI'], "eval(") ||
strpos($_SERVER['REQUEST_URI'], "base64")) {
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
} ?>
|
Sigue a Juan en Twitter, en Google+, o suscríbete al RSS Feed de Emenia para estar al día de nuestros artículos.
Suscribirse a:
Entradas (Atom)