A petición de un lector y amigo que comentaba sobre el “Hardening” les dejo una breve explicación y material tomado de la misma red.
Hardening a groso modo y en resumen es una serie de pasos para lograr la seguridad y estabilidad de un Servidor, hablando de estabilidad entra la parte de que el servidor no se vuelva vulnerable y se utilicen diferentes métodos para que el Sistema operativo de ese servidor este completamente seguro o por lo menos dificulte a los atacantes la entrada al mismo.
Ahora si los dejo con un poquito más de lectura.
Hardening (palabra en ingles que significa endurecimiento) en seguridad informática es el proceso de asegurar un sistema mediante la reducción de vulnerabilidades en el mismo, esto se logra eliminando software, servicios, usuarios, etc. Innecesarios en el sistema así como cerrando puertos que tampoco estén en uso además de muchas otros métodos y técnicas que veremos durante este pequeño resumen introductorio al Hardening de sistemas.
Haciéndole la vida difícil al atacante. Ese es el resumen de la razón de ser del Hardening de sistemas operativos, que se podría decir que es un conjunto de actividades que son llevadas a cabo por el administrador de un sistema operativo para reforzar al máximo posible la seguridad de su equipo. Su propósito, entorpecer la labor del atacante y ganar tiempo para poder minimizar las consecuencias de un inminente incidente de seguridad e incluso, en algunos casos, evitar que éste se concrete en su totalidad.
Una de las primeras cosas que hay que dejar en claro del Hardening de sistemas operativos es que no necesariamente logrará forjar equipos “invulnerables”. Es importante recordar que, según el modelo de defensa en profundidad, el host es sólo una capa de éste. En otras palabras, un factor más a considerar dentro del gran número de puntos a ser tomados en cuenta para defender “globalmente” un sistema.
Entre las actividades propias de un proceso de hardening se pueden contar las siguientes:
· Configuraciones necesarias para protegerse de posibles ataques físicos o de hardware de la máquina. Entre otras actividades, destacan el upgrade de firmware, el establecimiento de contraseñas complejas para el arranque del equipo y la configuración de la BIOS, la deshabilitación de inicio de sistema para cualquier unidad que no sea el disco duro principal, y en casos de servidores, la deshabilitación de dispositivos ópticos, usb o similares, para evitar cualquier entrada de malware desde un medio de almacenamiento externo.
· Instalación segura del sistema operativo. Esto implica, entre otras cosas, el considerar al menos dos particiones primarias (1 para el sistema operativo en sí y otra para carpetas y archivos de importancia), el uso de un sistema de archivos que tenga prestaciones de seguridad, y el concepto de instalación mínima, es decir, evitando la instalación de cualquier componente de sistema que no sea necesario para el funcionamiento del sistema.
· Activación y/o configuración adecuada de servicios de actualizaciones automáticas, para asegurar que el equipo tendrá todos los parches de seguridad que entrega el proveedor al día. En caso de que se encuentre dentro de una corporación, es adecuado instalar un servidor de actualizaciones, que deberá probar en un entorno de laboratorio el impacto de la instalación de actualizaciones antes de instalarlas en producción.
· Instalación, configuración y mantención de programas de seguridad tales como Antivirus, Antispyware, y un filtro Antispam según las necesidades del sistema.
· Configuración de la política local del sistema, considerando varios puntos relevantes:
o Política de contraseñas robusta, con claves caducables, almacenamiento histórico de contraseñas (para no usar contraseñas cíclicas), bloqueos de cuentas por intentos erróneos y requisitos de complejidad de contraseñas.
o Renombramiento y posterior deshabilitación de cuentas estándar del sistema, como administrador e invitado.
o Asignación correcta de derechos de usuario, de tal manera de reducir las posibilidades de elevación de privilegios, y tratando siempre de limitar al mínimo los privilegios y/o derechos de los usuarios activos.
o Configuración de opciones de seguridad generales, como aquellas relacionadas con rutas de acceso compartido, apagado de sistema, inicio y cierre de sesión y opciones de seguridad de red.
o Restricciones de software, basado en lo posible en el uso de listas blancas de software permitido más que en listas negras del mismo.
o Activación de auditorías de sistema, claves para tener un registro de algunos intentos de ataque característicos como la adivinación de contraseñas.
· Configuración de servicios de sistema. En este punto es necesario tratar siempre de deshabilitar todos aquellos servicios que no vayan a prestar una funcionalidad necesaria para el funcionamiento del sistema. Por ejemplo, si su equipo no posee tarjetas de red inalámbrica, el servicio de redes inalámbricas debería estar deshabilitado.
· Configuración de los protocolos de Red. En la medida de lo posible, es recomendable usar sistemas de traducción de direcciones (NAT) para direccionar los equipos internos de una organización. Deshabilitar todos aquellos protocolos de red innecesarios en el sistema y limitar el uso de los mismos al mínimo. TCP/IP es un protocolo que no nació pensando en seguridad, por lo que limitar su uso al estrictamente necesario es imperativo.
· Configuración adecuada de permisos de seguridad en archivos y carpetas del sistema. En la medida de lo posible, denegar explícitamente cualquier permiso de archivo a las cuentas de acceso anónimos o que no tengan contraseña. Un correcto set de permisos a nivel de carpetas y archivos es clave para evitar acceso no deseado al contenido de los mismos.
· Configuración de opciones de seguridad de los distintos programas, como clientes de correo electrónico, navegadores de internet y en general de cualquier tipo de programa que tenga interacción con la red.
· Configuración de acceso remoto. En caso de no ser estrictamente necesario, es bueno deshabilitar el acceso remoto. Sin embargo, cuando es necesario tener control remoto de la máquina, es preciso configurarlo de manera adecuada, restringiendo el acceso a un número muy limitado de usuario, restringiendo al mínimo las conexiones concurrentes, tomando cuidado en la desconexión y cierre de sesión y estableciendo un canal cifrado de comunicaciones para tales propósitos, como SSH.
· Configuración adecuada de cuentas de usuario, tratando de trabajar la mayor parte del tiempo con cuentas de acceso limitado y deshabilitando las cuentas de administrador. Es absolutamente recomendable usar la impersonificación de usuarios para realizar labores administrativas en vez de iniciar sesión como administradores.
· Cifrado de archivos o unidades según las necesidades del sistema, considerando un almacenamiento externo para las llaves de descifrado. Considerar además la opción de trabajar con sistemas de cifrado de mensajería instantánea y correo electrónico.
· Realizar y programar un sistema de respaldos frecuente a los archivos y al estado de sistema. En la medida de lo posible, administrar los respaldos vía red o llevar los respaldos a unidades físicas que estén alejadas del equipo que las origina.
Como se puede ver, el espectro de actividades que deben ser llevadas a cabo dentro de este proceso es bien amplio y tiene actividades de todo tipo. Sin embargo, la consigna para todas estas actividades es siempre la misma: Dejar el sistema operativo lo más restringido posible.
Y aquí es donde nace una pregunta que debería ser más o menos obvia. ¿Hasta qué punto el hardening es una ayuda y no una molestia? En este punto, es importante considerar un paradigma muy interesante que tiene la seguridad. Al parecer, la seguridad por un lado, y la versatilidad y facilidad de uso de los sistemas por otro, son como dos grupos de personas tirando de ambos extremos de una cuerda. En pocas palabras, a medida que se busca una seguridad mayor en los sistemas, la versatilidad y facilidad de uso del mismo se ven limitados, puesto que la cantidad de decisiones que puede tomar el usuario se reduce y la cantidad de posibilidades ajenas al propósito inicial del sistema en sí disminuye drásticamente. Por otro lado, el aumentar la versatilidad y la facilidad de uso de los sistemas pareciera estar muy relacionado con el aumento en las decisiones y posibilidades del usuario, lo que por consiguiente aumenta la probabilidad del mismo de equivocarse y poner en peligro la seguridad de todo el sistema. Y el debate sobre el punto exacto de equilibrio en cuanto a la cantidad de decisiones que deben pasar por manos del usuario final es bastante extenso y no está del todo resuelto.
Por lo tanto, la respuesta a la pregunta planteada es la siguiente: El Hardening es una ayuda hasta el momento exacto en que entorpece el objetivo inicial que tiene el sistema. Por citar un ejemplo, si un sistema trabaja con impresoras, redes inalámbricas y además con correo electrónico, no es recomendable deshabilitar la cola de impresión, el servicio de redes inalámbricas ni bloquear los puertos de smtp y pop. En otras palabras, en cada acción de Hardening que se vaya a ejecutar en el sistema operativo, hay que tener especial cuidado en que dichas acciones no afecten el propósito del sistema en sí.
Como conclusión, el Hardening es una ayuda indispensable para ahorrarse bastantes dolores de cabeza por parte de los administradores de sistemas. Entre sus ventajas, se puede contar la disminución por incidentes de seguridad, mejoras en el rendimiento al disminuir niveles de carga inútil en el sistema, una administración más simple y mayor rapidez en la identificación de problemas, ya que muchas de las posibles causas de ellos quedarán descartadas en virtud de las medidas tomadas, y finalmente la posibilidad – en muchos casos – de poder hacer un seguimiento de los incidentes y en algunos casos identificar el origen de los mismos. Es un trabajo que no es trivial, pero que bien vale la pena hacerlo.