Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Tutoriales / Seguridad en Unix y redes - Usuarios y accesos al sistema

Seguridad en Unix y redes - Usuarios y accesos al sistema

 ****- (6 opiniones)
GNU Free Documentation License Tutorial de Antonio Villalón Huerta - 28 de Febrero de 2006
Temas Relacionados: Seguridad informática
45. Usuarios y accesos al sistema
Durante la instalación de Solaris se crean en /etc/passwd una serie de entradas correspondientes a usuarios considerados `del sistema' (adm, bin, nobody...); ninguno de estos usuarios tiene por qué acceder a la máquina, de forma que una buena política es bloquear sus cuentas. Podemos comprobar qué usuarios tienen el acceso bloqueado consultando el estado de su contraseña: si es `LK' (locked), la cuenta está bloqueada:

anita:/# passwd -s -a|grep LK daemon LK bin LK sys LK adm LK lp LK uucp LK nuucp LK listen LK nobody LK noaccess LK nobody4 LK anita:/#

Podemos bloquear una cuenta de acceso a la máquina mediante `passwd -l', de la forma siguiente:

anita:/# passwd -s toni toni PS 06/15/01 7 7 anita:/# passwd -l toni anita:/# passwd -s toni toni LK 06/27/01 7 7 anita:/#

A pesar de su estado, las cuentas bloqueadas son accesibles si ejecutamos la orden `su' como administradores, por lo que si estamos bastante preocupados por nuestra seguridad podemos asignarles un shell que no permita la ejecución de órdenes, como /bin/false10.6:

anita:/# su - adm $ id uid=4(adm) gid=4(adm) $ ^d anita:/# passwd -e adm Old shell: /bin/sh New shell: /bin/false anita:/# su - adm anita:/# id uid=0(root) gid=1(other) anita:/#

Si realmente somos paranoicos, de la lista de usuarios que hemos visto antes incluso nos podemos permitir el lujo de eliminar a nobody4, ya que se trata de una entrada que existe para proporcionar cierta compatibilidad entre Solaris y SunOS que actualmente apenas se usa. No obstante, muchísimo más importante que esto es eliminar o bloquear a cualquier usuario sin contraseña en el sistema; es recomendable comprobar de forma periódica que estos usuarios no existen, para lo cual también podemos utilizar `passwd -s -a' y vigilar las claves cuyo estado sea `NP' (No Password):

anita:/# passwd -s -a|grep NP prueba NP anita:/# passwd -l prueba anita:/#

Tras estas medidas de seguridad iniciales, lo más probable es que en nuestro sistema comencemos a dar de alta usuarios reales; sin duda, lo primero que estos usuarios tratarán de hacer es conectar remotamente vía telnet:

rosita:~$ telnet anita Trying 192.168.0.3... Connected to anita. Escape character is '^]'. SunOS 5.8 login: toni Password: Last login: Fri Jun 22 10:45:14 from luisa anita:~$

A estas alturas ya debemos saber que es una locura utilizar telnet para nuestras conexiones remotas por el peligro que implica el tráfico de contraseñas en texto claro, por lo que debemos obligatoriamente utilizar SSH o similar. Si de cualquier forma no tenemos más remedio que permitir telnet (no encuentro ningún motivo para ello, y personalmente dudo que los haya...), quizás nos interese modificar el banner de bienvenida al sistema, donde se muestra claramente que la máquina tiene instalada una versión concreta de Solaris: esto es algo que puede ayudar a un pirata que busque información de nuestro sistema. Para cambiar el mensaje podemos crear el archivo /etc/default/telnetd, en el que la entrada `BANNER' especifica dicho mensaje:

anita:/# cat /etc/default/telnetd BANNER="\nHP-UX anita A.09.05 E 9000/735 (ttyv4)\n\n" anita:/# telnet 0 Trying 0.0.0.0... Connected to 0. Escape character is '^]'. HP-UX anita A.09.05 E 9000/735 (ttyv4) login:

Algo similar se puede hacer con el fichero /etc/default/ftpd para el servicio de FTP, aunque de nuevo dudo que haya algún motivo para mantenerlo abierto; estos mensajes evidentemente no van a evitar que alguien pueda obtener datos sobre el sistema operativo que se ejecuta en una máquina (veremos al hablar del sistema de red en Solaris como conseguir esto), pero al menos no le dejarán esa información en bandeja.
Siguiendo con las conexiones remotas a un sistema, uno de los aspectos que nos puede llamar la atención si estamos comenzando a trabajar con Solaris es que el usuario root sólo puede conectar desde la propia consola de la máquina; si lo intenta de forma remota, se le negará el acceso:
luisa:~$ telnet anita Trying 192.168.0.3... Connected to anita. Escape character is '^]'. login: root Password: Not on system console Connection closed by foreign host. luisa:~$

Esto es debido a que el parámetro `CONSOLE' tiene como valor dicha consola (/dev/console) en el fichero /etc/default/login; para trabajar como superusuario de forma remota es necesario acceder al sistema como un usuario sin privilegios y después ejecutar el comando su. Esta forma de trabajo suele ser la más recomendable, ya que ofrece un equilibrio aceptable entre seguridad y funcionalidad; no obstante, si nos interesara que root pudiera conectar directamente de forma remota (no suele ser recomendable), podríamos comentar la entrada `CONSOLE' en el fichero anterior, mediante una almohadilla (`#'). Si por el contrario queremos que el administrador no pueda conectar al sistema ni desde la propia consola, y sólo se puedan alcanzar privilegios de superusuario mediante la ejecución de su, podemos dejar la entrada correspondiente a `CONSOLE' en blanco:

anita:/# grep -i console /etc/default/login # If CONSOLE is set, root can only login on that device. CONSOLE= anita:/#

En el fichero anterior (/etc/default/login) existen otros parámetros interesantes de cara a incrementar nuestra seguridad. Por ejemplo, el parámetro `TIMEOUT' indica el número de segundos (entre 0 y 900) que han de pasar desde que la máquina solicita el login al conectar remotamente hasta que se cierra la conexión si el usuario no lo teclea; esto nos puede ayudar a evitar ciertos ataques de negación de servicio, pero puede ser un problema si tenemos usuarios que conecten a través de líneas de comunicación lentas o muy saturadas, ya que con un timeout excesivamente bajo es posible que antes de que el usuario vea en su terminal el banner que le solicita su login la conexión llegue a cerrarse.
Relacionada en cierta forma con el parámetro anterior, y también dentro del archivo
/etc/default/login
, la entrada `SLEEPTIME' permite indicar el número de segundos - entre 0 y 5 - que han de transcurrir desde que se teclea una contraseña errónea y el mensaje login incorrect aparece en pantalla. Con `RETRIES' podemos especificar el número de intentos de entrada al sistema que se pueden producir hasta que un proceso de login finalice y la conexión remota asociada se cierre: en otras palabras, indicamos el número de veces que un usuario puede equivocarse al teclear su clave antes de que el sistema cierre su conexión.
Otra directiva interesante de /etc/default/login es `PASSREQ': si su valor es `YES', ningún usuario podrá conectar al sistema sin contraseña, y si es `NO', sí que se permiten este tipo de entradas. Evidentemente, el valor recomendable es el primero, aunque el incremento que conseguimos en nuestra seguridad no es excesivo y sólo se puede encontrar útil en circunstancias muy concretas, ya que a los usuarios que no tengan contraseña simplemente se les obligará a elegir un password al intentar entrar al sistema:
anita:~$ telnet 0 Trying 0.0.0.0... Connected to 0. Escape character is '^]'. login: prueba Choose a new password. New password:

Si realmente queremos asegurarnos de que no tenemos usuarios sin clave podemos ejecutar periódicamente la orden `logins -p', que nos mostrará los información acerca de los usuarios sin contraseña en la máquina; si su salida es no vacía, tenemos un grave problema de seguridad:

anita:/# logins -p prueba 107 staff 10 Usuari en proves anita:/# passwd prueba New password: Re-enter new password: passwd (SYSTEM): passwd successfully changed for prueba anita:/# logins -p anita:/#

Para finalizar con /etc/default/login, vamos a hablar de un par de entradas en el fichero relacionadas con la auditoría de los accesos al sistema: el parámetro `SYSLOG' con un valor `YES' determina si se han de registrar mediante syslog los accesos al sistema como root, así como los intentos de login fallidos, y el parámetro `SYSLOG/SMALL>_FAILED/SMALL>_LOGINS' indica el número de intentos de entrada fallidos que se han de producir antes de emitir un mensaje de error; es recomendable que esta segunda variable tenga un valor `0', que implica que syslog registrará todos los intentos fallidos de login:

anita:/# grep -i ^syslog /etc/default/login SYSLOG=YES SYSLOG_FAILED_LOGINS=0 anita:/#

Otro archivo interesante de cara a incrementar aspectos de la seguridad relacionados con los usuarios de nuestro sistema es /etc/default/passwd, donde se pueden definir parámetros para reforzar nuestra política de contraseñas; por ejemplo, podemos definir una longitud mínima para los passwords de los usuarios dándole un valor a la variable `PASSLENGTH':

anita:/# grep -i passlength /etc/default/passwd PASSLENGTH=8 anita:/#

Por defecto, la longitud mínima de una clave es de seis caracteres; si le asignamos a `PASSLENGTH' un valor menor (algo poco recomendable de cualquier forma), el sistema simplemente lo ignorará y obligará a los usuarios a utilizar passwords de seis o más caracteres. Además, sea cual sea la longitud de las claves que definamos, debemos tener siempre en cuenta que Solaris sólo interpetará los ocho primeros caracteres de cada contraseña; el resto son ignorados, por lo que dos passwords cuyos ocho primeros caracteres sean iguales serán equivalentes por completo para el modelo de autenticación.
Una contraseña en Solaris debe poseer al menos dos letras (mayúsculas o minúsculas) y al menos un número o carácter especial. Tampoco debe coincidir con el nombre de usuario, ni con rotaciones del mismo (por ejemplo el usuario `antonio' no podrá utilizar como clave `antonio', `ntonioa', `oinotna', etc.), y debe diferir del password anterior en al menos tres caracteres; para cualquiera de estos efectos comparativos, las letras mayúsculas y las minúsculas son equivalentes. Sólo el root puede adjudicar contraseñas que no cumplan las normas establecidas, pero a efectos de seguridad es recomendable que las claves que asigne tengan tantas restricciones como las que pueden escojer los usuarios (o más).
Volviendo de nuevo a /etc/default/passwd, dentro de este archivo tenemos un par de entradas útiles para establecer una política de envejecimiento de claves en nuestro sistema; se trata de `MAXWEEKS' y `MINWEEKS', que como sus nombres indican definen los tiempos de vida máximo y mínimo (en semanas) de una contraseña. Un tercer parámetro, `WARNWEEKS', define el periodo de tiempo (de nuevo, en semanas) a partir del cual se avisará a un usuario de que su password está a punto de caducar; dicho aviso se produce cuando el usuario inicia una sesión:
rosita:~$ telnet anita Trying 192.168.0.3... Connected to anita. Escape character is '^]'. login: toni Password: Your password will expire in 5 days. Last login: Sun Jun 24 03:10:49 from rosita anita:~$

Como no todo va a ser hablar bien de Unix a cualquier precio (aunque Solaris tiene muchos aspectos para hablar bien del operativo), podemos hacer un par de críticas a mecanismos relacionados con las contraseñas en Solaris. En primer lugar, quizás deja algo que desear la granularidad que nos ofrece para el envejecimiento de claves: especificar los valores máximo y mínimo en semanas a veces no es apropiado, y seguramente si Solaris nos permitiera indicar dichos valores en días podríamos definir políticas más precisas; aunque en la mayoría de ocasiones la especificación en semanas es más que suficiente, en casos concretos se echa de menos el poder indicar los días de vigencia de una contraseña. Otro aspecto que se podría mejorar en Solaris es la robustez de las claves: limitarse a rotaciones del nombre de usuario es en la actualidad algo pobre; un esquema como el ofrecido en AIX, donde se pueden especificar incluso diccionarios externos al operativo contra los que comparar las claves que un usuario elige, sería mucho más potente.
Contra el primero de estos comentarios quizás se podría decir, en defensa de Solaris, que realmente en /etc/shadow podemos especificar días en lugar de semanas, pero eso implicaría modificar el archivo a mano para cada usuario, algo que no suele ser recomendable en ningún sistema Unix, o bien ejecutar /usr/bin/passwd con las opciones apropiadas, de nuevo para todos los usuarios en cuestión. Contra el segundo también se podría argumentar que existen utilidades de terceros para reforzar las contraseñas que eligen los usuarios, o bien que no es difícil escribir un módulo de PAM para evitar que esos usuarios elijan claves triviales, pero el hecho es que Sun Microsystems por defecto no incorpora ninguno de estos mecanismos en Solaris.
Tabla de contenidos
  1. 1 - Introducción y conceptos previos
  2. 2 - Sobre la seguridad
  3. 3 - Sobre las redes
  4. 4 - Seguridad física de los sistemas
  5. 5 - Protección del hardware
  6. 6 - Protección de los datos
  7. 7 - Radiaciones electromagnéticas
  8. 8 - Administradores, usuarios y personal
  9. 9 - Ataques potenciales
  10. 10 - Qué hacer ante estos problemas
  11. 11 - El atacante interno
  12. 12 - El sistema de ficheros
  13. 13 - Sistemas de ficheros
  14. 14 - Permisos de un archivo
  15. 15 - Los bits SUID, SGID y sticky
  16. 16 - Atributos de un archivo
  17. 17 - Listas de control de acceso: ACLs
  18. 18 - Recuperación de datos
  19. 19 - Almacenamiento seguro
  20. 20 - Programas seguros, inseguros y nocivos
  21. 21 - La base fiable de cómputo
  22. 22 - Errores en los programas
  23. 23 - Fauna y otras amenazas
  24. 24 - Programación segura
  25. 25 - Auditoría del sistema
  26. 26 - El sistema de log en Unix
  27. 27 - El demonio syslogd
  28. 28 - Algunos archivos de log
  29. 29 - Logs remotos
  30. 30 - Registros físicos
  31. 31 - Copias de seguridad
  32. 32 - Dispositivos de almacenamiento
  33. 33 - Algunas órdenes para realizar copias de seguridad
  34. 34 - Políticas de copias de seguridad
  35. 35 - Autenticación de usuarios
  36. 36 - Sistemas basados en algo conocido: contraseñas
  37. 37 - Sistemas basados en algo poseído: tarjetas inteligentes
  38. 38 - Sistemas de autenticación biométrica
  39. 39 - Autenticación de usuarios en Unix: autenticación clasi
  40. 40 - Autenticación de usuarios en Unix: mejora de la seguridad (II)
  41. 41 - PAM
  42. 42 - Solaris
  43. 43 - Seguridad física en SPARC
  44. 44 - Servicios de red
  45. 45 - Usuarios y accesos al sistema
  46. 46 - El sistema de parcheado
  47. 47 - Extensiones de la seguridad
  48. 48 - El subsistema de red
  49. 49 - Parametros del núcleo
  50. 50 - Linux
  51. 51 - Seguridad física en x86
  52. 52 - Usuarios y accesos al sistema
  53. 53 - El sistema de parcheado
  54. 54 - El subsistema de red
  55. 55 - El núcleo de Linux
  56. 56 - AIX
  57. 57 - Seguridad física en RS/6000
  58. 58 - Servicios de red
  59. 59 - Usuarios y accesos al sistema (I)
  60. 60 - Usuarios y accesos al sistema (II)
  61. 61 - El sistema de log
  62. 62 - El sistema de parcheado
  63. 63 - Extensiones de la seguridad: filtros IP
  64. 64 - El subsistema de red
  65. 65 - HP-UX
  66. 66 - Seguridad física en PA-RISC
  67. 67 - Usuarios y accesos al sistema
  68. 68 - El sistema de parcheado
  69. 69 - Extensiones de la seguridad
  70. 70 - El subsistema de red
  71. 71 - El núcleo de HP-UX
  72. 72 - Seguridad de la subred: el sistema de red
  73. 73 - Algunos ficheros importantes
  74. 74 - Algunas órdenes importantes
  1. 75 - Servicios
  2. 76 - Algunos servicios y protocolos
  3. 77 - Servicios basicos de red
  4. 78 - El servicio FTP
  5. 79 - El servicio TELNET
  6. 80 - El servicio SMTP
  7. 81 - Servidores WWW
  8. 82 - Los servicios r-
  9. 83 - XWindow
  10. 84 - Cortafuegos: Conceptos teóricos
  11. 85 - Características de diseño
  12. 86 - Componentes de un cortafuegos
  13. 87 - Arquitecturas de cortafuegos
  14. 88 - Firewall-1
  15. 89 - ipfwadm/ipchains/iptables
  16. 90 - IPFilter
  17. 91 - PIX Firewall (I)
  18. 92 - PIX Firewall (II)
  19. 93 - Escaneos de puertos
  20. 94 - Spoofing
  21. 95 - Negaciones de servicio
  22. 96 - Interceptación
  23. 97 - Ataques a aplicaciones
  24. 98 - Sistemas de detección de intrusos
  25. 99 - Clasificación de los IDSes
  26. 100 - Requisitos de un IDS
  27. 101 - IDSes basados en maquina
  28. 102 - IDSes basados en red
  29. 103 - Detección de anomalías
  30. 104 - Detección de usos indebidos
  31. 105 - Implementación real de un IDS (I)
  32. 106 - Implementación real de un IDS (II)
  33. 107 - Algunas reflexiones
  34. 108 - Kerberos
  35. 109 - Arquitectura de Kerberos
  36. 110 - Autenticación
  37. 111 - Problemas de Kerberos
  38. 112 - Criptología
  39. 113 - Criptosistemas
  40. 114 - Clasificación de los criptosistemas
  41. 115 - Criptografía clasica
  42. 116 - Un criptosistema de clave secreta: DES
  43. 117 - Criptosistemas de clave pública
  44. 118 - Funciones resumen
  45. 119 - Esteganografía
  46. 120 - Algunas herramientas de seguridad
  47. 121 - Titan (I)
  48. 122 - Titan (II)
  49. 123 - TCP Wrappers
  50. 124 - SSH
  51. 125 - Tripwire
  52. 126 - Nessus
  53. 127 - Crack
  54. 128 - Gestión de la seguridad
  55. 129 - Políticas de seguridad
  56. 130 - Analisis de riesgos
  57. 131 - Estrategias de respuesta
  58. 132 - Outsourcing
  59. 133 - El "Área de Seguridad"
  60. 134 - Apéndice 1: Seguridad basica para administradores (I)
  61. 135 - Apéndice 1: Seguridad basica para administradores (II)
  62. 136 - Apéndice 2: Normativa (I)
  63. 137 - Apéndice 2: Normativa (II)
  64. 138 - Apéndice 2: Normativa (III)
  65. 139 - Apéndice 2: Normativa (IV)
  66. 140 - Recursos de interés en INet
  67. 141 - Glosario de términos anglosajones
  68. 142 - Conclusiones
  69. 143 - Bibliografía (I)
  70. 144 - Bibliografía (II)
  71. 145 - Bibliografía (III)
  72. 146 - Bibliografía (IV)
  73. 147 - Bibliografía (V)
Autor y licencia de 'Seguridad en Unix y redes - Usuarios y accesos al sistema'
Antonio Villalón Huerta Extraído de: http://es.tldp.org/Manuales-LuCAS/doc-unixsec/unixsec-html/ GNU Free Documentation License
Licencia GNU Free Documentation License: http://www.gnu.org/copyleft/
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Seguridad en Unix y redes - Usuarios y accesos al sistema'

Documento con fundamentos teóricos de control de accesos en redes telemáticas; se tratan temas como... Más »
El presente estudio se preparó, hace aproximadamente un año, como una "lección" dentro del Programa... Más »
Es muy fácil crear archivos en el sistema operativo UNIX. Por lo tanto, los usuarios... Más »
Hablar de redes de ordenadores siempre implica hablar de Unix. Por supuesto, Unix no es... Más »
Ken Thompson y Dennis Ritchie decidieron esbozar un sistema operativo que supliera las necesidades de... Más »
¿Estás seguro de que deseas eliminar este capítulo?