Si necesitamos proteger una web o un directorio de una web con nginx sólo hay que seguir estos 2 pasos:

 

Tabla de contenidos

Generar un fichero con el usuario y clave

Si ya tenemos un fichero de usuarios clave de apache lo podemos reutilizar en nginx, pero si lo tenemos que crear hay dos formas de hacerlo:

En el ejemplo crearemos el fichero de claves en /etc/nginx/.htpasswd

Usando el comando de apache2-utils htpasswd

sudo htpasswd -c /etc/nginx/.htpasswd usuario

con openssl

echo -n "usuario:" >> /etc/nginx/.htpasswd
openssl passwd -apr1 >> /etc/nginx/.htpasswd

de esta forma nos quedará algo así en el fichero

test2:$apr1$o4Lmm4.x$joXl8SfzA2tYPVtRQPTtF0

Configurar nginx

Sólo tenemos añadir al location que queremos proteger dos líneas:
auth_basic «acceso prohibido»; para indicar que vamos a usar usuario y contraseña para ese location
auth_basic_user_file /etc/nginx/.htpasswd; para decirle donde está el fichero con el usuario y contraseña

Por ejemplo para proteger el acceso a un wordpress:

location / {
	auth_basic "acceso prohibido";
	auth_basic_user_file /etc/nginx/.htpasswd;
 
	try_files $uri $uri/ /index.php?q=$uri&$args;
}

Todos los que tenemos algún wordpress y revisamos los logs periódicamente vemos que continuamente hay accesos por POST al xmlrpc.php. Algunas veces son ataques y otras son simples consultas de bots. En cualquier caso son accesos que no me valen para nada y generan tráfico innecesario.

Hace poco revisando unos logs vi miles de accesos por POST desde una ip de Ucrania y con el user agent de GoogleBot. No se que quería pero seguro que nada bueno. 🙂

Lo que recomiendan en muchos sitios de borrar ese fichero a mi no me convence por que si actualizas el wordpress lo vuelves a tener ahí y hay veces que se hace un uso legítimo de ese fichero para, p.e. publicar post desde programas externos.

Una característica habitual de los bots es que hacen las peticiones por HTTP/1.0 en vez del habitual HTTP/1.1 así que aprovechando esta característica he preparado este pequeño código que bloquea las peticiones por POST y HTTP1.0 al xmlrpc.php. Obviamente si el bot trabaja con HTTP/1.1 esto no funcionará.

Lo más interesante de este código es que para evitar ifs anidados concateno dos valores en una variable. Si se cumple la primera condición el valor de la variable es «bot» y si se cumple la segunda añado a lo que tenga la variable el valor «post», de esa forma sólo devuelve 403 si las dos variables cumplen la condición. Este método permite construir tantos ifs anidados como quieras, simplemente hay que añadir más valores a la cadena.

## Block xmlrpc.php POST http1.0
  location ^~ /xmlrpc.php {
    set $mata_bot 0;
    if ($server_protocol ~* "HTTP/1.0") {
        set $mata_bot "bot";
        }
    if ($request_method = POST ) {
        set $mata_bot "${mata_bot}-post";
        }
    if ($mata_bot = "bot-post"){
       return 403;
       }
   }

Espero que le sea útil a alguien más.

Información sobre ataques de fuerza bruta con xmlrpc.php

Una forma original de evitar el spam, popups y un montón de basura sin cargar nada el equipo es hacer que los hosts que lo sirven apunten al localhost. En someonewhocares.org he encontrado un listado de mas de 10000 spammers ya preparados para meter en el fichero host.

Se puede guardar en lugar de tu fichero hosts o añadir al que ya tienes. En mi caso lo tengo que añadir por que lo utilizo para mas cosas, así que he preparado este pequeño script que se puede añadir al cron y así actualizar periódicamente.

Este es el script:

#!/bin/bash
if [ ! -f /etc/hosts.original  ]
then
        #hacemos copia del fichero original si no existe
        /bin/cp /etc/hosts /etc/hosts.original
else
        #ya tenemos una copia del fichero orginal así que la restauramos
        /bin/cp /etc/hosts.original /etc/hosts
fi
 
#Descargamos el fichero host de http://someonewhocares.org/hosts/ ,filtramos las entradas que nos interesan y lo añadimos al nuestro fichero host
curl --silent http://someonewhocares.org/hosts/hosts | grep '^127.0.0.1' >> /etc/hosts

El spam en los blogs es un problema que acaba afectando de alguna forma a todos los que administramos servidores. En WordPress hay estupendos plugins para evitar el spam como Akismet y que funcionan muy bien, pero siempre funcionan después de que el spam ya ha entrado en el blog con el consiguiente consumo de ancho de banda, cpu, memoria y espacio en disco. Evidentemente para un sólo blog no es un problema pero cuando tienes muchos con mucho tráfico y está entrando continuamente spam en todos ellos puede acabar siendo un problema.

En Stop Forum Spam han creado una lista de spammers a nivel mundial que puedes consultar descargando un fichero con las ips, emails o nombres de usuario utilizados o a través de una api que puedes consultar libremente desde cualquier aplicación que desarrolles.

En mi caso para ahorrar tiempo y ancho de banda he creado una entrada en el cron que diariamente descarga las ips bloqueadas durante las ultimas 24 horas y las bloquea directamente.

Ejemplo con iptables

.
/usr/bin/wget -O /tmp/listed_ip_1.zip http://www.stopforumspam.com/downloads/listed_ip_1.zip; /usr/bin/unzip /tmp/listed_ip_1.zip -d /tmp/; for i in $(/bin/cat /tmp/listed_ip_1.txt); do /sbin/iptables -A INPUT -s $i -j DROP; done; /bin/rm /tmp/listed_ip_1.*

y si utilizas el firewall apf

.
/usr/bin/wget -O /tmp/listed_ip_1.zip http://www.stopforumspam.com/downloads/listed_ip_1.zip; /usr/bin/unzip /tmp/listed_ip_1.zip -d /tmp/; for i in $(/bin/cat /tmp/listed_ip_1.txt); do /usr/local/sbin/apf -d $i; done; /bin/rm /tmp/listed_ip_1.*

Espero que os sea útil.

[Actualización]
Acabo de encontrar un plugin para wordpress que utiliza esta lista junto con otras dos:
http://wordpress.org/extend/plugins/stop-spammer-registrations-plugin/

En el número de esta semana de internautas.tv hablan acerca de los muleros y de si son víctimas de las estafas o parte de ellas.

Personalmente opino igual que el juez al que hacen referencia en el programa. El dinero no llueve del cielo y lo primero que hay que hacer es informarse y sospechar de que pongan en nuestras manos grandes cantidades de dinero así por que si.

Los muleros son parte de la estafa y en la mayor parte de los casos que he visto son personas que se hacen las víctimas pero a la hora de recibir el dinero en ningún momento se han preguntado de donde viene o de por que me han elegido a mi para este trabajo tan sencillo y en el que se maneja tanto dinero en efectivo. Muchos sospechan pero prefieren cerrar los ojos y creer que todo es legal y correcto.

El resto son simples caraduras que prueban a ver si pueden sacar algo si no los pillan, Incluso llegan a mezclar a familiares y amigos utilizando cuentas de esas otras personas por «si acaso no es todo tan bonito como lo pintan».

Saludos.

Estos días están saliendo muchas noticias en todos los medios tanto en línea como en papel haciéndose eco de la noticia de El país sobre el comentario de panda referente a que «Uno de cada tres ordenadores está infectado en España«, que digo yo que será verdad, pero que tampoco hay que extrañarse.
Hoy en día es raro el hogar que no tiene un ordenador, usado tanto para ocio como para trabajo, comprado en uno de esos supermercados de informática donde lo mismo te venden un equipo con las últimas prestaciones como un cepillo de dientes eléctrico, pero no hay que olvidar que un ordenador no es un electrodoméstico como otro cualquiera.

Lo primero que se debería hacer entender a los usuarios de ordenadores con conexión a internet de banda ancha es que lo de los antivirus no es una manía y que no todo lo que aparece en la pantalla es verdad, que cuando nos aparezca una ventana diciendo que nos ha tocado un premio de xxx dólares no se debería pulsar por que lo más probable es que nos metan un buen virus o cuando una moza ligerita de ropa nos cuenta que si pulsas en su foto vas a ver Sodoma y Gomorra pues idem, y mejor no hablar de los correos por que se nos alargaría esto una barbaridad.

Lo malo no es que les entre uno o doscientos virus, lo realmente malo es que a muchos no les importa. He escuchado infinidad de veces la frasecita de «da igual que tenga virus, pa lo que tengo en el ordenador …» o «siiii tengo antivirus, pero lo suelo cerrar por que el ordenador me va muy lento«.

Y es que de lo que no se dan cuenta es de que a lo mejor su ordenador lo están utilizando para:

  • Almacenar y distribuir material pedófilo.
  • Enviar millones de correos electrónicos con mas virus o phishing.
  • Almacenar contraseñas y datos sensibles robados.
  • Ser utilizado para atacar a otros ordenadores.
  • Ser usado como proxy para robar en bancos.
  • etc. etc. etc.

Uno de esos famosos ordenadores zombies de los que por lo visto hay miles en España.

Y luego dicen que soy un exagerado por que siempre le digo a todo el mundo que hay que instalar un firewall y un antivirus y además me miran como si estuviera loco cuando les digo que es imprescindible que lo actualicen diariamente. Supongo que muchos ya me lo oiríais decir otra veces pero creo que para usar ciertos servicios a muchos les deberían exigir un carnet de manejo de ordenadores.

Veo en el blog de Sergio Hernando un artículo muy bueno sobre como elegir nuestras claves adecuadamente.

Hay cuatro reglas que si seguimos, probablemente conducirán a que tengamos claves adecuadas. Son los siguientes:

  • Nunca bases tu clave en información personal: ni nombre, ni nombre de usuario, ni fecha de cumpleaños, números de pasaporte o documentos de identidad, ni aniversarios ni nada que sea fácilmente adivinable o intuíble, o que simplemente se pueda averiguar conociendo un poco a la persona.
  • No elijas claves que sean palabras que puedan aparecer en cualquier diccionario. Los ataques de diccionario se basan precisamente en esto.
  • No escojas transformaciones simples de palabras. Si me llamo Sergio, emplear la clave Oigres no es una buena idea. Tampoco lo sería s3rg10. Son las dos transformaciones típicas que cualquier programa para crackeo de contraseñas contempla.
  • Por último, y como norma general, evita escoger claves de menos de 8 caracteres. También hay que evitar seleccionar claves sólo numéricas (1234) o sólo compuestas de letras (abcd). Es recomendable combinar ambos y emplear caracteres no alfanuméricos (;&%$/). Las claves, cuanto más cortas, son más fácilmente resolubles por ataque de fuerza bruta.

Mas información en artículo original.

Habitualmente todos recibimos un montón de mensajes de correo de bancos con mensajes de lo mas alarmante aunque curiosamente no tengamos ni siquiera cuenta en ellos. Estos mensajes son una estafa por internet llamada phising. Básicamente consiste en enviar millones de mensajes solicitando con cualquier razón que introduzcas tus datos para entrar en el servicio de banca electrónica del banco para así poder robar el dinero de los incautos que pican. Desconozco si pica mucha gente pero me imagino que si ya que los mensajes se repiten día si y día también. Como soy muy curioso suelo mirar casi todos los que me llegan para ver si esta vez se han lucido o siguen igual de torpes utilizando un español que no utilizaría ni un extranjero que llevara una semana aquí. Además siempre es interesante ver que técnica han utilizado esta vez y a quien le han robado el servidor donde alojan las páginas falsas. Últimamente suelo ver cada vez más los "kits" que se venden por internet para "fabricar" phising a medida. Algo así como un sistema genérico preparado para funcionar en zonas geográficas concretas (direcciones de correo de españoles p.e.) y con claves robadas de servidores para alojar las páginas a los que sólo hace falta meter el correo y la página de trampa. Debe de ser por que ya no es tan rentable robar así que venden los kits. Según comentan en otros sitios de seguridad los precios no pasan de los 600 euros, Por otro lado también es interesante estudiar cuanto tiempo tardan en cerrar el servidor donde está alojado el phising y como reacciona el banco atacado. Como ejemplo comentar que desde ayer llevo recibidos un montón de correos con un phising de bancaja bastante bien hecho . Os dejo esta imagen para que lo podáis ver como es un mensaje de estos. phising de bancaja Como podéis ver está casi casi en correcto español aunque llama un poco la atención la forma de expresarse. La dirección de origen no se corresponde con bancaja, Pero lo que realmente llama mas la atención es que todavía aparezca el logo de bancaja en esta página ya que si se mira el fuente del html se puede ver claramente que está alojado en los servidores de bancaja. Hay cosas tan sencillas y rápidas como cambiar esas imágenes por otras con un aviso de que están viendo un intento de robo, p.e., que son tremendamente efectivas. Alguna entidad ya ha utilizado este método y les ha funcionado a las mil maravillas. Algunos podéis pensar que como alguien puede picar con estos mensajes a estas alturas. Yo creo que es lo mas normal del mundo teniendo en cuenta que hoy en día hay un porcentaje altísimo de personas con ordenador en casa y sin apenas conocimientos del medio en que se mueven. Muchas veces lo comento aunque se que a mucha gente le parece prepontente pero pienso que es totalmente cierto. Un ordenador no es una lavadora, es algo mucho mas complicado y delicado, no por lo la máquina en sí, si no por la información que contiene o que nos puede llegar. Si para poder conducir un coche necesitas pasar un un aprendizaje previo, un psicotécnico y un examen, para manejar un ordenador pues lo mismo. Y no os riáis que lo del psicotécnico no es ninguna broma, mirad barrapunto, lo que era y lo que es hoy en día. Por hoy ya está bien, dos meses sin escribir ni una palabra y en un sólo día una parrafada del copón. Voy a pillar tendinitis. =;-) Saludos.