1 / 57

Seguridad en equipos Linux

Seguridad en equipos Linux. Sergio A. Becerril SSI / UNAM-CERT. ¿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. Temario. Usuarios y grupos Permisos s udo

aziza
Download Presentation

Seguridad en equipos Linux

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Seguridad en equipos Linux Usuarios y grupos

  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 <cuenta> • Acción inmediata • Expirar pw: passwd -e <cuenta> • Deshabilitar pw: passw -l |usermod -L • Deshabilitar cuenta: usermod -e 1 <cta> • Implementación de políticas • passwd (-n, -x, -w, -i) • usermod (-e, -f, -s) • chage

  8. Manejo de cuentas • /etc/passwd • usuario:pw:uid:defaultgid: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. Seguridad en equipos Linux Permisos

  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-xcarácter usuario grupo otros 7 5 5 octal • Modificación de permisos: chmod [opts] <modo> <archivo>

  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 <archivo>

  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 <máscara>

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

  18. Seguridad en equipos Linux sudo

  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 • 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_listhost_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_listhost_list = [(runas_list[:runas_list])] [tag:[tag...]] cmd_listellos 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 sergiopuede ejecutar todos los comandosen todos los equiposcon privilegios de root, sin necesidad de escribir su contraseña (!) • sergiokuechenberg = vi • El usuario sergiopuede ejecutar vi en kuechenbergcon privilegios de root, previa introducción correcta de su contraseña (!!) • sergiokuechenberg = (www-data) vi, (root) NOPASSWD:less,cat • El usuario sergiopuede ejecutar vi en kuechenbergcon 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… sergiokuechenberg = (www-data) vi, (root) NOPASSWD:less,cat sergiokuechenberg = (www-data) vi : buoniconti = (root) NOPASSWD:less,cat

  28. Seguridad en equipos Linux Minimización de servicios

  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##<servicio> • /bin/kill -s 15 <proceso>, /bin/kill -s 2 <proceso> • /bin/kill -s 9 <proceso>

  33. Seguridad en equipos Linux firewall

  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.iptablesno 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, postroutingsiempre 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] <-operación> <cadena> <regla> • raw, mangle, filter, nat, <creadas por el usuario> • Add, Delete, Insert, Policy*, … • prerouting (raw, mangle, nat); input (mangle, filter); forward (mangle, filter); output (todas); postrouting (mangle, nat) [especificación] <acció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.] [--dportpto. sal.] [-m …] • Acción • Define el comportamiento del firewall, de coincidir el tráfico observado con la especificación [ <-j [ACCEPT|DROP|QUEUE|RETURN]> | <-g cadena> ]

  42. Seguridad en equipos Linux Apache

  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 • <VirtualHost> … </VirtualHost> • Usualmente, sites-enabled/sitio • De carpeta • Archivos .htaccess • Requiere AllowOverride en VirtualHost

  45. Configuraciones útiles ServerName www.sitio.com UseCanonicalNameon ServerSignature off ServerTokensProd <Directory “/”> Orderallow, deny Denyfromall … </Directory>

  46. Configuraciones útiles Options -Indexes -FollowSymlinks … OrderAllow, Deny Allowfrom … Denyfrom… OrderDeny, Allow Denyfrom…

  47. Seguridad en equipos Linux MySQL

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

  49. my.cnf -- [mysqld] • bind-address=127.0.0.1 • 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> updateuser set user="new_user" whereuser="root";mysql> flushprivileges; • (inferiores)

More Related