17 – fortalecer el servidor 2/2

Bienvenidos al episodio 17 de deployandome, el podcast de tecnología para sysadmins y devops. Soy Rodolfo Pilas y estoy grabando el 11 de julio de 2017.

Diariamente suelo escuchar otros podcast, supongo que Ustedes oyentes de deployandome también lo hacen, por eso quiero sugerirles dos podcast:

Uno de ellos es sobre tecnología y se llama uGeek conducido por Angel, quién desde Barcelona reseña en cada episodio distinto software para GNU/Linux y ya está en su episodio 69. Con Angel hemos tenido un enriquecedor intercambio en estas semanas y su podcast me ha gustado mucho.

El segundo podcast que recomiendo es La Tortilla Podcast, de los uruguayos Sebastián y Diego que han llegado al episodio 100;  aprovecho para saludarlos y felicitarlos. Ellos semana a semana abordan distintos temas de la historia de los seres humanos de una forma dramática y divertida. Se pasa un buen momento escuchándolos y he aprendido muchísimo.

En el episodio anterior les comentaba que nosotros, como administradores de los servidores que están bajo nuestra cuidado, somos también responsables directos por su seguridad y los datos que en él van a ser procesados o almacenados.

En este sentido comenzamos a ver una serie de políticas básicas que suelo aplicar para aumentar la fortaleza de mis servidores.

Habíamos hablado de instalar lo mínimo posible, de minimizar los servicios que son prestados por cada servidor, de separar las particiones para tener distintas políticas de montado, de desactivar el acceso root remoto y tener políticas de escalabilidad de privilegios con registro de quién hace que y, fundamentalmente, utilizar la seguridad nativa que los sistemas GNU/Linux tienen, tratar de no saltearnos esa seguridad y usarla lo más posible en nuestro favor.

En esta edición vamos a ver cinco políticas más que completan un a capa básica de fortalecimiento y que están, en casi todos los casos bajo nuestro control en nuestro rol de administradores.

6. KERNEL LINUX

Tunear o tocar o configurar el kernel para que fortalezca más nuestro servidor. Tenemos un archivo sysctl.conf que está en el /etc que nos permite levantar o bajar los flags que hacen que el kernel cambie su comportamiento.

Algunas de las cosas que podemos hacer es, por ejemplo, registrar los paquetes que llegan con dirección de origen indebida (marcianos); apagar la respuesta de ping; deshabitar el procesamiento de “source routing” y habilitar la protección de “spoofing” para asegurarnos los orígenes de los paquetes.

7. CIFRAR LAS COMUNICACIONES

Ya en el episodio 1 de Deployándome habíamos hablado de Let’s Encrypt para tener certificados digitales para SSL.

Evitar cualquier comunicación que no sea cifrada y tratar de hacer las conexiones mediante túneles y VPN. En el capítulo 4 vimos la utilidad Sshuttle que nos permite hacer conexiones simulando una VPN con solamente el servicio SSH.

8. FIREWALL

No estoy aquí hablando de un firewall de filtros de abrir y cerrar puertos. Ya vimos en el punto 2 de solo tener los servicios y puertos necesarios.

Estamos hablando de utilizar el firewall para limitar la cantidad de conexiones, de revisar los flags TCP y descartar los paquetes que no estén correctos, limitar el tráfico, por ejemplo, por MAC Address, limitar cuáles son los usuarios que pueden iniciar conexión hacia Internet, que no todos los usuarios puedan salir de nuestro servidor.

En el firewall, si nos ponemos un poco más creativos, podemos abrir puertos que son estándar en otros sistemas operativos. Esto va a hacer que posibles automatismos que estén revisando puertos se llamen a confusión, identificándonos como un sistema operativo que no somos.

Inclusive podemos habilitar reglas de port-knocking para los accesos por SSH.

Todo esto mediante la configuración de nuestro firewall.

9. HERRAMIENTAS DE MONITOREO

Generalmente se suele pensar en un IDS, pero suelen ser difíciles de instalar y son costosos a nivel de procesamiento.

Pero algunas herramientas simples como fail2ban o sshguard que van a estar revisando nuestros logs para levantar reglas para bloquear los accesos indebidos

O logwatch o logcheck que también revisan los logs para avisarnos de cualquier acceso indebido a nivel de disco, de red o de servicios.

10. HERRAMIENTAS DE CONFIGURACION

Estas políticas que he reseñado tenerlas modeladas en alguna herramienta de configuración como Puppet, Ansible o Chef, para asegurarnos que todos los servidores están cumpliendo las políticas, que se pueden adaptar a nuevas realidades y que no dependemos de nuestro tiempo o memoria para aplicar estas políticas.

También cada aplicación o servicio tendrá sus recomendaciones de fortalecimiento, así como hay recomendaciones de performance. He tratado de evitar entrar en estos detalles, pero son fáciles de encontrar el la documentación del servicio que están instalando.

Para este podcast he hecho una revisión de los libros:

Estas no dejan de ser sugerencias, tal vez varios de Ustedes las consideren livianas, qué muchas cosas más pueden ser hechas en este sentido. Yo coincido con esa ideas, pero me parece que tener un grupo base sólido de políticas de fortalecimiento es necesario, para luego aplicar las otras, las que realmente blindaran nuestros servicios, aplicaciones y datos.

Soy Rodolfo Pilas, en twitter me siguen por @pilasguru y les dejo un saludo a todos, confiando en que este podcast les haya aportado para mejorar y, como siempre, espero sus inquietudes y sugerencias comentando en deployando.me

Hasta la próxima edición.