Table of Contents
LFCA: Cómo mejorar la seguridad del sistema Linux-Parte 20
Como todos sabemos, el usuario root es el rey y tiene privilegios ilimitados sobre el sistema Linux. Sin embargo, los usuarios no root están limitados a tareas básicas. Además, a los usuarios de sudo solo se les concede un cierto grado de privilegios de root según lo considere adecuado el usuario root para realizar tareas elevadas específicas.
Los problemas surgen cuando los usuarios normales tienen acceso incontrolado a los recursos o se escalan a root sin querer. . Este es un riesgo de seguridad grave que podría causar infracciones, modificaciones no deseadas y, en el peor de los casos, el bloqueo del sistema. Otro riesgo potencial es cuando los archivos tienen permisos de archivo menos seguros. Por ejemplo, los archivos de arranque con permisos de escritura para usuarios globales pueden modificarse o corromperse fácilmente, lo que da como resultado un sistema roto.
[También le pueden interesar: Consejos útiles para proteger datos y Linux].
Si bien podemos implementar seguridad física, de red y de datos, un usuario malintencionado 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 ataques o amenazas internas de empleados malintencionados que no tienen que hacer el trabajo pesado de eludir las medidas de seguridad para acceder a los archivos.
En seguridad del sistema, nos concentraremos en los siguientes puntos clave:
- Derechos de acceso: permisos de usuarios y grupos.
- Haga cumplir las políticas de contraseñas con el módulo PAM.
Acceso Derechos-Separación de usuarios y grupos
freestar.config.enabled_slots.push
Probablemente haya 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 ( g. y Otros ( o. . Los permisos se representan en lectura, escritura y ejecución ( rwx. para cada categoría de usuario.
rwx rwx rwx Grupo de usuarios Otros
Como se vio antes, en la sección de conceptos básicos de Linux, puede ver los permisos del archivo usando el formato largo del comando ls como se muestra.
$ ls-l
Listado de archivos en Linux
Para recapitular, los permisos suelen estar 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 representa los permisos del propietario del grupo del archivo. Finalmente, el último conjunto para otros usuarios o usuarios globales. Estos caracteres están perpetuamente en el orden de lectura. escritura. ejecución. ( rwx. .
Después de los permisos, tenemos las propiedades de usuarios y grupos, seguidas del tamaño del archivo o directorio, la fecha de modificación y, por último, el nombre del archivo.
Cambio de permisos y propiedades de archivos/directorios
Los permisos de usuario de archivos y directorios se pueden modificar según se considere oportuno. La regla general es utilizar el principio de seguridad de privilegios mínimos. 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 privilegios mínimos restringe a los usuarios a ciertos roles únicamente y, al hacerlo, minimiza el riesgo de que los atacantes accedan y modifiquen datos críticos al aprovechar 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 debe permitírselo. ejecutar o escribir permisos. En el nivel más básico, solo otorgue los permisos y propiedades mínimos requeridos por el usuario para realizar las tareas. Hemos abordado cómo modificar los permisos y las propiedades de los usuarios en archivos/directorios usando los comandos chmod y chown en el tema de los comandos básicos de Linux.
Modo de permiso Sticky Bit
Para que el administrador del sistema tenga más facilidad para administrar los permisos, especial se pueden otorgar permisos o derechos de acceso a directorios completos. Uno de los permisos especiales que se pueden aplicar para restringir la eliminación y modificación de un archivo o directorio es el bit adhesivo.
Pedazo pegajoso
En un escenario en el que todos los usuarios del sistema o la red pueden acceder a un directorio compartido, existe el riesgo potencial de que algunos usuarios puedan eliminar o modificar los archivos dentro del directorio. Esto no es deseado si desea mantener la integridad del contenido del directorio. Y aquí es donde entra el bit pegajoso.
Un bit pegajoso es un permiso de archivo especial establecido en un archivo o directorio completo. Solo le otorga al propietario de ese archivo/directorio el permiso para eliminar o realizar cambios en el contenido del archivo o directorio. Ningún otro usuario puede eliminar o modificar el archivo/directorio. Tiene el valor simbólico de ty un valor numérico de 1000.
Para activar un bit adhesivo en un directorio, use el comando chmod. como sigue:
$ chmod + t nombre_directorio
En el siguiente ejemplo, hemos aplicado un bit adhesivo al directorio llamado test. En el caso de un directorio, todo el contenido heredará los permisos del bit adhesivo. Puede verificar los permisos de los sticky bit con el comando ls-ld. Asegúrese de notar el símbolo t al final de los permisos del archivo.
$ ls-ld test
Establecer Sticky Bit en Linux
Si otro usuario intenta eliminar el directorio o modificar el archivo dentro del directorio, recibirá un error de Permiso denegado.
Permiso de Sticky Bit denegado
Y esa es la esencia del stick permiso de archivo bit.
Supervisión de permisos SUID y SGID
El SUID. ( Establecer ID de usuario. es otro permiso de archivo especial que permite a otro usuario regular archivo con los permisos de archivo del propietario del archivo. Por lo general, se indica con un valor simbólico s en la parte de los permisos de archivo del usuario en lugar de una 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á una s en la parte del grupo de los permisos del archivo. El SGID. tiene un valor numérico de 2000.
Por muy convenientes que resulten, el SUID. y Los permisos SGID. están asociados con riesgos de seguridad y deben evitarse a toda costa. Esto se debe a que otorgan privilegios especiales a los usuarios habituales. Si un intruso que se hace pasar por un usuario normal se encuentra con un archivo ejecutable propiedad del usuario root con un bit SUID. configurado, puede usar esa laguna y explotar el sistema.
Para encontrar todos los archivos con el bit SUID. configurado en Linux, ejecute el comando find como usuario root.
$ find/-perm-4000 tipo-f
Para directorios ejecute:
$ find/-perm-4000 tipo-d
Para encontrar todos los archivos con el conjunto de bits SGID. ejecute:
$ find/-perm-2000 tipo-f
Para ejecutar directorios:
$ find/-perm-2000 tipo-d
Para eliminar el bit SUID. en un archivo, ejecute el comando chmod como se muestra:
$ chmod us/ruta/a/archivo
Para eliminar el bit SGID en un archivo, ejecute el comando:
$ chmod gs nombre de archivo/ruta/a/archivo Aplicar políticas de contraseña con el módulo PAM
No es raro que usuarios para establecer contraseñas débiles. Un buen número establece contraseñas cortas, sencillas y fáciles de adivinar para evitar olvidarlas durante el inicio de sesión. Si bien es conveniente, las contraseñas débiles se pueden violar fácilmente mediante secuencias de comandos de ataque de fuerza bruta.
El módulo PAM. ( Módulo de autenticación conectable. es un módulo que permite administradores del sistema para hacer cumplir las políticas de contraseñas en los sistemas Linux. Para lograr esto, necesita el módulo pam_pwquality. que proporciona la biblioteca libpam_pwquality. El módulo pam_pwquality. verifica la seguridad de una contraseña con un conjunto de reglas y un diccionario del sistema y señala las opciones de contraseña débiles.
Para instalar el módulo pam_pwquality. en Ubuntu 18.04. y versiones posteriores, ejecute:
$ sudo apt install libpam_pwquality
Para RHEL/CentOS 8. ejecute el comando:
$ sudo dnf install libpwquality
El archivo de configuración se encuentra en la siguiente ubicación:
- En Debian-Systems-/etc/pam.d/common-password”
- En RedHat Systems-/etc/pam.d/system-auth”
Configuración de la política de contraseñas
Antes de comenzar a modificar el archivo de configuración PAM. consideremos primero recopilar información sobre los controles de caducidad de contraseñas.
Detalles de caducidad de contraseñas
Estos pueden se encuentra en el archivo /etc/login.defs.
El archivo contiene los siguientes controles de contraseña clave:
- PASS_MAX_DAYS. número máximo de días que se puede utilizar una contraseña.
- PASS_MIN_DAYS. número mínimo. de días permitidos entre cambios de contraseña.
- PASS_WARN_AGE. número de días de advertencia antes de que caduque una contraseña.
Los valores predeterminados se indican a continuación .
Antigüedad de la contraseña de Linux
El atributo PASS_MAX_DAYS. limita el número de días que un el usuario puede utilizar su contraseña. Cuando se alcanza este valor o la contraseña caduca, el usuario se ve obligado a cambiar su contraseña para iniciar sesión en el sistema. De forma predeterminada, 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 seguir 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
Transcurridos 30 días, el usuario se verá obligado a cambiar su contraseña por una diferente.
El atributo PASS_MIN_DAYS. especifica la duración mínima que los usuarios puede usar su contraseña antes de cambiarla. ¿Qué significa esto? Si, por ejemplo, este valor se establece en 15 días, el usuario no podrá volver a cambiar su contraseña antes de que transcurran 15 días.
PASS_MAX_DAYS 15
El atributo PASS_WARN_AGE. especifica la cantidad de días que un usuario recibirá una advertencia sobre el vencimiento inminente de su contraseña antes de que caduque. Por ejemplo, puede configurarlo 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 cuentas nuevas creadas después de definir las reglas.
Configuración de la complejidad de la contraseña con el módulo PAM
Antes de editar el archivo /etc/pam.d/common-password. cree una copia de seguridad. En este ejemplo, hemos creado el archivo de copia de seguridad common-password.bak.
$ sudo cp/etc/pam.d/common-password/etc/pam.d/common-password.bak
Luego abra el archivo.
$ sudo vim/etc/pam.d/common-password
Busque la línea que se muestra a continuación.
requisito de contraseña pam_pwquality.so retry = 3
Configuración de la complejidad de la contraseña con PAM
La opción reintentar. establece el número máximo de veces que debe ingresar el contraseña correcta antes de recibir un error. De forma predeterminada, 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 rechazar_username
Desarrollemos 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úscula que debe estar presente en la contraseña.
- ucredit =-1. es el número máximo de caracteres en minúscula que deben estar presentes en la contraseña.
- dcredit =-1. el número mínimo de caracteres numéricos que deben definirse en la contraseña.
- ocredit =-1. el número mínimo de caracteres especiales, p. ej. @, #, & que deben definirse en la contraseña.
- rechazar_nombre_de_usuario. esta opción desencadena el rechazo de la contraseña si la contraseña es el nombre de usuario, ya sea en formato directo o inverso.
Si intenta crear un nuevo usuario que no cumpla con las políticas de contraseña, va a chocar en los errores que se muestran.
Create New User in Linux Summary
Esto concluye el tema sobre la seguridad del sistema y el fundamento de la seguridad als en general. En todo el capítulo, hemos arrojado luz sobre las medidas de seguridad básicas que puede implementar para proteger su sistema Linux de usuarios malintencionados, como piratas informáticos o empleados descontentos.