Está en la página 1de 28

UNIVERSIDAD MAYOR, REAL Y PONTIFICIA DE

SAN FRANCISCO XAVIER DE CHUQUISACA

FACULTAD DE TECNOLOGIA

TITULO Hardening a Sistemas Operativos


MATERIA Seguridad de Redes (sco310)
CARRERA Ing. en Tecnologías de Información y Seguridad
DOCENTE Ing. Marco Arenas Porcel
UNIVERSITARIO Huanca Ramos Gilmer

SUCRE – BOLIVIA
2020
TABLA DE CONTENIDO
1. Introducción ..................................................................................................................................................4
2. Instalación endurecida .................................................................................................................................4
2.1. LVM .......................................................................................................................................................4
2.2. Particionamiento ..................................................................................................................................4
2.3. Cifrado de Datos ...................................................................................................................................5
3. Administración segura del sistema ..............................................................................................................6
3.1. Gestión y actualización de software ....................................................................................................6
3.1.1. Aplicando actualizaciones de seguridad......................................................................................6
3.1.2. Validación de integridad de los paquetes ...................................................................................7
3.1.3. Actualización del sistema .............................................................................................................7
4. Control de acceso a Consola .........................................................................................................................8
4.1. Asegurando GRUB Bootloaders ...........................................................................................................8
4.2. Desactivar la entrada de combinación Ctrl+Alt+Del ...........................................................................9
4.3. Visualización de notificaciones de uso aceptable ............................................................................ 10
5. Gestión de Cuentas de Usuario ................................................................................................................. 11
5.1. Envejecimientos de contraseñas ....................................................................................................... 11
5.2. Aplicando políticas de complejidad de contraseñas con PAM......................................................... 12
5.3. Bloqueo de cuentas con inicio de sesión fallidas .............................................................................. 13
5.4. Configuración del acceso administrativo mediante la utilidad su ................................................... 14
5.5. Deshabilitar acceso root usando cualquier dispositivo de consola (tty) ......................................... 14
5.6. Configuración de permisos de archivos predeterminados ............................................................... 14
6. Gestión de Controles de acceso................................................................................................................. 15
7. Servicios de Red Seguros ........................................................................................................................... 17
7.1. Servicios necesarios ........................................................................................................................... 17
7.2. Servicio SSH (Secure Shell)................................................................................................................. 18
7.2.1. Configuración endurecida ......................................................................................................... 18
7.3. Servicio SFTP ...................................................................................................................................... 19
7.3.1. Configuración endurecida ......................................................................................................... 19
7.4. HTTPS ................................................................................................................................................. 21
 Eliminar Banner de la version del servidor: ...................................................................................... 21
 Protección X-XSS: ............................................................................................................................... 22
 Evitar Clickjacking: ............................................................................................................................ 23
 MaxKeepAliveRequests: .................................................................................................................... 23
 KeepAliveTimeout: ............................................................................................................................ 23
 KeepAlive: .......................................................................................................................................... 23
 Pruebas de carga con Apache Benchmark ....................................................................................... 24
8. Limitar recursos con limits.conf ................................................................................................................ 25
8.1. Limitar máximo de inicios de sesión ................................................................................................. 25
8.2. Limitar cantidad procesos ................................................................................................................. 25
9. Tuneo de kernel ......................................................................................................................................... 26
9.1. Evitar SYN ATACK .............................................................................................................................. 26
9.2. Bloqueo de ICMP (Ping) y broadcast ................................................................................................ 26
9.3. Deshabilitar IPV6 ............................................................................................................................... 26
9.4. Kernel Panic ....................................................................................................................................... 27
10. Monitoreo de Cambios en el sistema ................................................................................................... 27
10.1. Uso de software de detección de cambios en el sistema de archivos ......................................... 27
11. Auditoría, endurecimiento del sistema, pruebas de cumplimiento con Lynis ..................................... 27
12. Conclusiones .......................................................................................................................................... 28
13. Bibliografía ............................................................................................................................................ 28
1. Introducción
El presente trabajo involucra un proceso de hardening del sistema operativo. Todas las configuraciones
y procedimientos se aplicarán a CentOS 7.6 que es el sistema operativo con el que se trabajara, con
algunos servicios más comunes activos

2. Instalación endurecida
Si estamos realizando una instalación de un servidor de infraestructura, es aconsejable aplicar una
política de instalación segura, personalizada y planeada, porque es donde comienza todo; en esta
primera parte estaremos hablando algunos puntos importantes de seguridad.

2.1. LVM
LVM es un método de localización de espacio disco duro en volúmenes lógicos que pueden ser
fácilmente redimensionados en ves de particiones. En la actualidad LVM esta disponible en la
mayoría de los sistemas Linux

2.2. Particionamiento
La tabla de particionamiento depende mucho de lo que se quiere proteger dentro el sistema de
archivos del servidor, para este labotario de prueba se tomara la siguiente tabla de
particionamiento
Punto de Tamaño Sistema de Archivo
Montaje (GiB)
/ 10 Xt4
/home 5
/var 8
/var/log 3
/tmp 3
Swap 2

2.3. Cifrado de Datos


Esta parte se puede considerar como necesario o no, porque este procedimiento requiere si o si
poner la contraseña previamente establecida para que el Sistema operativo pueda arrancar.
Ejemplo. Si el servidor tiene programado un reinicio automático este procedimiento no lo
permitiría

En caso de cifrar los datos, antes de ingresar a realizar el particionamiento manual debe marcar
la opción de cifrar datos

Después de terminar y aceptar los cambios de la tabla de partición le pedirá que introduzca una
frase
al iniciar o reiniciar el sistema se debe proporcionar la contraseña. Esto añade una capa de
seguridad al inicio del sistema operativo

3. Administración segura del sistema


Antes de empezar con todas las configuraciones, cabe recalcar que el sistema operativo corresponde
a CentOS 7.8

3.1. Gestión y actualización de software


3.1.1. Aplicando actualizaciones de seguridad
Antes de pasar actualizar el sistema vamos a generar un informe que contenga el número
de las actualizaciones disponibles con sus respectivas categorías de seguridad, con el
comando yum updateinfo. Pero en el caso de CentOS no genera como lo hace en RED HAT
a pesar de que si existen actualizaciones; esto lo podemos verificar con el comando yum
update

Se puede verificar que existen paquetes que requieren la actualización


3.1.2. Validación de integridad de los paquetes
Antes de aplicar actualizaciones a una maquina o grupo de máquinas, sería una buenas
practica verificar que los RPM actualizados sean proporcionados por una fuente confiable.
Hablamos de GNU Privacy Guard (GPG), prácticamente es una firma electrónica que los
empaquetadores que crean RPM aplican a sus paquetes yum solo instalará o actualizara
paquetes RPM que contenga una firma valida y confiable

3.1.3. Actualización del sistema


actualizamos el sistema con los repositorios por defecto y con la clave asociada a ese
repositorio que proporciona CentOS al momento de instalar
ejecutamos el comando yum update -y para actualizar el sistema

4. Control de acceso a Consola


4.1. Asegurando GRUB Bootloaders
En entornos donde se puede prohibir el acceso a consola o como una capa de autenticación
adicional en la consola, un administrador de sistemas puede agregar una contraseña al gestor de
arranque GRUB. Esta restricción simplemente requerirá una contraseña para ingresar a la línea de
comandos de GRUB
Con el comando grub2-setpassword requiere una contraseña la misma que genera una salida en
el archivo /boot/grub2/user.cfg. como se muestra en la siguiente imagen
Lo siguiente es modificar el archivo de configuración de grub2 en /boot/grub2/grub.cfg. En el
menú de entrada se debe eliminar la opción --unrectricted (irrestricto)

Durante el reinicio si alguien trata de acceder a la línea de comando de GRUB se debe identificar
el usuario con su respectivo pasword.

4.2. Desactivar la entrada de combinación Ctrl+Alt+Del


De manera predeterminada si alguien golpea la secuencia de teclas Ctrl+Alt+Del en la consola de
texto la maquina realizara un reinicio similar al administrador que ejecuta los comandos de
reinicio. Para evitar que esto suceda, los administradores pueden eliminar el controlador de señal
del subsistema init que permite que la secuencia de dichas teclas se interprete como una solicitud
de una operación de reinicio
u otra opción sería de crear un enlace simbólico

4.3. Visualización de notificaciones de uso aceptable


Algunas organizaciones requieren que los sistemas presenten un mensaje de uso aceptable en la
consola de la maquina antes de recopilar las credenciales de autenticación de un usuario. El
mensaje de advertencia representa el contenido de /etc/issue. Por defecto dicho archivo usa los
valores tokenizadas que también divulgan la version de actualización de CentOS y el nucleo que
ejecuta la maquina

Realizaremos la configuración o la edición de dos archivos /etc/issue y /etc/motd, el primero ya


se describió en el párrafo anterior, el segundo representa el mensaje de advertencia o de uso
aceptable después de la autenticación al sistema
5. Gestión de Cuentas de Usuario
5.1. Envejecimientos de contraseñas
Los valores predeterminados de antigüedad de la contraseña se definen en /etc/login.defs. el
comando useradd y otros comandos de administración de usuario usan este archivo para
determinar los valores predeterminados para los campos en /etc/shadow

Ejemplo de envejecimiento de contraseñas con la configuración por defecto

Configuramos el archivo /etc/login.defs

Ejemplo con la nueva configuración


Tambien se puede aplicar la caducidad de cuenta con mismo comando chage -E date USER

5.2. Aplicando políticas de complejidad de contraseñas con PAM


Para establecer esta política de complejidad vamos trabajar con los módulos de autenticación
conectables PAM. La mayoría de aplicaciones como SSH utilizan para verificar credenciales de
autenticación. Normalmente cada aplicación que hace uso de PAM tiene su propio archivo de
configuración en /etc/pam.d
Para aplicar contraseñas seguras tocaremos dos archivos que están presentes en el directorio
mencionado con anterioridad, (system-auth y password-auth). El módulo al que pasaremos
opciones o argumentos sera pam_pwquality.so
La política de contraseña es el siguiente ejemplo es lo siguiente
 Longitud mínima 10 caracteres (minlen=10)
 Al menos una Letra mayúscula (ucredit=-1)
 Al menos un digito (dcredit=-1)
 Al menos un carácter alfanumérico (ocredit=-1)

NOTA.

El usuario root es el único que puede establecer contraseñas débiles par el o para otros
usuarios del sistema
5.3. Bloqueo de cuentas con inicio de sesión fallidas
Este punto puede ser importante para evitar si alguien esta tratando de realizar un ataque de
fuerza bruta. Para ellos vamos a hacer uso de un modulo PAM (pam_faillock.so). Esta configuración
se aplica a los dos archivo /etc/pam.d/{password,system}-auth

Y se puede ver que evidentemente funciona, el tiempo de bloqueo puede variar según políticas.
Y esto se puede apreciar de mejor manera con la utilidad faillock

5.4. Configuración del acceso administrativo mediante la utilidad su


Cuando un usuario ejecuta la utilidad su, se solicita la contraseña de root y después de la
autenticacion el usuario root tiene acceso administrativo absoluto al sistema.
CentOS dispone un grupo administrativo especial llamado WEEL y ara evitar que todos los usuarios
puedan tener acceso a esta utilidad (su), su utiliza PAM en /etc/pam.d/su y se debe agregar o des
comentar la siguiente línea.

5.5. Deshabilitar acceso root usando cualquier dispositivo de consola (tty)


Para limitar el acceso a la cuenta root, se puede editar el archivo /etc/securetty para evitar inicios
de sesión desde la cuenta root. Este archivo enumera todos los dispositivos en los que el usuario
root puede iniciar sesión.

5.6. Configuración de permisos de archivos predeterminados


Los permisos predeterminados par los archivos son establecidos por los procesos que los crean.
Por ejemplo. Los editores de texto crean archivos para que todos puede leerlos y escribirlos, no
los ejecutables
 Definición de umask global mas restrictivo para todos los usuarios sin privilegios
La salida del comando umask muestra el valor predeterminado definido en el archivo de
configuración /etc/profile y /etc/bashac

La configuración más estricta seria que para todos los usuarios con un UID > 199 sea de
007. Esto quiere decir que los directorios creados mkdir tendrán los permisos de 770 y los
archivos con 660

Es muy importante volver a iniciar sesión para que umask puede hacer efecto. En el ejemplo siguiente
podemos ver los permisos aplicados por defecto

6. Gestión de Controles de acceso


Las listas de control de acceso (ACL) se utilizan para extender el control de seguridad de archivos y
directorios más allá de las reglas tradicionales DAC.
Las ACL de acceso son los permisos otorgados a archivos y/o directorios, ellos determinan el acceso
de los usuarios y/o grupos al archivo individual en cuestión. Las ACL predeterminadas solo se aplican
a los directorios y son heredados por los archivos y directorios creados en el directorio con las ACL.
Las ACL se muestran con el comando getfacl y se establece con el comando setfacl.
El siguiente ejemplo aplica un permiso de lectura y escritura a un usuario especifico (Gilmer) al archivo
/etc/motd.
El siguiente ejemplo aplica una regla de lectura y escritura para el usuario (Gilmer) sobre directorios.
Los directorios (files de cada usuario) es propiedad del usuario ftp para almacenar sus archivos y luego
compartirlos en el directorio share

Se muestra de esta manera todos los permisos DAC aplicados a los directorios en cuestión
Aplicando las respectivas ACL, una ACL regulas y uno por default, a los mencionados directorios.
Recuerden que las reglas por default solo se aplicara directorios

Para hacer su respectiva comprobación de las ACL aplicadas crearemos un archivo en el directorios
/home/sftpserver/gilmersftp/files/ y ver las ACL que se aplicaron a dicho archivo.

Estos son simplemente unos ejemplos de como se puede aplicar reglas ACL en un proceso de control
de acceso a un recurso del sistema

7. Servicios de Red Seguros


7.1. Servicios necesarios
Es importante que el servidor tenga habilidad solo servicios necesarios por seguridad para evitar
que el rendimiento del mismo sea afectado por servicios innecesarios que podrían consumir
recursos del sistema o servicios vulnerables que pueden comprometer completamente el sistema.
7.2. Servicio SSH (Secure Shell)
El servicio para acceso remoto Secure Shell, en sistemas de Red Hat y CentOS viene instalado por
defecto aun en una instalación mínima del sistema operativo
7.2.1. Configuración endurecida
Toca editar el archivo de configuración del servicio SSH que se encuentra en
/etc/ssh/sshd_config, tomando en cuenta los siguientes puntos.

- Cambio de puerto por defecto (evitar ataques a un puerto conocido)

- Restringis acceso a IPv4: si no se utiliza IPv6 no tenemos que tenerlo habilitado

- Restringir acceso Root: al denegar el acceso al usuario root cada vez que necesitemos
realizar tareas administrativas, accederemos con un usuario normal para luego elevar
el privilegio a root.
- Directriz LoginGraceTime: Se establece el tiempo en segundos, durante el cual la
pantalla de login estará disponible para que el usuario introduzca su usuario y
contraseña

- Directriz PasswordAuthentication: habilita o deshabilita la autenticación con


contraseña. Si se establece el valor de NO solo permitirá el acceso a través de firmas
digitales

- Directriz PermitEmptyPasswords: es muy importante que tenga el valor de NO para


evitar autenticación con contraseñas vacías.

- Banner o mensaje de uso aceptable: por medio de esta directriz podemos presentar
un mensaje de uso aceptable, exponiendo temas legales de un acceso no autorizado
antes de la autenticacion. Por defecto esta option esta deshabilitado por lo que hay
que habilitarlo y un PATH del mensaje que se quiere mostrar.

7.3. Servicio SFTP


SFTP es un protocolo de red para transferir archivos y carpetas de forma segura entre cliente
servidor. El medio del que se vale el protocolo SFTP para conseguir una conexión y transmisión
segura acostrumbra ser SSH. No necesitamos tener otro servicio independiente para realizar
transferencias, solo usaremos el servicio de SSH.
7.3.1. Configuración endurecida
- Creación de usuarios con privilegios minimos: Primeramente, debemos crear un
grupo específico para este tipo de usuarios (sftpserver) y que no deben tener shell ya
que estos usuarios lo que harán es conectarse desde un cliente FTP GUI como FileZilla

- Caducidad de cuentas de usuario: importante establecer caducidad de cuentas de


este tipo de usuarios

- Enjaular Usuarios: se refiere al contexto en el sistema de archivos en el que el usuario


pueda interactuar, para ello se debe modificar el archivo de configuración de SSH
sshd_config, esta medida se puede aplicar a un grupo especifico o solamente a un
usuario. Como se muestra a continuación

Y todas las configuraciones que incumben al servicio SSH también afectan al servicio
de sftp
7.4. HTTPS
Primeramente, el sitio web para esta práctica, es un website de Login sesillo con certificado SSL
autofirmado

Apache es un servidor web de código abierto potente y capaz, diseñado para proporcionar un
equilibrio de flexibilidad, portabilidad y rendimiento. La optimización de Apache es una tarea
importante para todos los administradores del sistema.
Describiremos algunas opciones de configuración de apache que se pueden utilizar para mejora el
rendimiento
 Eliminar Banner de la version del servidor:
Una de las primeras cosas a considerar, ya que no desea exponer qué versión del servidor
web está utilizando. Exponer la versión significa que estamos ayudando a los piratas
informáticos a acelerar el proceso de reconocimiento.
La configuración predeterminada expondrá la versión de Apache y el tipo de sistema
operativo como se muestra a continuación. La siguiente imagen muestra el antes y el
después de la configuración de apache

La directiva ServerSignature eliminará la información de la versión de la página generada


por Apache y la directiva ServerTokens cambiará Header a producción solamente, es decir,
Apache
 Protección X-XSS:
La protección entre sitios de scripting (XSS) se puede omitir en muchos navegadores.
Puede aplicar esta protección para una aplicación web si el usuario la deshabilitó. Esto es
utilizado por la mayoría de las empresas web gigantes como Facebook, Twitter, Google,
etc.
 Evitar Clickjacking:
es una vulnerabilidad de aplicación web conocidad más específicamente el uso de la
etiquete <iframe>
SAMEORIGIN: Esta configuración permitirá que una página se muestre en un marco en el
mismo origen que la propia página.
DENY: Este ajuste evitará que una página se muestre en un marco o iframe.

 MaxKeepAliveRequests:
Es el número máximo de solicitudes para servir en una conexión TCP. Limita el número de
solicitudes permitidas por conexión. Si se establece en 0, se permitirán solicitudes
ilimitadas. Puede establecer un valor alto para obtener el máximo rendimiento del servidor

 KeepAliveTimeout:
define el número de segundos que Apache esperará la nueva solicitud de los clientes
conectados antes de cerrar la conexión. (Una vez que el servidor recibe una solicitud, la
directiva Timeout se aplica en su lugar.)

 KeepAlive:
KeepAlive establece si el servidor permite más de una solicitud por conexión. Se puede
utilizar para evitar que cualquier cliente consuma demasiados recursos del servidor. De
forma predeterminada está deshabilitado en CentOS 7.
 Pruebas de carga con Apache Benchmark
ab es una herramienta para comparar su servidor Apache Hypertext Transfer Protocol
(HTTP). Está diseñado para darle una impresión de cómo funciona su instalación actual de
Apache. Esto le muestra especialmente cuántas solicitudes por segundo su instalación de
Apache es capaz de servir.
Explicación del comando ejecutado
-k (KeepAlive). Realizar múltiples solicitudes dentro de una sesión HTTP, funcionalidad de los
navegadores por la naturaleza
-n (requests). Número de solicitudes que se deben realizar para la sesión de evaluación
comparativa
-c (concurrency). Número de solicitudes múltiples que se deben realizar a la vez.
-H ‘Accept-Encoding: gzip, deflate’ (custom-header). Anexar encabezados adicionales a la solicitud.
Imita la petición típica que un navegador enviará

8. Limitar recursos con limits.conf


Los sistemas operativos UNIX/Linux tienen la capacidad de limitar la cantidad de diversos recursos del
sistema disponibles para un proceso de usuario. Estas limitaciones incluyen cuántos archivos puede
tener abierto un proceso, el tamaño de un archivo que el usuario puede crear y la cantidad de memoria
que pueden utilizar los diferentes componentes del proceso, como la pila, los datos y los segmentos
de texto
8.1. Limitar máximo de inicios de sesión
restringimos el número de conexiones vía ssh que un usuario puede hacer a un servidor específico.

También esta regla se puede aplicar a todo un grupo. El siguiente ejemplo muestra como los
usuarios del grupo sftp solo tiene solo un inicio de sesión

8.2. Limitar cantidad procesos


Limitar un numero de procesos para usuarios sin privilegios es una medida de seguridad adicional
en el sistema.
9. Tuneo de kernel
9.1. Evitar SYN ATACK
El TCP Syn es un ataque DoS (denegación de servicio). Consume recursos en su servidor Linux. El
atacante comienza con el apretón de manos de la conexión TCP que envía el paquete SYN, y
después nunca completa el proceso para abrir la conexión. Esto se traduce en conexiones masivas
semiabiertas. El kernel de Linux puede bloquear este tipo de ataques fácilmente con habilitar
tcp_syncookies=1

Estas configuraciones en CentOS ya vienen por defecto. La variable tcp_syn_retries indica al kernel
cuántas veces intentar retransmitir el paquete SYN inicial para un intento de conexión TCP activo.
La configuración de tcp_synack_retries indica al kernel cuántas veces se retransmite la respuesta
SYN, ACK a una solicitud SYN. En otras palabras, esto indica al sistema cuántas veces intentar
establecer una conexión TCP pasiva iniciada por otro host

9.2. Bloqueo de ICMP (Ping) y broadcast


Estar opciones se debe color a 1 para que el kernel ignore paquetes ICMP ECHO desde cada host
o tan solo aquellos que se originen desde direcciones broadcast. Esto se puede realizar con la
utilidad de sysctl -w clave=valor y poner el mismso clave=valor en /ectc/sysctl.conf

9.3. Deshabilitar IPV6


Si no se usa ipv6 es recomendable deshabilitarlo, esta configuración también se puede estableces
con la utilidad de sysctl
9.4. Kernel Panic
El kernel se congela no solo porque no pudo hacer algo, sino también para evitar que su
computadora, por ej. sobrecalentamiento, corrupción de discos duros y cualquier otro problema
de hardware que pueda ocurrir. Por defecto esta en 0 pero podemos cambiar a otro número que
representa en segundo para su reinicio.

10. Monitoreo de Cambios en el sistema


10.1. Uso de software de detección de cambios en el sistema de archivos
La estabilidad del sistema se pone en riego cuando los archivos de configuración se eliminan o
modifican sin autorización o supervisión cuidadosa. Este problema se puede resolver mediante
uso de un software de detección de intrusos para monitorear todo el sistema de archivosen busca
de cambios. El entorno avanzado de detección de intrusiones, AIDE puede configurarse para
monitorear los archivos para una variedad de cambios

Como mínimo, AIDE debe configurarse para ejecutar un análisis semanal. Como máximo, AIDE debe
ejecutarse diariamente.

11. Auditoría, endurecimiento del sistema, pruebas de cumplimiento con Lynis


Lynis es una herramienta de seguridad probada en batalla para sistemas que ejecutan Linux, macOS o
sistema operativo basado en Unix. Realiza un extenso análisis de estado de sus sistemas para admitir
el endurecimiento del sistema y las pruebas de cumplimiento. El proyecto es un software de código
abierto con la licencia GPL y está disponible desde 2007.
Y es asi empieza la auditoria del sistema con el comando Lynis system audit
12. Conclusiones
El proceso de hardening se debe realizar en base a la necesidad de lo que se quiere proteger. En este
punto deberán estar la Confidencialidad, Integridad y Disponibilidad de cada uno de los servicios que
pueden estar habilitados en el servidor y aplicar cualquier método que garantice de acceso no
autorizado en todo el sistema de archivos para hacer cumplir la confidencialidad en todo el sistema.

13. Bibliografía
Guía base
https://access.redhat.com/documentation/en-
us/red_hat_enterprise_linux/7/html/security_guide/index
Tunning de kernel
https://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.html
https://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt#1898
Configuración http
https://geekflare.com/apache-web-server-hardening-security/

También podría gustarte