sysadmin.org.mxsysadmin.org.mx/sites/default/files/unixsec.pdf · 2009. 2. 19. · created date:...

696
SEGURIDAD EN UNIX Y REDES Versi´on2.1 Antonio Villal´ on Huerta Julio, 2002

Upload: others

Post on 03-Feb-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

  • SEGURIDAD EN UNIX YREDES

    Versión 2.1

    Antonio Villalón Huerta

    Julio, 2002

  • ii

  • i

    Copyright c© 2000,2002 Antonio Villalón Huerta.Permission is granted to copy, distribute and/or modify this do-cument under the terms of the GNU Free Documentation License,Version 1.1 or any later version published by the Free SoftwareFoundation; with the Invariant Sections being ‘Notas del Autor’and ‘Conclusiones’, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled‘GNU Free Documentation License’.

  • ii

  • Índice General

    Notas del autor 1

    1 Introducción y conceptos previos 11.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Justificación y objetivos . . . . . . . . . . . . . . . . . . . . . . . 21.3 ¿Qué es seguridad? . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4 ¿Qué queremos proteger? . . . . . . . . . . . . . . . . . . . . . . 51.5 ¿De qué nos queremos proteger? . . . . . . . . . . . . . . . . . . 6

    1.5.1 Personas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5.2 Amenazas lógicas . . . . . . . . . . . . . . . . . . . . . . . 101.5.3 Catástrofes . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    1.6 ¿Cómo nos podemos proteger? . . . . . . . . . . . . . . . . . . . 151.7 Redes ‘normales’ . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    1.7.1 Redes de I+D . . . . . . . . . . . . . . . . . . . . . . . . . 191.7.2 Empresas . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.7.3 ISPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    1.8 ¿Seguridad en Unix? . . . . . . . . . . . . . . . . . . . . . . . . . 24

    I Seguridad del entorno de operaciones 27

    2 Seguridad f́ısica de los sistemas 292.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.2 Protección del hardware . . . . . . . . . . . . . . . . . . . . . . . 30

    2.2.1 Acceso f́ısico . . . . . . . . . . . . . . . . . . . . . . . . . 312.2.2 Desastres naturales . . . . . . . . . . . . . . . . . . . . . . 332.2.3 Desastres del entorno . . . . . . . . . . . . . . . . . . . . 37

    2.3 Protección de los datos . . . . . . . . . . . . . . . . . . . . . . . . 412.3.1 Eavesdropping . . . . . . . . . . . . . . . . . . . . . . . . 412.3.2 Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.3.3 Otros elementos . . . . . . . . . . . . . . . . . . . . . . . 44

    2.4 Radiaciones electromagnéticas . . . . . . . . . . . . . . . . . . . . 45

    iii

  • iv ÍNDICE GENERAL

    3 Administradores, usuarios y personal 493.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.2 Ataques potenciales . . . . . . . . . . . . . . . . . . . . . . . . . 50

    3.2.1 Ingenieŕıa social . . . . . . . . . . . . . . . . . . . . . . . 503.2.2 Shoulder Surfing . . . . . . . . . . . . . . . . . . . . . . . 513.2.3 Masquerading . . . . . . . . . . . . . . . . . . . . . . . . . 523.2.4 Basureo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.2.5 Actos delictivos . . . . . . . . . . . . . . . . . . . . . . . . 54

    3.3 ¿Qué hacer ante estos problemas? . . . . . . . . . . . . . . . . . . 563.4 El atacante interno . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    II Seguridad del sistema 61

    4 El sistema de ficheros 634.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.2 Sistemas de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . 644.3 Permisos de un archivo . . . . . . . . . . . . . . . . . . . . . . . . 684.4 Los bits suid, sgid y sticky . . . . . . . . . . . . . . . . . . . . . 724.5 Atributos de un archivo . . . . . . . . . . . . . . . . . . . . . . . 764.6 Listas de control de acceso: ACLs . . . . . . . . . . . . . . . . . . 784.7 Recuperación de datos . . . . . . . . . . . . . . . . . . . . . . . . 834.8 Almacenamiento seguro . . . . . . . . . . . . . . . . . . . . . . . 84

    4.8.1 La orden crypt(1) . . . . . . . . . . . . . . . . . . . . . . 844.8.2 PGP: Pretty Good Privacy . . . . . . . . . . . . . . . . . . 854.8.3 TCFS: Transparent Cryptographic File System . . . . . . 874.8.4 Otros métodos de almacenamiento seguro . . . . . . . . . 88

    5 Programas seguros, inseguros y nocivos 915.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915.2 La base fiable de cómputo . . . . . . . . . . . . . . . . . . . . . . 925.3 Errores en los programas . . . . . . . . . . . . . . . . . . . . . . . 93

    5.3.1 Buffer overflows . . . . . . . . . . . . . . . . . . . . . . . . 945.3.2 Condiciones de carrera . . . . . . . . . . . . . . . . . . . . 95

    5.4 Fauna y otras amenazas . . . . . . . . . . . . . . . . . . . . . . . 965.4.1 Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985.4.2 Gusanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995.4.3 Conejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015.4.4 Caballos de Troya . . . . . . . . . . . . . . . . . . . . . . 1015.4.5 Applets hostiles . . . . . . . . . . . . . . . . . . . . . . . . 1045.4.6 Bombas lógicas . . . . . . . . . . . . . . . . . . . . . . . . 1055.4.7 Canales ocultos . . . . . . . . . . . . . . . . . . . . . . . . 1055.4.8 Puertas traseras . . . . . . . . . . . . . . . . . . . . . . . 1075.4.9 Superzapping . . . . . . . . . . . . . . . . . . . . . . . . . 1085.4.10 Programas salami . . . . . . . . . . . . . . . . . . . . . . 109

    5.5 Programación segura . . . . . . . . . . . . . . . . . . . . . . . . . 110

  • ÍNDICE GENERAL v

    6 Auditoŕıa del sistema 1216.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216.2 El sistema de log en Unix . . . . . . . . . . . . . . . . . . . . . . 1226.3 El demonio syslogd . . . . . . . . . . . . . . . . . . . . . . . . . 1236.4 Algunos archivos de log . . . . . . . . . . . . . . . . . . . . . . . 127

    6.4.1 syslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1276.4.2 messages . . . . . . . . . . . . . . . . . . . . . . . . . . . 1286.4.3 wtmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1306.4.4 utmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1306.4.5 lastlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1316.4.6 faillog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1316.4.7 loginlog . . . . . . . . . . . . . . . . . . . . . . . . . . . 1316.4.8 btmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1326.4.9 sulog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1326.4.10 debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    6.5 Logs remotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1336.6 Registros f́ısicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

    7 Copias de seguridad 1397.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397.2 Dispositivos de almacenamiento . . . . . . . . . . . . . . . . . . . 1407.3 Algunas órdenes para realizar copias de seguridad . . . . . . . . . 145

    7.3.1 dump/restore . . . . . . . . . . . . . . . . . . . . . . . . 1457.3.2 La orden tar . . . . . . . . . . . . . . . . . . . . . . . . . 1507.3.3 La orden cpio . . . . . . . . . . . . . . . . . . . . . . . . 1527.3.4 Backups sobre CD-ROM . . . . . . . . . . . . . . . . . . . 154

    7.4 Poĺıticas de copias de seguridad . . . . . . . . . . . . . . . . . . . 155

    8 Autenticación de usuarios 1618.1 Introducción y conceptos básicos . . . . . . . . . . . . . . . . . . 1618.2 Sistemas basados en algo conocido: contraseñas . . . . . . . . . . 1628.3 Sistemas basados en algo poséıdo: tarjetas inteligentes . . . . . . 1638.4 Sistemas de autenticación biométrica . . . . . . . . . . . . . . . . 165

    8.4.1 Verificación de voz . . . . . . . . . . . . . . . . . . . . . . 1688.4.2 Verificación de escritura . . . . . . . . . . . . . . . . . . . 1698.4.3 Verificación de huellas . . . . . . . . . . . . . . . . . . . . 1708.4.4 Verificación de patrones oculares . . . . . . . . . . . . . . 1728.4.5 Verificación de la geometŕıa de la mano . . . . . . . . . . 175

    8.5 Autenticación de usuarios en Unix . . . . . . . . . . . . . . . . . 1758.5.1 Autenticación clásica . . . . . . . . . . . . . . . . . . . . . 1758.5.2 Mejora de la seguridad . . . . . . . . . . . . . . . . . . . . 177

    8.6 PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

  • vi ÍNDICE GENERAL

    III Algunos sistemas Unix 189

    9 Solaris 1919.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1919.2 Seguridad f́ısica en SPARC . . . . . . . . . . . . . . . . . . . . . 1929.3 Servicios de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1959.4 Usuarios y accesos al sistema . . . . . . . . . . . . . . . . . . . . 1969.5 El sistema de parcheado . . . . . . . . . . . . . . . . . . . . . . . 2029.6 Extensiones de la seguridad . . . . . . . . . . . . . . . . . . . . . 206

    9.6.1 aset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2069.6.2 jass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2089.6.3 sfpdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

    9.7 El subsistema de red . . . . . . . . . . . . . . . . . . . . . . . . . 2129.8 Parámetros del núcleo . . . . . . . . . . . . . . . . . . . . . . . . 216

    10 Linux 21910.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21910.2 Seguridad f́ısica en x86 . . . . . . . . . . . . . . . . . . . . . . . . 22110.3 Usuarios y accesos al sistema . . . . . . . . . . . . . . . . . . . . 22410.4 El sistema de parcheado . . . . . . . . . . . . . . . . . . . . . . . 23110.5 El subsistema de red . . . . . . . . . . . . . . . . . . . . . . . . . 23410.6 El núcleo de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 236

    10.6.1 Opciones de compilación . . . . . . . . . . . . . . . . . . . 23610.6.2 Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . 23710.6.3 Algunas mejoras de la seguridad . . . . . . . . . . . . . . 238

    11 AIX 24311.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24311.2 Seguridad f́ısica en RS/6000 . . . . . . . . . . . . . . . . . . . . . 24411.3 Servicios de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24511.4 Usuarios y accesos al sistema . . . . . . . . . . . . . . . . . . . . 249

    11.4.1 El fichero /etc/security/.ids . . . . . . . . . . . . . . . 25011.4.2 El fichero /etc/security/passwd . . . . . . . . . . . . . 25011.4.3 El fichero /etc/security/failedlogin . . . . . . . . . . 25111.4.4 El fichero /etc/security/lastlog . . . . . . . . . . . . . 25111.4.5 El fichero /etc/security/limits . . . . . . . . . . . . . 25211.4.6 El fichero /etc/security/login.cfg . . . . . . . . . . . 25411.4.7 El fichero /etc/security/user . . . . . . . . . . . . . . . 25611.4.8 El fichero /etc/security/group . . . . . . . . . . . . . . 261

    11.5 El sistema de log . . . . . . . . . . . . . . . . . . . . . . . . . . . 26211.6 El sistema de parcheado . . . . . . . . . . . . . . . . . . . . . . . 26611.7 Extensiones de la seguridad: filtros IP . . . . . . . . . . . . . . . 26811.8 El subsistema de red . . . . . . . . . . . . . . . . . . . . . . . . . 272

  • ÍNDICE GENERAL vii

    12 HP-UX 27712.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27712.2 Seguridad f́ısica en PA–RISC . . . . . . . . . . . . . . . . . . . . 27812.3 Usuarios y accesos al sistema . . . . . . . . . . . . . . . . . . . . 27912.4 El sistema de parcheado . . . . . . . . . . . . . . . . . . . . . . . 28312.5 Extensiones de la seguridad . . . . . . . . . . . . . . . . . . . . . 286

    12.5.1 Product Description Files . . . . . . . . . . . . . . . . . . 28612.5.2 inetd.sec(4) . . . . . . . . . . . . . . . . . . . . . . . . 289

    12.6 El subsistema de red . . . . . . . . . . . . . . . . . . . . . . . . . 29112.7 El núcleo de HP-UX . . . . . . . . . . . . . . . . . . . . . . . . . 294

    IV Seguridad de la subred 297

    13 El sistema de red 29913.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29913.2 Algunos ficheros importantes . . . . . . . . . . . . . . . . . . . . 299

    13.2.1 El fichero /etc/hosts . . . . . . . . . . . . . . . . . . . . 29913.2.2 El archivo /etc/ethers . . . . . . . . . . . . . . . . . . . 30013.2.3 El fichero /etc/networks . . . . . . . . . . . . . . . . . . 30013.2.4 El fichero /etc/services . . . . . . . . . . . . . . . . . . 30113.2.5 El fichero /etc/protocols . . . . . . . . . . . . . . . . . 30113.2.6 El fichero /etc/hosts.equiv . . . . . . . . . . . . . . . . 30213.2.7 El fichero .netrc . . . . . . . . . . . . . . . . . . . . . . . 30313.2.8 El fichero /etc/inetd.conf . . . . . . . . . . . . . . . . . 304

    13.3 Algunas órdenes importantes . . . . . . . . . . . . . . . . . . . . 30613.3.1 La orden ifconfig . . . . . . . . . . . . . . . . . . . . . . 30613.3.2 La orden route . . . . . . . . . . . . . . . . . . . . . . . . 30713.3.3 La orden netstat . . . . . . . . . . . . . . . . . . . . . . 30813.3.4 La orden ping . . . . . . . . . . . . . . . . . . . . . . . . 31013.3.5 La orden traceroute . . . . . . . . . . . . . . . . . . . . 312

    13.4 Servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

    14 Algunos servicios y protocolos 31714.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31714.2 Servicios básicos de red . . . . . . . . . . . . . . . . . . . . . . . 318

    14.2.1 systat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31914.2.2 daytime . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31914.2.3 netstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32014.2.4 chargen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32114.2.5 tftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32114.2.6 finger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32214.2.7 POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32314.2.8 auth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32414.2.9 NNTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32514.2.10 NTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

  • viii ÍNDICE GENERAL

    14.2.11 UUCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32614.3 El servicio FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

    14.3.1 FTP anónimo . . . . . . . . . . . . . . . . . . . . . . . . . 32814.3.2 FTP invitado . . . . . . . . . . . . . . . . . . . . . . . . . 335

    14.4 El servicio TELNET . . . . . . . . . . . . . . . . . . . . . . . . . 33814.5 El servicio SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . 34114.6 Servidores WWW . . . . . . . . . . . . . . . . . . . . . . . . . . 34314.7 Los servicios r-∗ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34514.8 XWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    14.8.1 Autenticación por máquina . . . . . . . . . . . . . . . . . 34914.8.2 Autenticación por testigo . . . . . . . . . . . . . . . . . . 351

    15 Cortafuegos: Conceptos teóricos 35315.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35315.2 Caracteŕısticas de diseño . . . . . . . . . . . . . . . . . . . . . . . 35615.3 Componentes de un cortafuegos . . . . . . . . . . . . . . . . . . . 358

    15.3.1 Filtrado de paquetes . . . . . . . . . . . . . . . . . . . . . 35815.3.2 Proxy de aplicación . . . . . . . . . . . . . . . . . . . . . 36015.3.3 Monitorización de la actividad . . . . . . . . . . . . . . . 361

    15.4 Arquitecturas de cortafuegos . . . . . . . . . . . . . . . . . . . . 36215.4.1 Cortafuegos de filtrado de paquetes . . . . . . . . . . . . . 36215.4.2 Dual-Homed Host . . . . . . . . . . . . . . . . . . . . . . 36315.4.3 Screened Host . . . . . . . . . . . . . . . . . . . . . . . . . 36415.4.4 Screened Subnet (DMZ) . . . . . . . . . . . . . . . . . . . 36515.4.5 Otras arquitecturas . . . . . . . . . . . . . . . . . . . . . . 367

    16 Cortafuegos: Casos de estudio 36916.1 Firewall-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

    16.1.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 36916.1.2 Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . 37016.1.3 Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . 37116.1.4 Gestión . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37416.1.5 El sistema de log . . . . . . . . . . . . . . . . . . . . . . . 37616.1.6 inspect . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

    16.2 ipfwadm/ipchains/iptables . . . . . . . . . . . . . . . . . . . . 37816.2.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 37816.2.2 Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . 38016.2.3 Gestión . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38116.2.4 El sistema de log . . . . . . . . . . . . . . . . . . . . . . . 384

    16.3 IPFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38516.3.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 38516.3.2 Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . 38616.3.3 Gestión . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38716.3.4 El sistema de log . . . . . . . . . . . . . . . . . . . . . . . 390

    16.4 PIX Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39116.4.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 391

  • ÍNDICE GENERAL ix

    16.4.2 La primera sesión con PIX Firewall . . . . . . . . . . . . 39216.4.3 Interfaces de red . . . . . . . . . . . . . . . . . . . . . . . 39516.4.4 Accesos entre interfaces . . . . . . . . . . . . . . . . . . . 39616.4.5 Listas de control de acceso . . . . . . . . . . . . . . . . . 39716.4.6 Rutado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39916.4.7 Otras órdenes útiles . . . . . . . . . . . . . . . . . . . . . 39916.4.8 El sistema de log remoto . . . . . . . . . . . . . . . . . . . 40416.4.9 Failover . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

    17 Ataques remotos 40917.1 Escaneos de puertos . . . . . . . . . . . . . . . . . . . . . . . . . 40917.2 Spoofing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41317.3 Negaciones de servicio . . . . . . . . . . . . . . . . . . . . . . . . 41517.4 Interceptación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41817.5 Ataques a aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . 421

    17.5.1 Correo electrónico . . . . . . . . . . . . . . . . . . . . . . 42117.5.2 Ataques v́ıa web . . . . . . . . . . . . . . . . . . . . . . . 429

    18 Sistemas de detección de intrusos 43318.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43318.2 Clasificación de los IDSes . . . . . . . . . . . . . . . . . . . . . . 43418.3 Requisitos de un IDS . . . . . . . . . . . . . . . . . . . . . . . . . 43718.4 IDSes basados en máquina . . . . . . . . . . . . . . . . . . . . . . 43818.5 IDSes basados en red . . . . . . . . . . . . . . . . . . . . . . . . . 44118.6 Detección de anomaĺıas . . . . . . . . . . . . . . . . . . . . . . . 44518.7 Detección de usos indebidos . . . . . . . . . . . . . . . . . . . . . 44818.8 Implementación real de un IDS . . . . . . . . . . . . . . . . . . . 451

    18.8.1 IDS en el cortafuegos . . . . . . . . . . . . . . . . . . . . . 45218.8.2 IDS en la red: snort . . . . . . . . . . . . . . . . . . . . 45518.8.3 IDS en la máquina . . . . . . . . . . . . . . . . . . . . . . 46018.8.4 Estrategias de respuesta . . . . . . . . . . . . . . . . . . . 46618.8.5 Ampliación del esquema . . . . . . . . . . . . . . . . . . . 469

    18.9 Algunas reflexiones . . . . . . . . . . . . . . . . . . . . . . . . . . 471

    19 Kerberos 47319.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47319.2 Arquitectura de Kerberos . . . . . . . . . . . . . . . . . . . . . . 47419.3 Autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

    19.3.1 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47619.3.2 Obtención de tickets . . . . . . . . . . . . . . . . . . . . . 47619.3.3 Petición de servicio . . . . . . . . . . . . . . . . . . . . . . 477

    19.4 Problemas de Kerberos . . . . . . . . . . . . . . . . . . . . . . . . 477

  • x ÍNDICE GENERAL

    V Otros aspectos de la seguridad 479

    20 Criptoloǵıa 48120.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48120.2 Criptosistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48220.3 Clasificación de los criptosistemas . . . . . . . . . . . . . . . . . . 484

    20.3.1 Criptosistemas de clave secreta . . . . . . . . . . . . . . . 48420.3.2 Criptosistemas de clave pública . . . . . . . . . . . . . . . 485

    20.4 Criptoanálisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48620.5 Criptograf́ıa clásica . . . . . . . . . . . . . . . . . . . . . . . . . . 487

    20.5.1 El sistema Caesar . . . . . . . . . . . . . . . . . . . . . . 48720.5.2 El criptosistema de Vigènere . . . . . . . . . . . . . . . . 488

    20.6 Un criptosistema de clave secreta: DES . . . . . . . . . . . . . . 49020.7 Criptosistemas de clave pública . . . . . . . . . . . . . . . . . . . 492

    20.7.1 El criptosistema RSA . . . . . . . . . . . . . . . . . . . . 49220.7.2 El criptosistema de ElGamal . . . . . . . . . . . . . . . . 49320.7.3 Criptosistema de McEliece . . . . . . . . . . . . . . . . . 494

    20.8 Funciones resumen . . . . . . . . . . . . . . . . . . . . . . . . . . 49520.9 Esteganograf́ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

    21 Algunas herramientas de seguridad 49921.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49921.2 Titan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50021.3 TCP Wrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51421.4 SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51621.5 Tripwire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52021.6 Nessus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52321.7 Crack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

    22 Gestión de la seguridad 53122.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53122.2 Poĺıticas de seguridad . . . . . . . . . . . . . . . . . . . . . . . . 53322.3 Análisis de riesgos . . . . . . . . . . . . . . . . . . . . . . . . . . 535

    22.3.1 Identificación de recursos . . . . . . . . . . . . . . . . . . 53722.3.2 Identificación de amenazas . . . . . . . . . . . . . . . . . 53822.3.3 Medidas de protección . . . . . . . . . . . . . . . . . . . . 539

    22.4 Estrategias de respuesta . . . . . . . . . . . . . . . . . . . . . . . 54122.5 Outsourcing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54322.6 El ‘Área de Seguridad’ . . . . . . . . . . . . . . . . . . . . . . . . 545

    VI Apéndices 549

    A Seguridad básica para administradores 551A.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551A.2 Prevención . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

  • ÍNDICE GENERAL xi

    A.3 Detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558A.4 Recuperación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562A.5 Recomendaciones de seguridad para los usuarios . . . . . . . . . 564A.6 Referencias rápidas . . . . . . . . . . . . . . . . . . . . . . . . . . 566

    A.6.1 Prevención . . . . . . . . . . . . . . . . . . . . . . . . . . 566A.6.2 Detección . . . . . . . . . . . . . . . . . . . . . . . . . . . 567A.6.3 Recuperación . . . . . . . . . . . . . . . . . . . . . . . . . 567A.6.4 Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568

    B Normativa 569B.1 Nuevo Código Penal . . . . . . . . . . . . . . . . . . . . . . . . . 569B.2 Reglamento de Seguridad de la LORTAD . . . . . . . . . . . . . 575B.3 Ley Orgánica de Protección de Datos . . . . . . . . . . . . . . . . 585

    C Recursos de interés en INet 617C.1 Publicaciones periódicas . . . . . . . . . . . . . . . . . . . . . . . 617C.2 Organizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619

    C.2.1 Profesionales . . . . . . . . . . . . . . . . . . . . . . . . . 619C.2.2 Gubernamentales/militares . . . . . . . . . . . . . . . . . 619C.2.3 Universidades/educación . . . . . . . . . . . . . . . . . . . 620

    C.3 Criptograf́ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622C.4 Seguridad general . . . . . . . . . . . . . . . . . . . . . . . . . . . 623C.5 Compañ́ıas y grupos de desarrollo . . . . . . . . . . . . . . . . . . 624

    C.5.1 Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624C.5.2 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625

    C.6 Sitios underground . . . . . . . . . . . . . . . . . . . . . . . . . . 626C.6.1 Grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626C.6.2 Exploits y vulnerabilidades . . . . . . . . . . . . . . . . . 626

    C.7 Recursos en España . . . . . . . . . . . . . . . . . . . . . . . . . 626C.8 Listas de correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627C.9 Grupos de noticias . . . . . . . . . . . . . . . . . . . . . . . . . . 629

    C.9.1 Criptoloǵıa . . . . . . . . . . . . . . . . . . . . . . . . . . 629C.9.2 Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630C.9.3 Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630C.9.4 Misc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631

    D Glosario de términos anglosajones 633

    Conclusiones 639

    Bibliograf́ıa 643

    GNU Free Documentation License 667D.1 Applicability and Definitions . . . . . . . . . . . . . . . . . . . . 667D.2 Verbatim Copying . . . . . . . . . . . . . . . . . . . . . . . . . . 669D.3 Copying in Quantity . . . . . . . . . . . . . . . . . . . . . . . . . 669

  • xii ÍNDICE GENERAL

    D.4 Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670D.5 Combining Documents . . . . . . . . . . . . . . . . . . . . . . . . 671D.6 Collections of Documents . . . . . . . . . . . . . . . . . . . . . . 672D.7 Aggregation With Independent Works . . . . . . . . . . . . . . . 672D.8 Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672D.9 Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673D.10 Future Revisions of This License . . . . . . . . . . . . . . . . . . 673

  • Índice de Figuras

    1.1 Flujo normal de información entre emisor y receptor y posiblesamenazas: (a) interrupción, (b) interceptación, (c) modificacióny (d) fabricación. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.2 Visión global de la seguridad informática . . . . . . . . . . . . . . 16

    3.1 El resultado de un basureo involuntario. . . . . . . . . . . . . . . 55

    4.1 Permisos de un fichero . . . . . . . . . . . . . . . . . . . . . . . . 69

    8.1 Estructura genérica de una smartcard. . . . . . . . . . . . . . . . 1648.2 Huella dactilar con sus minucias extráıdas. c©1998 Idex AS,

    http://www.idex.no/. . . . . . . . . . . . . . . . . . . . . . . . 1718.3 Iris humano con la extracción de su iriscode. . . . . . . . . . . . . 1738.4 Geometŕıa de una mano con ciertos parámetros extráıdos. . . . . 1748.5 La herramienta de administración admintool (Solaris), con op-

    ciones para envejecimiento de claves. . . . . . . . . . . . . . . . . 188

    11.1 Estructura jerárquica del src. . . . . . . . . . . . . . . . . . . . . 24811.2 Interfaz de fixdist (AIX). . . . . . . . . . . . . . . . . . . . . . 268

    15.1 (a) Aislamiento. (b) Conexión total. (c) Firewall entre la zonade riesgo y el peŕımetro de seguridad. . . . . . . . . . . . . . . . 354

    15.2 Arquitectura DMZ. . . . . . . . . . . . . . . . . . . . . . . . . . . 366

    16.1 Ubicación del Inspection Module dentro de la pila de protocolososi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

    16.2 Una imagen de fwlv. . . . . . . . . . . . . . . . . . . . . . . . . . 376

    18.1 Puntos clásicos de defensa entre un atacante y un objetivo. . . . 45218.2 Situación del sensor . . . . . . . . . . . . . . . . . . . . . . . . . 461

    19.1 Protocolo de autenticación Kerberos. . . . . . . . . . . . . . . . . 477

    20.1 Estructura de un criptosistema . . . . . . . . . . . . . . . . . . . 484

    21.1 Interfaz gráfico de Nessus. . . . . . . . . . . . . . . . . . . . . . . 526

    xiii

  • xiv ÍNDICE DE FIGURAS

  • Índice de Tablas

    4.1 Atributos de los archivos en ext2fs. . . . . . . . . . . . . . . . . . 76

    7.1 Comparación de diferentes medios de almacenamiento secundario. 1457.2 Opciones de la orden dump . . . . . . . . . . . . . . . . . . . . . . 1477.3 Opciones de la orden restore . . . . . . . . . . . . . . . . . . . . 1487.4 Opciones de la orden tar . . . . . . . . . . . . . . . . . . . . . . 1517.5 Opciones de la orden cpio. . . . . . . . . . . . . . . . . . . . . . 153

    8.1 Comparación de métodos biométricos. . . . . . . . . . . . . . . . 1678.2 Códigos de caracteres para el envejecimiento de contraseñas. . . . 182

    12.1 Privilegios de grupo en HP-UX . . . . . . . . . . . . . . . . . . . 281

    18.1 Algunos puertos a monitorizar en un firewall . . . . . . . . . . . 454

    19.1 Abreviaturas utilizadas. . . . . . . . . . . . . . . . . . . . . . . . 475

    20.1 Tableau Vigènere . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

    xv

  • xvi ÍNDICE DE TABLAS

  • Notas del autor

    El mundo de la seguridad informática es demasiado amplio y complejo comopara ser tratado exhaustivamente en ningún trabajo, mucho menos en uno tansimple como este; aqúı únicamente he intentado resumir una visión global dediferentes aspectos relacionados con la seguridad, especialmente con Unix yredes de computadores (estas últimas tan de moda hoy en d́ıa. . . Unix por des-gracia no tanto). Este trabajo está casi completamente extráıdo de mi proyectofinal de carrera, que estudiaba la seguridad en los sistemas Unix y la red dela Universidad Politécnica de Valencia (UPV), de forma que si aparece algunareferencia a ‘nuestra red’ o ‘nuestros equipos’ – aunque he intentado eliminartodos los ejemplos y comentarios relativos a UPV, por motivos obvios – yasabemos de qué se trata. A pesar de haberlo revisado bastantes veces (lo buenode no tener vida social es que uno tiene mucho tiempo para leer ;-), evidente-mente existirán errores y faltarán datos que podŕıan haber aparecido, por lo queagradeceré cualquier sugerencia o cŕıtica (constructiva, las destructivas directa-mente a /dev/null) que se me quiera hacer. Para ponerse en contacto conmigose puede utilizar la dirección de correo electrónico que utilizo habitualmente:[email protected].

    Durante la realización de este proyecto ni se han maltratado animales ni se hanutilizado productos Microsoft; personalmente, siempre he considerado rid́ıculohablar de seguridad en Unix – incluso de seguridad en general – y hacerlo uti-lizando productos de una compañ́ıa que tantas veces ha demostrado su desinteréspor la tecnoloǵıa frente a su interés por el marketing. El trabajo entero ha si-do creado sobre diversos clones de Unix (principalmente Solaris y Linux, y enmenor medida HP-UX, BSD/OS, IRIX, AIX e incluso Minix). El texto ha sidoescrito ı́ntegramente con vi (vi es EL editor, el resto de editores no son vi ;-)y compuesto con LATEX, de Leslie Lamport; realmente, algunos fragmentos hansido extráıdos de documentos que hice hace tiempo con troff (śı, troff), deJoe Ossanna y Brian Kernighan, transformados a LATEX mediante tr2tex, deKamal Al–Yahya, y retocados con algo de paciencia. Para las figuras simples heutilizado el lenguaje PIC, también de Brian Kernighan, y para las que son máscomplejas xfig. La captura de alguna pantalla se ha hecho con xwd y gimp, yel retoque y transformación de imágenes con este último junto a xv y xpaint.

    Quiero agradecer desde aqúı la colaboración desinteresada de algunas personas

    1

  • 2 NOTAS DEL AUTOR

    que han hecho posible este trabajo (más concretamente, que hicieron posible miproyecto final de carrera): Pedro López (Departamento de Informática de Sis-temas y Computadores, UPV), Jon Ander Gómez (Departamento de SistemasInformáticos y Computación, UPV), Vicent Benet (Centro de Cálculo, UPV),José Manuel Pasamar (Centro de Cálculo, UPV) y Albert Ortiz (UniversitatPolitècnica de Catalunya). Y por supuesto a mi director, Ismael Ripoll (Depar-tamento de Informática de Sistemas y Computadores, UPV).

    Tras publicar la versión 1.0 de este trabajo, algunos de los primeros comentariosque se me han hecho trataban sobre los posibles problemas legales derivados dela falta de una licencia para el documento; desconozco hasta qué punto esosproblemas son reales, pero de cualquier forma para tratar de evitarlos he deci-dido adoptar la Open Publication License como formato de licencia bajo la quedistribuir mi trabajo, al menos de forma temporal. Eso básicamente implica(en castellano plano) que puedes imprimir el documento, leerlo, fotocopiarlo,regalarlo o similares, pero no venderlo; este trabajo es gratuito y pretendo quelo siga siendo. Si alguien lo encuentra útil, que me apoye moralmente con une-mail :), y si alguien lo encuentra muy útil (lo dudo) que destine el dinero quecrea que pagaŕıa por esto a cosas más útiles. ¿Sab́ıas que cada minuto muerende hambre aproximadamente doce niños en el tercer mundo? En el tiempo quete puede costar leer estas notas con un mı́nimo de interés habrán muerto unosveinticinco; mientras que nosotros nos preocupamos intentando proteger nue-stros sistemas, hay millones de personas que no pueden perder el tiempo en esascosas: están demasiado ocupadas intentando sobrevivir.

    Ah, por último, seŕıa imperdonable no dar las gracias a la gente que ha léıdoeste trabajo y me ha informado de erratas que hab́ıa en él; he intentado corregirtodos los fallos encontrados, pero aún habrá errores, por lo que repito lo quedećıa al principio: todos los comentarios constructivos son siempre bienvenidos.Debo agradecer especialmente a David Cerezo el interés que demostró en lasversiones iniciales de este documento, aśı como todas las observaciones que so-bre las mismas me hizo llegar.

    NOTAS A LA VERSIÓN 2.0No hay mucho que añadir a lo dicho hace casi dos años; y es que las cosas apenashan cambiado: el panorama en España – en cuanto a seguridad se refiere – siguesiendo desolador, las empresas tecnológicas caen d́ıa a d́ıa, la investigación enmaterias de seguridad (si exceptuamos la Criptograf́ıa) es nula, y poco más. Sólodar las gracias una vez más a todos los que han publicado o se han hecho ecode este documento (Kriptópolis, HispaLinux, IrisCERT, Hispasec, Asociaciónde Internautas. . . ) y también a toda la gente que lo ha leido (al menos en parte;-) y ha perdido unos minutos escribiéndome un e–mail con algún comentario;realmente es algo que se agradece, y aunque tarde en responder al correo, siem-pre trato de contestar.

  • 3

    Como algunos de los comentarios acerca del documento que me han llegadohablaban del ‘excesivo’ tamaño del mismo, en esta nueva versión he cambiadola forma de generar el fichero PDF; he convertido todas las imágenes a formatoPNG y después utilizado pdflatex para compilar los ficheros, habiendo mod-ificado previamente el código mediante un sencillo script. Aunque aún ocupabastante, hay que tener en cuenta que estamos hablando de unas 500 páginasde documento. . .

    TODOIgual que hace casi dos años, sigue en pie la intención de crear caṕıtulos nuevos(las redes privadas virtuales es mi principal tema pendiente) y de comentar laseguridad de mecanismos como DNS, RPC, NIS o NFS. . . espero disponer dealgo más de tiempo para poder hacerlo. Quiero también escribir más acerca dela detección de intrusos, no sé si en este documento o en uno aparte, ya que esquizás el tema que más me interesa y en lo que más trabajo actualmente. Yfinalmente, en mi lista de cosas para hacer, pone dormir (śı, lo pone en negrita)como algo que también queda pendiente :)

    HISTORYVersión 1.0 (Julio´00): Documento inicial.Versión 1.1 (Agosto´00): Pequeñas correcciones e inclusión de la Open Publi-cation License.Versión 1.2 (Septiembre´00): Más correcciones. Ampliación del caṕıtulo ded-icado a servicios de red.Versión 2.0 (Mayo´02): Caṕıtulos dedicados a los sistemas de detección deintrusos y a los ataques remotos contra un sistema. Sustitución del caṕıtuloreferente al núcleo de algunos sistemas Unix por varios caṕıtulos que tratanparticularidades de diferentes clones con mayor detalle. Desglose del caṕıtulodedicado a los sistemas cortafuegos en dos, uno teórico y otro con diferentescasos prácticos de estudio. Ampliación de los caṕıtulos dedicados a autenti-cación de usuarios (PAM) y a criptograf́ıa (funciones resumen). Ampliacióndel caṕıtulo dedicado a poĺıticas y normativa, que ahora pasa a denominarse‘Gestión de la seguridad’.Versión 2.1 (Julio´02): Alguna corrección más e inclusión de la GNU Free Doc-umentation License (implica que el código fuente en TEX pasa a ser libre).

  • 4 NOTAS DEL AUTOR

  • Caṕıtulo 1

    Introducción y conceptosprevios

    1.1 Introducción

    Hasta finales de 1988 muy poca gente tomaba en serio el tema de la seguridaden redes de computadores de propósito general. Mientras que por una parteInternet iba creciendo exponencialmente con redes importantes que se adheŕıana ella, como bitnet o hepnet, por otra el auge de la informática de consumo(hasta la década de los ochenta muy poca gente se pod́ıa permitir un ordenadory un módem en casa) unido a factores menos técnicos (como la peĺıcula Juegosde Guerra, de 1983) iba produciendo un aumento espectacular en el número depiratas informáticos.

    Sin embargo, el 22 de noviembre de 1988 Robert T. Morris protagonizó el primergran incidente de la seguridad informática: uno de sus programas se convirtióen el famoso worm o gusano de Internet. Miles de ordenadores conectados ala red se vieron inutilizados durante d́ıas, y las pérdidas se estiman en millonesde dólares. Desde ese momento el tema de la seguridad en sistemas operativosy redes ha sido un factor a tener muy en cuenta por cualquier responsable oadministrador de sistemas informáticos. Poco después de este incidente, y a lavista de los potenciales peligros que pod́ıa entrañar un fallo o un ataque a lossistemas informáticos estadounidenses (en general, a los sistemas de cualquierpáıs) la agencia darpa (Defense Advanced Research Projects Agency) creó elcert (Computer Emergency Response Team), un grupo formado en su mayorparte por voluntarios cualificados de la comunidad informática, cuyo objetivoprincipal es facilitar una respuesta rápida a los problemas de seguridad queafecten a hosts de Internet ([Den90]).

    Han pasado más de diez años desde la creación del primer cert, y cada d́ıase hace patente la preocupación por los temas relativos a la seguridad en la red

    1

  • 2 CAPÍTULO 1. INTRODUCCIÓN Y CONCEPTOS PREVIOS

    y sus equipos, y también se hace patente la necesidad de esta seguridad. Lospiratas de antaño casi han desaparecido, dando paso a nuevas generaciones deintrusos que forman grupos como Chaos Computer Club o Legion of Doom, orga-nizan encuentros como el español Iberhack, y editan revistas o zines electrónicos(2600: The Hacker’s Quartely o Phrack son quizás las más conocidas, pero nolas únicas). Todo esto con un objetivo principal: compartir conocimientos. Sihace unos años cualquiera que quisiera adentrarse en el mundo undergroundcasi no teńıa más remedio que conectar a alguna BBS donde se tratara el tema,generalmente con una cantidad de información muy limitada, hoy en d́ıa tienea su disposición gigabytes de información electrónica publicada en Internet;cualquier aprendiz de pirata puede conectarse a un servidor web, descargar unpar de programas y ejecutarlos contra un servidor desprotegido... con un pocode (mala) suerte, esa misma persona puede conseguir un control total sobre unservidor Unix de varios millones de pesetas, probablemente desde su PC conWindows 98 y sin saber nada sobre Unix. De la misma forma que en su d́ıaJuegos de Guerra creó una nueva generación de piratas, en la segunda mitadde los noventa peĺıculas como The Net, Hackers o Los Corsarios del Chip hancreado otra generación, en general mucho menos peligrosa que la anterior, perocuanto menos, preocupante: aunque sin grandes conocimientos técnicos, tienena su disposición multitud de programas y documentos sobre seguridad (algoque los piratas de los ochenta apenas pod́ıan imaginar), además de ordenadorespotentes y conexiones a Internet baratas. Por si esto fuera poco, se ven enva-lentonados a través de sistemas de conversación como el IRC (Internet RelayChat), donde en canales como #hack o #hackers presumen de sus logros antesus colegas.

    1.2 Justificación y objetivos

    A la vista de lo comentado en el primer punto, parece claro que la seguridad delos equipos Unix ha de ser algo a considerar en cualquier red. Diariamente porcualquiera de ellas circulan todo tipo de datos, entre ellos muchos que se po-dŕıan catalogar como confidenciales (nóminas, expedientes, presupuestos. . . ) oal menos como privados (correo electrónico, proyectos de investigación, art́ıculosa punto de ser publicados. . . ). Independientemente de la etiqueta que cadausuario de la red quiera colgarle a sus datos, parece claro que un fallo de se-guridad de un equipo Unix o de la propia red no beneficia a nadie, y muchomenos a la imagen de nuestra organización. Y ya no se trata simplemente deuna cuestión de imagen: según el Computer Security Institute, en su encuesta de1998, las pérdidas económicas ocasionadas por delitos relacionados con nuevastecnoloǵıas (principalmente accesos internos no autorizados) sólo en EstadosUnidos ascienden anualmente a más 20.000 millones de pesetas, cifra que cadaaño se incrementa en más del 35%; los delitos informáticos en general aumentantambién de forma espectacular año tras año, alcanzando incluso cotas del 800%([Caj82]).

  • 1.2. JUSTIFICACIÓN Y OBJETIVOS 3

    A lo largo de este trabajo se va a intentar hacer un repaso de los puntos ha-bituales referentes a seguridad en Unix y redes de computadores (problemas,ataques, defensas. . . ), aplicando el estudio a entornos con requisitos de seguri-dad medios (universidades, empresas, proveedores de acceso a Internet. . . ); deesta forma se ofrecerá una perspectiva general de la seguridad en entornos Unix,el funcionamiento de sus mecanismos, y su correcta utilización. También sehablará, en menor medida, sobre temas menos técnicos pero que también afectandirectamente a la seguridad informática, como puedan ser el problema del per-sonal o la legislación vigente.

    El objetivo final de este proyecto seŕıa marcar unas pautas para conseguir unnivel de seguridad aceptable en los sistemas Unix conectados en cualquier red,entendiendo por ‘aceptable’ un nivel de protección suficiente para que la mayoŕıade potenciales intrusos interesados en los equipos de nuestra organización fra-casara ante un ataque contra los mismos. Obviamente, es imposible garantizaruna plena seguridad ante cualquier atacante: seguramente un pirata experimen-tado, con el tiempo suficiente, pagado, o simplemente muy interesado en unode nuestros equipos, no tendŕıa muchos problemas en acceder a él. Este hecho,aunque preocupante, es casi inevitable; lo evitable es que cualquier persona seacapaz de atacar con éxito un equipo simplemente por haber visto una peĺıcula,descargado un par de páginas web y ejecutado un programa que ni ha hecho nientiende.

    Por supuesto, este proyecto no pretende ser en ningún momento una ayuda parala gente que esté interesada en atacar máquinas Unix o subredes completas, nitampoco una invitación a hacerlo. Aunque por su naturaleza la informaciónaqúı presentada puede ser utilizada para dañar sistemas informáticos (comocualquier información sobre seguridad informática), no es ese su propósito sino,como hemos dicho, incrementar la seguridad de los sistemas Unix y las redesen las que éstos se ubican. Por tanto va a intentar estar escrito de forma queno se pueda utilizar fácilmente como una ‘receta de cocina’ para crackers; si al-guien quiere un documento sobre cómo atacar sistemas, puede dejar de leer estetrabajo y buscar en Internet información sobre ese tema. Conseguir romper laseguridad de un sistema de forma no autorizada es, en la mayoŕıa de los casos,un śımbolo de inmadurez, y por supuesto ni denota inteligencia ni unos exce-sivos conocimientos: si alguien se considera superior por acceder ilegalmente auna máquina utilizando un programa que ni ha hecho ni es capaz de entender,que revise sus principios, y si tras hacerlo aún piensa lo mismo, que dedique suinteligencia y sus conocimientos a tareas que ayuden a incrementar la seguridad,como la construcción de sistemas de autenticación fiables y baratos o el diseñode nuevos criptosistemas seguros. Eso es seguridad informática, y no lo quehabitualmente se nos quiere hacer creer: la seguridad informática no consisteen conocerse todos los bugs de un sistema operativo, con sus correspondientesexploits ni en jugar a superjakers en canales de IRC. Lamentablemente, este esel panorama de la seguridad más visible en España en la actualidad; esperemosque algún d́ıa cambie.

  • 4 CAPÍTULO 1. INTRODUCCIÓN Y CONCEPTOS PREVIOS

    1.3 ¿Qué es seguridad?

    Podemos entender como seguridad una caracteŕıstica de cualquier sistema (in-formático o no) que nos indica que ese sistema está libre de todo peligro, dañoo riesgo, y que es, en cierta manera, infalible. Como esta caracteŕıstica, par-ticularizando para el caso de sistemas operativos o redes de computadores, esmuy dif́ıcil de conseguir (según la mayoŕıa de expertos, imposible), se suavizala definición de seguridad y se pasa a hablar de fiabilidad (probabilidad de queun sistema se comporte tal y como se espera de él) más que de seguridad; portanto, se habla de sistemas fiables en lugar de hacerlo de sistemas seguros.

    A grandes rasgos se entiende que mantener un sistema seguro (o fiable) consistebásicamente en garantizar tres aspectos ([Pfl97]): confidencialidad, integridady disponibilidad. Algunos estudios ([Lap91],[Olo92]. . . ) integran la seguridaddentro de una propiedad más general de los sistemas, la confiabilidad, enten-dida como el nivel de calidad del servicio ofrecido. Consideran la disponibilidadcomo un aspecto al mismo nivel que la seguridad y no como parte de ella, por loque dividen esta última en sólo las dos facetas restantes, confidencialidad e inte-gridad. En este trabajo no seguiremos esa corriente por considerarla minoritaria.

    ¿Qué implica cada uno de los tres aspectos de los que hablamos? La confiden-cialidad nos dice que los objetos de un sistema han de ser accedidos únicamentepor elementos autorizados a ello, y que esos elementos autorizados no van a con-vertir esa información en disponible para otras entidades; la integridad significaque los objetos sólo pueden ser modificados1 por elementos autorizados, y deuna manera controlada, y la disponibilidad indica que los objetos del sistematienen que permanecer accesibles a elementos autorizados; es el contrario dela negación de servicio. Generalmente tienen que existir los tres aspectosdescritos para que haya seguridad: un sistema Unix puede conseguir confiden-cialidad para un determinado fichero haciendo que ningún usuario (ni siquierael root) pueda leerlo, pero este mecanismo no proporciona disponibilidad alguna.

    Dependiendo del entorno en que un sistema Unix trabaje, a sus responsables lesinteresará dar prioridad a un cierto aspecto de la seguridad. Por ejemplo, enun sistema militar se antepondrá la confidencialidad de los datos almacenadoso transmitidos sobre su disponibilidad: seguramente, es preferible que alguienborre información confidencial (que se podŕıa recuperar después desde una cintade backup) a que ese mismo atacante pueda leerla, o a que esa información estédisponible en un instante dado para los usuarios autorizados. En cambio, enun servidor NFS de un departamento se premiará la disponibilidad frente a laconfidencialidad: importa poco que un atacante lea una unidad, pero que esamisma unidad no sea léıda por usuarios autorizados va a suponer una pérdidade tiempo y dinero. En un entorno bancario, la faceta que más ha de preocupara los responsables del sistema es la integridad de los datos, frente a su disponi-

    1Por modificar entendemos escribir, cambiar, cambiar el estado, borrar y crear.

  • 1.4. ¿QUÉ QUEREMOS PROTEGER? 5

    bilidad o su confidencialidad: es menos grave2 que un usuario consiga leer elsaldo de otro que el hecho de que ese usuario pueda modificarlo.

    1.4 ¿Qué queremos proteger?

    Los tres elementos principales a proteger en cualquier sistema informático sonel software, el hardware y los datos. Por hardware entendemos el conjuntoformado por todos los elementos f́ısicos de un sistema informático, como CPUs,terminales, cableado, medios de almacenamiento secundario (cintas, CD-ROMs,diskettes. . . ) o tarjetas de red. Por software entendemos el conjunto de pro-gramas lógicos que hacen funcional al hardware, tanto sistemas operativos comoaplicaciones, y por datos el conjunto de información lógica que manejan el soft-ware y el hardware, como por ejemplo paquetes que circulan por un cable dered o entradas de una base de datos. Aunque generalmente en las auditoŕıas deseguridad se habla de un cuarto elemento a proteger, los fungibles (elementosque se gastan o desgastan con el uso cont́ınuo, como papel de impresora, tóners,cintas magnéticas, diskettes. . . ), aqúı no consideraremos la seguridad de estoselementos por ser externos al sistema Unix.

    Habitualmente los datos constituyen el principal elemento de los tres a pro-teger, ya que es el más amenazado y seguramente el más dif́ıcil de recuperar3:con toda seguridad una máquina Unix está ubicada en un lugar de acceso f́ısicorestringido, o al menos controlado, y además en caso de pérdida de una apli-cación (o un programa de sistema, o el propio núcleo de Unix) este softwarese puede restaurar sin problemas desde su medio original (por ejemplo, el CD-ROM con el sistema operativo que se utilizó para su instalación). Sin embargo,en caso de pérdida de una base de datos o de un proyecto de un usuario, notenemos un medio ‘original’ desde el que restaurar: hemos de pasar obligatoria-mente por un sistema de copias de seguridad, y a menos que la poĺıtica de copiassea muy estricta, es dif́ıcil devolver los datos al estado en que se encontrabanantes de la pérdida.

    Contra cualquiera de los tres elementos descritos anteriormente (pero princi-palmente sobre los datos) se pueden realizar multitud de ataques o, dicho deotra forma, están expuestos a diferentes amenazas. Generalmente, la taxonomı́amás elemental de estas amenazas las divide en cuatro grandes grupos: interrup-ción, interceptación, modificación y fabricación. Un ataque se clasifica comointerrupción si hace que un objeto del sistema se pierda, quede inutilizable ono disponible. Se tratará de una interceptación si un elemento no autorizadoconsigue un acceso a un determinado objeto del sistema, y de una modificaciónsi además de conseguir el acceso consigue modificar el objeto; algunos autores([Olo92]) consideran un caso especial de la modificación: la destrucción, en-tendiéndola como una modificación que inutiliza al objeto afectado. Por último,

    2Aunque por supuesto no es en absoluto recomendable.3Quizás no el más caro, pero śı el más dif́ıcil.

  • 6 CAPÍTULO 1. INTRODUCCIÓN Y CONCEPTOS PREVIOS

    Figura 1.1: Flujo normal de información entre emisor y receptor y posibles ame-nazas: (a) interrupción, (b) interceptación, (c) modificación y (d) fabricación.

    se dice que un ataque es una fabricación si se trata de una modificación desti-nada a conseguir un objeto similar al atacado de forma que sea dif́ıcil distinguirentre el objeto original y el ‘fabricado’. En la figura 1.1 se muestran estos tiposde ataque de una forma gráfica.

    1.5 ¿De qué nos queremos proteger?

    En la gran mayoŕıa de publicaciones relativas a la seguridad informática en gen-eral, y especialmente en las relativas a seguridad en Unix, tarde o temprano seintenta clasificar en grupos a los posibles elementos que pueden atacar nuestrosistema. Con frecuencia, especialmente en las obras menos técnicas y más orien-tadas a otros aspectos de la seguridad ([ISV95], [Mey89]. . . ), se suele identificara los atacantes únicamente como personas; esto tiene sentido si hablamos porejemplo de responsabilidades por un delito informático. Pero en este trabajoes preferible hablar de ‘elementos’ y no de personas: aunque a veces lo olvide-

  • 1.5. ¿DE QUÉ NOS QUEREMOS PROTEGER? 7

    mos, nuestro sistema puede verse perjudicado por múltiples entidades apartede humanos, como por ejemplo programas, catástrofes naturales o, por qué no,fuerzas extraterrestres; si un usuario pierde un trabajo importante a causa deun ataque, poco le importará que haya sido un intruso, un gusano, un simpleerror del administrador, o un alien que haya abducido un disco duro. . .

    A continuación se presenta una relación de los elementos que potencialmentepueden amenazar a nuestro sistema. No pretende ser exhaustiva, ni por supuestouna taxonomı́a formal (para este tipo de estudios, se recomienda consultar[LBMC94] o [AKS96]); simplemente trata de proporcionar una idea acerca dequé o quién amenaza un sistema Unix. A lo largo de este proyecto se ahondaráen aspectos de algunos de los elementos presentados aqúı.

    1.5.1 Personas

    No podernos engañarnos: la mayoŕıa de ataques a nuestro sistema van a proveniren última instancia de personas que, intencionada o inintencionadamente, puedencausarnos enormes pérdidas. Generalmente se tratará de piratas que intentanconseguir el máximo nivel de privilegio posible aprovechando alguno (o algunos)de los riesgos lógicos de los que hablaremos a continuación, especialmente agu-jeros del software. Pero con demasiada frecuencia se suele olvidar que los piratas‘clásicos’ no son los únicos que amenazan nuestros equipos: es especialmente pre-ocupante que mientras que hoy en d́ıa cualquier administrador mı́nimamentepreocupado por la seguridad va a conseguir un sistema relativamente fiablede una forma lógica (permaneciendo atento a vulnerabilidades de su software,restringiendo servicios, utilizando cifrado de datos. . . ), pocos administradorestienen en cuenta factores como la ingenieŕıa social o el basureo a la hora dediseñar una poĺıtica de seguridad.

    Aqúı se describen brevemente los diferentes tipos de personas que de una uotra forma pueden constituir un riesgo para nuestros sistemas; generalmente sedividen en dos grandes grupos: los atacantes pasivos, aquellos que fisgonean porel sistema pero no lo modifican -o destruyen-, y los activos, aquellos que dañanel objetivo atacado, o lo modifican en su favor. Generalmente los curiosos y loscrackers realizan ataques pasivos (que se pueden convertir en activos), mientrasque los terroristas y ex-empleados realizan ataques activos puros; los intrusos re-munerados suelen ser atacantes pasivos si nuestra red o equipo no es su objetivo,y activos en caso contrario, y el personal realiza ambos tipos indistintamente,dependiendo de la situación concreta.

    • PersonalLas amenazas a la seguridad de un sistema provenientes del personal dela propia organización rara vez son tomadas en cuenta; se presupone unentorno de confianza donde a veces no existe, por lo que se pasa poralto el hecho de que casi cualquier persona de la organización, incluso el

  • 8 CAPÍTULO 1. INTRODUCCIÓN Y CONCEPTOS PREVIOS

    personal ajeno a la infraestructura informática (secretariado, personal deseguridad, personal de limpieza y mantenimiento. . . ) puede comprometerla seguridad de los equipos.Aunque los ataques pueden ser intencionados (en cuyo caso sus efectosson extremadamente dañinos, recordemos que nadie mejor que el propiopersonal de la organización conoce mejor los sistemas. . . y sus debilidades),lo normal es que más que de ataques se trate de accidentes causados porun error o por desconocimiento4 de las normas básicas de seguridad: unempleado de mantenimiento que corta el suministro eléctrico para haceruna reparación puede llegar a ser tan peligroso como el más experto delos administradores que se equivoca al teclear una orden y borra todoslos sistemas de ficheros; y en el primer caso, el ‘atacante’ ni siquiera hade tener acceso lógico (¡ni f́ısico!) a los equipos, ni conocer nada sobreseguridad en Unix. Hemos de recordar siempre que decir ‘No lo hice apropósito’ no va a servir para recuperar datos perdidos ni para restaurarun hardware dañado o robado.

    • Ex-empleadosOtro gran grupo de personas potencialmente interesadas en atacar nue-stro sistema son los antiguos empleados del mismo, especialmente los queno abandonaron el entorno por voluntad propia (y en el caso de redesde empresas, los que pasaron a la competencia). Generalmente, se tra-ta de personas descontentas con la organización que pueden aprovechardebilidades de un sistema que conocen perfectamente para dañarlo comovenganza por algún hecho que no consideran justo: amparados en excusascomo ‘No me han pagado lo que me deben’ o ‘Es una gran universidad, selo pueden permitir’ pueden insertar troyanos, bombas lógicas, virus. . . osimplemente conectarse al sistema como si aún trabajaran para la orga-nización (muchas veces se mantienen las cuentas abiertas incluso mesesdespués de abandonar la universidad o empresa), conseguir el privilegionecesario, y dañarlo de la forma que deseen, incluso chantajeando a susex-compañeros o ex-jefes.

    • CuriososJunto con los crackers, los curiosos son los atacantes más habituales desistemas Unix en redes de I+D. Recordemos que los equipos están traba-jando en entornos donde se forma a futuros profesionales de la informáticay las telecomunicaciones (gente que a priori tiene interés por las nuevastecnoloǵıas), y recordemos también que las personas suelen ser curiosaspor naturaleza; esta combinación produce una avalancha de estudiantes opersonal intentando conseguir mayor privilegio del que tienen o intentandoacceder a sistemas a los que oficialmente no tienen acceso. Y en la may-oŕıa de ocasiones esto se hace simplemente para leer el correo de un amigo,enterarse de cuánto cobra un compañero, copiar un trabajo o comprobarque es posible romper la seguridad de un sistema concreto. Aunque en la

    4O inexistencia.

  • 1.5. ¿DE QUÉ NOS QUEREMOS PROTEGER? 9

    mayoŕıa de situaciones se trata de ataques no destructivos (a excepcióndel borrado de huellas para evitar la detección), parece claro que no ben-efician en absoluto al entorno de fiabilidad que podamos generar en undeterminado sistema.

    • CrackersLos entornos de seguridad media son un objetivo t́ıpico de los intrusos,ya sea para fisgonear, para utilizarlas como enlace hacia otras redes osimplemente por diversión. Por un lado, son redes generalmente abiertas,y la seguridad no es un factor tenido muy en cuenta en ellas; por otro, elgran número y variedad de sistemas Unix conectados a estas redes provoca,casi por simple probabilidad, que al menos algunos de sus equipos (cuandono la mayoŕıa) sean vulnerables a problemas conocidos de antemano. Deesta forma un atacante sólo ha de utilizar un escáner de seguridad contrael dominio completo y luego atacar mediante un simple exploit los equiposque presentan vulnerabilidades; esto convierte a las redes de I+D, a lasde empresas, o a las de ISPs en un objetivo fácil y apetecible para piratascon cualquier nivel de conocimientos, desde los más novatos (y a veces máspeligrosos) hasta los expertos, que pueden utilizar toda la red para probarnuevos ataques o como nodo intermedio en un ataque a otros organismos,con el consiguiente deterioro de imagen (y a veces de presupuesto) quesupone para una universidad ser, sin desearlo, un apoyo a los piratas queatacan sistemas teóricamente más protegidos, como los militares.

    • TerroristasPor ‘terroristas’ no debemos entender simplemente a los que se dedicana poner bombas o quemar autobuses; bajo esta definición se engloba acualquier persona que ataca al sistema simplemente por causar algún tipode daño en él. Por ejemplo, alguien puede intentar borrar las bases dedatos de un partido poĺıtico enemigo o destruir los sistemas de ficherosde un servidor que alberga páginas web de algún grupo religioso; en elcaso de redes de I+D, t́ıpicos ataques son la destrucción de sistemas deprácticas o la modificación de páginas web de algún departamento o deciertos profesores, generalmente por parte de alumnos descontentos.

    • Intrusos remuneradosEste es el grupo de atacantes de un sistema más peligroso, aunque por for-tuna el menos habitual en redes normales; suele afectar más a las grandes –muy grandes – empresas o a organismos de defensa. Se trata de piratas congran experiencia en problemas de seguridad y un amplio conocimiento delsistema, que son pagados por una tercera parte5 generalmente para robarsecretos (el nuevo diseño de un procesador, una base de datos de clientes,información confidencial sobre las posiciones de satélites esṕıa. . . ) o sim-plemente para dañar la imagen de la entidad afectada. Esta tercera partesuele ser una empresa de la competencia o un organismo de inteligencia, es

    5Si los pagara la organización propietaria de los equipos hablaŕıamos de grupos Tigre.

  • 10 CAPÍTULO 1. INTRODUCCIÓN Y CONCEPTOS PREVIOS

    decir, una organización que puede permitirse un gran gasto en el ataque;de ah́ı su peligrosidad: se suele pagar bien a los mejores piratas, y por siesto fuera poco los atacantes van a tener todos los medios necesarios a sualcance.Aunque como hemos dicho los intrusos remunerados son los menos co-munes en la mayoŕıa de situaciones, en ciertas circunstancias puedenaprovechar nuestras redes como plataforma para atacar otros organismos;una excelente lectura sobre esta situación es [Sto89], en la que el expertoen seguridad Cliff Stoll describe cómo piratas pagados por el KGB so-viético utilizaron redes y sistemas Unix dedicados a I+D para acceder aorganismos de defensa e inteligencia estadounidenses.

    1.5.2 Amenazas lógicas

    Bajo la etiqueta de ‘amenazas lógicas’ encontramos todo tipo de programasque de una forma u otra pueden dañar a nuestro sistema, creados de formaintencionada para ello (software malicioso, también conocido como malware) osimplemente por error (bugs o agujeros). Una excelente lectura que estudia lasdefiniciones de algunas de estas amenazas y su implicación en el sistema Unixse presenta en [GS96]; otra buena descripción, pero a un nivel más general, sepuede encontrar en [Par81].

    • Software incorrectoLas amenazas más habituales a un sistema Unix provienen de errorescometidos de forma involuntaria por los programadores de sistemas o deaplicaciones. Una situación no contemplada a la hora de diseñar el sistemade red del kernel o un error accediendo a memoria en un fichero setuidadopueden comprometer local o remotamente a Unix (o a cualquier otro sis-tema operativo).A estos errores de programación se les denomina bugs, y a los progra-mas utilizados para aprovechar uno de estos fallos y atacar al sistema,exploits. Como hemos dicho, representan la amenaza más común contraUnix, ya que cualquiera puede conseguir un exploit y utilizarlo contra nues-tra máquina sin ni siquiera saber cómo funciona y sin unos conocimientosmı́nimos de Unix; incluso hay exploits que dañan seriamente la integridadde un sistema (negaciones de servicio o incluso acceso root remoto) yestán preparados para ser utilizados desde MS-DOS, con lo que cualquierpirata novato (comúnmente, se les denomina Script Kiddies) puede uti-lizarlos contra un servidor y conseguir un control total de una máquina devarios millones de pesetas desde su PC sin saber nada del sistema ataca-do; incluso hay situaciones en las que se analizan los logs de estos ataquesy se descubre que el pirata incluso intenta ejecutar órdenes de MS-DOS.

    • Herramientas de seguridadCualquier herramienta de seguridad representa un arma de doble filo: dela misma forma que un administrador las utiliza para detectar y solu-cionar fallos en sus sistemas o en la subred completa, un potencial intruso

  • 1.5. ¿DE QUÉ NOS QUEREMOS PROTEGER? 11

    las puede utilizar para detectar esos mismos fallos y aprovecharlos paraatacar los equipos. Herramientas como nessus, saint o satan pasan deser útiles a ser peligrosas cuando las utilizan crackers que buscan infor-mación sobre las vulnerabilidades de un host o de una red completa.La conveniencia de diseñar y distribuir libremente herramientas que puedanfacilitar un ataque es un tema peliagudo; incluso expertos reconocidos co-mo Alec Muffet (autor del adivinador de contraseñas Crack) han recibidoenormes cŕıticas por diseñar determinadas herramientas de seguridad paraUnix. Tras numerosos debates sobre el tema, ha quedado bastante claroque no se puede basar la seguridad de un sistema en el supuesto de-sconocimiento de sus problemas por parte de los atacantes: esta poĺıtica,denominada Security through obscurity, se ha demostrado inservible enmúltiples ocasiones. Si como administradores no utilizamos herramien-tas de seguridad que muestren las debilidades de nuestros sistemas (paracorregirlas), tenemos que estar seguro que un atacante no va a dudar enutilizar tales herramientas (para explotar las debilidades encontradas); portanto, hemos de agradecer a los diseñadores de tales programas el esfuerzoque han realizado (y nos han ahorrado) en pro de sistemas más seguros.

    • Puertas traserasDurante el desarrollo de aplicaciones grandes o de sistemas operativos eshabitual entre los programadores insertar ‘atajos’ en los sistemas habit-uales de autenticación del programa o del núcleo que se está diseñando.A estos atajos se les denomina puertas traseras, y con ellos se consiguemayor velocidad a la hora de detectar y depurar fallos: por ejemplo, losdiseñadores de un software de gestión de bases de datos en el que paraacceder a una tabla se necesiten cuatro claves diferentes de diez caracterescada una pueden insertar una rutina para conseguir ese acceso medianteuna única clave ‘especial’, con el objetivo de perder menos tiempo al depu-rar el sistema.Algunos programadores pueden dejar estos atajos en las versiones definiti-vas de su software para facilitar un mantenimiento posterior, para garan-tizar su propio acceso, o simplemente por descuido; la cuestión es que siun atacante descubre una de estas puertas traseras (no nos importa elmétodo que utilice para hacerlo) va a tener un acceso global a datos queno debeŕıa poder leer, lo que obviamente supone un grave peligro para laintegridad de nuestro sistema.

    • Bombas lógicasLas bombas lógicas son partes de código de ciertos programas que per-manecen sin realizar ninguna función hasta que son activadas; en esepunto, la función que realizan no es la original del programa, sino quegeneralmente se trata de una acción perjudicial.Los activadores más comunes de estas bombas lógicas pueden ser la ausen-cia o presencia de ciertos ficheros, la ejecución bajo un determinado UIDo la llegada de una fecha concreta; cuando la bomba se activa va a poder

  • 12 CAPÍTULO 1. INTRODUCCIÓN Y CONCEPTOS PREVIOS

    realizar cualquier tarea que pueda realizar la persona que ejecuta el pro-grama: si las activa el root, o el programa que contiene la bomba estásetuidado a su nombre, los efectos obviamente pueden ser fatales.

    • Canales cubiertosSegún la definición de [B+85] y [B+88], los canales cubiertos (o canalesocultos, según otras traducciones) son canales de comunicación que per-miten a un proceso transferir información de forma que viole la poĺıticade seguridad del sistema; dicho de otra forma, un proceso transmite infor-mación a otros (locales o remotos) que no están autorizados a leer dichainformación.Los canales cubiertos no son una amenaza demasiado habitual en redesde I+D, ya que suele ser mucho más fácil para un atacante aprovecharcualquier otro mecanismo de ataque lógico; sin embargo, es posible su ex-istencia, y en este caso su detección suele ser dif́ıcil: algo tan simple comoel puerto finger abierto en una máquina puede ser utilizado a modo decovert channel por un pirata con algo de experiencia.

    • VirusUn virus es una secuencia de código que se inserta en un fichero ejecutable(denominado huésped), de forma que cuando el archivo se ejecuta, el virustambién lo hace, insertándose a śı mismo en otros programas.Todo el mundo conoce los efectos de los virus en algunos sistemas op-erativos de sobremesa; sin embargo, en Unix los virus no suelen ser unproblema de seguridad grave, ya que lo que pueda hacer un virus lo puedehacer más fácilmente cualquier otro mecanismo lógico (que será el que hayque tener en cuenta a la hora de diseñar una poĺıtica de seguridad).Aunque los virus existentes para entornos Unix son más una curiosidadque una amenaza real, en sistemas sobre plataformas IBM-PC o com-patibles (recordemos que hay muchos sistemas Unix que operan en estasplataformas, como Linux, FreeBSD, NetBSD, Minix, Solaris. . . ) ciertosvirus, especialmente los de boot, pueden tener efectos nocivos, como dañarel sector de arranque; aunque se trata de daños menores comparados conlos efectos de otras amenazas, hay que tenerlos en cuenta.

    • GusanosUn gusano es un programa capaz de ejecutarse y propagarse por śı mismoa través de redes, en ocasiones portando virus o aprovechando bugs de lossistemas a los que conecta para dañarlos. Al ser dif́ıciles de programar sunúmero no es muy elevado, pero el daño que pueden causar es muy grande:el mayor incidente de seguridad en Internet fué precisamente el InternetWorm, un gusano que en 1988 causó perdidas millonarias al infectar ydetener más de 6000 máquinas conectadas a la red.Hemos de pensar que un gusano puede automatizar y ejecutar en unossegundos todos los pasos que seguiŕıa un atacante humano para accedera nuestro sistema: mientras que una persona, por muchos conocimientosy medios que posea, tardaŕıa como mı́nimo horas en controlar nuestra

  • 1.5. ¿DE QUÉ NOS QUEREMOS PROTEGER? 13

    red completa (un tiempo más que razonable para detectarlo), un gusanopuede hacer eso mismo en pocos minutos: de ah́ı su enorme peligro y susdevastadores efectos.

    • Caballos de TroyaLos troyanos o caballos de Troya son instrucciones escondidas en un pro-grama de forma que éste parezca realizar las tareas que un usuario esperade él, pero que realmente ejecute funciones ocultas (generalmente en detri-mento de la seguridad) sin el conocimiento del usuario; como el Caballode Troya de la mitoloǵıa griega, al que deben su nombre, ocultan su fun-ción real bajo la apariencia de un programa inofensivo que a primera vistafunciona correctamente.En la práctica totalidad de los ataques a Unix, cuando un intruso con-sigue el privilegio necesario en el sistema instala troyanos para ocultar supresencia o para asegurarse la entrada en caso de ser descubierto: porejemplo, es t́ıpico utilizar lo que se denomina un rootkit, que no es másque un conjunto de versiones troyanas de ciertas utilidades (netstat, ps,who. . . ), para conseguir que cuando el administrador las ejecute no veala información relativa al atacante, como sus procesos o su conexión alsistema; otro programa que se suele suplantar es login, por ejemplo paraque al recibir un cierto nombre de usuario y contraseña proporcione accesoal sistema sin necesidad de consultar /etc/passwd.

    • Programas conejo o bacteriasBajo este nombre se conoce a los programas que no hacen nada útil, sinoque simplemente se dedican a reproducirse hasta que el número de copiasacaba con los recursos del sistema (memoria, procesador, disco. . . ), pro-duciendo una negación de servicio. Por śı mismos no hacen ningún daño,sino que lo que realmente perjudica es el gran número de copias suyas enel sistema, que en algunas situaciones pueden llegar a provocar la paradatotal de la máquina.Hemos de pensar hay ciertos programas que pueden actuar como conejossin proponérselo; ejemplos t́ıpicos se suelen encontrar en los sistemas Unixdestinados a prácticas en las que se enseña a programar al alumnado: esmuy común que un bucle que por error se convierte en infinito contengaentre sus instrucciones algunas de reserva de memoria, lo que implica quesi el sistema no presenta una correcta poĺıtica de cuotas para procesos deusuario pueda venirse abajo o degradar enormemente sus prestaciones. Elhecho de que el autor suela ser fácilmente localizable no debe ser ningunaexcusa para descuidar esta poĺıtica: no podemos culpar a un usuario porun simple error, y además el daño ya se ha producido.

    • Técnicas salamiPor técnica salami se conoce al robo automatizado de pequeñas cantidadesde bienes (generalmente dinero) de una gran cantidad origen. El hecho deque la cantidad inicial sea grande y la robada pequeña hace extremada-mente dif́ıcil su detección: si de una cuenta con varios millones de pesetas

  • 14 CAPÍTULO 1. INTRODUCCIÓN Y CONCEPTOS PREVIOS

    se roban unos céntimos, nadie va a darse cuenta de ello; si esto se autom-atiza para, por ejemplo, descontar una peseta de cada nómina pagada enla universidad o de cada beca concedida, tras un mes de actividad segu-ramente se habrá robado una enorme cantidad de dinero sin que nadie sehaya percatado de este hecho, ya que de cada origen se ha tomado unacantidad ı́nfima.Las técnicas salami no se suelen utilizar para atacar sistemas normales,sino que su uso más habitual es en sistemas bancarios; sin embargo, comoen una red con requerimientos de seguridad medios es posible que hayaordenadores dedicados a contabilidad, facturación de un departamentoo gestión de nóminas del personal, comentamos esta potencial amenazacontra el software encargado de estas tareas.

    1.5.3 Catástrofes

    Las catástrofes (naturales o artificiales) son la amenaza menos probable con-tra los entornos habituales: simplemente por su ubicación geográfica, a nadiese le escapa que la probabilidad de sufrir un terremoto o una inundación queafecte a los sistemas informáticos en una gran ciudad como Madrid, Valenciao Barcelona, es relativamente baja, al menos en comparación con el riesgo desufrir un intento de acceso por parte de un pirata o una infección por virus. Sinembargo, el hecho de que las catástrofres sean amenazas poco probables no im-plica que contra ellas no se tomen unas medidas básicas, ya que si se produjerangeneraŕıan los mayores daños.

    Un subgrupo de las catástrofes es el denominado de riesgos poco proba-bles. Obviamente se denomina aśı al conjunto de riesgos que, aunque existen,la posibilidad de que se produzcan es tan baja (menor incluso que la del restode catástrofes) que nadie toma, o nadie puede tomar, medidas contra ellos.Ejemplos habituales de riesgos poco probables son un ataque nuclear contra elsistema, el impacto de un satélite contra la sala de operaciones, o la abducciónde un operador por una nave extraterrestre. Nada nos asegura que este tipo decatástrofes no vaya a ocurrir, pero la probabilidad es tan baja y los sistemas deprevención tan costosos que no vale la pena tomar medidas contra ellas.

    Como ejemplos de catástrofes hablaremos de terremotos, inundaciones, incen-dios, humo o atentados de baja magnitud (más comunes de lo que podamos pen-sar); obviamente los riesgos poco probables los trataremos como algo anecdótico.De cualquier forma, vamos a hablar de estas amenazas sin extendernos mucho,ya que el objetivo de este proyecto no puede ser el proporcionar las directricespara una construcción de edificios a prueba de terremotos, o un plan formal deevacuación en caso de incendio.

  • 1.6. ¿CÓMO NOS PODEMOS PROTEGER? 15

    1.6 ¿Cómo nos podemos proteger?

    Hasta ahora hemos hablado de los aspectos que engloba la seguridad informática,de los elementos a proteger, de los tipos de amenazas que contra ellos se pre-sentan y del origen de tales amenazas; parece claro que, para completar nuestravisión de la seguridad, hemos de hablar de las formas de protección de nue-stros sistemas. Cuando hayamos completado este punto, habremos presentadoa grandes rasgos los diferentes puntos a tratar en este proyecto, tal y como sesintetiza en la figura 1.2.

    Para proteger nuestro sistema hemos de realizar un análisis de las amenazaspotenciales que puede sufrir, las pérdidas que podŕıan generar, y la probabili-dad de su ocurrencia; a partir de este análisis hemos de diseñar una poĺıtica deseguridad que defina responsabilidades y reglas a seguir para evitar tales ame-nazas o minimizar sus efectos en caso de que se produzcan. A los mecanismosutilizados para implementar esta poĺıtica de seguridad se les denomina mecan-ismos de seguridad; son la parte más visible de nuestro sistema de seguridad,y se convierten en la herramienta básica para garantizar la protección de lossistemas o de la propia red.

    Los mecanismos de seguridad se dividen en tres grandes grupos: de prevención,de detección y de recuperación. Los mecanismos de prevención son aquellosque aumentan la seguridad de un sistema durante el funcionamiento normal deéste, previniendo la ocurrencia de violaciones a la seguridad; por ejemplo, eluso de cifrado en la transmisión de datos se puede considerar un mecanismo deeste tipo, ya que evita que un posible atacante escuche las conexiones hacia odesde un sistema Unix en la red. Por mecanismos de detección se conoce aaquellos que se utilizan para detectar violaciones de la seguridad o intentos deviolación; ejemplos de estos mecanismos son los programas de auditoŕıa comoTripwire. Finalmente, los mecanismos de recuperación son aquellos que seaplican cuando una violación del sistema se ha detectado, para retornar a éstea su funcionamiento correcto; ejemplos de estos mecanismos son la utilizaciónde copias de seguridad o el hardware adicional. Dentro de este último grupo demecanismos de seguridad encontramos un subgrupo denominado mecanismosde análisis forense, cuyo objetivo no es simplemente retornar al sistema a sumodo de trabajo normal, sino averiguar el alcance de la violación, las activi-dades de un intruso en el sistema, y la puerta utilizada para entrar6; de estaforma se previenen ataques posteriores y se detectan ataques a otros sistemasde nuestra red.

    Parece claro que, aunque los tres tipos de mecanismos son importantes parala seguridad de nuestro sistema, hemos de enfatizar en el uso de mecanismos deprevención y de detección; la máxima popular ‘más vale prevenir que curar’ sepuede aplicar a la seguridad informática: para nosotros, evitar un ataque, de-

    6Si además los resultados se pretenden utilizar como pruebas ante un tribunal, se habla deInformatoscopia ([Gal96a]).

  • 16 CAPÍTULO 1. INTRODUCCIÓN Y CONCEPTOS PREVIOS

    ?

    SEGURIDAD

    FIABILIDAD

    ASPECTOS AMENAZASELEMENTOS

    TIPOS ORIGEN

    Catástrofes

    Amenazas lógicas

    Personas

    MECANISMOS

    Recuperación

    Detección

    PrevenciónConfidencialidad

    Integridad

    Disponibilidad

    Interrupción

    Interceptación

    Modificación

    Fabricación

    Hardware

    Software

    Datos

    Figura 1.2: Visión global de la seguridad informática

  • 1.6. ¿CÓMO NOS PODEMOS PROTEGER? 17

    tectar un intento de violación, o detectar una violación exitosa inmediatamentedespués de que ocurra es mucho más productivo y menos comprometedor parael sistema que restaurar el estado tras una penetración de la máquina. Es más,si consiguiéramos un sistema sin vulnerabilidades y cuya poĺıtica de seguridadse implementara mediante mecanismos de prevención de una forma completa,no necesitaŕıamos mecanismos de detección o recuperación. Aunque esto es im-posible de conseguir en la práctica, será en los mecanismos de detección, y sobretodo en los de prevención, en los que centraremos nuestro trabajo.

    Los mecanismos de prevención más habituales en Unix y en redes son los sigu-ientes ([Olo92]):

    • Mecanismos de autenticación e identificaciónEstos mecanismos hacen posible identificar entidades del sistema de unaforma única, y posteriormente, una vez identificadas, autenticarlas (com-probar que la entidad es quién dice ser). Son los mecanismos más impor-tantes en cualquier sistema, ya que forman la base de otros mecanismosque basan su funcionamiento en la identidad de las entidades que accedena un objeto.Un grupo especialmente importante de estos mecanismos son los denomi-nados Sistemas de Autenticación de Usuarios, a los que prestaremos unaespecial atención por ser los más utilizados en la práctica.

    • Mecanismos de control de accesoCualquier objeto del sistema ha de estar protegido mediante mecanismosde control de acceso, que controlan todos los tipos de acceso sobre elobjeto por parte de cualquier entidad del sistema. Dentro de Unix, elcontrol de acceso más habitual es el discrecional (DAC, DiscretionaryAccess Control), implementado por los bits rwx y las listas de control deacceso para cada fichero (objeto) del sistema; sin embargo, también sepermiten especificar controles de acceso obligatorio (MAC).

    • Mecanismos de separaciónCualquier sistema con diferentes niveles de seguridad ha de implementarmecanismos que permitan separar los objetos dentro de cada nivel, evitan-do el flujo de información entre objetos y entidades de diferentes nivelessiempre que no exista una autorización expresa del mecanismo de controlde acceso.Los mecanismos de separación se dividen en cinco grandes grupos, en fun-ción de como separan a los objetos: separación f́ısica, temporal, lógica,criptográfica y fragmentación. Dentro de Unix, el mecanismo de sep-aración más habitual es el de separación lógica o aislamiento, imple-mentado en algunos sistemas mediante una Base Segura de Cómputo(TCB).

    • Mecanismos de seguridad en las comunicacionesEs especialmente importante para la seguridad de nuestro sistema el pro-teger la integridad y la privacidad de los datos cuando se transmiten a

  • 18 CAPÍTULO 1. INTRODUCCIÓN Y CONCEPTOS PREVIOS

    través de la red. Para garantizar esta seguridad en las comunicaciones,hemos de utilizar ciertos mecanismos, la mayoŕıa de los cuales se basanen la Criptograf́ıa: cifrado de clave pública, de clave privada, firmas digi-tales. . . Aunque cada vez se utilizan más los protocolos seguros (como SSHo Kerberos, en el caso de sistemas Unix en red), aún es frecuente encon-trar conexiones en texto claro ya no sólo entre máquinas de una mismasubred, sino entre redes diferentes. Una de las mayores amenazas a laintegridad de las redes es este tráfico sin cifrar, que hace extremadamentefáciles ataques encaminados a robar contraseñas o suplantar la identidadde máquinas de la red.

    A lo largo de este trabajo intentaremos explicar el funcionamiento de algunosde estos mecanismos para conseguir sistemas Unix más fiables; pero mucho másimportante que el funcionamiento de, por ejemplo, la Base Segura de Cómputoo las Listas de Control de Acceso, es la concienciación de usuarios y admin-istradores de las ventajas en materias de seguridad que estos mecanismos, ymuchos otros, ofrecen. Hemos de recordar que un sistema Unix instalado tal ycomo se distribuye suele representar una puerta abierta para cualquier pirata sinunos grandes conocimientos; si ese mismo sistema lo configuramos mı́nimamenteantes de ponerlo a trabajar, un intruso necesitará unos conocimientos del sis-tema operativo y de la red más o menos amplios (o mucha suerte) si quiere violarsu seguridad. Como ya dijimos, el objetivo de este proyecto no es conseguir unossistemas con seguridad militar en un entorno de normal (algo imposible), sinoconseguir un entorno de trabajo mı́nimamente fiable.

    1.7 Redes ‘normales’

    En este trabajo, como ya hemos comentado, no se pretende ni mucho menosadentrarse en temas de seguridad que se podŕıa considerar ‘de alto nivel’, comola necesaria en un entorno militar7, de inteligencia, o en una gran empresa quemaneje datos muy apetecibles para sus competidores. Un fallo en la seguridadde los sistemas informáticos de una central nuclear puede ser catastrófico – enel más amplio sentido de la palabra –; un pequeño fallo en los sistemas encarga-dos de lanzar un satélite nos costaŕıa a todos miles de millones de dólares. . . sien lugar de ser un satélite es un misil, podemos imaginarnos las consecuencias.Por fortuna para todos nosotros, esos sistemas son altamente seguros y porsupuesto no son simples ordenadores conectados a Internet. . . ni siquiera a redesde propósito general.

    Pero lo más probable es que todas estas cosas nos queden demasiado lejos ala mayoŕıa de mortales; para nosotros los problemas de seguridad diarios sonintrusiones, virus (sin comentarios), negaciones de servicio contra una máquinaque sirve páginas web. . . algo mucho más terrenal que todo lo anterior. Es en

    7Tampoco creo que fuera posible; a fin de cuentas, la seguridad de estos sistemas sólo laconocen los militares. . .

  • 1.7. REDES ‘NORMALES’ 19

    este tipo de entornos donde los mecanismos que estudiaremos se pueden aplicarmás fácilmente, tanto por las caracteŕısticas de los sistemas utilizados como porel – relativamente – bajo peligro de nuestros atacantes: imagino que la CIAo el KGB no estarán dispuestos a pagar a piratas profesionales para que en-tren y lean nuestro correo; los intrusos potencialmente interesados en nuestrasmáquinas serán chavales que sólo buscan un cierto status social en un grupo deaficionados a la pirateŕıa, o que acaban de ver una peĺıcula – de cuyo nombreno quiero acordarme – y tratan de emular a los actores. Gente que ante la másmı́nima dificultad para acceder a nuestra red, la abandonará y se dedicará a ob-jetivos más fáciles (como la red de nuestro vecino). Contra este tipo de personases contra quien debemos esforzarnos: ya hemos dicho que es inútil intentar parara un atacante profesional, pagado, o muy interesado en nuestras máquinas; elque su ataque tenga éxito es sólo cuestión de tiempo, y seguramente dependemás de la suerte que tenga él frente a la que tengamos noso