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.
|
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:
Para realizar la comprobación:
|