Debido a una operación de mantenimiento, el acceso al sitio web de Ediciones ENI estará interrumpido a primera hora del martes 10 de diciembre. Le invitamos a anticipar sus compras. Lamentamos las molestias ocasionadas.
Debido a una operación de mantenimiento, el acceso al sitio web de Ediciones ENI estará interrumpido a primera hora del martes 10 de diciembre. Le invitamos a anticipar sus compras. Lamentamos las molestias ocasionadas.
  1. Libros
  2. Linux
  3. La seguridad
Extrait - Linux Preparación a la certificación LPIC-1 (exámenes LPI 101 y LPI 102) - [6ª edición]
Extractos del libro
Linux Preparación a la certificación LPIC-1 (exámenes LPI 101 y LPI 102) - [6ª edición] Volver a la página de compra del libro

La seguridad

Requisitos previos y objetivos

1. Requisitos previos

Haber adquirido los conocimientos necesarios sobre la red del capítulo La Red.

Haber adquirido los conocimientos necesarios sobre la administración del capítulo Tareas Administrativas.

Tener acceso de administrador root.

Estar conectado a una red.

Si es posible, ser capaz de probar el acceso desde otra máquina de la red.

2. Objetivos

Al final de este capítulo, será capaz de:

Dominar los conceptos básicos de seguridad.

Controlar los permisos SUID/SGID.

Comprobar la integridad de un sistema de paquete de software.

Modificar la política de contraseñas.

Administrar las conexiones y los límites de los usuarios.

Probar las contraseñas.

Controlar la seguridad de la red con nmap.

Desactivar los servicios innecesarios.

Garantizar la seguridad de los servicios con los TCP wrappers.

Aspectos básicos de la seguridad

Los principales objetivos de la seguridad informática son:

  • Seguridad de la conexión: consiste en comprobar que los usuarios que se conectan pueden hacerlo y denegarles el acceso al sistema en caso contrario.

  • Integridad de los datos: garantizar que los archivos y las bases de datos no se corrompan y mantener la coherencia entre los datos.

  • Confidencialidad de los datos: el acceso a los datos para su consulta y modificación debe limitarse únicamente a los usuarios autorizados.

Para hacer esto, Linux cuenta con varias funcionalidades, entre las que destacan:

  • la identificación de los usuarios mediante una cuenta de usuario definida por un nombre de usuario y su UID,

  • la autenticación de usuarios mediante contraseña,

  • el cifrado de datos,

  • los módulos PAM (Pluggable Authentication Modules), que permiten configurar y aplicar métodos de identificación y autenticación.

La activación de SELinux, el módulo de seguridad del kernel, aumenta significativamente la seguridad del sistema, pero a costa de aumentar la complejidad de la configuración.

De manera más general, los siguientes aspectos ayudan a fortalecer la seguridad de los sistemas Linux:

  • control frecuente de los permisos de acceso a archivos y bases de datos,

  • control de acceso a servidores y software,

  • comprobación de las “checksum” de los archivos para garantizar su integridad,

  • copia de seguridad periódica de los datos,

  • auditoria de los principales eventos del sistema,

  • instalación de firewalls que controlan el acceso al sistema informático desde el exterior y limitan el acceso a servicios externos,

  • uso de firewalls de aplicaciones, para analizar flujos de datos (por ejemplo, para detectar ataques a servidores web),

  • uso de herramientas de detección y prevención de intrusiones (mediante la correlación de trazas) y la prohibición de direcciones o personas implicadas,

  • uso de bastiones, para un mejor filtrado y seguimiento de los accesos,

  • desactivación de los servicios innecesarios en el servidor y en el cliente.

1. Controlar los permisos especiales SUID y SGID

Los permisos especiales (bits SUID y SGID) pueden suponer un riesgo para la seguridad del sistema. Un usuario malintencionado se puede aprovechar del acceso temporal o malicioso al sistema como administrador root o miembro del grupo root, puede modificar...

Seguridad de servicios y redes

Normalmente, se accede a los servicios de red del servidor de un sistema desde otros sistemas. Estos servicios pueden tener fallos de seguridad, por lo que es importante habilitar solo lo que sea realmente esencial y controlar su actividad.

1. Comprobar puertos abiertos

Se pueden usar varios comandos para saber qué puertos están esperando en qué servicios de red.

a. Información de netstat

El comando netstat, descrito en el capítulo La red, proporciona información y estadísticas de red sobre el sistema local. En concreto, permite identificar los puertos a los que están accediendo los servicios, las conexiones que se están usando y los procesos locales que están escuchando.

Sintaxis

netstat -apnt -A inet 

Con:

  • -a: conexiones activas o en espera en un puerto

  • -p: muestra el proceso local (PID, ejecutable)

  • -n: muestra los valores numéricos en lugar de los nombres

  • -t: protocolo de transporte TCP

  • -A inet: solo conexiones IPv4

Ejemplo

# netstat -apnt -A inet  
Conexiones a Internet activas (servidores y establecidos)  
Proto Recv-Q Send-Q Dirección local     Dirección remota     Estado      PID/Program name 
tcp        0      0 127.0.0.1:25        .0.0.0:*             LISTEN      999/exim4  
tcp        0      0 0.0.0.0:22          0.0.0.0:*            LISTEN      622/sshd: /usr/sbin 
tcp        0      0 0.0.0.0:631         0.0.0.0:*            LISTEN      655/cupsd  
tcp        0    208 192.168.1.140:22    192.168.1.142:65008  ESTABLISHED 2067/sshd: root@pts 
tcp        0      0...

Validación de los conocimientos adquiridos: preguntas/respuestas

1. Preguntas

Si cree conocer suficientemente este capítulo, conteste a las siguientes preguntas:

Seguridad local

1 ¿Por qué es importante controlar los permisos SUID y SGID de los archivos ejecutables?

2 Especifique una línea de comandos para buscar y mostrar información detallada sobre los archivos ordinarios en /usr que son propiedad de root y tienen permisos SUID.

3 Un archivo del paquete de software rpm bash parece no ser correcto. El resultado de la comprobación RPM muestra .M... T /bin/bash. ¿Qué ha pasado?

4 ¿Cómo se comprueba la información de la contraseña de user?

  • A - chage -l user

  • B - passwd -l user

  • C - grep ^user /etc/shadow

  • D - passwd -S user

5 Genere seis contraseñas aleatorias con una longitud de 8 caracteres.

6 El usuario ftponly no debe poder iniciar sesión de forma interactiva. ¿Qué comando puede escribir para cambiar su shell de inicio de sesión en consecuencia?

7 ¿Cómo se bloquea cualquier nueva conexión interactiva, que no sea root?

  • A - pasando al nivel de ejecución init 1.

  • B - modificando todos los shells de conexión a /bin/false.

  • C - bloqueando todos los terminales a través de /etc/securetty.

  • D - creando el archivo /etc/nologin.

8 ¿Cómo evita que los usuarios creen demasiados procesos?

9 ¿Cómo conservar durante el arranque las reglas de ulimit?

  • A - creando un script ejecutado por init.

  • B - modificando /etc/security/limits.conf.

  • C - modificando el archivo /etc/profile con una serie de ulimit.

  • D - modificando el archivo ~/.bashrc de los usuarios y el de /etc/skel.

Seguridad de la red

10 ¿Cómo se puede saber qué puertos están abiertos y qué conexiones están activas en una máquina?

11 ¿Para qué sirve el comando nmap?

  • A - Proporciona un adaptador de red.

  • B - Comprueba los puertos remotos de una máquina en la red.

  • C - Para obtener información de seguridad sobre una máquina en la red.

  • D - Para conocer el sistema operativo de una máquina remota.

12 ¿Cómo se puede hacer un mal uso de la información...

Prácticas

1. Control de archivos

Objetivo: controlar los archivos y los permisos asociados.

1.

Muestre la lista de los archivos del sistema que pertenecen a root y tienen el SUID bit establecido.

Soluciones posibles

Objetivo: controlar los archivos y los permisos asociados.

1.

Muestre la lista de los archivos del sistema que pertenecen a root y tienen el SUID bit establecido.

# find / -user root -perm -4000 2>/dev/null  
/usr/sbin/pppd  
/usr/sbin/exim4  
/usr/bin/umount  
/usr/bin/newgrp  
/usr/bin/passwd  
/usr/bin/fusermount3  
/usr/bin/mount  
/usr/bin/chfn  
/usr/bin/sudo  
/usr/bin/su  
/usr/bin/ntfs-3g  
/usr/bin/chsh  
/usr/bin/pkexec  
/usr/bin/gpasswd  
/usr/lib/polkit-1/polkit-agent-helper-1  
/usr/lib/dbus-1.0/dbus-daemon-launch-helper  
/usr/lib/xorg/Xorg.wrap  
/usr/lib/openssh/ssh-keysign 

2. Seguridad de los usuarios

Objetivo: gestionar la política de seguridad de las contraseñas de los usuarios.

1.

Establecer una política de seguridad de las contraseñas para todos los futuros usuarios: cambiar la contraseña cada 40 días, prohibir cambiar la contraseña antes de que transcurran 7 días y avisar 10 días antes de que venza la contraseña.

Soluciones posibles

Objetivo: gestionar la política de seguridad de las contraseñas de los usuarios.

1.

Establecer una política de seguridad de las contraseñas para todos los futuros usuarios: cambiar la contraseña cada 40 días, prohibir cambiar la contraseña antes de que transcurran 7 días y avisar 10 días antes de que venza la contraseña.

En el archivo /etc/login.defs:

PASS_MAX_DAYS 40  
PASS_MIN_DAYS 7  
PASS_WARN_AGE 10 

Para realizar la comprobación:

# useradd pba1  
# chage -l  pba1  
Última modificación de la contraseña: agosto 08, 2023  
La contraseña expira: sept. 17, 2023  
Contraseña activa: nunca  
La cuenta expira: nunca 
Número mínimo de días entre dos cambios de contraseña: 7  
Número máximo de días entre dos cambios de contraseña: 40  
Número de días de advertencia...