LFCA Cómo mejorar la seguridad del sistema Linux - Parte 20

LFCA Cómo mejorar la seguridad del sistema Linux - Parte 20

Como todos sabemos, el usuario de la raíz es el rey y ejerce privilegios ilimitados sobre el sistema Linux. Sin embargo, los usuarios no raíz se limitan a tareas básicas. Además, los usuarios de SUDO solo se les otorga un cierto grado de privilegios raíz como el usuario de la raíz considerado para realizar tareas elevadas específicas.

Surgen problemas cuando los usuarios regulares tienen acceso no controlado a los recursos o se intensifican a raíz sin querer. Este es un riesgo de seguridad grave que podría causar violaciones, modificaciones no deseadas y en el peor de los casos, el bloqueo del sistema. Otro riesgo potencial es cuando los archivos tienen permisos de archivos menos seguros. Por ejemplo, los archivos de arranque con permisos de escritura para usuarios globales podrían modificarse fácilmente o corrompirse, lo que resulta en un sistema roto.

[También puede gustar: consejos útiles para asegurar datos y Linux]

Si bien podemos implementar la seguridad física, de red y de datos, un usuario malicioso puede eludir las medidas de seguridad y aprovechar tales lagunas de seguridad. Es por esta razón que la seguridad del sistema de archivos debe tomarse en serio. Proporciona una capa adicional de defensa frente a los ataques o amenazas internas de empleados maliciosos que no tienen que hacer el trabajo pesado para eludir las medidas de seguridad para acceder a los archivos.

En la seguridad del sistema, nos concentraremos en los siguientes puntos clave:

  • Derechos de acceso: permisos de usuario y grupo.
  • Hacer cumplir las políticas de contraseña con el módulo PAM.

Derechos de acceso: separación de usuarios y grupos

Probablemente debe haber escuchado que todo en Linux se considera un archivo. Y si no es así, es un proceso. Cada archivo en un sistema Linux es propiedad de un usuario y un usuario de grupo. También tiene permisos de archivo para 3 categorías de usuarios: usuario (u), Grupo (gramo), y otros (O). Los permisos se representan en leer, escribir y ejecutar ( RWX ) para cada categoría de usuario.

RWX RWX RWX Group de usuarios otros 

Como se vio anteriormente, en la sección Basics de Linux, puede ver los permisos de archivo utilizando el formato largo del comando LS como se muestra.

$ ls -l 
Listado de archivos en Linux

Solo para recapitular, los permisos generalmente están representados por nueve caracteres. Los primeros tres caracteres representan los derechos de acceso del usuario real que posee el archivo. El segundo conjunto de caracteres representan los permisos del propietario del grupo del archivo. Finalmente, el último conjunto para otros usuarios o globales. Estos personajes están perpetuamente en el leer, escribir, ejecutar (RWX) orden.

Después de los permisos, tenemos propietarios de usuarios y grupos, seguidos del archivo o tamaño de directorio, fecha de modificación y, por último, el nombre del archivo.

Cambiar los permisos de archivo/directorio y los propietarios

Los permisos de usuario de archivos y directorios se pueden modificar como ajuste considerado. La regla general es utilizar el principio de seguridad de menor privilegio. En pocas palabras, asegúrese de que los usuarios obtengan los derechos de acceso mínimos o los permisos necesarios para realizar el trabajo.

El principio de menores privilegios restringe a los usuarios a ciertos roles solamente y, al hacerlo, minimiza el riesgo de que los atacantes accedan y modifiquen datos críticos aprovechando una cuenta de usuario de bajo nivel. También reduce la superficie de ataque y limita la propagación de malware en caso de que el atacante tome el control de su sistema.

Por lo tanto, si un usuario solo necesita ver el contenido de un archivo o directorio, no se debe otorgar permisos de ejecución o escritura. En el nivel muy básico, solo otorga los menos permisos y propietarios que el usuario exige las tareas. Hemos abordado cómo modificar los permisos de los usuarios y las propiedades de los propietarios en archivos/directorios utilizando los comandos de CHMOD y Chown en el tema Basic Linux Comandos.

Modo de permiso de bit pegajoso

Para que el administrador del sistema tenga un tiempo más fácil administrar los permisos, se pueden otorgar permisos especiales o derechos de acceso a directorios completos. Uno de los permisos especiales que se pueden aplicar para restringir la eliminación y la modificación de un archivo o directorio es el bit pegajoso.

Broca pegajosa

En un escenario en el que todos los usuarios pueden acceder un directorio compartido en el sistema o la red, existe un riesgo potencial de que algunos usuarios puedan eliminar o modificar los archivos dentro del directorio. Esto no está deseado si desea mantener la integridad del contenido del directorio. Y aquí es donde entra la broca pegajosa.

Un bit pegajoso es un permiso especial de archivo establecido en un archivo o directorio completo. Otorga solo al propietario de ese archivo/directorio el permiso para eliminar o realizar cambios en el archivo o el contenido del directorio. Ningún otro usuario puede eliminar o modificar el archivo/directorio. Tiene el valor simbólico de T y un valor numérico de 1000.

Para encender un bit pegajoso en un directorio, use el comando chmod como sigue:

$ chmod +t directorio_name 

En el ejemplo a continuación, hemos aplicado un bit pegajoso al directorio llamado prueba. En el caso de un directorio, todo el contenido heredará los permisos de bits pegajosos. Puede verificar los permisos de bit pegajosos utilizando el LS -LD dominio. Asegúrese de notar el T Símbolo al final de los permisos de archivo.

Prueba de $ LS -LD 
Establezca un poco adhesivo en Linux

Si otro usuario intenta eliminar el directorio o modificar el archivo dentro del directorio, son recibidos con un Permiso denegado error.

Permiso de bit pegajoso denegado

Y ese es el permiso de archivo de bit de bit de palo.

Monitoreo de permisos Suid y SGID

El Suid (Establecer ID de usuario) es otro permiso especial de archivo que permite a otro usuario regular ejecutar un archivo con los permisos de archivo del propietario del archivo. Por lo general, se denota por un valor simbólico s en la parte del usuario de los permisos de archivo en lugar de un X que representa los permisos de ejecución. El Suid tiene un valor numérico de 4000.

El Sgid, (Establecer ID de grupo) permite a un usuario regular heredar los permisos de grupo del propietario del grupo de archivos. En lugar de la X Para los permisos de ejecución, verá un s En la parte grupal de los permisos de archivo. El Sgid tiene un valor numérico de 2000.

Por conveniente que sean, el Suid y Sgid Los permisos están asociados con riesgos de seguridad y deben evitarse a toda costa. Esto se debe a que otorgan privilegios especiales a los usuarios regulares. Si un intruso que se hace pasar por un usuario regular se encuentra con un archivo ejecutable propiedad del usuario raíz con un Suid Bit en él, pueden usar esa escapatoria y explotar el sistema.

Para encontrar todos los archivos con Suid Bit Set en Linux Ejecute el comando Buscar como el usuario root.

$ Find / -Perm -4000 Tipo -f 

Para directorios ejecutar:

$ Find / -Perm -4000 Tipo -d 

Para encontrar todos los archivos con Sgid Ejecución de bits:

$ Find / -Perm -2000 Tipo -f 

Para directorios ejecutar:

$ Find / -Perm -2000 Tipo -d 

Para eliminar el Suid bit en un archivo, ejecute el comando chmod como se muestra:

$ chmod u-s/rath/to/file 

Para eliminar el bit SGID en un archivo, ejecute el comando:

$ chmod G-S FileName/Path/To/File 

Hacer cumplir las políticas de contraseña con el módulo PAM

No es raro que los usuarios establezcan contraseñas débiles. Un buen número establecido contraseñas cortas, simples y fácilmente adivinables para evitar olvidarlos durante el inicio de sesión. Si bien es conveniente, las contraseñas débiles se pueden violar fácilmente utilizando scripts de ataque de fuerza bruta.

El Pam módulo ( Módulo de autenticación conectable ) es un módulo que permite a los administradores del sistema hacer cumplir las políticas de contraseña en los sistemas Linux. Para lograr esto, necesitas el PAM_PWQUALIDAD módulo proporcionado por el libpam_pwQuality biblioteca. El PAM_PWQUALIDAD El módulo verifica la fuerza de una contraseña contra un conjunto de reglas y un diccionario del sistema y señala las opciones de contraseña débiles.

Para instalar el PAM_PWQUALIDAD módulo Ubuntu 18.04 y versiones posteriores, ejecutar:

$ sudo apt install libpam_pwQuality 

Para Rhel / Centos 8, Ejecute el comando:

$ sudo dnf instalación libpwQuality 

El archivo de configuración se encuentra en la siguiente ubicación:

  • Sobre los sistemas de Debian - /etc/pam.d/pasas comunes
  • En sistemas redhat - /etc/pam.D/System-Auth

Configuración de la política de contraseña

Antes de comenzar a modificar el Pam Archivo de configuración, consideremos primero recopilar información sobre los controles de envejecimiento de la contraseña.

Detalles de envejecimiento de contraseña

Estos se pueden encontrar en el /etc/inicio de sesión.defs archivo.

El archivo contiene los controles de contraseña de la siguiente clave:

  • Pass_max_days: Número máximo de días se puede usar una contraseña.
  • Pass_min_days: Número mínimo. de los días permitidos entre los cambios de contraseña.
  • Pass_warn_age: Número de días de advertencia dada antes de que expire una contraseña.

Los valores predeterminados se indican a continuación.

Envejecimiento de contraseña de Linux

El Pass_max_days El atributo limita la cantidad de días que un usuario puede usar su contraseña. Cuando se alcanza este valor o expira la contraseña, el usuario se ve obligado a cambiar su contraseña para iniciar sesión en el sistema. Por defecto, este valor se establece en 99999, que se traduce en 273 años. Esto no tiene mucho sentido en lo que respecta a la seguridad, ya que el usuario puede continuar usando su contraseña durante toda su vida.

Puede establecer esto en un valor significativo, digamos 30 días como se muestra.

Pass_max_days 30 

Después de 30 días de transcurrido, el usuario se verá obligado a cambiar su contraseña a una diferente.

El Pass_min_days El atributo explica la duración mínima que los usuarios pueden usar su contraseña antes de cambiarla. Qué quiere decir esto? Si, por ejemplo, este valor se establece en 15 días, el usuario no podrá cambiar su contraseña nuevamente antes de que transcurran 15 días.

Pass_max_days 15 

El Pass_warn_age El atributo especifica la cantidad de días que un usuario obtendrá una advertencia sobre la expiración inminente de su contraseña antes de que expire. Por ejemplo, puede establecer esto en 7 días como se muestra.

Pass_max_days 7 

NOTA: Estos controles de contraseña no funcionan con cuentas preexistentes. Solo se aplican a las nuevas cuentas creadas después de definir las reglas.

Configuración de complejidad de contraseña con el módulo PAM

Antes de editar el /etc/pam.d/pasas comunes archivo, cree una copia de copia de seguridad. En este ejemplo, hemos creado el pasión común.bak archivo de copia de copia de seguridad.

$ sudo cp /etc /pam.d/Password común/etc/Pam.d/pasas comunes.bak 

Luego abra el archivo.

$ sudo vim /etc /pam.d/pasas comunes 

Localice la línea que se muestra a continuación.

contraseña requerida PAM_PWQUALIDAD.Entonces vuelve a intentarlo = 3 
Configuración de complejidad de contraseña con PAM

El rever La opción establece el número máximo de veces que debe ingresar la contraseña correcta antes de recibir un error. Por defecto, esto se establece en 3. Esta es solo una opción y vamos a incluir varias opciones.

Agregue los siguientes atributos a la línea:

minlen = 10 difok = 3 lcredit = -1 uCredit = -1 dCredit = -1 ocredit = -1 rechazos_username 

Vamos a desarrollar estos atributos.

  • Minlen = 10: Establece el tamaño mínimo aceptable para la contraseña. En este caso, 10 caracteres.
  • difok = 3: Este es el número máximo de caracteres que están presentes en la contraseña anterior.
  • lcredit = -1: Este es el número mínimo de caracteres en minúsculas que deberían estar presentes en la contraseña.
  • uCredit = -1: El es el número máximo de caracteres en minúsculas que deberían estar presentes en la contraseña.
  • dcredit = -1: El número mínimo de caracteres numéricos que deben definirse en la contraseña.
  • ocledit = -1: El número mínimo de caracteres especiales e.g @, #, y eso debe definirse en la contraseña.
  • rechazar_username: Esta opción desencadena el rechazo de la contraseña si la contraseña es el nombre de usuario en formato recto o inversa.

Si intenta crear un nuevo usuario que no alcance las políticas de contraseña, se topará con los errores que se muestran.

Crear un nuevo usuario en Linux
Resumen

Esto concluye el tema sobre los fundamentos de seguridad y seguridad del sistema en general. En todo el capítulo, hemos arrojado la luz sobre las medidas de seguridad básicas que puede implementar para salvaguardar su sistema Linux de usuarios maliciosos como hackers o empleados descontentos.

Conviértase en un Asociado de IT Certified IT (LFCA) de Linux Foundation (LFCA)