Guía Hardening – Software, instalación y eliminación

Esta sera otra de esas entradas cortas y sencillas, pero que sentara unas bases a la hora de actuar siempre, ya sea instalando o eliminando software.
Un punto importante del hardening es la reducción de la superficie de ataque, y ya lo vimos a la hora de instalar el sistema, no es lo mismo hacer una instalación mínima, que una típica con entorno gráfico, a más paquetes y dependencias, más posibilidades y exposición a vulnerabilidades y ataques, y más trabajo, por lo que tenemos que saber de antemano que aplicaciones nos hacen falta y cuales no.

¿Necesitamos ruby, perl, python. etc.. ?
¿Acceso por ssh?
¿Entorno gráfico?

En base a preguntas como estas y sus respuestas, procederemos a generar una lista con las aplicaciones y herramientas que nos hacen falta, esta lista con el tiempo se ampliara por lo que es importante documentar como siempre todos nuestros pasos y decisiones.
Los ordenes para esta tarea son muy sencillas y dispones de varias opciones, normalmente se utiliza apt o aptitude, este último incluye un modo semigráfico, además dispone de un algoritmo más elaborado a la hora de resolver comparaciones y problemas entre paquetes.

Instalación y eliminación.

Tanto si utilizamos apt-get o aptitude al instalar o eliminar paquetes se utiliza el sufijo “install” para instalar y “remove” para eliminar, por ejemplo:

root@debian:/# apt-get install vim

installvim

Y con esta orden eliminamos VIM y los paquetes sugeridos:

root@debian:/# apt-get remove vim

removevimSencillo, rápido y sin complicaciones… bueno, no siempre, en algunas ocasiones podemos encontrarnos con problemas después de eliminar o modificar los archivos de algunos paquetes, en esta situación y para revertir el problema podemos utilizar <- -reinstall>.

root@debian:/# apt-get – -reinstall install vim

reinstallvim

El resultado final es la instalación completa de los paquetes indicados.

Seguridad de los paquetes instalados.

Como administradores de sistemas siempre debemos comprobar la autenticidad de los paquetes instalados, y en Debian disponemos de un sello de garantía contra modificaciones, este sello funciona con una firma y una cadena de «hashes» criptográficos, por lo que podemos asegurarnos que los paquetes no fueron modificados en el origen ni por terceros.
Para administrar esta llaves se utiliza el programa apt-key el cual verifica las firmas disponibles en los archivos Release.gpg de las réplicas, utilizando el conjunto de llaves públicas GnuPG, estas llaves se actualizan automáticamente por parte de Debian con el paquete debian-archive-keyring, que es el encargado de generar el conjunto de llaves.

root@debian:/# apt-key fingerprint

fingerprint

Hay que acostumbrarse y añadir estas llaves si utilizamos por algún motivo repositorios de terceros que no están firmados por Debian, ademas es muy sencillo, y lo único que necesitamos es la llave que generalmente nos proporcionan en el repositorio “archivo.asc”.

root@debian:/# apt-key add < archivo.asc

Yo, como recomendación, no añado repositorios externos a no ser que sea estrictamente necesario, y como dice Diego “utiliza el sentido común”.

Guía Hardening – Actualización del Sistema

La falta de actualización de un sistema puede ser un grave problema de seguridad, aunque en lo personal es difícil verlo y normalmente siempre lo mantenemos actualizado, en el ámbito profesional vemos en algunas ocasiones auténticos disparates.
Esa situación puede poner en riesgo datos muy sensibles y en ocasiones hasta el sistema al completo, muchas veces lo tomamos a broma, y hemos visto más de una vez alguna foto con un cajero que utiliza windows xp o cualquier otro asunto parecido, sí, puedes estar pensando que estos asuntos quedan más bien en el ámbito empresarial, y tienes razón, pero también en otras muchas ocasiones es culpa nuestra.

En la administración de sistemas te encontraras en algunas ocasiones con estos problemas, solo tienes que preguntarle a algún compañero y seguro que te podrá contar alguna “batallita” sobre sistemas que llevan sin actualizarse años.

La mía sin ir más lejos fue hace unos meses, un cliente de una pequeña oficina me llamo para “modernizar su servidor” porque últimamente tenía problemas y todo funcionaba más lento, en este caso el cliente disponía de un servidor físico que alojaba su pagina web, las cuentas de correo de los trabajadores y datos, informes, contratos, etc.. en su disco duro, ya lo podéis imaginar, compro el servidor, contrato a alguien para su instalación y puesta en marcha,  y para no tener “más gastos” no quiso contratar un mantenimiento, situación, un servidor Debian 5.0 cuyo soporte finalizo en febrero de 2012, cuentas de correo de antiguos trabajadores aun en funcionamiento, con su respectivo acceso por web a sus carpetas personales y las de sus compañeros, y la guinda del pastel, 2 cuentas de FTP que presuntamente, crearon dos antiguos empleados y estaban utilizando el servidor para almacenar sus cosas.

Como podéis ver es habitual encontrarse en estas situaciones y todo por no tener unas políticas mínimas de seguridad, y como no, por ahorrase cuatro duros que 5 años después ha tenido que pagar, y con intereses podríamos decir };-)

Y ahora continuemos con el hardening de nuestro sistema, con esta pequeña batallita quería demostrar que la falta de actualización puede suponer un gran problema, y aunque en esta entrada solo tratare los métodos para mantener nuestro sistema actualizado y efectuar la primera instalación, también queremos insistir en el echo de que la actualización de un sistema, junto a unas mínimas comprobaciones en cuanto a políticas de seguridad, nos evitara futuros problemas.

ACTUALIZANDO

En Debian tenemos a nuestra disposición varias herramientas para esta tarea (aptitude, apt-get, apt), pero hoy nos centraremos en APT (Advanced Packaging Tool). El método a seguir es bastante sencillo, tan solo debemos ejecutar como root (superusuario) en la linea de comandos:

root@debian:/# apt update

Cuando ejecutamos este comando, automáticamente comprueba los paquetes que tenemos instalados y si es necesaria su actualización, esto se hace comprobando en el repositorio si existe alguna versión nueva o alguna actualización de seguridad.
Normalmente nos indicara el numero de paquetes que es necesario actualizar, en mi caso me indica que se pueden actualizar 20 paquetes y que si quiero verlos antes de proceder a la actualización ejecute la siguiente orden:

root@debian:/# apt list –upgradable

Ahora podemos ver el nombre del paquete, la versión, la rama de Debian en la que nos encontramos (Stable, Testing, Sid) y la versión en la que se encuentra actualmente el paquete. Esta información nos puede ser de ayuda en determinadas ocasiones, como he comentado al principio no es lo mismo actualizar un sistema personal que en un entorno empresarial, en este ultimo te puedes encontrar con limitaciones a la hora de actualizar, debido a que se utilice algún tipo de software creado ex profeso para la empresa, y antes de actualizar se debe comprobar si alguna dependencia le afecta.
Como no es nuestro caso y ademas estamos actualizando un sistema mínimo, procedemos a su actualización:

root@debian:/# apt upgrade

El sistema preguntara si queremos o no proceder a la actualización, y continuara el proceso, esta operación tardara más o menos tiempo dependiendo del numero de paquetes que se debe actualizar y nuestra conexión.
Si esta leyendo esto algún usuario avanzado seguro que echa en falta más opciones, como un safe-upgrade o full-upgrade, incluso la utilización de aptitude o apt-get, calma, todo esto se vera en el siguiente capitulo de la guía, en el cual abarcamos algunas de las opciones posibles con apt, apt-get o aptitude 😉

AUTOMATIZANDO

Actualizar el sistema lo podemos hacer de varias maneras, manualmente o automáticamente, y aquí entra una de las principales reglas de la administración de sistemas “Automatizar todo lo que se pueda”

root@debian:/# apt-get install unattended-upgrades

Una vez instalado el paquete se debe editar el archivo “20auto-upgrades“, si por alguna razón no lo encontramos se puede crear manualmente o podemos ejecutar la siguiente orden:

root@debian:/# dpkg-reconfigure -plow unattended-upgrades

Esta orden hará que se muestre la siguiente pantalla, y pedirá autorización para continuar con la descarga y actualización automática del sistema.

dpkg

 

Ahora podemos ver el archivo “20auto-upgrades” y editarlo si es necesario, pero seguramente ya se encuentre configurado para permitir la actualización automática del sistema.

root@debian:/# vim /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists “1”;
APT::Periodic::Unattended-Upgrade “1”;

Otro archivo que debemos configrar si no lo esta es “50unattended-upgrades“, el proceso similar al anterior, con nuestro editor favorito lo editamos y buscamos el siguiente texto “Unattended-Upgrade::Origins-Pattern

root@debian:/# vim /etc/apt/apt.conf.d/50unattended-upgrades

Seguidamente se debe descomentar la siguiente linea, quitando “//”.

o=Debian,n=Jessie,l=Debian-Security

Echo todo esto ya te puedes despreocupar un poco, pero solo un poco, de las actualizaciones del sistema. Y digo poco por que aunque este proceso este automatizado, todavía queda mucho por hacer y monitorizar.

Guía Hardening – Seguridad en la BIOS y BootLoader

Hoy trataremos un tema que en muchas ocasiones por desconocimiento, dejadez, pura vaguearía, o bien por creernos que con cifrar nuestro sistema, y poner un par de contraseñas nuestro sistema es seguro, se deja de lado, pero siento deciros que es más importante de lo que se cree en algunos casos.

La seguridad física es muy importante y en algunos escenarios obligatoria, evidentemente la casuística es enorme, muchos de nosotros tenemos portátiles con los cuales vamos a todas partes, y se puede dar el caso de perder el equipo, que nos lo roben, en el caso de equipamiento tipo servidores, workstations de sobremesa, etc. somos susceptibles de que alguien con unos pocos conocimientos técnicos, o haberse documentado un poco, puedan tener acceso a los datos que con tanto mimo guardamos en dichos equipos.

En otras ocasiones, nos podemos encontrar con que el servidor que gestionamos, se encuentra al alcance de cualquier usuario que tenga acceso a unas oficinas, o incluso un housing en un CPD, aunque en este último los niveles de seguridad tanto física como de acceso es mayor, debido al servicio que nos ofrecen y los protocolos para acceder, incluso en caso de incidencia.

Por otra parte la mayoría de guías y debido al alza de servidores privados virtuales (VPS) este asunto ni se trata, es totalmente innecesario, pero en nuestro caso si queremos hablar de ello, como mínimo dar unas pinceladas, más que nada, porque esta guía pretende ser lo más abierta posible y para casi todos los públicos.

Un último apunte: SIEMPRE SE DOCUMENTA TODO LO QUE HAGAMOS.

 BIOS

Creo que todos estamos hartos de ver esa pantalla con el logo de la compañía de turno, informado del método de acceso a la BIOS, y en muchos casos, la mayoría de usuarios ni han entrado ni conocen que es la BIOS.
La BIOS ( Basic Input Output System) es una interfaz de firmware que se ejecuta nada más arrancar nuestra maquina, en ella podemos configurar varios aspectos, fecha, hora, discos secundarios, unidades DVD, etc..
El número de opciones que tenemos dependerá del año, fabricante, modelo e incluso la versión de la BIOS que tengamos, pero algunas de estas opciones son en casi todos los casos iguales.

Por otra parte, aclararte que en este capítulo será casi imposible decirte a donde tienes que ir exactamente, por lo que a continuación recomiendo que antes de hacer nada obtengas un manual de vuestra maquina, normalmente en la página web del fabricante lo puedes encontrar, y a las muy malas por ser una maquina un poco antigua, puedes utilizar algún buscador.

¿Qué es lo que debo hacer?

Pues es muy sencillo, primero prevenir cualquier cambio en la configuración BIOS, y segundo, prevenir el arranque del sistema.

Lo primero que debemos realizar es comprobar si nuestra versión de BIOS, es ta actualizada, si hay nuevas versiones, se debería hacer un pensamiento en ACTUALIZAR (OJO – no nos hacemos responsables de lo que pase después), a continuación podemos poner una contraseña en el arranque, con esto evitamos dos cosas, la primera el acceso a nuestra maquina y su arranque sin dicha contraseña, y por otra evitar el acceso a la BIOS.

Algo que tenemos que TENER SIEMPRE EN MENTE, y es que hay varios métodos para saltarse estas protecciones, de la existencia de contraseña maestras, y aplicaciones para recuperarla/resetearla, incluso realizando algunos acciones sobre el hardware, véase, quitar la pila X horas, en algunos modelos de placas base con switches, o jumpers, etc. que por una parte está muy bien ante un error al teclear la contraseña, pero por otra supone una brecha en nuestra seguridad, de todas maneras, con esta acción conseguimos poner las cosas un poco más difícil a un atacante.

Tras evitar el acceso a nuestra bios, y así, la posibilidad de cambiar los valores de arranque, debemos evitar que se pueda acceder al sistema con un USB o un CD por ejemplo, por lo que el siguiente paso será limitar las opciones de arranque del sistema, para ello eliminamos todas las opciones y dejamos solo una, arranque desde disco duro.

A partir de aquí las opciones pueden variar mucho, actualmente en el mercado podemos encontrar muchos sistemas de seguridad, que van desde lectores de huellas digitales, a llaves usb para poder arrancar, por eso insistimos en conseguir vuestro manual, y buscar si dispones de más opciones de seguridad, las cuales ya quedan en vuestra mano el aplicarlas o no.

BOOTLOADER

Otra de las opciones que disponemos, es la de proteger el arranque de cualquier sistema instalado en nuestra maquina desde el GRUB, para ellos solo necesitamos seguir unos sencillos pasos que debemos hacer con el usuario ROOT.

Primero debemos generar una contraseña cifrada, con el comando grub-mkpasswd-pbkdf2, este generara un hash de la contraseña que introduciremos seguidamente, y una vez generada, debemos copiar el código resultante que posteriormente utilizaremos.

root@debian~# grub-mkpasswd-pbkdf2

Reintroduzca la contraseña: 

El hash PBKDF2 de su contraseña es grub.pbkdf2.sha512.10000.9E146F5CD6A42071BD5CC805A50E5E2C1F8FD89A107009EB625F87077 EDE5CE1986033ABDEDA9B66467AC65FF633914519A455D706059A270ACA3751F8A655A2.48717C
94C54DDE7FE2C7AD1A8EF2C540D51E3F94DD405952B2C3204AA5FD5114822CF4DE8B9318FDCB

A continuación tenemos que editar con nano, vi, vim, o el editor que más nos guste, el archivo 40_custom, y añadir el usuario (en nuestro caso aprendiz) de la siguiente manera.

root@debian~# vi /etc/grub.d/40_custom

# definir superusuario

set superusers=”aprendiz”

#definir usuarios #definir usuarios

password_pbkdf2 aprendiz (El hash PBKDF2 de su contraseña)

Una vez hecho esto, solo queda actualizar el grub.

root@debian~# update-grub

Alguno estará pensando ahora mismo que “cuanta contraseña ” y que esto es un poco paranoico, bueno, aquí cada uno debe ser consciente de que tipos de datos debe proteger, y si es necesario todo esto o incluso más.

Resumiendo por puntos:

  • BIOS
    • Contraseña de configuración y acceso OK
    • Eliminar opcionoes de arranque OK
  • BOOTLOADER
    • Contraseña cifrada OK

Para terminar, solo recordaros que para cualquier duda tenéis a vuestra disposición los comentarios, y el formulario de contacto ¡¡hasta la próxima!!

Guía Hardening Instalación del Sistema

Aclaración

Antes de empezar a seguir o leer esta guía queremos dejar claro algunos conceptos y asuntos sobre ella.

Como su propio nombre indica es una GUÍA y en ella os guiaremos durante el proceso de hardening en vuestro sistema, pero en ocasiones ni pararemos a explicar detalladamente algunos contenidos, y esto es debido a que o bien ya se ha escrito sobre ello muy bien por parte de otras personas y compañeros, o el contenido sería tan amplio que sería casi interminable esta guía.

A lo largo de ella daremos alguna pequeña introducción sobre ciertos temas, que si ya conoces poco mas abra que contarte, pero además añadiremos enlaces a otros sitios o contenido propio si ya hemos escrito sobre ello en aprendiz de sysadmin.

Como ya indicamos en la introducción/presentación que hicimos, esta guía irá “sobre la marcha” y seguramente que entre capítulo y capítulo entremos en detalle en alguno de los conceptos o términos escritos para el que quiera pueda ampliar la guía o sencillamente leer sobre un asunto en concreto sin tener que buscar por toda la guía.

También quiero explicar porque decidí utilizar debian y la verdad es que lo discutimos antes de empezar la guía y por el tipo de instalación su estabilidad y posibles usos posteriores, tanto como servidor o equipo de escritorio, nos pareció la distribución más apropiada.

Sin más empecemos con nuestra guía y bienvenidos.

Introducción

Al iniciar un proceso de Hardening en nuestro sistema debemos tener en cuenta que se empieza desde el minuto -1, antes de empezar debemos saber que tipo de servidor vamos a utilizar, y si estará en una red con diferentes servidores, estarán virtualizados o utilizaremos el típico todo en uno, y todo esto aumentara o disminuirá los vectores de ataque, por lo que debemos planear y documentar todo lo que hagamos.

Otro punto importante es que ni vale cualquier tipo de imagen ISO, porque nuestro objetivo es reducir la superficie de ataque, y descargar un sistema operativo con servidor gráfico y posibles aplicaciones y herramientas innecesarias, ni será de ayuda precisamente, ni reducirá la superficie de ataque, por lo tanto necesitamos una imagen mínima o hacer una instalación por red.

De momento y sólo con esta decisión, ya hemos reducido el número de vulnerabilidades a la que estaremos expuestos, un buen comienzo.

Descarga

getdebian

En esta guía se utilizara la última versión estable de Debian: Debian 8.4 Jessie

Para obtener una imagen de Debian debemos ir a la siguiente url https://www.debian.org/distrib/netinst aquí podemos descargar dicha imagen que ocupara unos 280 megas (imagen pequeña para CD o memoria USB), como ves la diferencia en cuanto a tamaño con una imagen normal es importante.

En esta página además de la imagen iso también podemos hacernos con un manual de instalación para nuestra arquitectura, este manual nos puede ser de mucha ayuda si tenemos algún problema y en él se detallan muchos puntos sobre diferentes métodos de instalación, requisitos o el hardware soportado.

Instalación

installdebian

En nuestro caso la instalación en un principio es la misma que puedes realizar habitualmente, seleccionar idioma, teclado, nombre de la maquina, etc… pero en esta ocasión nos detendremos en 2 puntos importantes, el password superusuario y el nombre usuario y password.

Si queremos hacer bien un hardening éste es uno de los primeros pasos y más importantes, ya que no podemos confiar en un hardening en el que las contraseñas más importantes sean de bajo nivel, de esto hay mucho escrito en la red y nosotros ahora mismo no creemos que sea necesario repetir el mismo contenido, por lo que a continuación, y si no sabes como hacerlo, te recomendamos la siguiente lectura:

Aprende a gestionar tus contraseñas de la Oficina de Seguridad del Internauta (OSI).

Una vez definido el password para el superusuario y para el usuario normal, y si tenéis curiosidad por saber que tiempo se tardaría en romper por fuerza bruta dichas contraseñas, visitad la siguiente web, puede que después recapacitéis sobre la misma.
Por cierto, no olvides documentar la contraseña del superusuario y ponerla a buen recaudo.

Particionado y Cifrado

En debian podemos hacer el cifrado durante el proceso de instalación, mediante el uso de LVM y su cifrado, y aunque aquí no entraremos en detalle sobre LVM y las opciones de cifrado, si os dejare algún dato y enlace de interés.

LVM es un gestor de volúmenes lógicos con varias características importantes, como es poder redimensionar tanto los grupos como los volúmenes lógicos o moverlos entre otras muchas opciones, en el enlace que dejo a continuación tienes una descripción más detallada sobre LVM, y seguramente más adelante en otras entradas, trataremos como gestionar LVM en profundidad.

https://es.wikipedia.org/wiki/Logical_Volume_Manager

A la hora de realizar el particionado se nos ofrecerán varias opciones, tres son guiadas y una manual, dependiendo del uso que le vayamos a dar a la maquina podremos optar por una de las guiadas.

particionado

El siguiente paso será crear el LVM cifrado, si es la primera vez que lo haces recomiendo utilizar el modo guiado, de esta manera será mas fácil y además puedes ver como queda configurado para en otras ocasiones hacerlo manualmente, por la tanto toma nota para otra vez.

partilvm

El proceso es fácil, seleccionamos guiado – utilizar todo el disco y configurar LVM cifrado, para continuar y elegir el modo de particionar,  aquí también tendrás varias opciones nosotros elegimos la ultima, separar la partición /home, /var y /tmp pero dependiendo de tu nivel puedes elegir utilizar todo el disco, o solo el /home, ahora queda continuar y guardar el esquema de particionado , para después crear otra contraseña fuerte para el cifrado.

finallvm

El resultado como puedes ver en la imagen nos ha creado un particionado y cifrado de todo menos del /boot, y éste es un punto importante, si se hubiera cifrado el boot no arrancaría el sistema y por eso si nunca antes hiciste algo parecido, siempre es bueno hacerlo en modo guiado y ahorrarnos problema y disgustos.

Por otra parte comentar que al elegir este tipo de instalación guiada no podemos cambiar las opciones de cifrado, por lo cual el cifrado toma la opción por defecto que es un cifrado AES de 256bits, ahora queda continuar la instalación como haríamos habitualmente y reiniciar nuestra maquina.

Conclusiones

primerlogin

Aunque este tipo de instalación es muy sencillo, como puedes comprobar no podemos hacer mucho más en cuanto a opciones, pero para comenzar y empezar un hardening básico nos servirá, más adelante detallaremos en otras entradas más tipos de configuración avanzada, para que puedas subir el nivel de hardening hasta donde te atrevas o lleguen tus conocimientos.

En esta primera parte ya hemos tratado varios puntos importantes, como son documentar todo hagas para su posterior revisión, y tener controlado datos importantes,  para en un futuro poder utilizarlos entre otras muchas cuestiones, y por otra parte la importancia de las contraseñas, en esta instalación hemos utilizado tres y no tienen nada que ver una con la otra, una para el superusuario, otra para el usuario normal y una última para el cifrado, recordad e insistimos hasta la saciedad, ni pongas las mismas contraseñas en todos los sitios, y tenerlas a buen recaudo y protegidas, con este sencillo paso pero a la vez tan importante ya estamos poniendo el asunto más difíciles ante un intento de intrusión, un robo, o pérdida de un equipo que puede pasar hasta en los sitios que menos te imagines 😉

Resumiendo por puntos:

  • Instalación mínima OK
  • Contraseñas complejas y diferentes OK
  • Particionado y cifrado OK
  • Documentar todo OK