Un comando que puede ahorrar millones

comandoEn lo que va del año hemos sido testigos de numerosos ataques a grandes corporaciones, generando, en algunos casos, perdidas millonarias tanto en fuga de información como en daños a la imagen corporativa. Pareciera estar convirtiéndose en una tendencia por parte de ciertos grupos el dirigir sus ataques a este tipo de entidades, donde incluso algunas de ellas pertenecen a la industria de la seguridad informática.

Pero la pregunta es…¿cómo logran esto? ¿Será que disponen de un intelecto superior, permitiendoles ver algo que otros no pueden? ¿Utilizarán hardware/software personalizado de última generación? La respuesta, por más que les sorprenda, en la mayoría de los casos es NO.

No quiero caer en el cliché de decir que el error es humano y cerrar así este post, sino que busco generar la suficiente conciencia en los administradores de estos sistemas e indicarles una manera muy sencilla de prevenir la gran mayoría de estos ataques. La realidad es que por lo general, la mayoría de estas intrusiones son posibles debido a que los servicios públicos de una entidad no son actualizados con la suficiente periodicidad.

¿A qué me refiero con servicios?

Con esto quiero decir todos aquellos servidores que se encuentren de una u otra forma publicados en Internet y que posean puertos abiertos por los cuales los usuarios reciben ciertas prestaciones (HTTP, SSH, FTP, SMTP, etc).

Ya se trate de un servidor web o un servidor de correos, los servicios brindados no son más que paquetes instalados en el mismo los cuales fueron creados en una determinada fecha. Cómo todo programa, es actualizado por el desarrollador no solo para ofrecer nuevas funcionalidades sino también para solventar alguna/s falla no contemplada recientemente descubierta. Pero esta actualización no se realiza de forma automática, debe ser realizada a mano y programada para no perjudicar la disponibilidad del servicio.

¿Cómo se actualiza un servicio?

El comando a utilizar varia dependiendo del sistema operativo que se utilice. En este caso yo voy a hacer referencia a los comandos utilizados en distribuciones de Linux como Debian, Red Hat Enterprise, Fedora, CentOS y SuSe.

Ingresando a una terminal o shell del equipo se deberá lanzar algunos de los siguientes comandos según corresponda:

  • Debian – Primero actualiza el repositorio y luego actualiza servicios específicos, en este caso Apache y OpenSSH: # apt-get update ; apt-get install ssh apache2
  • Debian – Primero actualiza el repositorio y luego actualiza todo el software del cual se disponga una actualización: #apt-get update ; apt-get upgrade
  • Fedora , CentOS- Actualiza el repositorio y luego actualiza servicios específicos, en este caso Apache y OpenSSH: # yum update ssh apache2
  • SuSe – Primero actualiza el repositorio y luego actualiza todo el software del cual se disponga una actualización: # online_update
  • Red Hat Enterprise – Primero actualiza el repositorio y luego actualiza servicios específicos, en este caso Apache y OpenSSH:# up2date -i ssh apache2

Obviamente existen muchos comandos más para realizar estas tareas, pero tratar de contamplarlos todos sería algo dificultoso.

Se recomienda que haya un plan de contingencia antes de realizar esta tarea y que no se realice directamente sobre un servidor en producción para evitar conflictos e interrupciones en el servicio.

Es cierto que no existe un sistema 100% seguro, pero eso no significa que se deban bajar los brazos y darse por vencidos de inmediato, sino que se debe buscar entre el sinfín de recursos que existen para informarse en materia de seguridad informática. De esta forma se podrá generar conciencia propia y de terceros para luego aplicar soluciones efectivas y políticas eficientes.

Joaquín Rodríguez Varela
Malware Lab Engineer

Autor , ESET

  • Excelente!

  • Tendrás alguna biografía que hable sobre cómo hacer provecho de las vulnerabilidades de dichos servicios sobre GNU/Linux?

  • Perdon, claro es bibliografia, pero peus me refiero a alguna fuente XD

    • Adario,

      Entiendo tu curiosidad sobre el tema, pero te imaginarás que no puedo facilitarte dicha información ya que sino estaríamos haciendo apología a la explotación de vulnerabilidades. Si tu interés se enfoca en la auditoria de sistemas propios, puedes buscar online varias herramientas y metodologías que te pueden servir.

      Saludos,

      Joaquín

  • Debian aparece 2 veces, en el primer comando se está instalando SSH y Apache2 pero dice la descripción que actualiza los servicios. Quizás uno de los dos hace referencia a Ubuntu Server, en ese caso falta mencionar que se necesita sudo antes del comando.

    En el resto de los comandos no se aclara que “#” es porque se está usando privilegios de root (o root mismo).

    Además estás usando un pipeline ( | ) donde debería haber un && para encadenar los comandos. Así para el caso de Debian y derivados, sería:

    apt-get update && apt-get upgrade

    Siempre suponiendo que en /etc/apt/sources.list se tiene el repositorio de actualizaciones de seguridad.

    Igualmente el proceso de hardenizado (más que un comando :p) debe hacerse antes de ponerse en producción, si el servidor ya fue comprometido anteriormente, poco puede hacerse por la seguridad del sistema sin “empezar de nuevo” (teniendo en mente políticas de seguridad).

    Por último, no quiero ser pesado :), más que servicios son demonios (Daemons) para sistemas operativos que sean Unix Like.

    Saludos!.

    • Hpmaxi,

      Te agradezco mucho tu comentario. Paso a responderte todas tus consultas:

      – Los comandos de Debian aparecen dos veces adrede. En uno se especifica como actualizar uno o mas servicios en particular y en el otro como actualizar todos aquellos paquetes que dispongan de una versión superior.
      – El símbolo “#” deja implícito que los comandos se están ejecutando con privilegios de root. Más allá de que no se realiza la aclaración de esto, se asume que los administradores de sistema son conscientes de este requerimiento.
      – Te agradezco que me marcaras lo del pipeline, ya lo cambie por “;”. No es recomendable utilizar “&&” ya que si el primer comando termina con error “exit(-1)” el segundo comando no se ejecutará. Si se utiliza “;” el segundo comando se ejecuta sin importar el resultado del primero.
      – El repositorio de actualizaciones de seguridad viene especificado por defecto, y debería de estar presente en el archivo sources.list siempre y cuando no se haya editado el mismo y removido/comentado dicha linea.
      – Esto no es completamente válido, ya que aquí se habla de actualizar un servidor ya en producción el cual, en su momento, poseía todo su software actualizado. Tampoco mencionamos que se trataba de un servidor ya comprometido.
      – Se llama daemon (o demonio) a un proceso en segundo plano que a menudo se inicia al cargar el sistema operativo. Un servicio es una pieza de software que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones.

      Saludos,

      Joaquín

  • Pingback: Un comando que puede ahorrar millones()

  • Pingback: Un comando que puede ahorrar millones | ForoProvincias.Com()

Síguenos