Sei sulla pagina 1di 168

Sistemas Operativos

ISC. Luis Gerardo Robledo


Chvez

Linux
El

kernel ncleo de linux se puede


definir como el corazn de este
sistema operativo. Es el encargado de
que el software y el hardware de tu
ordenador puedan trabajar juntos.
Las funciones ms importantes del
mismo, aunque no las nicas, son:
Administracin de la memoria para
todos los programas y procesos en
ejecucin.

Linux
Administracin

del tiempo de
procesador que los programas y
procesos en ejecucin utilizan.
Es el encargado de que podamos
acceder a los
perifricos/elementos de nuestro
ordenador de una manera
cmoda.

Linux

Hasta que empez el desarrollo de la serie 2.6 del ncleo,


existieron dos tipos de versiones del ncleo:
Versin de produccion: La version de produccion, era la
version estable hasta el momento. Esta version era el
resultado final de las versiones de desarrollo o
experimentales.
Cuando el equipo de desarrollo del ncleo experimental,
decidia que tenia un nclo estable y con la suficiente calidad,
se lanzaba una nueva versin de produccin estable. Esta
versin era la que se debia utilizar para un uso normal del
sistema, ya que eran las versiones consideradas ms
estables y libres de fallos en el momento de su lanzamiento.
Versin de desarrollo: Esta versin era experimental y era la
que utilizaban los desarrolladores para programar, comprobar
y verificar nuevas caractersticas, correcciones, etc. Estos
ncleos solian ser inestables y no se debian usar sin saber lo
que se hacia.

Linux

Como interpretar los numeros de las versiones de


las series por debajo de la 2.6:
Las versiones del ncleo se numeraban con 3
numeros, de la siguiente forma: AA.BB.CC
AA: Indicaba la serie/versin principal del ncleo.
Solo han existido la 1 y 2. Este nmero cambiaba
cuando la manera de funcionamiento del kernel
habia sufrido un cambio muy importante.
BB: Indicaba si la versin era de desarrollo de
produccin. Un nmero impar, significaba que
era de desarrollo, uno par, que era de
produccin.
CC: Indicaba nuevas revisiones dentro de una
versin, en las que lo nico que se habia
modificado eran fallos de programacin.

Linux
Unos

ejemplos nos ayudaran a entenderlo


mejor:

ej1:

versin del ncleo 2.4.0: Ncleo de la


serie 2 (AA=2), versin de produccin 4
(BB=4 par), primera versin de la serie 2.4
(CC=0)
ej2: versin del ncleo 2.4.1: Ncleo de la
serie 2, versin 4, en el que se han corregido
errores de programacin presentes en la
version 2.4.0 (CC=1)
ej3: versin del ncleo 2.5.0: versin 0 del
ncleo de desarrollo 2.5.

Linux

Con la serie 2.6 del ncleo, el sistema de numeracin


asi como el modelo de desarrollo han cambiado. Las
versiones han pasado a numerarse con 4 digitos y no
existen versiones de produccion y desarrollo.

Las versiones del ncleo se numeran hoy en dia con 4


digitos, de la siguiente forma: AA.BB.CC.DD.
AA: Indica la serie/versin principal del ncleo.
BB: Indica la revision principal del ncleo. Numeros pares
e impares no tienen ningun significado hoy en dia.
CC: Indica nuevas revisiones menores del ncleo. Cambia
cuando nuevas caracteristicas y drivers som soportados.
DD: Este digito cambia cuando se corrigen fallos de
programacin o fallos de seguridad dentro de una
revisin.

Linux
Hoy

en dia se suele usar el nucleo


distribuido con la distribucion que el usuario
utiliza. Son las distribuciones las encargadas
de distribuir ncleos estables a sus
ausuarios y estos nucleos se basan en el
ncleo ("vanilla") distribuido por Linux
Torvalds y el equipo de programadores del
ncleo.
Dnde conseguir el ncleo

El ncleo denominado "vanilla" (sin alteraciones


y suministrado por Linux Torvalds) se puede bajar
de un gran nmero de servidores en internet
pero el sitio oficial es http://www.kernel.org/.

Linux

En este enlace tienes la lista internacional oficial


de servidores espejos, de donde es posible
bajarse cualquier versin del ncleo (ltima y
antiguas). A continuacin tienes una tabla resumen
con las ultimas versiones del kernel:
Ultima version estable del kernel: 2.6.22.1
Ultima version alpha de la serie 2.6: 2.6.23-rc1
Ultima version estable de la serie 2.4: 2.4.34.6
Ultima version alpha de la serie 2.4: 2.4.35-rc1
Ultima version estable de la serie 2.2: 2.2.26
Ultima version alpha de la serie 2.2: 2.2.27-rc2
Ultima actualizacion 23/07/2007 08:51:00

La historia del sistema


operativo
Unix
A finales de los 60's, en 1969,
naci UNIX, SO que trataremos
ms adelante, y es la base de
muchos de los SO's de hoy en da,
aunque muchos no lo admitan.

La historia del sistema


operativo
Unix

como base de sistemas


operativos
Como dijimos antes, en 1969, algo maravilloso
sucedi en el mundo de la informtica: naci
UNIX. En principio como un trabajo solitario de
Ken Thompson, de Bell Labs, y luego en
conjunto con Dennis Ritchie (quien junto a
Brian Kerningan desarrollaron el lenguaje de
programacin C) y otros miembros del Bell
Labs que se fueron incorporando.

La historia del sistema


operativo
Ritchie

ya tenia experiencia dado que


haba trabajado en otro proyecto
llamado MULTICS, el cual fue de gran
influencia sobre el nuevo SO, como por
ejemplo en la organizacin bsica del
sistema de archivos, la idea de un
intrprete de comando (el shell) como
un proceso de usuario, etc.

La historia del sistema


operativo
La

primera versin de UNIX estaba hecha


ntegramente en ensamblador. Esto se
cambi con la versin posterior, que fue
escrita en lenguaje C lo que lo hizo
sumamente portable; as mismo tambin se
le agrego una caracterstica por dems de
importante, la multiprogramacin. Esto y la
entrega de licencias gratuitas con fines
educativos extendieron su uso, desarrollo y
la investigacin en las universidades.

La historia del sistema


operativo
El

uso de UNIX se fue ampliando a


medida que se le fueron adicionando
herramientas de software y entornos
de programacin, apoyo a protocolos
de red Internet (TCP/IP), mejoras en el
editor de texto (Vi), compiladores de C,
PASCAL y LISP, mejora en el control de
congestionamiento de redes y el
rendimiento de TCP/IP.

La historia del sistema


operativo
Al

crecer la popularidad de UNIX,


se a transportado a distintas
plataformas de hardware (PC,
MAC, ALPHA) y se han creado una
gran cantidad de SO's UNIX y
parecidos a UNIX (XENIX de
Microsoft, AIX de IBM, SOLARIS de
SunSoft).

Inicio de la mquina
El SO linux tiene 7 niveles de arranque, los
cuales indican la forma en que arrancar el
sistema. Estos parmetros estn definidos
dentro del archivo /etc/inittab, que es un
archivo de configuracin donde se definen
niveles que van desde 0 hasta 6
El programa runlevels o niveles de arranque
es un software de configuracin del sistema,
el cual permite seleccionar un solo proceso de
entre un grupo definidos dentro de inittab.

Inicio de la mquina
Cuando el sistema arranca por primera vez,
lo hace en el nivel 3 (modo multiusuario) y
con la interfaz en modo texto, o en el nivel 5
que tambin incluye el modo multiusuario
pero con la interfaz en modo grfico.
Los niveles para volver a arrancar y detener
el equipo son el nivel 6 y el nivel 0
respectivamente. Estos niveles son estndar
en la mayora de las distribuciones LINUX.
Detener o reiniciar el sistema el trabajo del
administrador

Inicio de la mquina
La estructura del archivo /etc/inittab, que
como muchos otros en Linux es de texto
plano, entre los niveles estn:
0 halt termina los procesos y apaga el sistema
1 Este nivel se emplea para el mantenimiento del
sistema, solo root puede ingresar a este nivel.
2 En modo multiusuario sin NFS, lo mismo que el
nivel 3 cuando no se tiene red.
3 Este es el nivel que da soporte multiusuario, con
acceso a la red

Inicio de la mquina
4 No tiene uso
5 Este es el modo en que se levanta Linux Red Hat
con la interfaz grfica configurada
6 este nivel se usa para reiniciar el sistema
Se debe de ser muy cuidadoso al modificar el
contenido de este archivo ya que si los parmetros
son incorrectos, el sistema puede quedar
inaccesible.

Instruccin telinit
Una forma de detener o reiniciar el
equipo es utilizando el comando
telinit, se utiliza como parmetro un
nmero entre el 0 y el 6 que
corresponde al nivel de arranque del
sistema linux que se desea elegir,
por ejemplo, el siguiente comando
solicita que se reinicie el equipo:
[root@luis/root]# init 6

Instruccin telinit
De lo contrario si lo que se quiere es
apagar el sistema el comando requerido es:
[root@luis/root]# init 0
Con lo que se consigue es que el sistema se
detenga.
La forma correcta de apagar un servidor es
utilizando el comando shutdown. Este
comando, a diferencia de otros como
reboot y halt, permite que los procesos
terminen de ejecutarse en forma adecuada.

Instrucciones Halt, shutdown y


reboot
Linux cuenta con varios comandos para
reiniciar y detener el sistema. Cada
comando manda llamar a un nivel
especfico de carga. Como ya se
mencion, estos niveles se encuentran
definidos dentro del archivo /etc/inittab.
As, por ejemplo si se invoca al nivel 0, el
sistema se apagar inmediatamente, en
cambio si se llama al nivel 6 solo se
reiniciar.

Instrucciones Halt, shutdown y


reboot
Los comandos ms comunes para reiniciar y
detener el equipo son reboot y halt, para
ejecutar cualquiera de estos dos comandos
basta con escribir en la linea de comandos.
[root@luis/root]# reboot
El comandoo reboot detiene los procesos y
prepara el sistema para ser reiniciado
Para detener el sistema se dispone del
comando halt
[root@luis/root]# halt

Instrucciones Halt, shutdown y


reboot
La sintaxis de shutdown es la siguiente
Shutdown opciones

La forma de apagar nuestro equipo con


shutdown es la siguiente:
[root@luis/root]# shutdown h now
Donde la h Indica que se llame al nivel 0 con
lo que el sistema se dar de baja
Para reiniciar el equipo
[root@luis/root]# shutdown r now
La r llama al nivel 6 y reinicia el sistema

Instrucciones Halt, shutdown y


reboot
Es posible incluir un mensaje para los usuarios cada
vez que se reinicie o se apague el sistema
[root@luis/root]# shutdown r now El servidor se apagar

Como ya se mencion la forma correcta de apagar un


servidor es utilizando el comando shutdown. Este
comando permite que los procesos terminen de
ejecutarse en forma adecuada, se recomienda que
antes de apagar el servidor se ejecute la instruccin
sync, el cual sincronizar los discos y permitir
que los datos que no esten guardadoss en disco
lo hagan y no exista errores en el disco duro del
servidor cuando este arranque nuevamente.

Mantenimiento de claves de
usuario
Altas, bajas y cambios de clave
Para aadir cuentas de usuario se emplea el
comando adduser. Al crear una nueva cuenta
el comando adduser agrega una lnea a los
archivos passwd y shadow con informacin
relacionada al nuevo usuario.
El archivo /etc/passwd guarda los datos
completos y las contraseas de todos los
usuarios del sistema.

Mantenimiento de claves de
usuario
El contenido de un archivo passwd es
similar al siguiente.
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
apache:x:48:48:apache:/var/www:/bin/f
alse

Mantenimiento de claves de
usuario
Cada lnea est formada por siete campos
empezando con el nombre del usuario, la
contrasea, userid, groupid, campo gecko,
home del usuario y el tipo de shell que le fue
asignado. Los campos se separan entre si con
dos puntos.
Cada usuario que es aadido al sistema debe
tener un nmero nico (user-id) y debe
pertenecer, por lo menos, a un grupo que por
lo regular es el grupo del usuario.

Mantenimiento de claves de
usuario
Otro archivo que es modificado por adduser
es el archivo shadow que es donde se guardan
los passwords encriptados de todos los
usuarios. Aunque se mencion anteriormente
que en passwd se cuenta con el campo de
contraseas, realmente no aparece el password
del usuario, en su lugar se coloca una equis. Por
el contrario, en shadow se coloca la cadena del
password encriptada por lo cual este archivo
solo puede ser editado por root.

Mantenimiento de claves de
usuario
Un archivo shadow tendr una
estructura similar a la siguiente.
root:
$1$iNlfWdvf$OwP/15:11691:0:99999:
7:::
bin:*:11691:0:99999:7:::
daemon:*:11691:0:99999:7:::
adm:*:11691:0:99999:7:::
apache:!!:11691:0:99999:7:::

Mantenimiento de claves de
usuario
Al igual que passwd, el archivo shadow tienen
el mismo formato de siete columnas
separadas por dos puntos. En el ejemplo
anterior, el nico usuario que tiene password
es el usuario root.
Por cada nuevo usuario del sistema, el
comando adduser se encarga de generar una
lnea similar a las anteriores. La sintaxis de
adduser es la siguiente:
adduser opcin nombre

Este comando cuenta con diferentes opciones


aunque la mayora de ellas se pueden omitir

Mantenimiento de claves de
usuario
Grupo de usuarios
En este momento el nico grupo que
existe en el sistema es el grupo users.
Red hat tiene su propia forma de
manejar grupos, por lo regular cuando se
crea un usuario tambin se crea un
grupo con el mismo nombre del usuario,
para crear un nuevo grupo necesitamos
la ayuda del comando groupadd.

Mantenimiento de claves de
usuario
Grupo de usuarios
La informacin acerca de los grupos la
podemos encontrar dentro del archivo
/etc/group, este archivo guarda un
formato similar al de los anteriores.
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm

Mantenimiento de claves de
usuario
En este archivo se almacenan todos los
datos referente a los diferentes grupos el
nombre del grupo, password, gid o
identificador de grupo divididos en
cuatro columnas separadas por dos
puntos, estos grupos al igual que los
usuarios deben tener un nmero nico
ningn grupo debe tener un mismo
identificador o gid.

Mantenimiento de claves de
usuario
Para eliminar un grupo basta con
ejecutar el comando groupdel y el
nombre del grupo a eliminar.
[root@luis/root]# groupdel opcin
nombre

Contraseas y permisos
Muchas de las primeras distribuciones Linux
almacenaban las contraseas de los usuarios
en etc/passwd, lo que no resultaba seguro, ya
que /etc/passwd es y debe ser legible. De ah
que cualquier usuario pueda ver el contenido
de etc/passwd.
Las contraseas linux estn encriptadas, de
esta manera aunque etc/passwd fuera pblico
la contrasea era ilegible para cualquier
usuario curioso

Contraseas y permisos
La palabra criptografa tiene su orgen en
dos antiguas palabras: kripto (encondido) y
graphia (escritura). Por tanto, la criptografa
es la ciencia de escribir de forma secreta.
La base de datos de contraseas es el
archivo shadow que se encuentra en /etc,
es un archivo especial que almacena no
solo las contraseas de los usuarios sino
tambin de indicadores de reglas
especiales.

Contraseas y permisos
Desde varios puntos de vista, /etc/shadow se
asemeja a /etc/passwd. El archivo consta de
un registro por lnea y cada registro se divide
en nueve campos separados por dos puntos.
El nombre de usuario
La Contrasea
El nmero de dias desde el 1 de enero de 1970,
fecha en que se cambi la contrasea por ultima vez
El nmero de das que quedan antes de que se
permita al usuario cambiar su contrasea.
El nmero de das que quedan antes de que el
usuario tenga que cambiar su contrasea

Contraseas y permisos
El nmero de das de anticipacin con que
se avisa al usuario de que pronto tendr
que cambiar su contrasea
El nmero de das que quedan para que el
usuario cambie su contrasea antes de que
su cuenta sea cancelada
El nmero de das desde el 1 de enero de
1970, que la cuenta ha sido cancelada
El ltimo campo esta reservado.

Contraseas y permisos
Algnas reglas que se deben tomar antes de
asignar contraseas.
El nmero de oficina, el telfono de la oficina,
el nombre del host y el de dominio estn
prohibidos.
Las contraseas deben por lo menos de 8 a
10 caracteres de longitud
Las contraseas deben mezclar mayusculas y
minsculas
El nombre y apellidos (al derecho y al reves)
estn prohibidos
El nombre de conexin (al derecho y al revs)
estn prohibidos

Contraseas y permisos
El cifrado es un componente vital de la seguridad, Sin
embargo, por muy potente que sea nuestro cifrado,
fallar si los usuarios eligen contraseas dbiles.
Los usuarios perezosos, propensos a errores y
olvidadizos, a menudo crean contraseas a partir de
los siguientes datos.

Fecha de nacimiento
Nombres de los hijos
Nombres de artistas
Palabras de diccionario
Secuencias numricas como 90123
Palabras escritas al revs

Contraseas y permisos
A diferencia de otros sistemas operativos
Linux cuenta con medidas para garantizar la
seguridad tanto de archivos como de
directorios, pertenezcan al sistema o a los
usuarios.
Con linux si no se dispone de una cuenta para
abrir una sesin, simplemente el sistema no
permitir la entrada. Adems, cada archivo y
directorio en linux esta asociado a un conjunto
de permisos que determinan quienes tienen
acceso y que es lo que pueden hacer con ellos.

Contraseas y permisos
Estos permisos se establecen para indicar cual
de las 3 categoras de usuarios tienen derecho
ha emplear un recurso: el dueo del recurso,
los miembros del grupo al que pertenece el
dueo o cualquier otro usuario que pertenezca
al sistema.
Permisos de lectura: permite leer el contenido
de un archivo, sin la posibilidad de modificarlo
Permisos de escritura: permite modificar el
contenido de una archivo
Permisos de ejecucin: permite que un archivo
que contenga un programa pueda ser utilizado.

Contraseas y permisos
Linux cuenta con diferentes herramientas con
las que se puede asignar y denegar permisos,
cambiar de grupo y hasta de dueo a los
directorios y archivos. Estas herramientas son
muy tiles para la administracin de los
recursos del sistema y de las cuentas de los
usuarios. Entre ellas se cuenta con:
Chmod permite asignar permisos a directorios
y archivos, por medio de una combinacin de
letras, que son asignados a diferentes
categoras de usuarios. Cada letra indica un
permiso especial

Contraseas y permisos
Chgrp
permite asignar a directorios y
archivos un
grupo diferente al que
les fue asignado
cuando
estos fueron creados.
Chown
Cuando un archivo o directorio es
creado,
este le pertenece al
usuario que lo cre, se
puede
asignar un dueo diferente al
original utilizando esta herramienta.
Para linux, el propietario o dueo de un
recurso es el usuario que lo ha creado

Contraseas y permisos
Es comn que los usuarios se reunan en
grupos de trabajo (users), por lo que el
grupo es aquel al que pertenece el dueo.
El dueo puede permitir que los
miembros de su grupo tenga acceso a sus
archivos. El dueo tambin puede
conceder acceso a todos los dems
usuarios que no pertenezcan a su grupo
pero que tengan una cuenta en el sistema.

Contraseas y permisos
Linux identifica los permisos asociados a los
archivos y directorios empleando nueve bits
de seguridad, repartidos en tres grupos de
tres bits cada uno. Cada conjunto de 3 bits
identifica los permisos asignados a las
diferentes categoras de usuario.
El primer bit se emplea para indicar si se
cuenta con permiso de lectura (0-no, 1-si).
El segundo sealar el permiso de escritura.
El tercero se destina el permiso de
ejecucin.

Contraseas y permisos
La informacin correspondiente a
cada tipo de usuario se presenta en el
orden: dueo, grupo, otros.
Se pueden conocer los permisos
asociados a archivos y directorios
empleando el comando ls l.
En el despliegue resultante, para cada
archivo y directorio, aparecer como
primera columna la secuencia de
permisos que tienen asignados.

Contraseas y permisos
Por ejemplo, el archivo misdatos tiene
asignado el siguiente conjunto de
permisos:
[root@luis/root]# ls l misdatos
-rwxr-xr-x 1 root root 0 ago 5 12:42
misdatos

Contraseas y permisos
En la primer columna (-rwxr-xr-x) el primer

guin (-) indica que se trata de un archivo. Los


smbolos rwx indican los permisos de acceso para
el dueo, los siguientes 3 (r-x) corresponden a los
permisos de acceso del grupo, finalmente, (r-x)
sealan los permisos de acceso de los otros.
Cada permiso est identificado con una letra:
No se cuenta con el permiso
r se tiene permiso de lectura (read)
w se dispone de permiso de escritura (write)
x se autoriza la ejecucin (execution)

Contraseas y permisos
Entonces el significado de (-rwxr-xr-x)

es que el dueo del archivo posee los 3


permisos, los miembros de su grupo de
trabajo tienen permiso de lectura y
ejecucin, al igual que el resto de los
usuarios.
Con el comando chmod se pueden definir
diferentes configuraciones de permisos,
chmod tiene la siguiente sintaxis:
Chmod permisos nombre-de-archivo

Contraseas y permisos
Se pueden especificar los permisos con
dos mtodos distintos:

1 utilizando smbolos de permiso (r,w,x)


2 Utilizando el equivalente octal de una
mscara binaria.
En el primer mtodo, se asignan los
permisos utilizando las letras para
establecer los permisos de un archivo o
directorio.
Cualquiera de estos permisos pueden ser
aadidos o suprimidos utilizando los
smbolos + y -

Contraseas y permisos
En el siguiente ejemplo, el comando
chmod aade el permiso de ejecucin y
suprime el permiso de escritura del
archivo mio.
[root@luis/root]# chmod +x-w mio
Tambin se emplean letras (u g o) para
especificar la categora de usuario al
que se conceden o retiran los permisos.

Contraseas y permisos
La letra de la categoria se antepone a los
permisos de lectura, escritura y ejecucin. Si
no se utiliza ningn simbolo de categoria, se
asume que se aplica a todas las categorias y
los permisos que se especifican quedan
establecidos para el dueo, el grupo y los
dems.
En el siguiente ejemplo, el comando chmod
establece para el archivo mio los permisos de
lectura y escritura, para el grupo.
[root@luis/root]# chmod g+rw mio

Contraseas y permisos
El segundo mtodo que se conoce como mtodo
absoluto, asigna los permisos en forma
simultanea a todas las categorias de usuario.
Para ello, usa un valor octal equivalente al
patrn binario que hace referencia a los
permisos de cada categora.
Como es sabido, los nmeros octales tienen
una estructura de base ocho, y al ser
traduccin a binario, cada dgito octal se
convierte en tres dgitos binarios. Tres dgitos
octales se convierten en tres conjuntos de tres
dgitos binarios cada uno (nueve bits en total),
nmero exacto de permisos en un archivo.

Contraseas y permisos
Cada dgito octal se aplica a cada una de
las categoras de usuarios. El primer
dgito octal se aplica a la categora de
propietario, el segundo al grupo y el
tercero a los otros.
Para definir el valor octal para cada
usuario, puede utilizarse la tabla
siguiente, con la que el dgito octal
corresponder al grupo de 3 bits que
indica la relacin de permisos.

Contraseas y permisos
Octal

Binario
421
rwx

0
1
2
3
4
5
6
7

000
001
010
011
100
101
110
111

Contraseas y permisos
Por ejemplo, si a un usuario se le
concede permiso de lectura, pero no de
escritura ni de ejecucin, su conjunto
binario ser 100 y su dgito octal resulta
4. Si se conceden los tres permisos se
tendr el conjunto binario 111 y por
ende el valor octal ser 7. finalmente, si
no se concede permiso alguno, la
cadena binaria es 000 con lo que el
valor octal es 0.

Contraseas y permisos
Finalmente, el nmero octal que se
emplea para indicar los permisos en
forma absoluta se forma reuniendo los
tres dgitos octales en el orden ya
descrito (dueo, grupo, otros).
La siguiente tabla proporciona una
interpretacin de textual del
significado de los distintos valores
octales.

Contraseas y permisos
Octal

Binario
421
rwx

Descripcin

000

Ningn permiso

001

Ejecucin

010

Escritura

011

Escritura y lectura

100

Lectura

101

Lectura y ejecucin

110

Lectura y escritura

111

Lectura, escritura y
ejecucin

Contraseas y permisos
Uso de Recursos
El administrador debe proteger los
recursos del sistema, asignndoles
permisos adecuados.
Existen 3 tipos de permisos para los
archivos
r lectura permite ver el contenido
w escritura permite modificar el contenido
x ejecucin

permite ejecutar el contenido

Contraseas y permisos
Uso de Recursos
En el caso de los directorios, los
permisos tienen un significado
diferente:
r
lectura
permite ver los nombres de los
archivos
w escritura Permite hacer cambios al
directorio
x
ejecucin permite buscar o cambiarse en
el
directorio

Contraseas y permisos
Existen en linux archivos con permisos
especiales, hay 2 tipos:
SGID (define el ID de grupo, 2000 octal)
SUID (define el ID de usuario, 4000 octal)

Los programas con permisos de SGID y


SUID son especiales, ya que los permisos
de su propietario se respetan aun
cuando los ejecuten otros usuario.

Contraseas y permisos
Esto es si se define el valor root SUID
en un programa, ste siempre se
ejecutar como root, aunque lo utilice
un usuario normal
Los archivos SUID se pueden buscar con
el siguiente comando
Find / .perm + 4000

A continuacin se muestra una lista


de cmo afectan estos permisos tanto
a archivos como a los directorios

Contraseas y permisos
Comando

Mnimo permiso requerido


En el archivo

En el directorio

ls dir

ninguno

ls l dir

ninguno

rx

cd dir

ls

ninguno

rx

ls -l

ninguno

rx

pwd

ls archivo

ninguno

ls l archivo

ninguno

cat archivo

cat >> archivo

archivo

x (si es binario)

rx ( si es script)

ninguno

wx

rm archivo

Monitoreo del sistema


Un proceso es un programa que se encuentra
corriendo dentro del servidor, cada proceso
tiene un tiempo de vida que va desde el
momento en que presionamos la tecla de enter
hasta que termina la ejecucin del proceso.
Todos los procesos tienen un dueo, este
dueo es el usuario quien invoc el proceso
desde el interprete de comandos, de tal forma
que ningn otro usuario puede afectar las
tareas que ese usuario esta realizando, debido
a que no son dueos del proceso que se esta
realizando.

Monitoreo del sistema


Cuando nosotros iniciamos una sesin
dentro del servidor en realidad estamos
ejecutando una copia del interprete de
comandos que tenemos por default, a
esta copia del interprete se le asigna un
nmero el cual esta asociado al proceso
en ejecucin, por cada sesin que
nosotros iniciemos se va a ejecutar una
nueva copia del shell asignndole un
nuevo nmero de identificacin para
este proceso.

Monitoreo del sistema


Es importante recalcar que todo
proceso tiene una dependencia del
shell principal del sistema, en nuestro
caso como usuarios todos los
procesos que generemos van a
depender de la copia del shell que
nosotros estamos ejecutando.

Monitoreo del sistema


Instruccin top
La instruccin top muestra los procesos que
se encuentran actualmente en ejecucin
as como informacin sobre los mismos,
como la memoria que utilizan y el tiempo
de CPU que consumen.
La ventaja que tiene el top sobre otras
instrucciones es que muestra en una lista
en tiempo real e interactivo los procesos
que actualmente estn activos
Para salir de top, pulsamos la tecla q.

Monitoreo del sistema


Podemos utilizar comandos para interactuar
con top entre los que se incluyen
Comando

Descripcin

Barra espaciadora

Actualiza la pantalla

Muestra la ayuda de top

Mata un proceso

Cambie el nmero de
procesos que se listan
Ordena por usuario

u
M

Ordena por memoria


utilizada

Ordena por la cantidad de


CPU que se utiliza

Monitoreo del sistema


Instruccin ps
La instruccin ps permite ver los procesos
que se estn ejecutando desde nuestra
sesin abierta, y que se encuentra en uso
en este momento, muestra un listado de
los procesos en formato corto.
Esta instruccin tambin puede ser
acompaada por algunas opciones de esta
forma podemos obtener informacin ms
detallada de los procesos que estn
corriendo en el servidor.

Monitoreo del sistema


Por ejemplo, si acompaamos al comando ps
con la opcin u y el nombre de algn
usuario
[root@luis/root]# ps u luis

Ahora con la opcin f, se mostrar un


listado de todos los procesos que esta
ejecutando un usuario, aunque se encuentre
trabajando en varias sesiones, por lo que se
mostrarn todos sus procesos
[root@luis/root]# ps f

Monitoreo del sistema


Entrega un listado de los procesos que se
estn ejecutando en nuestra sesin,
muestra los procesos en formato largo,
donde podemos ver la dependencia de los
procesos por el UID, PID y el PPID.
El UID es el identificador del usuario dueo
del proceso.
El PID es el nmero del identificador del
proceso en ejecucin.
El PPID es el identificador del proceso padre
del proceso en ejecucin.

Monitoreo del sistema


Con la opcin e muestra un listado
en formato sencillo de todos los
procesos ejecutndose en el servidor.
[root@luis/root]# ps e

Tambin podemos juntar varias


opciones para mostrar todos los
procesos ejecutndose en el servidor
en formato largo.
[root@luis/root]# ps fea

Monitoreo del sistema


Los procesos pueden encontrarse en
diferente estado dependiendo de la atencin
que estn teniendo en un momento
especfico.
Z Zombie, cuando un proceso corre en forma
independiente , incluso del shell o del proceso
que lo invoc.
R en ejecucin, se encuentra en la CPU
T Stopped o detenido
S Sleeping durmiendo en espera de recibir una
solicitud para iniciar su trabajo.
D Dormido sin interrupcin posible,
normalmente relacionado con entrada/salida.

Monitoreo del sistema


Bitcoras del sistema
Durante el arranque del sistema, el kernel
enva a la consola mensajes del proceso de
arranque, algunos de los mensajes que el
kernel enva se listan a continuacin:

Identificacin del kernel


Informacin de memoria y CPU
Informacin de hardware detectado
Informacin de particiones y chequeos.
Inicializacin de la red.
Informacin de los mdulos que se cargan.
Para ver los mensajes de la ltima secuencia de
inicio podemos usar el comando dmesg
[root@luis/root]# dmesg

Monitoreo del sistema


Adems de los mensajes del kernel, se
generan otros mensajes, que son
registrados a travs del sistema syslog
Esos mensajes pueden encontrarse en
archivos que se guardan en el directorio
/var/log, tales como el archivo messages.
En el directorio /var/log aparecen una serie
de archivos que guardan los registros de
cada uno de los servicios que el sistema
esta ejecutando, tales como apache,
samba,nfs, impresin, etc.

Realizacin de respaldos
Qu se debe respaldar?
Archivos de usuario
Bases de datos del sistema
Directorios del sistema que sean especialmente
importantes o que han sido modificados

Tipos de respaldo
Da cero. Cuando se adquiere un equipo
nuevo se respalda la informacin
Respaldos completos. Un da especificado se
realiza el respaldo de todo el equipo
Respaldos incrementales . Se respalda a
travs del ltimo respaldo que se realiz.

Realizacin de respaldos
Recomendaciones para respaldos
Determina la periodicidad de respaldo de acuerdo a
los datos que estn respaldando
Respaldar peridicamente los directorios del sistema
tambin
Normalmente los respaldos completos e
incrementales se utilizan conjuntamente
Realizar de vez en cuando un respaldo de todos los
archivos y directorios en el disco.
Usar un conjunto rotatorio de cintas
Hacer pruebas peridicas de recuperacin de los
resplados
Llevar un control de archivos y directorios que se
encuentren en cintas.

Realizacin de respaldos
Cuanto tiempo se debe conservar las
cintas?
Depender de la informacin que est
almacenada en ellas. Algunas deben ser
conservadas una semana, otras un mes,
otras varios aos y algnas quizs siempre.
Tar
Permite hacer respaldos de muchas maneras
diferentes. Su nombre significa Tape Archiver,
pero uno de sus usos ms comunes actualmente
es el manejo de archivos de disco

Realizacin de respaldos
Normalmente se combina con algn
programa de compresin/descompresin de
datos (commpress, gzip, etc) para disminuir
el espacio ocupado por los archivos.
Se utiliza para distribuir programas de
dominio pblico, pues permite incluir todos
los archivos necesarios en un solo archivo
de distribucinTar
Sintaxis
tar llave [argumentos ] archivo | directorios [ .
..]

Realizacin de respaldos
Tar
Sintaxis
tar llave [argumentos ] archivo | directorios [ . . . ]
Llave debe contener alguna de las siguientes funciones
C
Crear un respaldo
X
extraer archivo de un respaldo
T
Listar los archivos de un respaldo
R
Aadir archivos al final del respaldo (no siempre
funcional)
Opciones ms utilizadas:
vProporcionar informacin de lo que se est haciendo
(verbose)
f file Utilizar el archivo especfico en vez de la unidad
de
cinta de default para hacer el respaldo. Se usa
para
hacer respaldos en un archivo en disco o en dispositivos
alternos. Se puede utilizar para
especificar la entrada o
salida estndar

Realizacin de respaldos
En tar los argumentos no se ponen
inmediatamente despus de su letra
correspondiente, sino que todas las letras
se agrupan en un solo bloque y despus se
tienen que poner todos los argumentos en
el orden correcto.
En vez de utilizar
tar c v- b 20 f /dev/rmt8
Se usa
tar cvbf 20 /dev/rmt8

Realizacin de respaldos
En tar los argumentos no se ponen
inmediatamente despus de su letra
correspondiente, sino que todas las letras
se agrupan en un solo bloque y despus se
tienen que poner todos los argumentos en
el orden correcto.
En vez de utilizar
tar c v- b 20 f /dev/rmt8
Se usa
tar cvbf 20 /dev/rmt8

Realizacin de respaldos
Ejemplos
Crear un respaldo en la cinta de default del directorio
actual y todos sus subdirectorios
tar c .

Crear el archivo backup.tar que contenga los


directorios usr, etc y bin del directorio actual
tar cvf backup.tar ./usr . /etc ./bin

Crear un respaldo del directorio actual en la salida


estndar, que es pasado al gzip para que lo
comprima, y el resultado es puesto en el archivo
respaldo.tar.gz
tar cvf - . | gzip > ../respaldo.tar.gz

Algunas formas equivalentes de crear un duplicado


perfecto del directorio actual en el directorio tmp/udp
tar cvf - . | ( cd /tmp/dup; tar xvf - )
tar cvf - . | tar xvCf /tmp/dup -

Realizacin de respaldos
Se recomienda no usar rutas absolutas

Tar no puede cambiar la ruta de un archivo al


momento de recuperarlo. Por ejemplo, si un respaldo
se realiz con el siguiente comando:
tar cv /usr/users/jqz

Al momento de recuperarlo, tar va a recuperar los


archivos con exactamente la misma ruta, de manera
que si /usr/userz/jqz ya exista, sus archivos sern
reemplazados por los del respaldo.
La solucin nicamente utilizar rutas relativas al
momento de crear un respaldo con tar. Por ejemplo,
en vez del comando anterior se usa.
Cd /usr/users
tar cv ./jqz

Con lo cual el respaldo se podr recuperar al directorio


jqz debajo del directorio actual, sin importar cul sea

Realizacin de respaldos
DUMP
Permite realizar respaldos de sistemas de
archivos, ya sea completo o incrementales.
Maneja nueve de respaldo incremental. Lleva
un registro de cundo se hizo el ltimo
respaldo de cada sistema de archivos, y en
que nivel. Cuando se solicita un respaldo
incremental, se respaldan todos los archivos
que hayan sido modificados desde la ltima
fecha en que se realiz un respaldo de un nivel
menor
Sintaxis
Dump opciones [argumentos] filesystem

Realizacin de respaldos
Sintaxis
Dump opciones [argumentos] filesystem
Opciones
0-9

Indica el nivel de respaldo a realizar. 0 es


un
respaldo completo, y 1 9 indican
respaldos
incrementales. En el
archivo/etc/dumpdates se
almacenan las
fechas en las que se realiz el
ltimo respaldo
de cada sistema de archivos y en
que nivel.
f file
Permite que el respaldo se realice en algn
archivo que no sea el dispositivo de cinta
estndar. Se puede usar para especificar la
salida estndar.
u
Actualizar el archivo /etc/dumpdates en caso
de
que el respaldo termine exitosamente.

Realizacin de respaldos
Ejemplos
Realiza un respaldo completo del sistema
de archivos /dev/rz2h
Dump 0 /dev/rz2h

Realiza un respaldo en nivel 3 en la unidad


de cinta rmt8 del sistema de archivos
/usr/users (en este caso se da la ruta del
sistema de archivos). Este comando
respaldar todos los archivos que hayan
sido modificados desde la ltima vez que
se realiz un respaldo de nivel 2 (o menor)
de /usr/users
Dump 3f /dev/rmt8 /user/users

Configuracin y mantenimiento
del uso de la red
Para configurar los dispositivos de red que
estn instalados en el servidor se puede
hacer de cuatro formas
Utilizando una herramienta en modo texto
Utilizando una herramienta desde la
interfaz grfica
Por medio de un servidor DHCP
Manualmente

Configuracin y mantenimiento
del uso de la red
Se necesita conocer algunos datos como
son

Direccin IP
Nombre del host
Nombre del dominio
Mascara de red
Puerta de enlace
Servidor de nombre de dominio

Configuracin y mantenimiento
del uso de la red
La herramienta netconfig preguntar uno de los
parmetros antes mencionados, slo se debe
escribir los datos correctos y oprimir enter para
continuar con la configuracin hasta terminar con
ella
Por lo regular las herramientas de configuracin
se encargan de reiniciar los dispositivos
apropiados para habilitarlos con la nueva
configuracin, sin embargo tambin lo podemos
hacer manualmente con la instruccin
[root@luis/root]# /etc/init.d/network restart

Configuracin y mantenimiento
del uso de la red
La herramienta netconfig preguntar uno de los
parmetros antes mencionados, slo se debe
escribir los datos correctos y oprimir enter para
continuar con la configuracin hasta terminar con
ella
Por lo regular las herramientas de configuracin
se encargan de reiniciar los dispositivos
apropiados para habilitarlos con la nueva
configuracin, sin embargo tambin lo podemos
hacer manualmente con la instruccin
[root@luis/root]# /etc/init.d/network restart

2.1 Direccin IP
Una direccin IP (Protocol Internet) o IP Address,
tambin llamada nmero de IP o direccin de Internet,
es un forma de encontrar computadoras en Internet,
es un nmero nico, global y standarizado. Cuando se
desea conectar a otra computadora, transferir archivos
o enviar un e-mail, primero se debe conocer quien es
la otra computadora, es decir su direccin ("Address").
La direccin IP es un identificador para una PC en
particular en una red, todas las computadoras que
desean conectarse a Internet deben estar de acuerdo
en usar el mismo esquema de direcciones para
establecer una comunicacin.

2.1Direccin IP
Cada direccin de IP consta de 4 secciones
separados por puntos, donde cada rango puede
variar de 0 a 255.
Ejemplo: 120.42.5.7
Cual seccin de direccin de IP representa la red
y cual representa la computadora depender de
que clase de direccin de IP fue asignada a la
red. El InterNIC, bajo la autoridad del Internet
Assigned Numbers Authorithy (IANA), asigna las
porciones de red de la direccin IP a los
Proveedores de Servicios en Internet, estos a su
vez asignan al host la porcin de direccin IP a
las PCs dentro de su red local.

2.1 Direccin IP

Las clases de direcciones IP dependen del tamao


de la red (es decir el nmero de host que la red
puede soportar):
Una direccin de IP es nica.
Dos computadoras no pueden tener asignada el
mismo nmero de IP.
La direccin IP es global y standarizada.

2.2 Clases

Hay cinco formas de direcciones de IP:


Clase A: puede representar hasta 126
redes distintas. 1.0.0.0 - 126.0.0.0
Clase B: 127.0.0.0 - 191.255.000
Clase C: 192.0.0.0 - 223.255.255.0
Clase D: 224.0.0.0 - 240.0.0.0
Clase E: Est reservada para uso futuro
241.0.0.0 - 248.0.0.0

2.2 Clases

Por ejemplo:
la direccin: 120.42.5.7 su representacin
binaria es: 01111000 00101010 00000101
00000111, es una direccin de Clase A,
donde la red est representada por 120 y el
Host por 42.5.7.

2.3 Domain Names


Es un camino para identificar
y
ubicar
computadoras
conectadas a Internet, son
computadoras
especiales,
que miran el nombre de
dominio y lo convierten a una
direccin IP, de esta manera
los
datos
pueden
ser
ruteados a su destino en
Internet.
El
nombre
del
dominio
resulta
para
la
mayora de las personas
mucho ms fcil de recordar
que una direccin de IP.

2.3 Domain Names


Un domain name contiene dos o ms componentes
separados por puntos. Algunos ejemplos de domain
names son:
- internic.net
- nasa.gov
- unlp.edu
Sobre un dominio se pueden crear "subdominios", por
ejemplo: una gran empresa puede crear subdominios
para cada oficina regional. Supongamos que la empresa
XYZ tiene un dominio que se llama: xyz.com y crea
subdominios para sus sucursales:
la direccin ppp.buenosaires.xyz.com se puede
interpretar como un host llamado ppp, en la oficina de
Buenos Aires de la compaa XYZ.

2.3 Domain Names


No todos los dominios deben tener un host y un subdominio, pero
un mismo dominio puede tener asignado muchos subdominios. La
ltima porcin de un dominio describe el tipo de organizacin de
que
se trata:
.COM
, entidades comerciales.
.EDU, colegios y universidades.
.NET, proveedores, organizaciones directamente involucradas
a operaciones en Internet o centros de informacin sobre redes.
.ORG, son organizaciones que no estn comprendidas en las
categoras anteriores.
.GOV, organismos gubernamentales.
.MIL, unidades militares de EE.UU.
.CODIGO DE PAIS, dos letras de abreviacin para un pas en
particular. Por ejemplo: para Argentina "ar" o "es" para Espaa
.WEB, actividades relacionadas con Internet.
.FIRM, negocios o firmas
.SHOP, comprar y vender a travs de Internet.

SEGURIDAD EN
SISTEMAS
OPERATIVOS

Introduccin

Antes de comenzar con sistemas operativos


especficos, es necesario primero entender la
estructura y funcionamiento de un sistema
operativo

El sistema operativo desempea bsicamente


dos funciones no relacionadas:
Sistema Operativo como Mquina extendida
Sistema Operativo como Administrador de
recursos

Mquina Extendida

Para controlar un dispositivo, por ejemplo el floppy


es necesario tener en consideracin:

Lectura y escritura de datos


Movimiento del brazo del disco
Giro del motor
Formateo de las pistas
Reiniciar y Recalibrar el dispositivo
Etc.

El conjunto de programas que esconde la verdad


del hardware es el sistema operativo

Al usuario se le presenta como una abstraccin


(maquina virtual)

Administrador de Recursos
El

SO tambin provee un control ordenado para


las aplicaciones que compiten por el procesador,
la memoria y los dispositivos de E/S

La

administracin de recursos incluye la


multiplexacin de los mismos en dos maneras:
En tiempo: Diferentes programas toman turno
para utilizar los recursos (multiproceso)
En espacio: En lugar de tomar turnos los
programas toman una parte del recurso, p. ej.
varios procesos en memoria

Procesos (1)

Proceso: Es bsicamente un programa en ejecucin

El proceso puede ser ejecutado simultneamente


con otros procesos

El sistema operativo lleva el control de los procesos


que estn siendo ejecutados, pasndoles el control
de acuerdo a una serie de reglas preestablecidas y
de las cuales depende el rendimiento del equipo

Procesos (2)
Un

proceso puede estar en uno de los


siguientes tres estados: corriendo, detenido y
listo para correr

El

proceso que est corriendo puede llegar a un


punto en el que una operacin de entrada y
salida lo deje bloqueado

Oportunidad

ideal para que el sistema


operativo le de el control a otro proceso

Procesos (3)

Una vez que la operacin ha terminado, el


sistema operativo debe marcar ese proceso
como listo para correr y meterlo en la cola de
procesos que estn esperando su oportunidad

Si un proceso ha consumido ya demasiado


tiempo de procesador sin dar oportunidad a
otros procesos, el sistema operativo lo
interrumpe colocndolo en la cola de procesos
como un proceso listo para correr y le da el
control a otro proceso

Procesos (4)
Transiciones

vlidas

Corriendo -> detenido


Corriendo -> listo para correr
Detenido -> listo para correr
Listo para correr -> corriendo
Ntese

que no existen las transiciones

detenido -> corriendo


corriendo -> detenido

Comunicacin entre procesos (IPC)


Actualmente

se usan mucho procesos


que estn ntimamente relacionados
con otros mientras corren
P. Ej. la salida de un proceso es la
entrada para otro
# ls -l | grep *.c

Como

consecuencia de IPC tenemos


las condiciones de competencia

Condiciones de Competencia (1)

Procesos que estn trabajando juntos pueden


compartir un medio de almacenamiento comn
del cual pueden leer o escribir cada uno de
ellos

El medio de almacenamiento compartido puede


estar en la memoria principal o en un archivo

Esto puede ocasionar que un proceso B escriba


en el medio que fue escrito anteriormente por
un proceso A, sobrescribiendo los datos, p. ej.
El spooler de impresin

Condiciones de Competencia (2)

Otro ejemplo puede ser el algoritmo del


productor y el consumidor:
Se necesita establecer un almacn intermedio en
el que el programa productor deposite los
caracteres que va generando y de dnde el
programa consumidor los va tomando para
procesar

Productor con mayor velocidad


Eventualmente el almacn se llenar

Consumidor sea ms rpido


Almacn vaco

Ambas velocidades sean iguales


En la prctica no se da

Las velocidades con frecuencia cambian en el


tiempo

Condiciones de Competencia (3)


Productor:

Produce un dato y colcalo en el almacn


Si es el primer dato en el almacn, despierta
al consumidor y ve a producir ms datos
Si es el ltimo dato en el almacn (almacn
lleno) vete a dormir
Consumidor:

Toma un dato del almacn


Si queda el almacn vaco, procesa el dato y
vete a dormir
Si era el ltimo dato del almacn (almacn
lleno), despierta al productor y procesa el dato

Condiciones de Competencia (4)


Conflictos:

Un dato en el almacn
El consumidor toma el dato
Mientras est procesndolo el productor
mete un dato nuevo al almacn intermedio
y manda una seal de despertar al
consumidor
La seal se pierde

Condiciones de Competencia (5)


Cuando el consumidor termine de
procesar el dato, se ir a dormir en
espera de una seal que lo despierte
Dicha seal nunca llegar
El productor seguir hasta que se llene
y se vaya a dormir
Ambos procesos estn dormidos sin
posibilidad de despertar

Buffer Overflow (1)


Muchos

sistemas operativos y
programas de sistema son escritos en
lenguaje C

El

compilador de C no hace verificacin


del tamao lmite de un array en tiempo
de ejecucin

Por

ejemplo el siguiente fragmento de


cdigo no es verificado:

Buffer Overflow (2)


char c[1024];
for (int i=0; i<=12000; i++)
c[ i ]=i;

El

resultado es que algunos bytes de memoria


(10,976) se sobrescribirn, posiblemente con
consecuencias desastrosas

Trap doors (1)

Este problema es creado con la insercin de


cdigo en el sistema, para brincarse alguna
verificacin normal

Normalmente se deja una puerta trasera para


poder acceder al sistema en siguientes
ocasiones pasando desapercibido

Por ejemplo, se puede agregar cdigo al login


del sistema para permitir que cualquier
usuario ingresando el login name zzzz pueda
accesar al sistema sin importar el password

Trap doors (2)

Un pseudocdigo de ejemplo para el login


de un sistema es el siguiente:
while (TRUE)
{
printf(login: );
get_string(name);
printf(password: );
get_string(password);
enable_enchoing();
v = check_valididty(name, password);
if (v) break;
}

Trap doors (3)

La puerta trasera cambiar el cdigo como


sigue:
while (TRUE)
{
printf(login: );
get_string(name);
printf(password: );
get_string(password);
enable_enchoing();
v = check_valididty(name, password);
if (v || !strcmp(name, zzzz)) break;
}

Normas de seguridad de sistemas operativos


Hacemos

uso de normas o estndares

Saber

exactamente que tenemos y qu


podemos esperar de lo que tenemos

Interoperar

sistemas heterogneos

Cmo almacenar la informacin


Especificaciones elctricas de los modems
Protocolo necesario para que un programa
cliente solicite una pgina de Web
Etc.

Origen de las normas (1)


La

inmensa mayora de los aspectos de la


computacin estn normados a detalle

Organizaciones

Son

como ANSI, IEEE, CCITT

estndares de facto, como el Word y el


Excell

Origen de las normas (2)


Las

normas en seguridad de computadoras y


sistemas operativos no provienen de las
organizaciones ni fabricantes

Militares

norteamericanos

Esfuerzos

normas

civiles por generar unas nuevas

Norma fundamental
Trusted

(TCSEC)

Ms

computer system evaluation criteria

conocido como el libro naranja

Rainbow series
Publicado

el 15 de agosto de 1983

Principios bsicos que no cambian

Niveles de seguridad (1)


Divisin D: Proteccin mnima
Divisin C: Proteccin discrecional

Clase C1: Proteccin de seguridad discrecional


Clase C2: Proteccin por acceso controlado

Divisin B: Proteccin obligatoria


Clase B1: Proteccin por seguridad etiquetada
Clase B2: Proteccin estructurada
Clase B3: Dominios de seguridad

Divisin A: Proteccin verificada

Niveles de seguridad (2)


Lo

ms seguro es la divisin A

Prcticamente

sin seguridad: divisin D

Los

cambios importantes en el nivel de


seguridad se dan entre divisiones

Entre

las clases de una misma divisin las


diferencias son menores
Fcil pasar de un sistema C1 a uno C2
Pasar de un C2 a un B1 es sumamente difcil

Caractersticas generales
Divisiones

A y B tienen seguridad por diseo

Divisin

C es posible lograr algunos resultados


con software aadido

En

cada clase progresivamente ms segura se


incorporan todos los elementos de las clases
inferiores

Usos principales
Comparar

el nivel de seguridad ofrecido por


diferentes equipos y sistemas operativos

Determinar

qu clase de seguridad
necesitamos para diferentes necesidades
Gua para la seleccin y aplicacin de las clases
del libro naranja
Libro amarillo

SEGURIDAD EN LINUX

Agenda

Instalacin Segura

Seguridad Fsica

Seguridad Local

Cuentas de Usuario y de Root

Seguridad en el Sistema de Archivos

Seguridad en las Contraseas

Seguridad en el Kernel

Seguridad en la Red

Instalacin Segura (1)

Primeramente se debe identificar el sistema


que se desea instalar

Es decir, un servidor?, estacin de trabajo


con red permanente?, estacin de trabajo
sin red?, etc.

Se debe tener conocimiento del hardware


con el que cuenta dicho equipo

Contestando las siguientes preguntas:

Instalacin Segura (2)

Qu clase de discos duros tiene (IDE y/o SCSI)?

De qu tamao es la memoria RAM?

Qu tipo de mouse tiene (PS/2, Microsoft, etc.)?

De qu manufactura y modelo es la tarjeta de


video?

Cunta memoria de video tiene?


Que tipo de monitor tiene (modelo y manufac.)?

Instalacin Segura (3)

Si va a estar conectado a la red, especificar lo


siguiente:

Direccin IP

Mascara de Red

Direccin del Gateway

Direccin del DNS

El Nombre del Dominio que se tendr

El nombre del Host

El tipo de tarjetas de red (manufactura y modelo)

El nmero de tarjetas de red (manufactura y modelo)

Instalacin Segura (4)

Siempre seleccionar instalacin


personalizada

Crear particiones separadas para


proporcionar un buen desempeo,
estabilidad y seguridad

El particionamiento mnimo
recomendado es el siguiente:

Instalacin Segura (5)

/boot Almacena imgenes del kernel


<swap> Doble de la memoria RAM (MemoriaVirtual)
/ Particin de Root (Raz)
/usr Almacena programas binarios
/var Almacena las bitacoras (logs)
/home Almacena el espacio para los usuarios
/tmp
Almacena archivos temporales
/chroot Si se desea instalar programas en un
directorio root independiente (ej. DNS,Apache)

El tamao de las particiones depende directamente del


tamao del disco duro y del tipo de servidor

Instalacin Segura (6)

Que ventajas tiene el hacer particionamiento al


disco?
Proteccin contra ataques de denegacin de servicio
Proteccin contra programas SUID
Inicializacin del sistema rpido
Fcil administracin de respaldos y actualizaciones
Mejor control de sistemas de archivos montados

Instalacin Segura (7)

Configurar el equipo eliminando los


servicios innecesarios

Quitar la seleccin de todos los paquetes,


para hacer una seleccin individual

Para la configuracin de un servidor no es


necesario el ambiente grfico (XFree86)

Desinstalar programas innecesarios despus


de la instalacin ( /etc/rc.d/init.d )

Seguridad Fsica (1)

La seguridad fsica es la primera


medida que se debe tener en cuenta

Contrasea de arranque en la BIOS

Contraseas por defecto en la BIOS:

AWARD_SW, AWARD_PW
Biostar, BIOS
AMI!SW1, AMI?SW1
Award, hewittrand, lkwpeter

Seguridad Fsica (2)

Linux proporciona:

Arranque seguro
Bloqueo de terminales

El arranque seguro se establece mediante el


gestor de arranque como: lilo (Linux loader)
o grub (GRand Unified Bootloader)
/etc/lilo.conf /etc/grub.conf
image=/boot/vmlinuz--version title imagen
password = PASSWORD password --md5
PASSWORD
restricted lock

Seguridad Fsica (3)


El

bloqueo de terminales se hace mediante


los programas vlock y xlock

xlock

es un programa que bloquea la


terminal en modo grfico

vlock

permite bloquear alguna o todas las


consolas con las que se est trabajando

Seguridad Local Cuentas de Usuario y


de root (1)

Administracin de las cuentas de usuario:


Contar con los privilegios mnimos necesarios en sus
cuentas
Verificar cundo y dnde iniciaron la sesin
Asegurarse de borrar las cuentas inactivas (comando
last)
No asignar el mismo identificador de usuario (UID) a
varios usuarios
Asignar los mismos UID a los usuarios en todos los
sistemas que utilicen
Bloquear cuentas del sistema que no se utilicen
(nobody, uucp, games, etc.)
Cuando sea necesario utilizar shell restringido (osh)
Evitar la creacin de cuentas grupales

Seguridad Local Cuentas de Usuario y


de root (2)

La cuenta de root es la ms buscada por los


hackers, debido a que tiene el acceso total del
sistema

Algunas recomendaciones en la utilizacin de esta


cuenta son:
Antes de ejecutar comandos destructivos ( rm f
foo*.bak ) verificar primero que realmente es el
archivo que se desea borrar (ls foo*.bak)
Proporcionar un alias a los usuarios para los
comandos destructivos ( $alias rm =rm -i )
Verificar la variable de ambiente PATH
( /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin )

Seguridad Local Cuentas de Usuario y


de root (3)
Nunca incluir el directorio actual en esta variable ( . )
No utilizar rlogin, rsh, rexec (r-utilities)
Nunca crear un archivo .rhosts para root
Definir las terminales en donde se puede conectar
root
( /etc/securetty )
Para cuentas remotas utilizar canales seguros, por
ejemplo SSH
Preferentemente iniciar sesin como usuario normal
y despus utilizar el comando su - si es necesario
Utilizar la herramienta sudo (superuser do) para
repartir las tareas del administrador del sistema

Seguridad Local Sistema de Archivos (1)

Se debe evitar que los usuarios ejecuten programas SUID/SGID desde su


directorio
$ vi /etc/fstab
LABEL=/ /
ext3 defaults
11
none
/dev/pts
devpts gid=5,mode=620
00
LABEL=/home /home
ext3 nosuid,noexec,nodev
12
none
/proc
proc defaults
00
none
/dev/shm
tmpfs
defaults
00
LABEL=/var
/var
ext3 nosuid,noexec,nodev
12
/dev/hda1 swap
swap
defaults
00
/dev/cdrom
/mnt/cdrom
udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto
noauto,owner,kudzu
00

Seguridad Local Sistema de Archivos (2)


Los

programas SUID pueden provocar


una puerta trasera

Por

tal motivo es necesario buscar


regularmente programas SUID/SGID en
el sistema y mantener un registro de
lo que son
root# find / -type f \( -perm -04000
-o -perm -02000 \) -print

Seguridad Local Sistema de Archivos (3)

Es importante asegurar que los archivos del


sistemas no estn disponibles a la edicin casual
por usuario y grupos que no deberan

El control de acceso en Unix est separado por tres


categoras: propietario, grupo y todo el mundo, por
ejemplo:
brw-rw-r-- 1 root floppy
lectura, escritura y ejecucin para el propietario
(root)
lectura y escritura para el grupo (floppy)
lectura para todos los dems usuarios

Seguridad Local Sistema de Archivos (4)


Se debe configurar umask para la creacin
de archivos
Los valores ms comunes son 022, 027 y
077, que se ejecutan sobre la base 666
$ umask 077

666 666 666


022 027 077
644 640 600

rw-r--r-- rw-r---- rw---- La cuenta de root debe estar muy restringida


(077), slo debe dar permiso explcitamente

Seguridad Local Sistema de Archivos (5)

Existen archivos que son escribibles por todo el


mundo, en particular algunos archivos del sistema

Se necesita buscar tales archivos y asegurarse de


por qu son escribibles
root# find / -perm -2 ! -type l -ls
NOTA: Hay algunos archivos que deben ser
escribibles por todos (/dev), si se les quitan los
permisos puede afectar el funcionamiento normal
del sistema

Seguridad Local Sistema de Archivos (6)


Los

archivos sin propietario o sin grupo pueden


ser un indicio de que algn intruso a accedido
al sistema
root# find / -nouser -o -nogroup -print

Tambin

es necesario buscar archivos .rhost

root# find /home -name .rhosts -print

Seguridad Local Sistema de Archivos (7)


Otra

medida de seguridad es poner cuotas


de los recursos del sistema

Cuotas

en el sistema de archivos, ya que


por defecto viene ilimitado

Configurar

cuotas de Memoria, procesos y


archivos core:

Seguridad Local Sistema de Archivos (8)


/etc/security/limits.conf
#Core Files Size
@users hard core 0
#Process Number
@users hard nproc
50
# Memory in kb
@users hard rss 5000
Nota: Los archivos core son generados cuando
un programa falla, por lo que contienen
informacin para reparar el problema (gdb, es
el debugger normalmente utilizado)

Seguridad Local Sistema de Archivos (9)


Otra

medida de proteccin para los


sistemas de archivos es con el
establecimiento de bitcoras

Las

bitacoras que contienen


informacin de conexin de todos los
usuarios del sistema son:
/var/log/wtmp y /var/run/utmp

Seguridad Local Sistema de Archivos (10)

Se debe mantener su integridad, porque puede


utilizarse para saber cundo y desde dnde ha
entrado un usuario (o intruso) al sistema

Se recomienda configurarlos con permisos 644

Existe otra facilidad para impedir


modificaciones en los archivos del sistema: bit
inmutable

Este bit inmutable tambin impide la creacin


de enlaces simblicos al archivo

Seguridad Local Sistema de Archivos (11)


Slo
El

root puede agregar o eliminar este atributo

comando es como sigue:

Agregar atributo
root# chattr +i nombre_del_archivo
Eliminar atributo
root# chattr i nombre_del_archivo

Seguridad Local Sistema de Archivos (12)

Otro peligro potencial para los sistemas de


archivos de Linux son los llamados caballos de
troya

Para evitar en lo posible este cdigo malicioso es


recomendable lo siguiente:
Asegurarse que el software que se descargue
provenga de un sitio confiable
Linux proporciona verificadores de integridad MD5
por medio de md5sum y firmas digitales por medio
de gpg
Verificar la integridad del cdigo que se ejecuta
como software del sistema (Tripwire)

Seguridad Local Seguridad en las


Contraseas (1)
La

forma principal de autenticacin y control de


acceso es por medio de contraseas

Normalmente

los usuarios seleccionan


contraseas dbiles, es decir, palabras fciles
de memorizar

Por

lo cual son fcilmente atacables mediante


fuerza bruta o ataque por diccionario

Seguridad Local Seguridad en las


Contraseas (2)
Las

contraseas dbiles son el primer punto en


el que se centran los atacantes para obtener
acceso al sistema

Se

deben proteger el archivo de passwords


(/etc/passwd) del sistema ponindolo bajo la
sombra (/etc/shadow)

Esto

evita que un atacante se robe la tabla de


passwords y ejecute Crack o Jhon the Ripper

Seguridad Local Seguridad en las


Contraseas (3)

Otro punto importante son las contraseas


que viajan por la red

El uso de protocolos tales como telnet o


ftp, autentican al usuario mediante una
contrasea, pero esta contrasea viaja en
claro

Por este motivo se debe tener en


consideracin la utilizacin de protocolos
criptogrficos, como los que se mencionan
en la seccin Seguirdad en la Red

Seguridad Local - Seguridad en el Kernel (1)


Es

importante que el kernel no sea


comprometido, ya que controla la
interconexin de la computadora

El

kernel debe mantenerse actualizado, con


liberaciones estables (www.kernel.org) como
2.4.18 no utilizar versiones en desarrollo 2.5.x

Una

ves que se Instala el sistema es


recomendable recompilar el kernel

La

configuracin con respecto a la seguridad


es la siguiente:

Seguridad Local - Seguridad en el Kernel (2)

Prompt for development


[CONFIG_EXPERIMENTAL]
Utilizar componentes nuevos y no probados es muy
peligroso para una gateway seguro

Enable loadable module support, kernel module


loader [CONFIG_MODULES CONFIG_KMOD]
Permite trabajar con mdulos y carga mdulos de
forma dinmica, respectivamente . Previene
rootkits (knark)

Set version information on all module symbols


[CONFIG_MODVERSIONS]
Provee una verificacin para prevenir cargar
modulos compilados en diferentes kernels

Seguridad Local - Seguridad en el Kernel (3)

Packet socket [CONFIG_PACKET]


Proporciona herramientas tal como tcpdump
que se comunica directamente con el hardware
de red, sobrepasando los protocolos del kernel.
(deshabilitar en gateways de produccin)

Network paket filtering [CONFIG_NETFILTER]


Configura un firewall (iptables), reemplazando
ipchains

Soket filtering [CONFIG_FILTER]


Configura una interface de filtrado viejo. Se
recomienda instalar netfilter

Seguridad Local - Seguridad en el Kernel (4)

IP: Kernel level autoconfiguration


[CONFIG_IP_PNP]
Permite la configuracin automtica de
direcciones IP de dispositivos y de la tabla
de ruteo mientras bootea el kernel

IP:Syn cookie support


[CONFIG_SYN_COOKIES]
Proteccin contra inundacin de SYN,
ataque de denegacin de servicio (DoS)

IP:Netfilter configuration
Provee configuracin personalizada de

Seguridad Local - Seguridad en el Kernel (5)

Existen dispositivos de bloque y carcter como


ayuda para la creacin de nmeros
pseudoaleatorios y son los siguientes:
/dev/random Entropa de alta calidad, generada
al medir los tiempos entre interrupciones,
acceso a disco o tiempos de pulsaciones de
teclas
/dev/urandom Crea un HAS de la entropa de
/dev/random utilizando SHA

Estos dispositivos son tiles para la generacin


de llaves de cifrado, por ejemplo PGP, SSH y

Seguridad en la Red (1)


Comprometer

la seguridad en la red es ms
frecuente que comprometer la seguridad fsica
o local

Primeramente

es necesario analizar cuales son


los servicios que se necesitan ofrecer

Desactivar

los servicios que no se van a ofrecer


o inclusive desinstalarlos

Seguridad en la Red (2)

Desde el /etc/xinet.d (RH) se pueden ver los


servicios que se estn ofreciendo y
deshabilitarlos o habilitarlos en su defecto

Los servicios que no estn basados en xinetd


se pueden ver, activar y/o desactivar con:
# chkconfig --list

El nivel de ejecucin por default es el 3 (en


RH)
/etc/rc.d/rc3.d
Los servicios que comiencen con K no inicializan
Los servicios que comiencen con S si inicializan

Seguridad en la Red (3)

SSL
para
algoritmos

Protocolo desarrollado por Netscape


proteger el web mediante diversos
criptogrficos

SSH
seguros

Protocolo que implementa telnet y ftp


utilizando llave pblica

S/MIME
asegurar
Internet

Protocolo desarrollado por RSA para


correo electrnico y otros mensajes de

Kerberos
por el MIT

Mtodo de auteticacin desarrollado

Seguridad en la Red (4)

LIDS
Implementa un monitor de referencia por
medio de
un HIDS y ACL

Snort

Nessus Auditor de sistemas

Nmap

PGP
Creado por Phill Zimmerman para
proteger el
correo electrnico principalmente

Detector de intrusos NIDS

Escaneador de puertos

Potrebbero piacerti anche