Hemos sufrido un ataque de fuerza bruta en WordPress

wordpress-265132_1280Ayer algunos habéis notado que los dominios proxectos.citius.usc.es, demos.citius.usc.es y persoal.citius.usc.es no funcionaban, y eso fue debido a que recibimos el aviso de que el servidor estaba infectado con un botnet.

Ya hemos sufrido algo parecido en el pasado en ese mismo servidor. En esta ocasión, no ha sido por una vulnerabilidad sino por un ataque de fuerza bruta en uno de los WordPress instalados en el servidor para un proyecto.

Tras comprobar los logs y restaurar una copia de seguridad previa al desastre, hemos comprobado que las medidas que tomamos en febrero mitigaron los efectos (el bot no era capaz de lanzarse a sí mismo y requería una petición HTTP para lanzarse cada poco tiempo), pero aún así no se pudo prevenir la infección ni su funcionamiento por completo.

Qué ha pasado

El 4 de noviembre, a las 6 de la madrugada, recibimos durante 4 horas un total de 2411 peticiones de intento de identificación en uno de los blogs, hasta que finalmente el robot pudo entrar, cambiar las contraseñas de dicho WordPress y modificar un tema usando el editor incorporado, cambiando archivos legítimos por otros que permitían a su vez infectar la máquina con más malware.

Actualización: Es cierto que con tan solo 2411 peticiones es difícil hacer un ataque de fuerza bruta, a no ser que la contraseña sea muy débil. Por desgracia, no guardamos información del tamaño de los bytes enviados ni recibidos para poder detectar si se trata de un ataque tipo BREACH o similar, aunque también es posible.

Qué podemos hacer para evitarlo

Hay varias recomendaciones que los usuarios de WordPress pueden seguir para evitar estos ataques de fuerza bruta. Hemos recomendado a todos ellos que las apliquen.

No obstante, también hemos implementado medidas adicionales de seguridad:

Hemos habilitado, en ese servidor, una revisión constante de ClamAV, un antivirus que es capaz de detectar este tipo de exploits, para que nos informe en cuanto detecte algún archivo sospechoso. En esta ocasión, ClamAV ha sido capaz de detectar los archivos, y de haber estado funcionando este sistema, lo habríamos detectado mucho antes.

También hemos instalado fail2ban, una solución que gestiona una lista negra del sistema (el archivo deny.hosts) en base a determinadas reglas que se pueden definir arbitrariamente. Por ejemplo, se puede hacer que compruebe intentos de conexión a logins de WordPress reiterados. Una vez en la lista negra en la que se mantendrá durante un tiempo prudencial, el servidor web rechazará cualquier conexión desde esa IP. Hasta ahora utilizábamos otras soluciones que no permitían definir este tipo de reglas y tan solo eran capaces de bloquear intentos de login fallidos en servicios conocidos.

Actualización: No lo comentamos originalmente, pero también aplicamos algunas medidas de seguridad adicionales. Desde luego, es cierto que parece una posibilidad que esto no se trate de un simple ataque de fuerza bruta, sino de un ataque tipo BREACH (u otros derivados de técnicas de compresión y SSL), por lo que hemos tomado también las medidas recomendadas para mitigar dichos ataques. En cualquier caso, bloqueando peticiones reiteradas a páginas de login, este tipo de ataques tampoco serían posibles.

Con estas mejoras, esperamos poder mitigar este tipo de ataques y poder responder más rápido ante posibles problemas de este tipo en un futuro.

Todo era alegría en Bash hasta que Shellshock

El jueves de la semana pasada salió a la luz un fallo de seguridad que afecta a Bash, el intérprete de comandos detrás de muchos sistemas con Linux y Mac OS X.

El bug se produce porque, a la hora de definir variables de entorno, utilizando una sintaxis determinada se consigue ejecutar código que a su vez se almacena dentro de la variable, algo que lógicamente no debería estar permitido. Veamos un ejemplo:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Con este comando se ejecuta una nueva shell de Bash, pasándole una definición de una variable que contiene un método que no hace nada y un comando justo después de la definición, que se ejecuta justo cuando la variable se define.

Algunas televisiones partidarias de shells alternativas piensan que Bash es un bug en sí mismo

Algunas televisiones partidarias de shells alternativas piensan que Bash es un bug en sí mismo. Fuente: @crazybob

Este bug permite realizar varios ataques ya probados: escalada de privilegios de un usuario normal, ejecución de comandos en shells de SSH restringidas… ¿Un user agent de un navegador llamado () { :;}; rm -rf /? ¿Por qué no?. Las consecuencias podrían ser desastrosas.

Como pasó en la época del Heartbleed y OpenSSL, mucha gente ha centrado ahora su mirada en Bash y se han encontrado nuevos fallos de seguridad relacionados y no relacionados. En los servidores (y equipos de escritorio que administramos) del centro, Bash se actualiza regularmente con las actualizaciones de seguridad de las distribuciones, que ya han publicado varias versiones nuevas que van corrigiendo todos estos fallos.

En la Wikipedia van sintetizando toda la nueva información que va surgiendo, con enlaces a las fuentes interesantes, así que recomendamos echar un vistazo a su artículo si queréis más información sobre este tema. La página ShellShocker.net también resume toda la información y ofrece recursos para probar los sistemas y parchear Bash de forma manual, muy útil para sistemas antiguos.

Actualización de Gitlab a la versión 7.2

Acabamos de actualizar la instalación de Gitlab del centro a la última versión disponible. En esta ocasión, hemos pasado de la versión 6.8 a la 7.2. Las principales novedades son estas:

Gitlab

  • Se pueden asignar colores a las etiquetas del gestor de issues (7.2).
  • Se pueden agrupar los repositorios con el mismo milestone, de forma que es más sencillo trabajar con las milestones en proyectos que utilizan varios repositorios (7.1).
  • Nueva página de login (7.1).
  • Al gestionar milestones, se puede cambiar el estado de los issues arrastrando y soltando en su columna correspondiente (7.0).
  • Hay algunos cambios sutiles de permisos en los roles developer y master (7.0).

Gitlab publica una nueva versión cada mes y en el CiTIUS actualizamos Gitlab con frecuencia, especialmente si hay algún problema de seguridad que se solucione con una actualización.

El sistema de integración continua Gitlab CI no se actualiza con tanta frecuencia. La última versión data de mayo de 2014 y desde que lanzamos el servicio no ha salido ninguna versión nueva.

Actualización del cloud IaaS a Cloudstack 4.3

La semana pasada actualizamos el cloud a Cloudstack 4.3, que soluciona muchos problemas que teníamos con la versión 4.1 que lanzamos como servicio el año pasado.

cloudmonkey-fp

  • Ahora es posible cambiar la cuenta de las máquinas virtuales desde la interfaz, así que se pueden asignar a un proyecto o a otro usuario después de crearse.
  • Además de añadir más discos secundarios para datos, se puede ampliar el tamaño de los discos de datos existentes (pero no del principal).
  • Las plantillas se asocian correctamente a las cuentas de los proyectos, así que ya no es necesario que sean públicas para poder utilizarlas, o borrarlas.
  • Ahora es posible añadir varias IPs a una misma interfaz de red y asignar varias redes a una misma máquina virtual.

Se pueden consultar las notas de la versión 4.2.0 y la versión 4.3.0, aunque están dirigidas a administradores.

Además, hemos ampliado el almacenamiento secundario, que es el espacio en el que se guardan las plantillas y las ISOs, con 2TB más, para evitar los problemas de escasez que había hasta ahora.

Trabajando en la terminal de forma más productiva (II)

Hace un par de semanas mostramos algunas alternativas para trabajar en la terminal de forma más productiva en la primera parte de esta entrada (ojo también a los comentarios). Hoy hablaremos de terminales y de alternativas a aplicaciones tradicionales para terminal.

Terminales para todos los gustos

Hoy en día hay emuladores de todo tipo. La mayoría disponen de pestañas, integran opciones de historial y colores. Pero hay distintas características que pueden ayudar a mejorar la productividad.

Guake y Yakuake son dos opciones muy populares de terminales tipo Quake, llamadas así porque, como la terminal de debug del videojuego Quake (1996), se deslizan desde la parte superior de la pantalla.

Terminator permite dividir la terminal en varios tiles y escribir en todas (o solo en algunas) a la vez. Se pueden reordenar, dividir, minimizar… Terminator es una opción muy cómoda para realizar la misma tarea en varias máquinas. Además, soporta múltiples atajos de teclado y tiene un sistema de plugins para añadir funcionalidad adicional.

Captura de pantalla de 2014-05-16 17:44:46

Final Term es un concepto de terminal más moderno, que tiene funciones muy interesantes como autocompletado utilizando un menú contextual, reconocimiento semántico de la salida de los programas. Reconoce la salida de los comandos más habituales y muestra opciones, permite contraer la salida de los comandos…

text-menu

Alternativas a las utilidades clásicas de terminal

Las utilidades como ps o top son ampliamente conocidas por estar presentes en prácticamente todos los sistemas basados en GNU/Linux, pero existen otras alternativas interesantes que, en muchas ocasiones, son mucho más productivas.

La utilidad htop es una versión mejorada de top. Soporta color, muestra la información de carga de cada core por separado y permite navegar por los procesos utilizando el teclado para realizar acciones sobre esos procesos, como enviarles señales o modificar su niceness.

En lugar de df se puede utilizar la herramienta pydf, que muestra de forma algo más gráfica el espacio disponible en cada punto de montaje, usando colores y gráficos de barras.

Captura de pantalla de 2014-05-17 18:56:17

Dstat hace las veces de vmstat, iostat, netstat e ifstat, también con salida a color. Tiene alguna funcionalidad adicional, como permitir mostrar mediciones por procesador, punto de montaje o interfaz de red.

Ncdu acerca la utilidad du a alternativas de escritorio más completas, mostrando el espacio utilizado de forma gráfica. Permite también borrar archivos y directorios moviéndose con el teclado.

¿Conocéis más utilidades del estilo? ¿Qué aplicación de terminal es vuestra favorita? Te animamos a compartirlo con todos en los comentarios de la entrada.

Trabajando en la terminal de forma más productiva (I)

Una de las herramientas que utilizamos a diario es la terminal. Y aunque alguna gente Apps-konsole-iconparece tenerle un poco de tirria, hay también gente que sabe que, usada a su debido tiempo, un poco de terminal puede resultar muy productivo y sencillo.

Hoy compartiremos algunos pequeños trucos (que están en el manual, por cierto) para hacerlo todavía mucho más sencillo y productivo. Volveremos a insistir en este tema dentro de algunas semanas.

Historial

Es cierto que hay comandos muy complicados y que tienen unas opciones muy difíciles de recordar. Probad a usar imagemagick, o mencoder y sabréis a qué me refiero. Para esos casos, consultar el manual puede ser necesario la primera vez, pero la segunda vez no hará falta, porque podremos verlo en nuestro propio historial.

Para ver el historial basta con escribir el comando history. Bash lo pone más sencillo aún, y pulsando Control R se puede hacer una búsqueda hacia atrás. Si nos hemos pasado, se puede pulsar Control S para buscar hacia adelante. Una vez encontrado el comando deseado, basta con pulsar intro para ejecutarlo, o bien usar las flechas del teclado para moverse por él y modificarlo al gusto si fuera necesario.

Por defecto, solo se guardan los últimos 500 comandos introducidos, pero se puede aumentar esta cifra para no perder los comandos utilizados en mucho tiempo cambiando la variable de entorno HISTSIZE de forma permanente:

echo 'export HISTSIZE=10000' >> ~/.bashrc

Por supuesto, el historial tiene muchas más opciones y formas de utilizarse, pero se pueden consultar en su sección del manual.

Combinaciones de teclas interesantes

Bash soporta muchos atajos de teclado similares a los que se utilizan en EMACS. Pero vamos a suponer que el usuario medio no conoce EMACS o, con criterio, no quiere conocerlo. Aún así hay combinaciones sencillas de recordar y muy útiles.

  • Control ← y Control →: Permiten moverse por la linea actual más rápido, saltando de palabra en palabra, en lugar de hacerlo por caracteres.
  • Control Insert y Shift Insert: Permite trabajar con el portapapeles, copiando y pegando respectivamente. No es necesario pulsar Control Insert para copiar si vas a pegarlo en la misma terminal, ya que Shift Insert pega del portapapeles automático.
  • Control _: Deshace los cambios realizados en la línea actual, incrementalmente.

Te animamos a dejar en los comentarios tus pequeños trucos que te ayudan a ser más productivo usando la terminal.

Heartbleed en el CiTIUS y recomendaciones de seguridad

heartbleedA estas alturas todo el mundo estará al tanto de uno de los agujeros de seguridad más graves, por lo menos en cuanto a su impacto, que ha afectado a Internet en los últimos años: Heartbleed.

El problema es que ha estado presente durante más de un año y hasta que ha sido desvelado, cualquiera que tuviera de su conocimiento ha podido usarlo para obtener datos muy sensibles, como los certificados de servidores, cookies de sesión o contraseñas de usuarios, y es prácticamente imposible saber si ha sido así o no.

Lamentablemente, los servidores web y VPN del CiTIUS estaban afectados por dicho fallo de seguridad.

Fuimos rápidos parcheando el problema en ambos servicios, la misma mañana del 8 de abril, pocas horas después de que se hiciera público. Es poco probable que atacantes malintencionados, más allá de aquellos privilegiados que tuvieran el conocimiento antes del bombazo mediático, recuperasen datos sensibles. Y es difícil de creer que pudiésemos ser objetivo de los ataques de alguien así.

En nuestro caso, el disponer de un servidor Nginx que distribuye las peticiones hacia otros servidores internos a modo de pasarela ha jugado a nuestro favor: Ha permitido parchear el problema con mayor rapidez. En el improbable caso de que alguien consiguiese explotar el problema a tiempo, tan solo podría obtener datos en la memoria de ese servidor pasarela (aunque es cierto que al pasar todas las peticiones por allí, son muchos, pero son menos).

Recomendaciones para usuarios del Cloud IAAS

Algunas de las plantillas disponibles en el cloud IAAS están afectadas por este fallo de seguridad, por lo que los usuarios que hayan desplegado servicios que estén utilizando OpenSSL deben asegurarse de que el paquete OpenSSL está actualizado. Las versiones vulnerables son todas las de la rama 1.0.1 hasta la 1.0.1f. La versión 1.0.1g es la que incluye el parche de seguridad. En las próximas horas actualizaremos las plantillas para que las nuevas máquinas virtuales desplegadas no tengan este problema.

Recomendaciones de seguridad generales

Todos los usuarios deberían cambiar ahora todas sus contraseñas más sensibles, especialmente si las comparten entre varios servicios. Mashable ha publicado un listado de servicios afectados. Se debe comprobar antes si el servicio aún está afectado por el problema, aunque a estas alturas es poco probable.

En el caso de las cuentas del CiTIUS, recomendamos cambiarlas a través de este formulario a aquellos que se hayan identificado en la página web del centro desde el lunes por la tarde hasta que se parchearon los servidores, el martes a primera hora.

Hasta donde sabemos, los servidores de la USC no estaban funcionando con la versión de OpenSSL afectada, por lo que las cuentas de la USC no corren ningún peligro.

Es importante que todo el mundo comprenda que, aunque no sean tan mediáticos o tan graves, problemas de seguridad que pueden llevar a un robo de información sensible no son nada infrecuentes. Por ello, os damos una recomendaciones generales de seguridad que ayudarán a mantener a salvo vuestras credenciales y otros datos importantes:

  • Utilizar contraseñas diferentes en cada servicio, especialmente en aquellos que manejen o contengan información sensible, como el correo electrónico, servicios de banca, etc.
  • Utilizar contraseñas fuertes, que sean suficientemente largas, compuestas por símbolos y combinaciones de letras mayúsculas y minúsculas y que no tengan un significado que pueda llevar a su adivinación (acrónimos, fechas, diminutivos, palabras reales, etc.).
  • Tener la costumbre de cambiar las contraseñas cada cierto tiempo, una buena práctica es hacerlo de forma anual.
  • Mantener los sistemas y todo el software actualizados, especialmente en aquellos dispositivos que se utilizan para realizar compras, conectarse a banca electrónica, etc.
  • Evitar, si es posible, utilizar puntos de conexión a Internet públicos, especialmente si son abiertos, como los disponibles en aeropuertos, estaciones de autobuses o algunas cafeterías.

Más información:

Adquisición de una tarjeta Xeon PHI

El CiTIUS ha adquirido recientemente una tarjeta modelo Xeon PHI 7120P (características) para computación paralela. Se trata de un coprocesador en formato PCI Express, algo similar a lo que ofrece NVidia Tesla pero desarrollado por Intel bajo su arquitectura Intel MIC (Many integrated Core) Básicamente son 61 núcleos Xeon integrados en una tarjeta PCI Express que funciona como un ordenador complementario con su propio sistema operativo empotrado (BusyBox) y que son capaces de llegar al teraflop. Para hacerse una idea de lo que representa esto hay que tener en cuenta que el primer ordenador de Intel capaz de llegar al Teraflop se construyó en 1997, tenía 9298 procesadores y ocupaba 72 armarios en un cpd.

xeon-phi-7120p

xeon-phi-7120p

A día de hoy Intel cuenta con tres gamas de tarjetas Xeon PHI: la 3100, la 5100 y la 7100, a la que pertenece la que hemos adquirido.

3100 5100 7100
Operaciones en coma flotante 1 teraflops 1.01 teraflops 1.2 teraflops
Ancho de banda de la memoria 240 GB/sec 320 GB/sec 352 GB/sec
TDP 300 W 225 W 300 W

La gama Xeon PHi es el intento de Intel de competir en el mercado de la computación paralela con Nvidia y su CUDA. La ventaja de la Xeon Phi frente a las tarjetas de nVidia es que se basa en una arquitectura multiprocesador compatible con x86, por lo que debería ser posible reutilizar las herramientas de paralelización preexistentes.
Una búsqueda simple en Google (aquí, aquí o aquí) parece insinuar que esto aún no se ha conseguido del todo, pero también es cierto que CUDA lleva más tiempo en el mercado y por lo tanto es posible que las Xeon Phi aún no estén lo bastante maduras. En todo caso ahora en el CIITIUS será posible hacer nuestras propias pruebas ya que disponemos de ambas alternativas.

Servidor comprometido no centro

Este luns recibimos unha chamada da Área TIC da Universidade, xa que detectaran ataques de forza bruta contra sitios web WordPress de Internet dirixidos dende un dos nosos servidores.

A IP correspondía non cun servidor, senon cunha rede virtual na que hai dez servidores, que son os que proven servizos web, así que houbo que identificar a máquina pola nosa parte. Tampouco foi moito problema, xa que tiñamos sospeitas de onde podía estar o problema: no servidor virtual onde se atopan as páxinas persoais, de proxectos e de eventos.

Efectivamente, despois de apagar esa máquina os ataques cesaron por completo, polo que procedemos a illala da rede para analizar o que estaba pasando.

Seguindo as mesmas sospeitas que nos levaron a apagar a máquina, comezamos por analizar os logs de acceso de Apache, para localizar execucións de scripts que non deberan estar aí.

10.1.98.xxx - - [16/Feb/2014:22:44:22 +0100] "POST /xxx/wp-content/themes/project-ar2-master/stylegreen.php HTTP/1.0" 200 5551 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100102 Firefox/16.0"
10.1.98.xxx - - [16/Feb/2014:22:44:22 +0100] "POST /xxx/wp-content/themes/project-ar2-master/stylegreen.php HTTP/1.0" 200 5551 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100102 Firefox/16.0"
10.1.98.xxx - - [16/Feb/2014:22:44:23 +0100] "POST /xxx/wp-content/themes/project-ar2-master/stylegreen.php HTTP/1.0" 200 8422 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100102 Firefox/16.0"
10.1.98.xxx - - [16/Feb/2014:23:18:50 +0100] "GET /xxx/wp-content/themes/project-ar2-master/flotch-style.php HTTP/1.0" 200 324 "http://pinglard.com/pinglord/lordos.php?t=4" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"
10.1.98.xxx - - [16/Feb/2014:23:41:24 +0100] "GET /xxx/wp-content/uploads/function_php.php HTTP/1.0" 500 642 "http://hennexxx.com/the-henxxx/hennexxxtuff.php?t=4" "Opera/9.80 (Windows NT 6.1; WOW64; U; ru) Presto/2.10.289 Version/12.00"

Aclaramos que as xxx varias son para tapar as vergoñas. En calquera caso vemos como, tras executar peticións POST a un script pertencente a un tema de WordPress chamado Project-Ar2, fai unha chamada a un arquivo chamado /xxx/wp-content/uploads/function_php.php que, loxicamente, non debera estar aí.

Este arquivo tratábase dun botnet, moi similar ó que denuncian nesta bitácora. Só que en lugar de tratarse dun plugin falso, o script subiuse usando un exploit dun tema de WordPress.

Esquema que ilustra o funcionamento dun botnet, pertencente á Wikipedia (cc-by-sa Tom-b)

Esquema que ilustra o funcionamento dun botnet, pertencente á Wikipedia (cc-by-sa Tom-b)

Ó citado botnet non lle basta con executarse subindo un código PHP ó servidor, xa que normalmente estes scripts execútanse nun entorno no que están moi limitados en tempo de execución e en permisos. O script en si o que fai é intentar saír deste entorno. No noso caso conseguiuno, engadíndose ó crontab do usuario que executaba PHP. Unha vez executado, o primeiro que fai é borrarse do crontab para non deixar rastro.

Aínda así, executar un binario tampouco é doado, porque é habitual que as particións onde pode escribir ese usuario non teñan permisos de execución, así que o que fixo foi escribir unha biblioteca compartida que reimplementaba algunha función elemental co código malicioso, e executar calquera binario do sistema usando a técnica do LD_PRELOAD.

Determinar que fixo exactamente no sistema non é doado, pero todos os indicios apuntan a que non conseguiu gañar acceso de superusuario, e que de feito parece que nin sequera o chegou a intentar.

Tras pedir as pertinentes desculpas e rematar o análise, volvimos a poñer o servidor en marcha.

Este problema podería haberse evitado, por suposto. Bastaría con ter deshabilitado o cron nos usuarios que executan PHP, ou non permitir o uso de funcións de PHP coma system ou shell_exec, ou usar open_basedir para negar a PHP abrir ou executar arquivos fora da ruta que sirve os arquivos PHP.

Por suposto, aplicamos inmediatamente todas as recomendacións que nos fixemos a nos mesmos, que se unen ó uso do módulo suphp e outras boas prácticas máis básicas que xa viñamos empregando.

Como curiosidade, moitos de vos notastes este luns coma Google pedía un captcha ó utilizar os seus servizos dende o centro. Efectivamente, foi por culpa disto.

Sistema de recirculación do aire para o CPD

Xa falamos este inverno dos problemas que tiñamos co aire frío, xa que o sistema de aire acondicionado non quenta o aire de entrada e, cando no exterior as temperaturas baixan moito, os equipos reciben ese aire frío directamente e apáganse.

Afortunadamente, xa está instalado e operativo o sistema de recirculación do aire, que engade un sistema de comportas e unha conexión entre a entrada e a saída do aire.

fotoaire

Os tubos que van para arriba forman parte doutro sistema de reaproveitamento do calor residual, para regular a temperatura doutros sistemas de aire acondicionado do centro.

Este sistema computerizado, manexa variables como a temperatura externa, a hora do día e a temperatura interna para decidir a posición das comportas que permiten ou non o refluxo do aire de saída cara ó sistema de aire acondicionado.

chart4

Nesta gráfica podemos atopar xa unha comparativa do antes e o despois, coas temperaturas de entrada de aire no clúster de computación. A liña verde corresponde á última semana completa de novembro, mentres que a liña azul á primeira semana completa de febreiro, xa co novo sistema funcionando. As temperaturas de entrada de aire siguen variando, pero en menor medida.

Tamén é certo que xa non vai tanto frío como nesas datas. En calquera caso, a Oficina de Xestión de Infraestruturas da Universidade está traballando aínda para calibrar este sistema, que é bastante complexo.

Actualizado (4/4/2014): Despois duns axuntes, esta é a gráfica actual de temperatura de entrada de aire da última semana:Temperaturas da última semanaComo se pode observar, o sistema consegue unha temperatura de entrada moi estable, que ronda os 16-17ºC, mellorando por moito a situación presentada no post orixinal.