Seguridad y administración TIC
Hardening, blindaje o como asegurar nuestro servidor.
Los datos privados de los clientes, las bases de datos de los clientes, así como la credibilidad empresarial son cosas que las organizaciones deben valorar, aunque no siempre toman las precauciones necesarias para salvaguardarlos.
Vamos a ver los pasos a seguir para implementar un servidor en modo seguro. Para ello me voy a inspirar en las guías de buenas prácticas que existen .
Siempre me gusta tener en cuenta el ENS o esquema nacional de seguridad. Este marco normativo no es puramente técnico es sobre todo normativo y obligatorio para organismos oficiales en España y las empresas que colaboran con ellas.
En el caso que nos ocupa está complementado por el centro criptológico nacional que mantiene y promueve una serie de guías, recomendaciones que se detallan en el siguiente enlace:
Algunos normas de buenas prácticas son: el marco de seguridad cibernética NIST, los controles CIS, PCI-DSS, SOC2 e ISO27000.
Todas están disponibles para guiar la implementación del plan de seguridad informática de una organización.
Analizar el sistema.
La técnica de asegurar un sistema, en la práctica es minimizar la superficie de ataque de un equipo informático. El objetivo es reducir la cantidad de debilidades y vulnerabilidades de seguridad que los “malos” pueden explotar.
Hay que entender que cada servicio o software que instalemos en un servidor requiere su propio checklist de instalación y segurización.
Es necesario conocer y tener un checklist abreviado que en este caso se circunscribe al sistema operativo y el hardware. Para elaborarlo puedes buscar ideas en:
Guías del centro criptológico nacional de España
National Cyber Security Centre
Organismo de ciberseguridad en Reino Unido
Checklist hardening linux
Voy a definir los puntos a considerar en un sistema en general, primero me voy a centrar en sistema linux. Checklist de ciberseguridad, para tirar del hilo , en Linux:
- Asegurar el acceso al arranque en BIOS/UEFI.
- Securizar el acceso al arranque, en el caso de Linux es GRUB.
- Deshabilitar los dispositivos de almacenamiento u otros no utilizados (por ejemplo, puerto firewire, usb o cualquier puerto…)
- Activar Kernel Lockdown, desde ubuntu 20 mejora la seguridad en el arranque.
- Encriptar la partición del sistema y/o sistemas de ficheros. Se puede recomendar LUKS/dm-crypt.
- Es recomendable montar la partición /tmp con nosuid y noexec que bloquea la configuración de SUID/SGID y la posibilidad de ejecutar algún script malicioso. Además crea la entrada correspondiente en /etc/fstab para montarlo en el booteo.
- Generar un particionado de disco adecuado al proyecto y en formato adecuado. Organizando carpetas del sistema, etc…
- Crear usuario y grupo con privilegios distinto al standard.
- Comprobar y adecuar los permisos de todo. Configurar el UMASK para dar completo acceso al dueño del archivo, Lectura al grupo y restringe el acceso a otros. Esto provee un control mas estricto.
- Establecer políticas de acceso por tiempo, intentos , calidad de contraseñas , caducidad, que se cierre la consola si se queda en reposo…
- Crear un usuario que es el único que podrá hacer login remoto. Si no tiene privilegios, al quitar los accesos al usuario, en caso de ser comprometido no es mucho lo que podrían hacer, tendrían que buscar la forma de elevarse privilegios o comprometer la cuenta de root, lo que les haría mas difícil afectar el servidor.
- Restringir el acceso de root solo a una terminal local. Para las tareas administrativas deben hacer un acceso remoto al servidor con el usuario que creado a tal efecto y una vez dentro se cambian al usuario root.
- Bloquea por completo la autenticación por contraseñas convencionales en los accesos remotos. La autenticación debe hacerse únicamente con estas llaves.
- Establecer algoritmos de cifrados seguros y valorar el acceso de doble factor o 2FA.
- Establecer políticas en el uso de SU y SUDO
- Establecer permisos más restrictivos a archivos críticos tipo host.conf…
- Bloquear enviar procesos en segundo plano.
- Configurar el acceso por SSH
- Instalación mínima des servicios , solo los necesarios.
- Configurar los logs del sistema.
- Desinstalar compiladores.
- Evitar la instalación de software de terceros , no necesario y no verificado.
- Mantener el sistema actualizado, para no tener versiones inseguras.
- Habilitar un sistema de VPN
- Obligar el uso de single user o modo a prueba de fallos.
- Configurar la red en modo seguro.
- Instalar y configurar un cortafuegos. Tener una configuración de iptables correcta. Contemplar soluciones más completas o complementarias a iptables como shorewall , fail2ban.
- Deshabilitar el uso de compiladores del sistema.
Siempre monitorizar y auditar el sistema. Para mejora continua.
Propiedades básicas del sistema a vigilar.
- Puertos abiertos
- Ficheros cambiados
- Tráfico entrante
- Tráfico generado
- Procesos del sistema.