750 likes | 932 Views
WALC 2011 Track 6. Seguridad Informática. Principios de seguridad en Linux. José F. Torres M. Universidad de Los Andes Merida, Venezuela. 14/09/11. Principios de seguridad en Linux. 1. Agenda. Sistemas de archivos Sistema de Bitácoras (Logs) Control de acceso de red
E N D
WALC 2011 Track 6. Seguridad Informática Principios de seguridad en Linux José F. Torres M. Universidad de Los Andes Merida, Venezuela 14/09/11 Principios de seguridad en Linux 1
Agenda Sistemas de archivos Sistema de Bitácoras (Logs) Control de acceso de red Técnicas de autentificación Cortafuegos de host Protección de conexiones de red Sistema de detección de intrusos de Host IDSH SELinux Pruebas y monitoreo del sistema Pasos básicos para mantener sus sistema seguro 14/09/11 Principios de seguridad en Linux 2
Sistemas de archivos 14/09/11 Principios de seguridad en Linux 3
1 Sistemas de archivos • El sistema de archivo representa la primera línea básica de defensa. • Una norma básica de seguridad radica en la asignación a cada usuario sólo de los permisos necesarios para poder cubrir las necesidades de su trabajo sin poner en riesgo el trabajo de los demás. 14/09/11 Principios de seguridad en Linux 4
1 Sistemas de archivos • Riesgos • Dentro del sistema Linux todo son archivos: desde la memoria física del equipo, hasta todos los periféricos • Un simple error en un permiso puede permitir a un usuario modificar todo el disco duro, o leer los datos tecleados desde una Terminal etc. 14/09/11 Principios de seguridad en Linux 5
1 Sistemas de archivos • El sistema de archivos es la parte del núcleo (Kernel) mas visible por los usuarios; se encarga de abstraer propiedades físicas de los diferentes dispositivos para proporcionar una interfaz única de almacenamiento: el archivo. • Cada sistema Linux tiene su sistema de archivos nativo. (ejemplo ext4, raiserFS, etc.) 14/09/11 Principios de seguridad en Linux 6
1 Sistemas de archivos • Un primer criterio para mantener un sistema seguro es una correcta distribución del espacio de almacenamiento. • Esto limita el riesgo de que el deterioro de una partición afecte a todo el sistema. La pérdida se limitaría al contenido de esa partición. 14/09/11 Principios de seguridad en Linux 7
1 Sistemas de archivos • Tamaño de las particiones • No hay unas normas generales aplicables; el uso al que vaya destinado el sistema y la experiencia son las bases de la decisión adecuada, aunque por lo general se recomienda: • Si el sistema va a dar servicio a múltiples usuarios que requieren almacenamiento para sus datos es conveniente que el directorio /home tenga su propia partición. • Si el equipo va a ser un servidor el directorio /var o incluso /var/spool deberían tener su propia partición. 14/09/11 Principios de seguridad en Linux 8
1 Sistemas de archivos • Tamaño de las particiones (continuación) • Debe dimensionar cuidadosamente la partición raíz. • El directorio /usr/local contiene los programas compilados e instalados por el administrador. Resulta conveniente usar una partición propia para proteger estos programas personalizados de futuras actualizaciones del sistema. Este criterio también se puede aplicar al directorio /opt. 14/09/11 Principios de seguridad en Linux 9
1 Sistemas de archivos • Montaje de las particiones • Permita los mínimos privilegios en las opciones de montado de las particiones • Noexec donde sea posible • Nodev en todas las particiones excepto en la raiz y en las particiones enjauladas (chroot) • Nosetuid donde sea posible excepto en la raiz 14/09/11 Principios de seguridad en Linux 10
1 Sistemas de archivos • Montaje de las particiones • auto - Mount automatically at boot, or when the command mount -a is issued. • noauto - Mount only when you tell it to. • exec - Allow execution of binaries on the filesystem. • noexec - Disallow execution of binaries on the filesystem. • ro - Mount the filesystem read-only. • rw - Mount the filesystem read-write. • nodev - Don't interpret block special devices on the filesystem. 14/09/11 Principios de seguridad en Linux 11
1 Sistemas de archivos • Montaje de las particiones • suid - Allow the operation of suid, and sgid bits. They are mostly used to allow users on a computer system to execute binary executables with temporarily elevated privileges in order to perform a specific task. • nosuid - Block the operation of suid, and sgid bits. • defaults - the default mount options for the filesystem to be used. The default options for ext3 are: rw, suid, dev, exec, auto, nouser, async 14/09/11 Principios de seguridad en Linux 12
1 Sistemas de archivos • Un ejemplo de las banderas de montaje • # <file system> <mount point> <type> <options> <dump> <pass> • proc /proc proc defaults 0 0 • /dev/sda2 / ext3 errors=remount-ro 0 1 • /dev/sda1 /boot ext3 defaults,nosuid,noexec,nodev 0 2 • /dev/sda5 /home ext3 defaults,nosuid,nodev 0 2 • /dev/sda11 /opt ext3 defaults 0 2 • /dev/sda9 /tmp ext3 defaults,bind,nosuid,noexec,nodev 0 2 • /dev/sda6 /usr ext3 defaults,ro,nodev 0 2 • /dev/sda10 /usr/local ext3 defaults 0 2 • /dev/sda7 /var ext3 defaults,nosuid 0 2 • /dev/sda8 /var/log ext3 defaults,nosuid,noexec,nodev 0 2 14/09/11 Principios de seguridad en Linux 13
1.1 Protección de archivos • Permisos de un archivo • Los permisos de cada archivo son la protección mas básica de estos objetos del sistema operativo; definen quien puede acceder a cada uno de ellos, y de que forma puede hacerlo. Cuando hacemos un ls -l podemos ver sus permisos junto al tipo de archivo correspondiente, en la primera columna de cada línea: user:~# ls -l texto.txt -rw-r--r-- 1 user electric 512 Aug 3 2011 texto.txt 14/09/11 Principios de seguridad en Linux 14
1.1 Protección de archivos • Permisos de un archivo (continuación) • Propiedad: • Qué usuario y grupo posee el control de los permisos del i-nodo. Se almacenan como dos valores numéricos, el uid (user id) y gid (group id). • Permisos: • Bits individuales que definen el acceso a un Archivo o directorio. Los permisos para directorio tienen un sentido diferente a los permisos para Archivos. Más abajo se explican algunas diferencias. 14/09/11 Principios de seguridad en Linux 15
1.1 Protección de archivos • Permisos de un archivo (continuación) • Lectura (r): • Archivo: Poder acceder a los contenidos de un Archivo • Directorio: Poder leer un directorio, ver qué Archivos contiene • Escritura (w): • Archivo: Poder modificar o añadir contenido a un Archivo • Directorio: Poder borrar o mover Archivos en un directorio 14/09/11 Principios de seguridad en Linux 16
1.1 Protección de archivos • Permisos de un archivo (continuación) • Ejecución(x): • Archivo: Poder ejecutar un programa binario o guión de shell • Directorio: Poder entrar en un directorio 14/09/11 Principios de seguridad en Linux 17
1.1 Protección de archivos • Permisos de un archivo (continuación) • Adicionalmente existe los “sticky bits” para el SUID, SGID estos nos conceden permisos especiales. • El SUID se muestra como una s en la columna de ejecución de propietario, y nos permite ejecutar ese archivo como el propietario del mismo. • El SGID aparece en la columna de ejecución del grupo, y nos permite ejecutar ese archivo como el parte del grupo al cual pertenece el mismo • ls -lah /usr/bin/passwd • -rwsr-xr-x 1 root root 31K 2011-10-14 10:11 /usr/bin/passwd 14/09/11 Principios de seguridad en Linux 18
1.1 Protección de archivos • Permisos de un archivo (continuación) • Atributos de un archivo • En el sistema de archivos de Linux existen ciertos atributos para los archivos que pueden ayudar a incrementar la seguridad de un sistema. Estos atributos son: 14/09/11 Principios de seguridad en Linux 19
1.1 Protección de archivos 14/09/11 Principios de seguridad en Linux 20
1.2 Listas de control de acceso • Listas de control de acceso (ACLs Access Control Lists) • Las ACL proveen de un nivel adicional de seguridad a los archivos extendiendo el clásico esquema de permisos en Unix • Las ACLs van a permiten asignar permisos a usuarios o grupos concretos; por ejemplo, se pueden otorgar ciertos permisos a dos usuarios sobre unos archivos sin necesidad de incluirlos en el mismo grupo. • No todos los sistemas de archivos las soportan. • Las banderas de montaje se deben cambiar para poder usarlas. 14/09/11 Principios de seguridad en Linux 21
1.3 Almacenamiento seguro • Cifrado de archivos: • GnuPG: Gnu Privacy Guard • TCFS: Transparent Cryptographic File System • Cryptographic File System CFS • TrueCrypt • OpenSSL • EncFS • Cryptoloop • Loop-AES • Crypto-FS 14/09/11 Principios de seguridad en Linux 22
Sistema de Bitácoras (Logs) 14/09/11 Principios de seguridad en Linux 23
2 Sistema de Bitácoras • El sistema de bitácoras de Linux permite registrar, casi todos los eventos que ocurren en el sistema. • Las bitácoras pueden ser utilizadas para detectar actividades sospechosas en el sistema. • Las bitácoras pueden ser almacenadas de forma local o remota. • Estas por lo general son llevadas por el demonio syslog 14/09/11 Principios de seguridad en Linux 24
2 Sistema de Bitácoras • El demonio syslog (syslogd o syslog-ng) • El demonio syslogd es el encargado de recolectar los datos de los eventos del sistema y demás actividades dependiendo de su archivo de configuración (/etc/syslogd.conf o /etc/syslog-ng/syslog-ng.conf ). • Los logs creados por el syslog son comúnmente usado por los IDS-Host • Los archivos de salida del syslog son en texto plano lo cual facilita su visualización • Los archivo de logs se encuentran por lo general en /var/logs/ • Todas las entradas que presenta syslog tienen como mínimo una fecha y una hora, el nombre de la maquina y del programa que generó el evento. 14/09/11 Principios de seguridad en Linux 25
2 Sistema de Bitácoras • Existen diferentes tipos de archivos de log dependiendo de la información. Por ejemplo, existe un archivo de log del sistema, un archivo de log para los mensajes de seguridad y un archivo de log para las tareas cron. • Los logs del sistema deben ser rotados periódicamente para poder disminuir su tamaño • Los logs pueden ser comprimidos • Los parámetros y la cantidad de logs que se guardan en el sistema dependerán en parte de la capacidad de los discos duros. 14/09/11 Principios de seguridad en Linux 26
2 Sistema de Bitácoras • Archivos de logs mas comunes: • /var/log/syslog: es el archivo de log mas importante del sistema; en el se guardan mensajes relativos a la seguridad de la maquina, como los accesos o los intentos de acceso a ciertos servicios. No obstante, este archivo es escrito por syslogd, por lo que dependiendo de nuestro archivo de configuración encontraremos en el archivo una u otra información. 14/09/11 Principios de seguridad en Linux 27
2 Sistema de Bitácoras • Archivos de logs mas comunes: (continuación) • /var/log/messages : En este archivo se almacenan datos ’informativos’ de ciertos programas, mensajes de baja o media prioridad destinados mas a informar que a avisar de sucesos importantes, como información relativa al arranque de la maquina. 14/09/11 Principios de seguridad en Linux 28
Control de acceso de red 14/09/11 Principios de seguridad en Linux 29
3 Control de acceso de red • Inetd • En las primeras versiones de Unix, para hacer funcionar un servicio de red se ejecutaban programas diferentes que atendían a cada uno. Al crecer el número de servicios que se necesitaban, se optó por una mejor idea, se empezó a utilizar un sólo demonio llamado /etc/inetd (El daemon de Internet). Este programa escuchaba en varios puertos a la vez y ejecutaba los servidores que se necesitaran en el momento en que se recibía la petición de conexión. 14/09/11 Principios de seguridad en Linux 30
3 Control de acceso de red • Inetd como funciona • Cuando un host cliente intenta conectarse a un servicio de red controlado por inetd, el súper servicio recibe la petición y verifica por cualquier regla de control de acceso wrappers TCP. • Si se permite el acceso, inetd verifica que la conexión sea permitida bajo sus propias reglas para ese servicio y que el servicio no esté consumiendo más de la cantidad de recursos o si está rompiendo alguna regla. Luego comienza una instancia del servicio solicitado y pasa el control de la conexión al mismo. • Una vez establecida la conexión, inetd no interfiere más con la comunicación entre el host cliente y el servidor. 14/09/11 Principios de seguridad en Linux 31
3 Control de acceso de red • TCP wrappers • El wrappers TCP proporciona control de acceso basado en host a los servicios de red. El componente más importante dentro del paquete es la librería /usr/lib/libwrap.a. En términos generales, un servicio wrappers TCP es uno que ha sido compilado con la librería libwrap.a. • Cuando un intento de conexión es hecho a un servicio wrapped TCP, el servicio primero referencia los archivos de acceso de host (/etc/hosts.allow y /etc/hosts.deny) para determinar si el cliente tiene permitido conectarse. Luego utiliza el demonio syslog (syslogd) para escribir el nombre del host solicitante y el servicio solicitado a /var/log/secure o /var/log/messages. 14/09/11 Principios de seguridad en Linux 32
3 Control de acceso de red • TCP wrappers • Si a un cliente se le permite conectarse, los TCP wrappers liberan el control de la conexión al servicio solicitado y no interfieren más con la comunicación entre el cliente y el servidor. • Además del control de acceso y registro, los TCP wrappers pueden activar comandos para interactuar con el cliente antes de negar o liberar el control de la conexión al servicio solicitado. • Puesto que los TCP wrappers son una utilidad de gran valor a las herramientas de seguridad de cualquier administrador de servidor. Algunas de los demonio que utilizan TCP wrappers son /usr/sbin/sshd, /usr/sbin/sendmail, y /usr/sbin/inetd. 14/09/11 Principios de seguridad en Linux 33
3 Control de acceso de red • TCP wrappers (ejemplo) • /etc/hosts.allow • sshd: 192.168.1.0/255.255.255.0 • /etc/hosts.deny • ALL: ALL: SPAWN ( \ • echo -e "\n\ • TCP Wrappers\: Connection refused\n\ • By\: $(uname -n)\n\ • Process\: %d (pid %p)\n\ • User\: %u\n\ • Host\: %c\n\ • Date\: $(date)\n\ • " | /usr/bin/mail -s "Connection to %d blocked" root) & 14/09/11 Principios de seguridad en Linux 34
Técnicas de autentificación 14/09/11 Principios de seguridad en Linux 35
4 Técnicas de autentificación • Método clásico • Uso del archivo /etc/passwd • El problema una atacante podría tratar de romper la contraseña, aunque esto es poco probable, el atacante cifrara una palabra junto a un determinado salt, y comparar el resultado con la cadena almacenada en el archivo de claves. 14/09/11 Principios de seguridad en Linux 36
4 Técnicas de autentificación • Método clásico • De esta forma, un atacante puede leer el archivo /etc/passwd y mediante un programa “crackeador” como Crack o John the Ripper cifrará todas las palabras de un archivo denominado diccionario, comparando el resultado obtenido en este proceso con la clave cifrada del archivo de contraseñas; si ambos coinciden, ya ha obtenido una clave para acceder al sistema de forma no autorizada 14/09/11 Principios de seguridad en Linux 37
4 Técnicas de autentificación • Shadow Password • La idea básica de este mecanismo es impedir que los usuarios sin privilegios puedan leer el archivo donde se almacenan las claves cifradas. En equipos con /etc/shadow el archivo /etc/passwd sigue siendo legible para todos los usuarios, pero a diferencia del mecanismo tradicional, las claves cifradas no se guardan en él, sino en el archivo /etc/shadow, que sólo el root puede leer. 14/09/11 Principios de seguridad en Linux 38
4 Técnicas de autentificación • Shadow Password • El aspecto de /etc/shadow es en cierta forma similar al de /etc/passwd que ya hemos comentado: existe una línea por cada usuario del sistema, en la que se almacena su login y su clave cifrada. Sin embargo, el resto de campos de este archivo son diferentes; corresponden a información que permite implementar otro mecanismo para proteger las claves de los usuarios. 14/09/11 Principios de seguridad en Linux 39
4 Técnicas de autentificación • Claves de un solo uso (one time password) • Tokens de hardware • Autentificación por medio de llaves 14/09/11 Principios de seguridad en Linux 40
4 Técnicas de autentificación • Sistemas de autentificación de red centralizadas • LDAP • Kerberos • Radius • Nis+ 14/09/11 Principios de seguridad en Linux 41
4 Técnicas de autentificación • Otras métodos de autentificación • PAM (Pluggable Authentication Module) • PAM no es un modelo de autenticación en sí, sino que se trata de un mecanismo que proporciona una interfaz entre las aplicaciones de usuario y diferentes métodos de autenticación, tratando de esta forma de solucionar uno de los problemas clásicos de la autenticación de usuarios 14/09/11 Principios de seguridad en Linux 42
4 Técnicas de autentificación • PAM • Mediante PAM podemos comunicar a nuestra aplicaciones con los métodos de autenticación que deseemos de una forma transparente, lo que permite integrar las utilidades de un sistema Unix clásico (login, ftp, telnet...) con esquemas diferentes del habitual password: claves de un solo uso, biométricos, tarjetas inteligentes... 14/09/11 Principios de seguridad en Linux 43
4 Técnicas de autentificación • PAM • El PAM también se puede utilizar para modificar como se almacenan las contraseñas y cambiar parámetro tales como: tamaño mínimo o máximo, reusó de contraseñas, tiempo de vencimiento, entre otros. • Por ejemplo • password required pam_unix.so nullok obscure min=6 max=11 md5 14/09/11 Principios de seguridad en Linux 44
Protección de conexiones de red 14/09/11 Principios de seguridad en Linux 45
5 Protección de conexiones de red • Para proteger las conexiones de red Linux puede usar herramientas y protocolos tales como tales como: • Ssh, tuneles • Ipsec • CIPE • Vtun • PKI • OpenVPN • FreeS/WAN • Stunnel 14/09/11 Principios de seguridad en Linux 46
Cortafuegos de host 14/09/11 Principios de seguridad en Linux 47
6 Cortafuegos de host • Utilice políticas por omisión tales como: • Para iptables: • iptables -P INPUT DROP • iptables -P OUTPUT DROP • iptables -P FORWARD DROP • Para iptables en IPv6: • ip6tables -P INPUT DROP • ip6tables -P OUTPUT DROP • ip6tables -P FORWARD DROP 14/09/11 Principios de seguridad en Linux 48
14/09/11 Principios de seguridad en Linux 49
6 Cortafuegos de host • También puede utilizar paquetes tales como: • Firestarter • Shorewall • TuxFrw • KmyFirewall • knetfilter 14/09/11 Principios de seguridad en Linux 50