La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Seguridad en equipos Linux Sergio A. Becerril SSI / UNAM-CERT.

Presentaciones similares


Presentación del tema: "Seguridad en equipos Linux Sergio A. Becerril SSI / UNAM-CERT."— Transcripción de la presentación:

1 Seguridad en equipos Linux Sergio A. Becerril SSI / UNAM-CERT

2 ¿Para quién es este taller? Administradores de sistemas UNIX/Linux Usuarios de sistemas UNIX/Linux con alguna experiencia Entusiastas de la seguridad informática

3 Temario Usuarios y grupos Permisos sudo Minimización de servicios Firewall Apache MySQL ssh Monitoreo

4 Qué *no* se verá en el taller Minimización de paquetes Centralización de configuraciones Esquemas distribuidos/balanceados HIDS Análisis de bitácoras _________ a fondo …

5 USUARIOS Y GRUPOS Seguridad en equipos Linux

6 Conceptos básicos Archivos /etc/passwd-- No relativo a la contraseña /etc/shadow-- Relativo a la contraseña /etc/group-- Relaciones grupo(s)/usuario(s) Superficie de ataque Menos usuarios es mejor Contraseñas seguras Más (caracteres/clases) es mejor

7 Manejo de cuentas Desplegar info passwd -S [cuenta] chage –l Acción inmediata Expirar pw:passwd -e Deshabilitar pw:passw -l | usermod -L Deshabilitar cuenta:usermod -e 1 Implementación de políticas passwd (-n, -x, -w, -i) usermod (-e, -f, -s) chage

8 Manejo de cuentas /etc/passwd usuario:pw:uid:default gid:desc:home:shell /etc/shadow usuario:[!]pw:ultimoCambio * :min:max:warn:gracia:dis * : ( * días desde 1970) /etc/group grupo:pw:gid:usuario[,usuario…]

9 Contraseñas ¿Qué es una contraseña segura? Pensemos en más vulnerable o menos vulnerable Vulnerabilidades de las contraseñas Ataques de diccionario (ya obtenido un shadow, p.ej.) Ataques de fuerza bruta (ya obtenido un shadow, p.ej.) Post-it

10 passwdqc Implementa (algunas) políticas de contraseña Fácil configuración: [config=ARCHIVO] min=N0,N1,N2,N3,N4 max=# passphrase=# match=# similar=permit|deny random=#[,only] enforce=none|users|everyone [non-unix] retry=# [ask_oldauthtok[=update] | use_first_pass] [check_oldauthtok] [use_authtok]

11 PERMISOS Seguridad en equipos Linux

12 Conceptos básicos Objetivo: mínimo privilegio necesario Al César lo que es del César… y ni un denario más Todo archivo en UNIX tiene permisos rwx r-x r-x carácter usuario grupo otros octal Modificación de permisos: chmod [opts]

13 SetUID, SetGID Bits para controlar archivos ejecutables Permiten la ejecución con los privilegios del usuario o grupo dueño, respectivamente. chmod [4|2]xxx | [u|g]+s

14 Permisos sobre directorios Lectura Permite listar archivos en el directorio Ejecución Permite leer archivos en el directorio SetGID Los archivos creados en el directorio tendrán de grupo el del directorio (no el del creador). Los subdirectorios heredarán el bit SetGID. *SetUID no tiene interpretación en directorios en Linux

15 Sticky bit En Linux solo aplica a directorios Para todos los archivos dentro del directorio, solo su dueño (y el dueño del directorio) pueda renombrarlo o borrarlo.

16 umask Establece permisos predeterminados para el proceso en el que se ejecuta. Incrustado en archivos de inicio de sistema, afecta los permisos predeterminados globales. umask

17 Escrito simbólicamente, funciona como guía Define qué permite umask u=rwx,g=rx,o=rx Escrito en octal, funciona como filtro Define qué impide umask 22

18 SUDO Seguridad en equipos Linux

19 Conceptos básicos Delegación de privilegios sin root Modalidad con y sin contraseña Last match and exit Terriblemente desperdiciado

20 sudoers Archivo de configuración (usualmente bajo /etc) Sintaxis básica: aliases (listas), defaults (opciones) y especificaciones (quién puede hacer qué) La sintaxis del man… no ayuda mucho.

21 Aliases De usuario: nombres, #uid, %grupos, %#gid, … De runas (identidades asumidas): ib. De hosts: hostname, dirección IP, red, … De comando: comando *, directorio, sudoedit * Con parámetros, parámetros opcionales, o forzando sin parámetros Todos los elementos de los aliases soportan negación (!) y se separan con coma

22 Defaults host_list] [ : user_list] [ ! cmd_list] [ > runas_list] parámetro [+|-]=valor[,parámetro…] !parámetro ¿Qué parámetros (opciones de configuración) hay? Más de 100 (consultar documentación, sudo options)

23 Especificaciones user_list host_list = cmd_SPEC_LIST [: host_list = cmd_SPEC_LIST] ellos aquí pueden… … y también… Esto implica que podemos tener especificaciones para el mismo usuario en diferentes hosts. sudo no es centralizable *, pero sí podemos utilizar el mismo archivo en múltiples equipos. * Excepto bajo LDAP

24 …¿y qué es el cmd_SPEC_LIST? Uno o más cmd_SPEC (separados por comas), que a su vez definen los comandos… y otros detalles cmd_SPEC: [(runas_list[:runas_list])] [tag:[tag...]] cmd_list El (opcional) segundo runas_list se utiliza para hacer sudo de grupo Hay ocho tags: NOPASSWD, PASSWD, NOEXEC, EXEC, SETENV, NOSETENV, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT y NOLOG_OUTPUT

25 Conjuntando… user_list host_list = [(runas_list[:runas_list])] [tag:[tag...]] cmd_list ellos aquí como ellos de esta manera pueden… [,[(runas_list[:runas_list])] [tag:[tag...]] cmd_list …] y también… como ellos de esta manera pueden… La sintaxis completa es muy compleja Desmenuzando, es más sencilla ¡Y aún faltaron más opciones!

26 Ejemplos sergioALL = (ALL) NOPASSWD:ALL El usuario sergio puede ejecutar todos los comandos en todos los equipos con privilegios de root, sin necesidad de escribir su contraseña (!) sergiokuechenberg = vi El usuario sergio puede ejecutar vi en kuechenberg con privilegios de root, previa introducción correcta de su contraseña (!!) sergio kuechenberg = (www-data) vi, (root) NOPASSWD:less,cat El usuario sergio puede ejecutar vi en kuechenberg con privilegios de www-data, previa introducción correcta de su contraseña; además puede ejecutar less y cat (también en kuechenberg) con privilegios de root, sin necesidad de escribir su contraseña (…)

27 No es lo mismo… sergio kuechenberg = (www-data) vi, (root) NOPASSWD:less,cat sergio kuechenberg = (www-data) vi : buoniconti = (root) NOPASSWD:less,cat

28 MINIMIZACIÓN DE SERVICIOS Seguridad en equipos Linux

29 Conceptos básicos ¿Sabes realmente qué está ejecutándose en tu equipo? Superficie de ataque Mientras más procesos, más lugares donde picar Los sysadmins también son personas Mientras más procesos, más difícil reconocer irregularidades

30 Baseline Un estado normal con el cuál comparar O también, un estado ideal al cual llegar Mucho más sencillo desde cero a producción, que viceversa. Puede estar predefinido Políticas Estándares Post-its del sysadmin anterior

31 De producción al nirvana ¿Qué estamos ejecutando? RedHat (y variantes): chkconfig Todos los demás: netstat -natp ps -fea find -name S* /etc/rc`runlevel`.d/ Más tiempo en producción – menos confiabilidad

32 Eliminar servicios innecesarios RedHat chkconfig Todos los demás: insserv rm /etc/rc#.d/S## /bin/kill -s 15, /bin/kill -s 2 /bin/kill -s 9

33 FIREWALL Seguridad en equipos Linux

34 Conceptos básicos Buena idea en general, indispensable en servidores Cuidar las entradas, pero también las salidas Tres tipos básicos: de paquetes, de estado, de contenido

35 iptables Disponible en *todas* las distribuciones de Linux Permite modificar las reglas del firewall del kernel (i.e. iptables no es un firewall) Establece tablas de cadenas de reglas de filtrado

36 Breviario TCP/IP

37 Esquema completo

38 Simplificado En la entrada, prerouting tiene prioridad * En la salida, postrouting siempre se ejecuta al final * Excepto sobre conntrack

39 Conntrack Convierte a iptables en un firewall de estado (-m state …) Monitorea solo ciertos protocolos Depende de módulos de kernel (usualmente, pero no siempre, montados de fábrica)

40 Sintaxis /ruta/a/iptables [-t tabla] raw, mangle, filter, nat, Add, Delete, Insert, Policy *, … prerouting (raw, mangle, nat); input (mangle, filter); forward (mangle, filter); output (todas); postrouting (mangle, nat) [especificación] * en regla especificar ACCEPT o DENY

41 Reglas Especificación Define el paquete de interés [-s origen] [-d destino] [-p proto] [-i int. ent.] [-o int. sal.] [--sport pto. ent.] [--dport pto. sal.] [-m …] Acción Define el comportamiento del firewall, de coincidir el tráfico observado con la especificación [ | ]

42 APACHE Seguridad en equipos Linux

43 Conceptos básicos Más del 60% de sitios web 90%+ en Linux Soporta múltiples CGI, módulos Amplia superficie de ataque Compleja configuración httpd.conf, apache2.conf, sites-enabled, …

44 Niveles de configuración Generales httpd.conf De sitio … Usualmente, sites-enabled/sitio De carpeta Archivos.htaccess Requiere AllowOverride en VirtualHost

45 Configuraciones útiles ServerName UseCanonicalName on ServerSignature off ServerTokens Prod Order allow, deny Deny from all …

46 Configuraciones útiles Options -Indexes -FollowSymlinks … Order Allow, Deny Allow from … Deny from… Order Deny, Allow Deny from…

47 MYSQL Seguridad en equipos Linux

48 Conceptos básicos Parte esencial de LAMP MySQL != phpMyAdmin Rápido, escalable, comercial Usualmente, solo requiere localhost

49 my.cnf -- [mysqld] bind-address= Deshabilita acceso remoto set-variable=local-infile=0 Deshabilita lectura a archivos log =/var/log/mylogfile Habilita bitácoras

50 Renombrar root mysql> RENAME USER root TO new_user; (5.0.2+) mysql> use mysql; mysql> update user set user="new_user" where user="root"; mysql> flush privileges; (inferiores)

51 Más tips mysql> use mysql; mysql> select * from users; mysql> show grants for mysql> drop database test; mysql> select * from mysql.user where user=""; Si no regresa vacío: mysql> DROP USER ";

52 SSH Seguridad en equipos Linux

53 Tips (muy breves!) Deshabilitar acceso root Cambiar puerto 22 Usar llaves privadas (con ssh-agent) Deshabilitar port forwarding

54 MONITOREO Seguridad en equipos Linux

55 Más tips! Bitácora no monitoreada = bitácora inútil No te conformes con un baseline Si tienes recursos, simplifica (e.g. Splunk) Apóyate de tu experiencia, confía en tu instinto

56 Finalmente… Actualiza, actualiza, actualiza Nada con security es opcional La flojera es tu amiga Scriptea todo Asume tu rol Los usuarios no siempre tienen la razón No eres Dios Nadie nace sabiendo; preguntar no te hace menos

57 Gracias! Sergio A. Becerril


Descargar ppt "Seguridad en equipos Linux Sergio A. Becerril SSI / UNAM-CERT."

Presentaciones similares


Anuncios Google