Unix Manual
Unix Manual
Unix Manual
INTRODUCCION GENERALIDADES DEL SISTEMA UNIX, CONCEPTOS, RESEA HISTORICA. VISION TECNICA GENERAL Introduccin Variantes de unix Estructura de archivos Proteccin de archivos Mecanismo de permiso de archivo Acceso Lgico Archivos .profile y .login
Por un breve perodo en 1969, el Departamento de Investigacin de Ciencias de la computacin de Laboratorios Bell us un mainframe General Electric 645 con un sistema operativo llamado "Multics". Multics fue un primitivo sistema operativo multiusuario interactivo, es de anotar que un sistema multiusuario permite a varios usuarios ejecutar diversos programas simultneamente en el mismo computador, as como el proceso Interactivo se refiere a la respuesta casi inmediata del computador a un comando ingresado. Un sistema operativo creado en lenguaje ensamblador es "dependiente de la mquina", el programa corre en un tipo o marca especfica de computador y no puede ser fcilmente transportado a ningun otro tipo de mquina. Por esta razn Thompson desarroll el lenguaje transportable B, el cual fue modificado por Dennis Ritchie, quien desarroll el lenguaje C y reescribi el software UNIX en C, de tal forma que poda ser movido virtualmente a cualquier otro computador. El lenguaje C ha sido usado por desarrolladores de software para escribir utilitarios, sistemas operativos y programas de aplicaciones para propsitos de investigacin y de negocios. El software UNIX incluye muchos programas en C; algunos estn incorporados como nuevos comandos del sistema para usuarios o administradores del sistema, mientras otros ejecutan funciones especficas en el sistema. Por ejemplo, un programa actualiza una base de datos describiendo la condicin de la maquinaria industrial, mientras otro provee funciones de edicin de texto. Profesores de universidades y muchos estudiantes han escrito numerosos programas en C compatibles con el software UNIX. En la actualidad, el sistema UNIX es uno de los ms poderosos sistemas operativos disponibles para mainframes, minicomputadores y microcomputadores. Cientficos de los laboratorios Bell disearon el sistema UNIX de tal forma que pudiera ser actualizado fcilmente y fuera independiente de la mquina; el sistema tiene el potencial para cubrir ampliamente aplicaciones en los ambientes acadmicos, industriales y comerciales. Este sistema operativo dirige las actividades de los componentes, manejando los archivos del sistema sin la participacin o supervisin del usuario, a su vez manipula mltiples usuarios y tareas. La simple interaccin entre usuarios y la mquina, la versatilidad y el diseo elegante del sistema explican la popularidad del UNIX. Laboratorios Bell ha realizado una documentacin completa del sistema donde lo describe ampliamanente e incluye casi doscientos (200) comandos, este material fue escrito por y para programadores e investigadores, lo que hace este material muy tcnico para los usuarios que no posean dichas caractersticas. Muchos sistemas operativos convencionales estn limitados a la unidad central de proceso para la cual fueron desarrollados. El UNIX, sin embargo, puede ser transportado fcilmente desde una estacin de oficina a minicomputadores, microcomputadores y mainframes. Los programas del sistema UNIX estn funcionalmente categorizados de la siguiente manera:
El kernel organiza tareas y maneja el almacenamiento de datos. El shell es un programa que conecta e interpreta los comandos ingresados por un usuario del sistema. Interpreta los requerimientos del usuario, llama a los programas desde memoria, y los ejecuta uno a la vez o en una serie llamada "pipe". Los programas de utilidad ejecutan una variedad de rutinas y funciones especiales de mantenimiento del sistema.
Una comunidad grande de programadores han expandido el sistema, a razn de que el UNIX puede ser modificado por cualquiera que tenga la licencia de acceso al cdigo fuente.. El sistema UNIX es un sistema operativo multitarea; esto significa que varios procesos pueden ser organizados para correr simultneamente. En realidad, el computador nicamente ejecuta un proceso a la vez, sin embargo, l puede cambiar de un proceso a otro muy rpidamente. El computador divide su atencin entre toda la ejecucin de procesos requeridos por mltiples usuarios. Esta operacin es llamada time-sharing. Una de las caractersticas del shell consiste en permitir la entrada de mltiples comandos en una sola lnea, redireccionando la salida a un archivo, leyendo la entrada de un archivo y conectando los comandos en pipeline. Adems permite extender la idea de redireccin en donde la salida de un comando puede servir como la entrada de un segundo comando, la salida del primer comando no aparece en la terminal ni es almacenada en algn archivo intermedio; en cambio, el sistema UNIX guarda en un buffer la salida del primer proceso como entrada del segundo comando, esta coneccin entre comandos es llamada una pipeline. El concepto de pipeline es una caracterstica importante de UNIX. 1.1.1 REQUERIMIENTOS DE HARDWARE Los requerimientos de espacio en memoria y en disco varan para cada tipo o variante de Unix. Los siguientes son los requerimientos de memoria del SCO UNIX System V/386: Sistema Operativo mnimo : 2 Mbytes recomendado : 3 Mbytes multiusuario : 3 Mb o ms para un funcionamiento ptimo. El sistema operativo requiere al menos 40 Mbytes de espacio en disco para operar eficientemente, incluyendo espacio para archivos de usuarios y swaps. Si se planea tener habilitado un mdulo de auditora, es necesario ms espacio en disco para mantener los archivos de registro de auditora.
1.2. VISION TECNICA GENERAL 1.2.1 Introduccin Actualmente existen ms de 30 formas de UNIX disponibles comercialmente. Sin embargo, la mayora son variantes basadas en dos tipos principales de UNIX conocidos como System V de AT&T y la versin BSD de Berkley. El programa de trabajo genrico incluido en este documento cubre especialmente el System V de SCO versin 3.2 de UNIX. Algunos de los sistemas actualmente disponibles son los siguientes: (1) AIX de IBM (2) ULTRIX de DEC (3) SONUS de Sun Microsystems (4) UNIX de NCR (5) XENIX de SCO (Santa Cruz Operation) (6) UNIX de Hewlett Packards (7) UNIX de Honeywell Bulls (8) UNIX de ICLs (9) Honeydanber - Unix-to-UNIX Copy Programme
1.2.2 VARIANTES DE UNIX El siguiente cuadro presenta algunas de las diferencias existencias en las convenciones de nombres y en algunas de las caractersticas adicionales ofrecidas por las variantes sobre el UNIX genrico. UNIX GENERICO ARCHIVOS DE PASSWORDS /etc/passwd /etc/group /etc/passwd /etc/group /etc/security/passwd /etc/security/group /etc/security/login.cfg /etc/security/user /etc/passwd /etc/group /etc/SVC.conf Enhanced security /etc/auth.pag /etc/auth.dir /etc/security/group.adj unct /etc/passwd. bak /etc/group.bak /etc/passwd /etc/group C2 installed /etc/security/passwd.a djunct AIX ULTRIX SONUS
ARCHIVO DE SEGURIDAD DE CONSOLA 1.2.3 Estructura de archivos En el ambiente UNIX hay tres clases de archivos: - Archivos ordinarios - Archivos directorio - Archivos especiales Una de las caractersticas encontradas en el ambiente UNIX es el sistema de archivos jerrquico, dentro de esta estructura encontramos compartidos los archivos ordinarios, directorios y especiales.
Archivos Ordinarios: Programas o archivos de datos que los usuarios almacenan en el sistema Archivos Directorios: Son los medios de organizacin de los archivos a travs de una una estructura lgica. Archivos Especiales: Tales como los archivos de dispositivos (ej: impresora, terminal, disco) existen y pueden ser ledos o escritos como archivos ordinarios. Cada dispositivo de entrada/salida es asociado usualmente con, al menos, un archivo especial. Los archivos especiales normalmente residen en el directorio /dev. Ejemplo, la terminal tty1 tendra la sintaxis: /dev/tty1. El siguiente es un ejemplo de la estructura de archivos UNIX en donde el root es el nivel ms alto en la jerarqua de archivos:
/(root) etc bin dev usr lib tmp bin lib 1.2.4 Proteccin de archivos Los archivos creados en UNIX son marcados con la identificacin del usuario dueo del archivo y cada uno tiene un conjunto de 10 bits de proteccin. Nueve de los bits especifican lectura, escritura y ejecucin por el dueo, el grupo y otros al colocar el dcimo bit en un archivo de programa cambiar la identificacin del usuario actual a la del creador cada vez que el programa sea ejecutado. Esta caracterstica es descrita como "SUID" y permite el acceso privilegiado a los archivos de programas que no son accesibles a otros usuarios (comparado con los programas de AS/400 que adoptan autoridad). El mecanismo de proteccin de archivos tiene la siguiente estructura: r w x r w x r w x 1 pat pat 2514 sep 10 21:11 file1. r w r w r w 1 pat pat 216 sep 10 21:15 file2.
1.2.5 Mecanismo de permiso de archivo Los permisos de archivos en UNIX determinan quin puede acceder a un archivo y el tipo de acceso asociado. Tecleando el comando ls -l seguido por el nombre de archivo, el sistema dar una lista detallada de los permisos de un archivo. Ejemplo: ls -l filenamel -rwxrwxrwx 1 fred fred 20 dwl 20 12:20 filenamel. La lnea indica que el archivo es un archivo normal. Los patrones rwx dicen qu tipo de acceso al archivo tiene un usuario. Veamos en forma detallada:
rwx rwx rwx Dueo Grupo Otros Donde r=leer, w=escribir, x=ejecutar Esta proteccin de archivo puede ser representada numricamente por el octal 777. Explicacin: rwx 4 4 + 2 2 + 1 1 rwx rw_ 4 2 0
7 7 6 1.2.6 Acceso Lgico El archivo /etc/passwd es importante en la seguridad del UNIX debido a que contiene informacin del login de usuario. La identificacin y los passwords son verificados usando el contenido de este archivo. Todos los sistemas UNIX tendrn este archivo o una variacin de l.
Para mayor explicacin del formato de archivo vea seccin de Administracin de Seguridad del sistema Unix. En el UNIX genrico y en sus variantes la informacin contenida en este archivo incluye: aj2:!:201:100:aj2 is a user:/u/aj2:/bin/ksh (1) (2) (3) (4) (5) (6) (7) Nombre de usuario Formato de password Identificacin de usuario (UID), nmero nico de identidad. Identificacin de grupo (GID), nico nmero de identificacin. Informacin acerca de la cuenta o el usuario. Directorio por defecto del usuario (home). El shell o programa para ejecutar cuando el usuario ingresa al sistema.
El archivo /etc/group es usado tambin como parte del mecanismo de control de acceso manteniendo informacin de cada grupo de usuarios, ejemplo: aj2:*:100:tom,dick,harry,dog
Los passwords pueden ser asignados para cada grupo de usuarios, el nmero de grupos es establecido de acuerdo con el criterio del administrador de seguridad. Para hacer que los passwords sean ms seguros puede presetarse en el archivo etc/shadow en algunos sistemas algunas implementaciones de UNIX los almacenan en archivos separados. En algunas implementaciones, por ejemplo UNISYS, los passwords son almacenados en el archivo /etc/shadow, el cual mantiene passwords ordenando por fechas la informacin, como minidays, (nmero de das antes de que un password pueda ser cambiado) y maxdays (nmero de das de validez de un password). Adems de la proteccin de seguridad que puede ser implementada usando el archivo de password, puede incrementarse la seguridad de los password creando algunos controles de acceso para los usuarios en el archivo .profile o en el .login; los cuales son usados para describir el ambiente de login del usuario. Veamos un ejemplo de lo que se podra crear: (1) El orden en el cual los directorios deberan ser buscados antes de ejecutar un comando. (2) Restricciones en las horas que un usuario puede ingresar al sistema. 1.2.7 Archivos .profile y .login Estos archivos son usados para determinar caractersticas acerca del ambiente en el que opera el usuario. El archivo usado depender del shell de login del usuario, por ejemplo para el shell estndar de Burne es usado el archivo .profile.
Para usuarios de csh, el usuario ingresa primero y configura aspectos del ambiente del usuario y luego ejecuta el .Login. Para usuarios de sh (bourne shell), y ksh (el korn shell) el .profile se ejecuta cuando el usuario ingresa al sistema.
El comando "umask" es usado para restringir los permisos de los archivos u objetos creados. "Umask" seguido por un octal previene la creacin de objetos especificados por el nmero. Por tanto, 027 suspende la creacin de objetos con permiso ----w-rwx. Consecuentemente los objetos ejecutados tendrn el permiso rwxr-x----.) 1.2.7.1 Archivos de seguridad a. Archivo passwd El formato general del archivo /etc/passwd es: id: password: UID: GID: informacin del usuario: home: shell donde id = identificacin del usuario password = password encriptado UID = nmero de identificacin del usuario GID = numero de identificacin de grupo Comment = informacin del usuario home = directorio del usuario shell = shell de los usuarios Ejemplo root:xyXAJTX21PT, M.y8:0:0:admin:/:/bin/sh PW1:V01AXP240m, M.z8:49:25:Waler:/usr/PW1:/bin/sh PW2:AXV29CMTx, ./:214:214::/usr/restrict:/bin/rsh La vigencia mxima se encuentra en el campo de contrasea en el primer caracter despus de la coma en donde: .= 0 semanas /= 1 semana 0= 2 semanas 1= 3 semanas 2= 4 semanas A= 12 semanas
B= 13 semanas a= 38 semanas b= 39 semanas Los mximo valor debera estar en 90 das (13 semanas), de tal forma que entonces el primer carcter debe estar =>,B/
Ejemplo: Contenido del archivo passwd root:xyXAJTX21PT,.M.y8:0:0:admin:/:/bin/sh PW1:V01AXP240m,B/.z8:49:25:Waler:/usr/PW1:/bin/sh PW2:AXV29CMTx,./:214:214::/usr/restrict:/bin/rsh Con el usuario PW1, el cdigo B significa que el password debe ser cambiado al menos cada 13 semanas. El punto despus del / significa que el password puede ser cambiado tantas veces como se requiera; es aconsejable que este valor sea puesto en 1 para indicar, entre otras cosas que el password no puede ser cambiado ms de una vez a la semana. Para la vigencia mnima de la contrasea, use la misma prueba del paso anterior pero tomando como base de anlisis el segundo caracter, el valor mnimo debera estar en 1 semana, de tal forma que las condiciones razonables para la vigencia de la contrasea debera ser B/. Ejemplo: Contenido del archivo passwd root:xyXAJTX21PT, M.y8:0:0:admin:/:/bin/sh PW1:V01AXP240m,B/.z8:49:25:Waler:/usr/PW1:/bin/sh PW2:AXV29CMTx, ./:214:214::/usr/restrict:/bin/rsh En el campo de contrasea el segundo caracter despus del punto determinar el nmero mnimo de semanas antes de que el password pueda ser cambiado. Con el usuario PW1, el cdigo / significa que el password debe ser cambiado al menos cada semana este valor deberia estar en un rango de 2 a 4 semanas. b. Archivo shadow El formato general del archivo /etc/shadow es:
donde id = identificacin del usuario password = password encriptado reservado = campo reservado nmix = Dias minimos para el cambio del password nmax = Dias maximos para el cambio del password Ejemplo: root:13mbzxApI7tda:9225:0:0 PW1:V01AXP240m:9226:14:33 La vigencia mxima de la contrasea se encuentra en el quinto campo (nmin) del archivo , el valor debera estar en 5 das. Ejemplo: El archivo /etc/shadow root:13mbzxApI7tda:9225:0:0 PW1:V01AXP240m:9226:14:33 El usuario PW1, significa que el password debe ser cambiado como minimo 33 dias. la vigencia mxima de la contrasea se encuentra en el cuarto campo (nmax) del archivo , el valor debera estar en 90 das. Ejemplo: el archivo /etc/shadow root:13mbzxapi7tda:9225:0:0 pw1:v01axp240m:9226:14:33 el usuario pw1, significa que el password debe ser cambiado como maximo 14 dias.
c. Archivo group El archivo group tiene un formato similar al passwd. El formato general del archivo /etc/group es:
id: password: GID: Miembros del grupo donde id = identificacin del grupo password = password encriptado GID = nmero de identificacin de grupo Group members = todos los miembros del grupo separados por comas. Ejemplo: root::0:jbm group::50:ingres,cartera,caja,cambiar,cclg,coin, controlu,costos,cuentas,egresos,entrega,facturar, ingresos,material,medico,ofctas,ofictas,pagos, recaudar,regalias,servicio,sif91,tlc,jbm,nestor, prueba01,recibir,histo91,ofcomun,ofcapac,audit01 sifd:*:100:cartera,caja,cambiar,cclg,coin,controlu, costos,cuentas,egresos,entrega,facturar,ingresos, material,medico,ofctas,ofictas,pagos,recaudar, regalias, servicio,sif91,histctas 1.2.8 Usuario Shell El shell es bsicamente un procesador de comandos, pero tambin es un lenguaje de programacin, un interface de usuario y mucho ms. Cada vez que el usuario introduce un comando y pulsa <enter>, el shell analiza la lnea de entrada, verificando la sintaxis del comando y a continuacin lo ejecuta con los argumentos y los parmetros de datos Hay gran variedad de shells que se podran encontrar en los sistemas UNIX. Hay dos shells bsicos, el bourne shell y el C-shell. Sin embargo hay tambin algunos basados en estos dos.
sh Invoca el interpretador de comandos. Este es el shell estndar que ejecuta comandos leidos desde una terminal. Podra saber inmediatamente que lo est utilizando porque presenta como indicador el signo $. Este ejecuta a su vez comandos del archivo .profile. csh Invoca un interpretador de comandos con sintaxis en lenguaje C. El shell csh permite utilizar todas las ordenes de UNIX de la misma forma que con el Bourne, adems tiene una serie de ventajas. Las ms importantes son: - Un mecanismo para historiar: C-shell recuerda todo los que usted ingresa: poder volver a ejecutar rdenes anteriores sin necesidad de que usted las teclee de nuevo. Puede
tambin modificar ordenes antiguas antes de volver a ejecutarlas. - Control de tarea: C-shell le permite empezar varios programas, interrumpirlos, o hacer que se ejecuten por s mismos. En cualquier momento, usted puede comprobar cuales son las tareas que est ejecutando y que hacen, as como cambiar sus condiciones como le plazca. - Creacin de alias: Es posible crear nombres alternativos para las ordenes que desee. Por ejemplo supongamos que hay que ingresar frecuentemente mail pedro Para enviar correo electrnico a una persona determinada (Pedro). En tal caso es posible crear un alias, por ejemplo, mp. Cada vez que entre mp, Comienza por ejecutar comandos del archivo .cshrc. ksh Se trata de una extensin de compatibilidad ascendente del shell de Bourne estndar. Todo lo que funciona con shell de Bourne funcionar del mismo modo con Korn shell. Korn shell aade nuevas prestaciones al shell de Bourne. Las ms importantes son similares a las que ya se han descrito para C-shell: un mecanismo para historiar, control de tareas y cracin de alias. Sin embarho hay diferencias en el modo en que estos shells proporcionan dichas facilidades. Los usuarios pueden ejecutar un nmero cualquiera de Shell de Unix principalmente /bin/sh (Bourne shell), /bin/ksh (Korn shell), /bin/csh (C shell) y /bin/rsh (Shell restringido). Los tipos de Shell afectan la secuencia de los archivos de acceso del usuario. Por ejemplo el Bourne y Korn Shell ejecuta los programas del usuario .login y .profile mientras que el Shell C ejecuta los programas del .login y .cshrc. El Shell Restringido (rsh) lmita al usuario a una configuracin predefinida, y a un conjunto de comandos. Los usuarios podran ejecutar programas individuales con su propio Shell. Por ejemplo un usuario 'shutdown' ejecutara un programa /etc/shutdown con su propio Shell. 1.2.8.1 Archivos Ocultos Los archivos ocultos se identifican por el prefijo "." y se incluyen archivos, tales como: .login .cshrc, .profile, X-Windows (como .X11). Los archivos se pueden esconder tambin, colocando un carcter dentro del nombre del archivo. Por ejemplo, se enmascara como el nombre [payroll.lis] como payroll.^ G; de tal forma que al desplegarlo no se muestra la extensin completa y nicamente quin cre el archivo podr saber la extensin correcta. 1.2.9 Directorios propios del usuario : Traps, Umask y PATH
variable UMASK : Es un nmero de tres dgitos que representa los permisos de propietario, grupo y otros usuarios para un archivo. Umask : La definicin de umask debe colocarse en el archivo para que cada vez que se conecte al sistema, ya esten definidos los valores de la creacin de archivos y directorios, de esta forma se individualiza el valor "Defaul" para cada usuario. . .profile de cada usuario,
El valor de cada dgito define los permisos que sern asignados, como se aprecia en la siguiente tabla: DIGITO PERMISO 0 1 2 3 4 5 6 7 Lectura y escritura (Ejecucin) Lectura y escritura Lectura (ejecucin) Lectura Escritura (ejecucin) Escritura Ejecucin solo para directorios Ausencia de permisos
PATH :Esta variable cumple una funcin anloga a la variable del mismo nombre en el DOS. Indica caminos de bsqueda para los comandos. Si se especifica ms de uno, estos se tratan como alternativas. TRAPS:Esta variable corresponde al manejo de los desvios, trampas o interrupciones en UNIX. Hay cerca de 15 interrupciones, pero las ms importantes son: 1 : Interrupcin que se activa cuando no hay linea HOST. 2 : Interrupcin de Usuario. 3 : QUIT no enmascarable, esto significa que no se puede procesar, ni accesar. 4 : Interrupcin relacionada con un comando o accin ilegal. 5 : Interrupcion, trampa o desvio programable. 9 : Kill no enmascarable, lo cual significa que no se puede procesar, ni accesar.
Hay otros tales como el reloj de alarma y el shutdown no enmascarable. 1.2.10 Kernel Mediante procedimientos de indagacin, verifique el mtodo utilizado para el control de la configuracin del Kernel.
El unix Kernel es un archivo objeto del bootable, usualmente localizado en el root o en el boot de los archivos del sistema. El Kernel no puede ser configurado directamente, sin embargo, puede ser 'construido' o 'elaborado' separadamente y posteriormente encadenado, debido a que este es el archivo ms crtico del sistema. Las opciones pueden ser "construidas" dentro o fuera de Kernel (por ejemplo, contabilizacin de procesos, la configuracin swap, etc). Dependiendo de la versin que se encuentre en la mquina sujeta a revisin identifique la ubicacin del kernel. (HP = /hp-ux) (Sol= /unix) (ICL= /boot/KERNEL) (AIX= /unix) El cron generalmente es ejecutado en el estado de superusuario, los archivos que se encuentran en el crontab son suceptibles a modificaciones o acciones no autorizadas. Este riesgo puede ser disminuido a travs de la proteccin de los archivos y la sintxis del cron. Por ejemplo: La sintxis de un cron seria la siguiente: '0 1 * * * cd /user/bob/batches; su bob ./scripts/cleanup' El usuario bob ejecuta comando 'clenup' no como superusuario. 1.2.11 Archivos de memoria ( kmem y mem ) Mediante procedimientos de anlisis de la seguridad de los archivos /dev/kmem y /dev/mem, determine los privilegios otorgados y la propiedad de los mismos.
Los archivos /dev/kmem y /dev/mem son las imgenes de la memoria. Los archivos de memoria pueden ser usados para examinar interactivamente el sistema. El archivo 'Kmem' difiere del archivo 'mem' en que sus direcciones de memoria virtual, en el Kernel
son mayores que las de memoria fisica. Los archivos contenidos en el directorio del host /dev controlan los dispositivos ( terminal, impresora, etc). Para cada dispositivo fsico en el sistema, habr un archivo correspondiente de entrada /dev (Estos son archivos virtuales). La consola del sistema puede ser asegurada suprimiendo el argumento "secure" en el archivo /etc/ttytab o /etc/ttys, o por la definicin en el archivo /etc/securetty si este existe. Removiendo el argumento "secure" se eliminara el 'trust' colocado en ese dispositivo y se impediran los logins al root desde terminales inseguras, forzando la entrada del pasword del root si la estacion de trabajo es iniciada como un usuario normal.