Está en la página 1de 37

 

MEMORIA: 
Laboratorio de Sistemas Operativos 
 

Cédric Marco Detchart


Eneko Vélez Yoldi
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

A. INSTALACIÓN DE LINUX DEBIAN

Como introducción al entorno de UNIX, empezaremos detallando el proceso a


seguir para instalar una de las múltiples distribuciones de licencia libre de Linux. En
nuestro caso, la distribución a instalar es Debian en su versión 4.0.

Al no tener la opción de instalar el SO con los privilegios dados a un


administrador de sistema, el paquete fue instalado desde una máquina virtual (en este
caso, VMWare) que nos permitirá simular la instalación de Linux sobre un disco duro
virtual .

En primer lugar, obviamente necesitamos el DVD de instalación. En nuestro caso,


el soporte fue facilitado por el profesor de la asignatura, pero no hay problema en ello, ya
que es fácilmente descargable en la web oficial de Debian
(http://cdimage.debian.org/debian-cd/4.0_r3/i38 6/iso-dvd/ )de manera gratuita. Una
vez tenemos el DVD en nuestro poder, tenemos que arrancar desde él. Llegados a este
punto, sería conveniente contar con una conexión a Internet, que nos permitirá
descargar actualizaciones para los diferentes paquetes.

Una vez dentro de la instalación, basta con seguir estos sencillos pasos para
llevar a cabo la instalación de Debian:

1. Esta es la primera pantalla que nos aparecerá en VMWare. Pulsando F1, vemos la
ayuda, de la que nos interesa el tipo de arranque, que puede ser uno de estos
cuatro: modo texto, modo texto avanzado, modo gráfico y modo gráfico avanzado . Al
ser nuestra primera instalación , elegiremos el modo texto, que es más intuitivo y
sencillo. Si pulsamos directamente ENTER, arranca directamente desde el DVD sin
opción a elegir nuestro modo de instalación entre uno de los anteriores.

1
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

2. Ahora debemos elegir todas las opciones de idioma de nuestro sistema operativo, a
elegir entre un amplio abanico de opciones:

En nuestro caso, elegiremos la opción Spanish/Español. Después , debemos


elegir la ubicación adecuada:

Debemos tener especial cuidado a la hora de elegir la distribución de idioma de


nuestro teclado, ya que existen muchas distribuciones distintas para los distintos
idiomas en los que está disponible este SO. Lógicamente, elegimos “Español”(para lo
que cargará los componentes adicionales correspondientes) y pasamos al siguiente
punto.

2
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

3. El siguiente paso es introducir el nombre de nuestro PC, que es el que tendrá en la


red. En nuestro caso, será linux1.

4. Una de las partes más importantes de la instalación de una distribución Linux


cualquiera es el particionado. Por ello, es necesario adquirir ciertas nociones previas:

4.1. SISTEMA DE CARPETAS:

Linux es un SO que trabaja con carpetas, de modo que todo cuelga de un


directorio raíz en forma de árbol:

3
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

4.2. PARTICIONAMIENTO:

Una partición es el nombre que se otorga a la división de un disco en varias


partes lógicas(normalmente en el disco duro, según las preferencias y gustos del
usuario, por ejemplo una por sistema operativo) . Un disco físico formateado es en
realidad una partición primaria(concepto que explicaremos después) que engloba todo el
disco, y por lo tanto el término partición es poco aplicado, siendo en este caso sustituido
por otro termino como formato del disco. Lo verdaderamente interesante del
particionamiento de un disco es que cada partición puede tener su propio sistema de
archivos, lo que nos permite tener un único disco duro físico que funciona como dos
unidades independientes. Esta característica es de gran interés para un usuario que
quiera instalar dos o más sistemas operativos distintos en un mismo disco duro.

En Windows, a las particiones o unidades se les asigna una letra seguida por un
signo de doble punto (p.e C:). En sistemas basados en linux, se le asigna un nombre
corto a cada partición (p.e. hda1), éste nombre está hecho por tres letras seguidas de un
número. Los nombres están incluidos en el diagrama del sistema de directorios de Linux
adjunto.

Los tipos de particiones fundamentales son:

• Partición prim aria : Es la partición activa donde se encuentra el


sistema operativo, que debe ser formateado según el sistema adecuado
a éste. Hay que tener especialmente en cuenta una limitación estricta:
sólo puede haber cuatro de estas particiones por cada unidad física. Un
disco físico formateado en varias partes es en realidad una gran partición
primaria que ocupa todo su espacio y que posee su propio sistema de
archivos. Al ser el tipo de partición más importante y habitual,
normalmente los diferentes sistemas operativos que instalemos son
capaces de asignar una letra o un código a nuestro volumen físico,
siempre y cuando detecte el sistema de archivos.

• Partición extendida: Es un tipo de partición primaria cuya función es

4
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

la de contener infinidad de particiones lógicas en su interior. Solamente


es posible una partición de este tipo por unidad de almacenamiento, y,
además, solamente puede almacenar particiones lógicas en su interior.
Obviamente su función es acabar con la limitación de particiones
primarias en un sólo disco. Al sólo tener la función de almacenar
particiones lógicas, es el único sistema de particionado que no admite un
sistema de archivos.

• Partición Lógica: Partición que ocupa una parte o la totalidad de la


partición extendida. Al igual que las particiones primarias, es capaz de
detectar diferentes sistemas de archivos. Se suele utilizar para
almacenar las diferentes unidades de almacenamiento de nuestro
ordenador, tales como discos duros(hdX, con x en el rango de los discos
duros que hayamos instalado: 0,1,..., fdX, ethX.FAT32, NTFS,
ext2,...). Podemos crear hasta 64 particiones lógicas. algunos sistemas
operativos (como OS/2, Linux y cualquier Windows basado en NT) son
capaces de arrancar desde una unidad lógica.

Representación gráfica de un disco particionado:

Cada recuadro blanco representa algún sistema de archivos. Los espacios en gris
representan los espacios sin particionar del disco. Las particiones rodeadas por líneas
moradas o violetas representan las particiones primarias. Las particiones rodeadas por
bordes rojos representan la partición extendida (que es un tipo de partición primaria); y
en su interior se encuentran las particiones lógicas, rodeadas por los bordes verdes.

Una vez explicados los diferentes sistemas de particionado principales,


expondremos brevemente los motivos principales por los que particionar un sistema
físico de almacenamiento:
• Se puede guardar una copia de seguridad de los datos del usuario en otra
partición del mismo disco, para evitar la pérdida de información
importante. Esto es similar a un RAID, excepto en que está en el mismo
disco.

• En algunos sistemas operativos aconsejan más de una partición para


funcionar, como por ejemplo, la partición de intercambio (swap) en los
sistemas operativos basados en Linux.

También es necesario resaltar la infinidad de opciones que nos abre el tener la


opción de utilizar particionado en nuestros discos . Según las necesidades de cada
usuario , en resumen, de la finalidad a la que dedica su PC, podemos utilizar una
distribución de particiones u otra. En nuestro caso, podemos utilizar una única partición
donde ubicar el directorio raíz en el que trabajar o varias, una para el directorio raíz y otra
para los diferentes usuarios. En sistemas para directorios profesionales suele haber dos,
uno para bin, boot, dve, etc, lib y root y otro para hom e, usr, var y tmp.

Algo habitual es una partición para el directorio raíz y otro para el temporal(TMP,
directorio donde se escriben datos temporales).Vamos a crear uno para el temporal
porque queremos tenerlo independientemente del directorio raíz y así limitar el espacio
que ocupa TMP: si un proceso escribe descontroladamente, escribirá en TMP, con lo que

5
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

no llenamos el directorio raíz y así evitamos colapsar el sistema. Sencillamente, el


directorio TMP se llenará hasta ocupar todo su espacio físico, sin causar mayores
problemas.

Se suele guardar un 5% para el ROOT, para poder tener un acceso que retome el
curso de un proceso desbocado.

Los documentos a imprimir, o los correos electrónicos van a SPOOL.

A la hora de particionar nuestro disco nos aparecerá esta pantalla:

A continuación podremos ver como queda nuestro esquema de particiones:

4.3. SISTEMAS DE JOURNALING:

Los sistemas de partición más utilizados en Linux son: EXT3, XFS, JFS y ReiserFS.
La elección entre uno y otro viene determinada por el tamaño y la cantidad de los
archivos. No será igual tener muchos archivos pero pequeños o pocos pero muy grandes
. Dependiendo del hardware y de los datos realizaremos nuestra elección. Instalar un SO
de manera mínimamente eficiente y elegante no es un proceso sencillo.

6
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

Área de intercam bio o Swap: formato que falsea la memoria, en vez de


utilizar la RAM utiliza la memoria del HDD (hay un paralelismo en Windows). En general,
no es una buena señal tener que recurrir al uso del área de intercambio . Está pensado
para realizar pequeños cambios. No ha lugar para opciones.

El superusuario o root es la clave de administrador del programa. El sistema ya


ha creado un Administrador, ahora nosotros podemos crear un usuario normal, sin
privilegios . Esta es una forma de proceder basada en la prudencia, según la cual solo
utilizaremos los privilegios del administrador en momentos concretos, reduciendo
considerablemente el riesgo de problemas graves, al estar el usuario limitado en muchas
de las competencias del administrador. En caso de necesitar privilegios , cambiaremos al
Administrador por un momento, para luego volver al usuario sin privilegios. Así evitamos
ocasionar problemas graves al sistema: UTILIZAREMOS PRIVILEGIOS SÓLO PARA COSAS
PUNTUALES.

El sistema base son las librerías básicas del sistema.

Un programa se estructura en paquetes. En Linux, el paquete es un fichero. Hay


un administrador que es capaz de leer el contenido del fichero e instalarlo
correctamente. El gestor de paquetes también puede ser programado para instalar, en el
orden adecuado , paquetes que tengan una relación de dependencia(algo similar a los
atributos derivados o las foreign keys). El software está agrupado en diferentes
categorías para una mayor comodidad del usuario.

5. A continuación, tras realizar las particiones, se lanzará la instalación base del


sistema:

6. Posteriormente configuramos la zona horaria en la que nos encontramos:

7
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

7. Ahora pasamos a establecer el usuario y su contraseña, para poder acceder al


sistema:

8. Una vez configurado el nuevo usuario, el programa de instalación finaliza la primera


etapa y nos avisa del reiniciado del ordenador:

8
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

9. Tras reiniciar el ordenador, el programa de instalación nos pedirá que marquemos


las resoluciones que soporta nuestro monitor:

Una vez hecho esto, ya es posible iniciar (preferentemente, desde el usuario o usuarios
que hayamos creado) Debian.

9
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

B. ENTORNO GNU/LINUX

En primer lugar decir que Linux es un sistema multiusuario, es decir, capaz


de proveer servicio y procesamiento a múltiples usuarios simultáneamente, que
accederán al sistema mediante un nombre de usuario y una contraseña. Aunque
debemos diferenciar entre usuarios normales y el usuario root, toda la deferencia se
encuentra en los privilegios que se hayan concedido.

El usuario root o superusuario es el que tiene concedidos todos los privilegios en


todos los aspectos, generalmente suele ser el administrador del sistema. Hay que tener
en cuenta que no es recomendable usar éste usuario para usar normalmente el sistema
ya que pone en riesgo el sistema al garantizar acceso privilegiado.

Una vez explicado el funcionamiento de los usuarios, pasaremos a una pieza


clave de Linux, la consola y la línea de comandos. La consola es lo que nos permite
controlar el sistema mediante línea de comandos. Podemos acceder a esta consola
mediante terminales virtuales (en el modo gráfico) o pulsando las teclas Alt+F1, Alt+F2,
…, Alt+F6 con las que iniciaremos el sistema en modo texto.

Los comandos pueden ser de muchos tipos: programas ejecutables, scripts del
intérprete, scripts de lenguajes de programación, macros del intérprete… Debemos tener
especial cuidado con la escritura de los comandos ya que Linux diferencia entre
mayúsculas y minúsculas.

1. Los comandos mas usuales son los siguientes:

• man <nom_program a>: Nos permite obtener ayuda sobre otros


comandos.
• ls -<opción >: nos permite ver el contenido de los ficheros del sistema.
Muy útil para buscar archivos de cuya ubicación no estamos seguros o
para ver si falta algún driver en /dev, por ejemplo.
Las opciones que permite aplicar son:

‐ r: Lista recursivamente.
‐ c: Lista los archivos por columnas.
‐ l: Lista también las propiedades y atributos.
‐ a: Lista ficheros incluidos los ocultos de sistema.
‐ la m ore: Lista los ficheros de forma paginada.

• cd <directorio>: Cambia de directorio


cd ..: Vuelta al nivel anterior del sistema de directorios.

• mkdir (M aKe DIRectory) <nom _directorio>: Permite crear un


directorio.

• rm dir (ReM ove DIRectory) <nom_directorio>: Borra un


directorio(es necesario que esté vacío).
• rm (ReMove) <opciones> <fichero>
‐ rm -r directorio: Borra el directorio y todos los archivos que haya
en él
‐ rm -r *.<extensión>: Borra todos los archivos con la extensión
que le pasemos en el directorio actual.

• shred -u <archivo>: Elimina ficheros completamente. El comando rm


no borra del todo los ficheros, sino que los marca como “que se pueden
sobrescribir”. Los datos siguen en el disco duro. Con el comando shred

10
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

borramos los datos definitivamente, haciéndolos irrecuperables.

• cp <opciones> origen destino (CoPy): Copia uno o varios archivos a


la carpeta especificada. Especialmente útil para pegar archivos cuando
no tenemos permisos.

• mv <ruta_fich1> <ruta_fich2> : Mueve y/o renombra ficheros o


directorios.

• Dpkg <opciones> acción: Herramienta que permite instalar construir


, borrar y gestionar los paquetes de Debian. Las opciones que permite
son numerosas, algunas de ellas son:

‐ dpkg -i fichero.deb: Instalación de paquetes .deb.


‐ dpkg -r <paquete>: Desinstala un paquete.
‐ dpkg -- -purge <paquete>: Desinstala un paquete y sus
archivos de configuración.
‐ dpkg -c <paquete>: Muestra el contenido (ficheros) de un
paquete.
‐ dpkg -p <paquete>: Muestra detalles sobre el paquete.

• apt-get <opciones> orden <paquete/s>: Herramienta Avanzada de


Empaquetamiento (Advanced Packaging Tool) que gestiona el sistema de
paquetes de Debian instalando, desinstalando, actualizando y
configurando los mismos. Algunas de las opciones que podemos ejecutar
son las siguientes:

‐ s: Se limita a simular una acción. Ejem: apt-get s install.


‐ d: Sólo descarga los paquetes deb en /var/cache/apt/archives/.
‐ y: Asume sí en todas las consultas.
‐ f: Trata de resolver una situación con dependencias rotas.
‐ -purge: Usado para desinstalar también los ficheros de
configuración.
‐ -reinstall: Usado junto a install para reinstalar un paquete.

Posibles opciones de esta comando son:

‐ update: Actualiza la lista de nuevos paquetes, según nuestro


sourceslist.
‐ upgrade: Actualiza todos los paquetes sin instalar/eliminar
paquetes)
‐ distupgrade: Actualiza todos los paquetes resolviendo las
dependencias.
‐ install : Instalación de paquetes, con resolución de dependencias.
‐ remove: Desinstala un paquete.
‐ clean: Elimina los ficheros deb almacenados en la caché

NOTA: Existen muchísimos más comandos interesantes en Linux, pero no están


expuestos aquí por dar prioridad a aquellos que hemos utilizado en clases de prácticas.

11
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

2. En UNIX todo son ficheros, lo que simplifica mucho las cosas, desde el punto de vista
del programador. A continuación vamos a ver los ficheros más importantes:

• /dev → Dispositivos. • /mnt → Punto de montaje de


• /boot → Arranque. dispositivos.
• /cdrom • /opt
• /etc → Configuraciones. • /proc → Entradas con el kernel de
• /floppy → Disquetera ejecución.
• /home → Punto de inicio • /root → Directorio raíz.
de los directorios del • /tmp → Temporal.
usuario. • /usr → Equivalente a Archivos de
• /initrd Programa en Windows
• /lib → Librería del sistema. • /var
• /lost+found

3. Nomenclatura de los discos duros:

• /hda → conectado a BUS1 Maestro


• /hdb → conectado a BUS1 Esclavo
• /hdc → conectado a BUS2 Maestro
• /hdd → conectado a BUS2 Esclavo

Si cada disco se particiona se añade un número comprendido entre 1 y 5 si son


particiones primarias, y para la particiones lógicas se dispondrán de 5 en adelante.

4. Opciones al utilizar los comandos:

A la hora de utilizar ciertos comandos podemos modificar los permisos


añadiendo ciertas letras al comando:

• r: permisos de lectura
• w: permisos de escritura
• x: permisos de ejecución

Si queremos activar los permisos pondremos un ‘ + ’ delante del permiso a


activar, de lo contrario pondremos un ‘ – ‘. El formato sería el siguiente: chmod {u,g,o,a}
{+,-} {r,w,x} directorio. En el caso de querer activar los permisos para todo el mundo
añadiremos además de lo anterior una ‘ a ’ delante de {+,-} {r,w,x}.

5. Compresión de archivos:

Para comprimir un archivo desde la línea de comandos debemos proceder de la


siguiente manera:
tar {c,x}vfz directorio.tgz “directorio de destino”

Las letras corresponden a lo siguiente:

• c,x: comprimir/descomprimir.
• v: verbose. Nos permite mostrar las órdenes a medida que se van
ejecutando.
• f: forzar.
• z: zip. Esta ‘ z ‘ la podemos cambiar por ‘ j ‘ si queremos que la
compresión sea mayor.

12
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

C. INSTALACIÓN DE NFS (Sistema de Ficheros en Red)

Un Sistema de Ficheros en Red (NFS - Network File System) permite manejar


ficheros de distintos ordenadores dentro de una red como si estuvieran en el disco duro
local. Es decir, no es necesario conocer la localización física de los archivos para acceder
a ellos.

NFS permite compartir datos entre varios ordenadores de una forma sencilla. Por
ejemplo, un usuario validado en una red no necesitará hacer login a un ordenador
específico: vía NFS, accederá a su directorio personal en la máquina en la que esté
trabajando.

Habría que destacar que NFS no es un protocolo demasiado eficiente, es más, es


muy lento para conexiones mediante módem. Está diseñado para redes locales, para las
que es muy flexible, ofreciendo numerosas opciones tanto a usuarios como a
administradores.

Lógicamente, tendremos que administrar este servicio con suma cautela, es


posible que en ciertas ocasiones una administración que otorgue demasiados permisos
resulte problemática. Por tanto , se han de llevar a cabo algunas acciones básicas que
permitan controlar los permisos a los usuarios de nuestro servicio.

E L P ROTOCOLO NFS :
Lo que comúnmente se llama NFS está formado por 4 protocolos distintos. Cada
uno depende de las Remote Procedure Calls(RPC) y de portmap (también llamado
rpc.portmap). Un portmapper convierte números de programa RPC en números de
puerto. Cuando un servidor RPC se inicia, dice a portmap qué puerto usará y el número
de programa RPC manejado. Cuando un cliente quiere enviar una petición RPC a un
número de programa dado, primero contacta con el servidor portmap para tomar el
número de puerto dando acceso al programa deseado. Después, dirige los paquetes RPC
al puerto correspondiente.

Los 4 servicios que permiten funcionar a NFS son:

PROTOCOLO DESCRIPCIÓN DEMONIO


Este protocolo es el básico y permite crear,
buscar, leer o escribir ficheros. También
NFS nfsd
controla la autentificación y las estadísticas
referentes a los ficheros.
Mountd monta sistemas exportados para
acceder a ellos con NFS El servidor recibe
MOUNTD peticiones como mount y umount debiendo mountd
mantener información sobre los sistemas de
ficheros exportados.
Monitoriza los nodos de la red para conocer el
NSM (Network
estado de una máquina, sea cliente o servidor. statd
Status Monitor)
Informa, por ejemplo, de un rearranque.
Este protocolo maneja un sistema de bloqueo
que permite impedir modificaciones en los
datos hechas por varios clientes en el mismo
NLM momento. Por lo tanto, permite saber cuándo lockd
se está reiniciando un cliente. Nsm libera
todos los bloqueos del cliente antes de
devolverlos.

  13
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

El demonio knfsd, disponible con las últimas versiones del núcleo, soporta
directamente los protocolos nfs y nlm . Por otro lado, mountd y nsm no están todavía
soportados. Cuando el servidor NFS está instalado y arrancado, podemos verificar que
todo esté funcionando con el comando:

ps auxwww | egrep "nfs|m ount|lock|stat"

root 1370 0.0 0.2 1176 580 ? S 22:28 0:00 rpc.mountd --no-nfs-version 3
root 1379 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1380 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1381 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1382 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1383 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1384 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1385 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1386 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [nfsd]
root 1399 0.0 0.0 0 0 pts/0 SW 22:28 0:00 [lockd]
root 1409 0.0 0.2 1156 560 ? S 22:28 0:00 rpc.statd
root 1652 0.0 0.1 1228 484 pts/3 S 22:49 0:00 egrep nfs|mount|lock|stat

Por el momento, están disponibles dos versiones de NFS (versiones 2 y 3, que


para distinguirlas denotaremos NFSv2 y NFSv3, respectivamente). Los servidores NFS de
Linux sólo soportan la versión 2 (de aquí la opción en la línea mountd del ejemplo
anterior).

NFS trata con una estructura de datos llamada file handle. Es una serie de bits
bastante esotérica que permite identificar de forma única cada objeto del sistema de
ficheros (como un fichero, pero no tan sólo ficheros). Es, por tanto, algo así como un
sistema de ficheros dentro de otro sistema de ficheros.

I NSTALACIÓN :

Para realizar la instalación de NFS introduciremos el siguiente comando, en


modo superusuario, para que busque todos los paquetes relacionados con NFS:

apt-cache search NFS

Una vez hecho esto y sabiendo que paquetes debemos instalar, procedemos a su
instalación de la siguiente manera:

apt-get install nfs-com mon

apt-get install nfs-kernel-server

  14
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

C ONFIGURACIÓN :

1. El servidor:

Antes de que NFS se inicie por sí mismo, debe ser configurado. Existe un único
fichero de configuración que se llama /etc/exports. Cada línea muestra la ruta exportada
seguido de una lista de clientes a los que se permite el acceso. Se pueden añadir
opciones al final de cada nombre de cliente. La página de manual exports (man exports)
explica la sintaxis para los nombres de cliente y las opciones.
Se aceptan como nombres de cliente:

• nombre de la máquina.
• caracteres comodín en un nombre de dominio (v.gr. : linux-*.midominio.net).
• un netgroup ( @grupo) si se usa NIS.
• una dirección IP...

No vamos a detallar aquí todas las opciones de montaje disponibles, pero


algunas de las más importantes son:

• rw (read&write,lectura/escritura): el cliente puede leer y escribir en el


sistema exportado.

• ro (read only,sólo lectura): el cliente sólo puede leer el sistema exportado.

• root_squash: es preferible que un usuario root del cliente no pueda escribir


con permisos de root. Para impedirlo, UID/GID 0 (i.e. root) en el lado del cliente
se traduce en el usuario nobody. Esta opción está activada por defecto, pero se
puede cancelar con no_root_squash .

• all_squash: todos los clientes que acceden al sistema exportado utilizan el


UID/GID de nobody .

• anonuid, anongid: el usuario nobody ahora usa los UID y GID definidos por
estas opciones.

Ahora tenemos que iniciar los demonios rpc.mountd y rpc.nfs para tener
funcionando el servidor NFS. Comprobamos nuevamente que todo está funcionando con
el comando rpcinfo. Incluso podemos inicializar el servidor para los protocolos nsm y
nlm (rpc.statd y rpc.lockd, respectivamente). No hay ninguna premisa para arrancar un
servidor NFS... pero es altamente recomendable que se reinicie por sí mismo, en caso de
que la máquina falle, etc...

Cuando modificamos el fichero de configuración /etc/exports, debemos avisar a


los demonios implicados que se deben hacer los cambios. El comando exportfs transmite
esta información a nuestros servidores. La opción -r sincroniza el fichero /etc/mtab con
el fichero /etc/exports file. La opción -v muestra juntos todos los sistemas de ficheros
exportados junto con sus opciones.

Después de ponerse en marcha el servidor NFS, los siguientes ficheros contienen


información importante:

• /var/lib/nfs/rmtab: cada línea muestra el nombre del cliente y el sistema de


ficheros importado desde este servidor.

• /var/lib/nfs/etab: el fichero /etc/exports sólo contiene una lista de


peticiones. etab está creado por exportfs. Contiene en cada línea información

  15
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

detallada sobre las opciones usadas cuando se exporta un sistema de ficheros a


un solo cliente. Es el fichero de referencia usado por rpc.mountd cuando es
arrancado.

• /proc/fs/nfs/exports: contiene la lista de clientes conocida por el núcleo.

• /var/lib/nfs/xtab: Se usa por precisión cuando etab contiene nombres de


clientes y grupos de máquinas con comodines. Este fichero sólo contiene
nombres explícitos de máquinas.

Cuando un cliente quiere acceder a un sistema de ficheros, empieza haciendo


una petición mountd. Entonces se busca en etab si la petición está disponible. Se
comprueba el núcleo para saber si el cliente tiene permitida la petición (comprobando
hosts.{allow, deny}, reglas de cortafuegos, ...). El núcleo utiliza exportfs para la
comprobación, permitiendo actualizar el fichero /var/lib/nfs/etab. Si, en este fichero, el
sistema exportado tiene permitido ser exportado al grupo al que pertenece el cliente,
entonces mountd informa al núcleo que actualice xtab con este nuevo host.

En nuestro caso, al no tener acceso a una red debido a estar funcionando en una
máquina virtual, para montar el directorio compartido realizaremos lo siguiente:

m ount -t 127.0.0.1:/tm p /mnt

2. El cliente:

Normalmente no hay que hacer nada. El acceso al sistema de ficheros exportado


por NFS está controlado directamente por el núcleo. Éste tiene que haber sido compilado
para soportar NFS. El fichero /proc/filesystems contiene una lista con todos los
sistemas de ficheros soportados directamente por el núcleo. Entonces, lo único que tiene
que hacer es decir al núcleo que quiere acceder a un sistema exportado por NFS.

El comando mount permite acceder a diferentes sistemas de ficheros. Informa al


núcleo que está disponible un nuevo sistema de ficheros indicando su tipo, su dispositivo
y su punto de montaje. Se puede usar la opción -t para indicar el tipo del sistema de
ficheros a usar. Para NFS, escribimos: -t nfs.

Precauciones

Uno de los mayores problemas con NFS viene del hecho de que exista por
defecto una relación de confianza entre un cliente y un servidor NFS. En el caso de que
la cuenta root del servidor esté comprometida, la del cliente también lo estará. El NFS-
COMO describe un conjunto de medidas esenciales que debe tomarse para conseguir
cierta seguridad.

Un cliente no debe confiar ciegamente en un servidor, por ello debemos


especificar opciones restrictivas cuando usamos el comando mount. Ya hemos
mencionado la primera de ellas: nosuid. Cancela el efecto de los bits SUID y GID. Con
esto alguien que esté como root en el servidor primero debe hacer login en el cliente
como un usuario normal y después hacerse root. Otra opción, más restrictiva, es noexec.
Prohíbe ejecutar programas en sistema de ficheros exportado. Esta opción únicamente
se utiliza en sistemas que sólo contengan datos.

En el lado del servidor NFS, podemos especificar que no confíe en la cuenta root
del cliente. Tenemos que especificarlo en /etc/exports con la opción root_squash.
Entonces si un usuario root en el cliente accediese al sistema de ficheros exportado por
el servidor, tomaría el UID nobody para consultar ficheros. Esta opción está activada por

  16
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

defecto bajo Linux pero se puede desactivar con la opción no_root_squash.

Algunas opciones son más generales y se efectúan por el portmapper. Por ejemplo,
prohibimos el acceso a todas las máquinas con la siguiente línea en el fichero
/etc/hosts.deny:

# hosts.deny : absolute prohibition for every one to


# use the portmap
portmap: ALL

Después en el fichero /etc/hosts.allow esta estricta prohibición se puede


contrarrestar permitiendo el acceso a las máquinas deseadas.

  17
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

D. APACHE

El servidor HTTP Apache es un software (libre) servidor HTTP de código abierto


para plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que
implementa el protocolo HTTP/1.1[1] y la noción de sitio virtual.

Apache tiene amplia aceptación en la red: desde 1996, Apache, es el servidor


HTTP más usado. Alcanzó su máxima cota de mercado en 2005 siendo el servidor
empleado en el 70% de los sitios web en el mundo, sin embargo ha sufrido un descenso
en su cuota de mercado en los últimos años.

Instalación:

Para proceder a la instalación de Apache realizaremos lo siguiente, con los


privilegios de superusuario:

apt-get install apache2

Configuración:

Una vez instalado, podemos pasar a su configuración. Los archivos de


configuración de apache se encuentran en /etc/apache2, y son los siguientes:

• Fichero de configuración general: apache2.conf

• Módulos habilitados: mods­enabled

• Módulos disponibles: mods­available

• Virtual hosts habilitados: sites­enabled

• Virtual hosts disponibles: sites­available

  18
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

Un ejemplo de configuración básica del servidor de Apache sería el siguiente:

• Virtual hosts:

<VirtualHost *>
ServerAdmin webmaster@midominio.net
DocumentRoot "/var/www/midominio.net"
ServerName hostprueba.midominio.net
<Directory /var/www/midominio.net>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>

• /etc/hosts:

127.0.0.1 localhost.localdomain localhost


192.168.1.2 hostprueba.midominio.net hostprueba

• Para habilitar el nuevo dominio, que hemos creado en Virtual hosts realizamos lo
siguiente:

cd /etc/apache2/sites-enabled
ln -s ../sites-available/midominio.net

Para realizar cualquier acción, sobre el demonio de Apache tendremos que hacer
lo siguiente, donde vemos todas las opciones posibles:

/etc/init.d/apache2 start|stop|restart|reload|force-reload

• Una vez todo configurado correctamente podremos pasar a recargar el demonio de


Apache para que tenga en cuenta la nueva configuración que hayamos realizado:

/etc/init.d/apache2 reload

Una vez hecho todo lo anterior, tendremos un servidor Apache completamente


funcional en nuestra máquina.

  19
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

E. SERVIDOR DE DNS: INSTALACIÓN DE BIND9

Los servidores de DNS son servidores maestros de Internet. Un servidor DNS es


un sistema basado en una estructura de tipo árbol, en la que todo cuelga del punto(.),
que es el equivalente a root. Estos servidores maestros , en un principio, estarían al nivel
del punto. Una dirección web, realmente, debería tener este formato, aunque
normalmente el punto se omite: www.unavarra.es.. Este punto hace referencia a la raíz
de nuestro sistema.

Si queremos hallar la IP de www.unavarra.es, podríamos preguntar directamente


a uno de estos servidores raíz, que normalmente suele conocer a otro servidor de
nombres que lo controla (no suele saberlo directamente).

BIND es el servidor de nombres de dominio más popular en Internet, que trabaja


en todas las plataformas informáticas principales y se caracteriza por su flexibilidad y
seguridad.

Para instalar Bind seguiremos las siguientes instrucciones:

Instalamos BIND9 y nos desplazamos a su directorio de configuración:

apt-get install bind9


cd /etc/bind/

Editamos named.conf.local y añadimos la zona “nuestrodominio.net”, haciendo


referencia a su fichero de configuración:

zone "nuestrodominio.net" {
type master;
file "/etc/bind/db.nuestrodominio";
};

Creamos el fichero de configuración “db.nuestrodominio” a partir de “db.local”:

cp db.local db.nuestrodominio

Editamos “db.nuestrodominio”, reemplazamos la palabra “localhost” por


“nuestrodominio.net”, cambiamos la IP “127.0.0.1″ por la que queramos asignar al
dominio y añadimos al final del fichero todos los A, MX y CNAME que queramos,
quedando:

  20
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA nuestrodominio.net. root.nuestrodominio.net. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS nuestrodominio.net.
@ IN A 192.168.48.32
@ IN MX 0 nuestrodominio.net.
www IN A 192.168.48.32
saturno IN CNAME nuestrodominio.net.

En este ejemplo vemos en primer lugar el dominio a resolver,


‘nuestrodominio.net.’ y el segundo la cuenta de correo del administrador,
‘root.nuestrodominio.net.’. Como se puede observar al final de cada dominio viene un
punto, que identifica la raíz de este.

El resto de los parámetros son:

• Serial: es un identificador del archivo, puede tener un valor arbitrario.


• Refresco: número de segundos que un servidor de nombres secundario
debe esperar para comprobar de nuevo los valores de un registro.
• Reintentos: número de segundos que un servidor de nombres secundario
debe esperar después de un intento fallido de recuperación de datos del
servidor primario.
• Expiración: número de segundos máximo que los servidores de nombre
secundarios retendrán los valores antes de expirarlos.
• TTL m ínimo: Significa Time To Live y es el número de segundos que los
registros se mantienen activos en los servidores caché antes de volver a
preguntar su valor real.

Cada vez que se cambia la configuración de BIND9, debemos reiniciar el


demonio:

/etc/init.d/bind9 restart

Para que nuestra máquina utilice el servidor de DNS que hemos configurado,
debemos editar “/etc/resolv.conf” y dejamos únicamente la línea:

nam eserver 127.0.0.1

  21
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

F. INSTALACIÓN DE SAMBA

Antes de explicar el proceso de instalación de esta útil aplicación, hemos creído


conveniente exponer una breve síntesis de qué es Samba y cuales son sus
funcionalidades principales:

Samba es una suite de aplicaciones Unix que tiene como protocolo propio el SMB
(Server Message Block). Los sistemas operativos Microsoft Windows y OS/2 utilizan SMB
para compartir por red archivos e impresoras y tareas asociadas a ello.. Gracias a Samba
, las máquinas Unix pueden comunicarse con el mismo protocolo de red que Microsoft
Windows y aparecer como otro sistema Windows en la red (desde la perspectiva de un
cliente Windows). El servidor Samba ofrece los siguientes servicios:

• Principalmente, permite la coexistencia de Sistemas Windows y Unix en la


misma red.
• Compartir uno o varios sistemas de archivos.
• Compartir uno o varios sistemas de archivos distribuidos.
• Compartir impresoras instaladas en el servidor entre los clientes
Windows de la red.
• Ayudar a los clientes permitiéndoles navegar por la red.
• Autentificar a los clientes que ingresan en un dominio Windows.
• Proveer o ayudar con un servidor de resolución de nombres Windows
(WINS) .

Además de todo esto, Samba también incluye herramientas para los clientes,
que permiten a los usuarios de un sistema Unix acceder a los directorios e impresoras
que los sistemas Windows y servidores Samba comparten en la red.
Así, las razones más comunes por las que instalar Samba más comunes serían las
siguientes:

• No queremos pagar -o no podemos disponer- de un servidor Windows


completo, pero necesito su funcionalidad
• Incapacidad económica para pagar las licencias para que cada cliente
pueda acceder al servidor Windows.
• Crear un “directorio común” que almacene todos los datos o directorios
para realizar una transición de un sistema a otro, por ejemplo, de
Windows a Unix.
• Compartir impresoras entre clientes Windows y Unix
• Necesidad de dar soporte a usuarios que tengan una mezcla de sistemas
operativos, por ejemplo, Windows y Unix
• Se desee unificar la autentificación de Windows y Unix, manteniendo una
única base de datos para las cuentas de los usuarios que sea válida para
ambos sistemas.
• Para establecer una red entre sistemas Unix, Windows, Macintosh (OS X)
y otros, utilizando un único protocolo.

Los dos demonios:

Dos demonios se encargan de ofrecer los servicios de la conjunto de aplicaciones


del Samba.

Sm bd es el demonio que se encarga de la comparticion de recursos del sistema


para los diferentes procesos : ficheros, impresoras, También se encarga del control de
acceso a los recursos y de gestionar los permisos de los diferentes clientes una vez que
estos han sido identificados.

  22
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

La función del demonio nm bd, por contra, es la de anunciar servicios . Esto es,
se encarga de informar a las máquinas presentes en la red sobre cuáles son los recursos
disponibles en nuestro sistema. Este demonio maneja también la resolución de nombres
de NetBIOS . Puede para ello comunicarse con un servidor WINS (Windows Internet
Naming Service) presente en la red.

Ficheros y funciones:

El fichero /etc/smbpasswd contiene los passwords de los usuarios de Samba,


de forma cifrada.

El fichero /etc/lmhosts es un interfaz entre los nombres de maquinas NetBIOS


y las direcciones IP numericas. Su formato es parecido al de /etc/hosts.

El fichero /etc/smbusers contiene una lista de usuarios del sistema, seguida


de una lista de usuarios de Samba que disponen de los derechos de esos usuarios.
Las secciones del smb.conf

Smb.conf es el archivo que guarda todas las opciones de la configuración de


Samba. Para adaptarlo a las necesidades que nos han parecido idóneas en clases de
prácticas, hemos modificado las siguientes secciones, después de abrir el archivo
utilizando el comando gedit /etc/smb.conf:

Los menús GLOBALS, SHARES, PRINTERS son parecidos a los de las secciones
existentes en el fichero /etc/smb.conf, que se presenta como un fichero .ini habitual del
mundo Windows.

El menú GLOBALS contiene variables generales que se aplican al total de los


recursos puestos a disposición del servidor de SMB. Esta sección contiene también
información de identificación del servidor dentro de la red NetBIOS:grupo de trabajo,
nombre e identificador. Esta sección contiene también los modos de funcionamiento de
Samba.

El menú SHARES contiene la lista de comparticiones de disco efectuadas por la


maquina. Se aconseja primero crear la partición compartida y después precisar para
cada partición sus propiedades particulares.

El proceso a seguir a la hora de instalar Samba será el siguiente:

1. Abrir http://packages.debian.org . Aquí tenemos acceso a los paquetes de


Debian que podamos necesitar en la instalación. Para buscar en el directorio de
paquetes, introducimos en la palabra clave samba.

Una vez encontrado, primero nos muestra el paquete exacto que


corresponde a nuestra búsqueda así como su función y después todas las
referencias a las palabras que hemos buscado. Descargamos los paquetes
Samba y SambaCommon.

El primero contiene todos los programas del servidor, es decir:


aplicaciones que permiten hacer accesible los recursos a los usuarios,
herramientas de configuración y la documentación esencial de Samba.

El segundo, por su parte, paquete tiene los elementos que van a permitir
el buen funcionamiento de los otros dos: Las herramientas de conversión de
tablas de caracteres Windows, los ficheros de configuración y la documentación.

  23
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

Dentro de los paquetes relacionados con Samba, los que aparecen en


rojo son aquellos de los que depende, esto es, aquellos sin los que la instalación
de Samba no es posible (Samba common ha de ser instalado previamente).

Una vez comprobado que disponemos de todos los paquetes necesarios


para la instalación, hemos de elegir la distribución a descargar entre los valores
habituales: i386 (actual), amd64, powerpc...

2. Pasamos los archivos a la máquina virtual(despues de haberlos copiado en una


memoria USB):

mount /dev/sdb1/m nt
umount /m nt/
/var/ log/syslog (Para ver un sumario de los dispositivos instalados en el sistema).
tail -f /var/ log/syslog (Con -f conseguimos que muestre solamente las últimas 10
líneas del sumario).

3. La instalación se ha de hacer a mano, en este caso no funciona el comando apt-


get:

dpkg -i /m nt/sam ba-com m on_3.0

Realizamos lo mismo con todos los paquetes necesarios que hayamos


descargado (smbfs, cmbclient).

3. Introducimos el nombre del dominio o del grupo de trabajo, por ejemplo, LabSO:

4. Entramos en temas de nomenclatura de sistemas Windows. Ahora hemos de


elegir si queremos modificar smb.conf (/etc/samba/dhcp.conf) para utilizar
la configuración de WINS(resolución de nombres Windows) que proviene de
DHCP.

  24
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

Le damos a que No.

Si lo hemos hecho correctamente, debería aparecer algo así:

4. Ahora tenemos que generar usuarios para samba:

useradd -s /sbin/nologin Nombre-Usuario

Una vez el usuario esté creado, tenemos que establecer un password para él. Si
no queremos que el usuario tenga password, podemos dejarlo en blanco cuando nos lo
pida y el sistema interpretará que se trata de un usuario sin password. En todo otro caso,
un password se establecería tecleando:

smbpasswd -a Nom bre-Usuario

  25
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

5. Por último, reiniciamos Samba:

/etc/init.d/sam ba restart

Para ver el estado actual de samba ejecutamos en línea de comandos:

/usr/bin/sm bstatus

Processing section "[homes]" Processing section "[printers]" Processing section


"[spirit]" Samba version 2.2.6 Service uid gid pid machine -------------------------
---------------- spirit jay jay 7735 maya (172.16.1.6) Sun Aug 12 12:17:14
2002 spirit jay jay 7779 aztec (172.16.1.2) Sun Aug 12 12:49:11
2002 jay jay jay 7735 maya (172.16.1.6) Sun Aug 12 12:56:19
2002 Locked files: Pid DenyMode R/W Oplock Name ------------------------------
-------------------- 7735 DENY_WRITE RDONLY NONE /u/RegClean.exe Sun
Aug 12 13:01:22 2002 Share mode memory usage (bytes): 1048368(99%)
free + 136(0%) used + 72(0%) overhead = 1048576(100%) total

Con netstat -antp vemos si están puestos los puertos smbd.

Después de crear la red, hemos de crear un directorio a parte para comprobar su


funcionamiento.

COMPARTIR UN DIRECTORIO:

nombre para el recurso compartido]


comment = Mi directorio compartido
path = /tmp/directorio
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
guest[yes/no]//Invitados
Para compartir en la red creamos el nombre del recurso compartido, que es
como nos verán en la red. Después ajustamos el path y otros aspectos según los
intereses que tengamos. Lo básico sería el nombre, el path y writable.

Reiniciamos SDMB: /etc/init.d/samba restart.

Echemos un vistazo a los logs de los demonios resultantes después de reiniciar


Samba, como ya hemos dicho, con /etc/init.d/sam ba restart.

Para obtener toda la información necesaria de los comandos de Samba


introducimos less /etc/samba/smb.conf, que nos muestra en un editor una
detallada información sobre todos los comandos y opciones disponibles en el
configurador global de samba.

La instalación de la impresora es más sencilla. Se utiliza el IPP(Internet Printing


Protocol) por medio del modo del sistema CUPS. Se pone printing=cups, se reinicia
Samba y ya está en nuestra red.

  26
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

G. MONTAJE DE UN SERVIDOR FTP Y UN SISTEMA DE PROXYS

FTP (File Transfer Protocol) o Protocolo de Transferencia de Archivos (o


ficheros informáticos) es uno de los protocolos estándar más utilizados en Internet
siendo el más idóneo para la transferencia de grandes bloques de datos a través de
redes que soporten TCP/IP.

El servicio utiliza los puertos 20 y 21, exclusivamente sobre TCP. El puerto 20 es


utilizado para el flujo de datos entre cliente y servidor. El puerto 21 es utilizando para el
envío de órdenes del cliente hacia el servidor.

Prácticamente todos los sistemas operativos y plataformas incluyen soporte para


FTP, lo que permite que cualquier computadora conectada a una red basada sobre
TCP/IP pueda hacer uso de este servicio a través de un cliente FTP.

Realizaremos la instalación y configuración de un servidor FTP para que admita


usuarios registrados y anónimos en redes locales.

PROCESO DE INSTALACIÓN:

Nos loguemos como superusuario con el comando su

Instalamos el paquete utilizando el comando apt-get:

apt-get install proftpd

Nos aparecerá esta pantalla:

Elegiremos la opción inetd, porque el modo independiente es recomendable


cuando el FTP va a recibir muchas visitas.

Una vez todo instalado, antes de configurar nada, hemos de crear los directorios
de nuestro FTP, con lo que procedemos de la siguiente manera:

mkdir /home/ftp
mkdir /home/ftp/subir

  27
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

Llegados a este punto, hemos de usar chmod para cambiar las restricciones a la
subida y la bajada de nuestro ftp:

chmod 755 /home/ftp


chmod 777 /home/ftp/subir

Una vez creados los directorios y las restricciones de subida y bajada, el siguiente
paso es acceder al fichero proftpd.conf para efectuar las modificaciones pertinentes.
Para ellos, abrimos el archivo con el editor gedit tecleando:

gedit /etc/proftd.conf

CONFIGURACIÓN FTP PRIVADO:

Si hemos decidido esta opción deberemos de crear las cuentas de usuario antes.
Las cuentas se crean como un usuario cualquiera de linux, es decir:

adduser <usuario>
passwd <usuario>

A continuación deberemos de editar el archivo /etc/passwd y modificar la línea


que hace referencia al usuario que hayamos creado:

gedit /etc/passwd

Al editar el fichero, en el final de éste nos aparecerá una línea como esta:

<usuario>:x:1007:100::/home/<usuario>:/bin/bash

Deberemos de modificarlo para que quede de asi:

<usuario>:x:1007:100::/home/ftp:/bin/false

Es decir, le decimos que su carpeta personal es donde tenemos el ftp, y su shell


es una shell falsa (/bin/false). La contraseña como os fijáis aparece con una x, esto
quiere decir que el password esta en el archivo /etc/shadow.

Así lo haremos con todos los usuarios que queramos añadir.

Una vez listos todos los usuarios, continuaremos con la configuración del archivo
proftpd.conf:

#Le decimos que el directorio del ftp es /home/ftp y a continuación le damos unas
#caracteristicas
<Directory /home/ftp/>
Umask 077 077
AllowOverwrite off
</Directory>

#Si además queremos tener nuestra carpeta de subida deberemos de añadir, debajo de
#</Directory> lo siguiente:

#nuestro directorio de subida se encontrara en /home/ftp/subir


<Directory /home/ftp/subir
Umask 077 077
AllowOverwrite on
<Limit READ WRITE STOR>

  28
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

#El directorio tendrá acceso de lectura, escritura y grabación para todos(Allow All)
AllowAll
</Limit>
</Directory>

Con esto ya tendríamos el ProFTPd listo para funcionar.

Configuración FTP Privado y anónimo:

Para configurar el ftp de esta forma hemos de haber seguido todos los pasos del
punto anterior. Una vez hecho esto deberemos de editar al final del fichero proftpd.conf
con unas nuevas líneas:

<Anonymous /home/ftp>
AccessGrantMsg "mensaje"
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off
MaxClients <numero>
MaxClientsPerHost <numero>
MaxClientsPerUser <numero>

#Cualquier persona podrá loguearse con la cuenta anónima aunque le hayamos


#denegado el acceso arriba
<Limit LOGIN>
AllowAll
</Limit>
<Directory /home/ftp/> # directorio del ftp /home/ftp y características
Umask 077 077
AllowOverwrite off
</Directory>

<Directory /home/ftp/subir> #directorio de subida


Umask 077 077
AllowOverwrite on
<Limit READ WRITE STOR> #Acceso de lectura, escritura y grabación
AllowAll
</Limit>
</Directory>
</Anonymous>

  29
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

SERVIDORES PROXY CON SQUID

Los servidores proxy llevan a cabo algunas funciones como representante de


otros clientes (computadoras) en la red para incrementar el rendimiento de ciertas
operaciones (por ejemplo, servir como caché de documentos y otros datos) o para servir
como barrera de seguridad (por ejemplo, navegación anónima, o filtrado de los datos de
entrada peligrosos).

Squid es una completa aplicación servidor proxy caché web que proporciona
servicios de proxy y caché para HTTP, FTP y otros protocolos populares de red. Squid
puede servir de caché y de proxy para las peticiones SSL y de caché para las consultas
de DNS, y proporciona servicios de caché transparente.

Los servidores proxy no permiten un tráfico directo entre las partes.

Para instalar squid introducimos la siguiente orden, después de habernos


logueado como superusuario:

apt-get install squid squid-comm on

Una vaez instalados todos los paquetes necesarios, pasaremos a configurar


squid, para ello modificaremos el archivo /etc/squid/squid.conf con una configuración
básica, de la siguiente manera:

• Para que el servidor Squid escuche en el puerto TCP 8888 en lugar del
puerto TCP 3128 que usa por defecto, cambiamos la directiva http_port
como sigue:

http_port 8888

• Cambiamos la directiva visible_hostname para hacer que el servidor


Squid tenga un nombre de host específico. Este nombre de host no tiene
por qué ser necesariamente el nombre de host del equipo. Le podemos
llamar por ejemplo LabSO:

visible_hostname LabSO

• Configuramos que el uso de los servicios de Internet delegados por Squid


esté sólo disponible para usuarios que tengan unas determinadas
direcciones IP. Por ejemplo, autorizaremos el acceso sólo de aquellos
usuarios que pertenezcan a la subred 192.168.42.0/24. Para ello
añadimos lo siguiente al final de la sección ACL del archivo
/etc/squid/squid.conf:

acl fortytwo_network src 192.168.42.0/24

• Finalmente, añadimos lo siguiente al principio de la sección http_access


del archivo /etc/squid/squid.conf:

http_access allow fortytwo_network

  30
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

H. SEGURIDAD

El mayor problema a la hora de atajar la seguridad en una empresa es que dos


tercios de los ataques provienen de dentro de la propia empresa, lo cual es un grave
problema, ya que los empleados de la empresa son los que mejor conocen los puntos
débiles del sistema de seguridad de una empresa.

La seguridad requiere mucho tiempo y una gran inversión económica. A la hora


de aumentar esta seguridad unas de las medidas que nos permite aumentarla es la
redundancia. Otro aspecto de vital importancia para la seguridad es mantener una
buena actualización periódica del software.

Como es mayor la posibilidad de ataques cuantas más cosas instalemos(y


también requiere más trabajo ya que tenemos que actualizar más programas),
seguiremos el principio de la navaja de Okham e instalaremos sólo aquello que es
imprescindible.

Teniendo en cuenta cómo sea la implementación de las pilas TCP/IP existe


software capaz de detectar fácilmente con que sistema operativo estamos tratando. Una
vez conocido esto, podemos aprovechar los bugs correspondientes.

Las intrusiones suelen tener una serie de patrones. En base a estos patrones,
existe software y hardware capaz de detectar una intrusión a un sistema. De todas
formas, siguen habiendo intrusos capaces de colarse en nuestro sistema.

Los sistem as firewall

Un sistema de firewall es un programa que filtra el tráfico de nuestra red al


exterior según unos determinados criterios.

La diferencia fundamental entre un firewall por medio de hardware con otro de


software es, como ocurre siempre con el hardware, la mayor velocidad y el mayor gasto
económico, además de una necesidad de conocimientos bastante mayor.

  31
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

Este es un esquema(muy básico, que extenderemos después) del


funcionamiento de un firewall:

arranque( )
detener( )
case “$1” in
start)
echo “Activando firewall...”
arranque
echo “Hecho”
detener
...
...
...

Para permitir que pasen paquetes de una red a otra hemos de activar el rutado,
poniendo el echo al valor lógico '1'.

Ejemplo de código extendido:

#!/bin/sh
#
# start/stop reglas firewall.

############
#Variables:#
############

LAN_IFACE="eth1"
INET_IFACE="eth0"
IPTABLES="/sbin/iptables"

if ! [ -x $IPTABLES ]; then
exit 0
fi

arranque () {

###################################################
#Limpieza de posibles configuraciones anteriores: #
###################################################

$IPTABLES -F
$IPTABLES -t nat -F

#######################
#Se activa el rutado: #

#Para permitir que pasen paquetes de una red a otra hemos de activar
el rutado, poniendo el echo al valor lógico '1'.#

if [ -e /proc/sys/net/ipv4/ip_forward ]; then
echo 1 > /proc/sys/net/ipv4/ip_forward
fi

#################
#Se inicia NAT: #
#################

  32
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

#########################
#Políticas por defecto: #
#########################

$IPTABLES -P INPUT DROP


$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

#######################
#Ofrecemos servicios: #
#######################

#Se deja que circulen los paquetes de la interfaz de loopback:


$IPTABLES -A INPUT -i lo -j ACCEPT

#Se deja que pasen las conexiones ya establecidas o relacionadas:


$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#Se ofrece servicio ssh,smtp,http,pop3 al exterior:


$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 110 -j ACCEPT

#Se dejan pasar las respuestas a pings:


$IPTABLES -A INPUT -p icmp --icmp-type 0 -j ACCEPT

###################################################
#Acceso al exterior desde las maquinas de la red: #
###################################################

#Se dejan pasar paquetes que provengan de la interfaz de la LAN:


$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT

#Se deja que pasen las conexiones ya establecidas o relacionadas:


$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#Se dejan pasar las respuestas a pings:


$IPTABLES -A FORWARD -p icmp --icmp-type 0 -j ACCEPT

detener () {

###################################################
#Limpieza de posibles configuraciones anteriores: #
###################################################

$IPTABLES -F
$IPTABLES -t nat -F

#########################
#Políticas por defecto: #
#########################

  33
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

##########################
#Se desactiva el rutado: #
##########################

if [ -e /proc/sys/net/ipv4/ip_forward ]; then
echo 0 > /proc/sys/net/ipv4/ip_forward
fi

case "$1" in
start)
echo "Activando firewall..."
arranque
echo "Hecho."
;;
stop)
echo "Desactivando firewall..."
detener
echo "Hecho."
;;
restart)
echo "Reiniciando firewall..."
arranque
echo "Hecho"
;;
status)
$IPTABLES -L
;;
*)
echo "Uso: /etc/init.d/firewall {start|stop|restart|status}"
exit 1
;;
esac

exit 0

  34
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

I. INSTALACIÓN DE MYSQL Y PHP

1. MySQL:

El software MySQL proporciona un servidor de base de datos relacionales SQL


(Structured Query Language) veloz, multi-hilo, multiusuario y robusto. El servidor esta
proyectado tanto para sistemas críticos en producción soportando intensas cargas de
trabajo como para empotrarse en sistemas de desarrollo masivo de software. El
software MySQL tiene licencia dual, pudiéndose usar de forma gratuita bajo licencia GNU
o bien adquiriendo licencias comerciales de MySQL AB en el caso de no desear estar
sujeto a los términos de la licencia GPL. MySQL es una marca registrada de MySQL AB.

Las herramientas que instalaremos son mysql y phpmyadm in.

Para instalar MySQL, procedemos de la siguiente forma:

su
apt-get install mysql-com m on mysql-client mysql-server

En common tenemos los archivos comunes que usaran mysql-client mysql-server.

MySQL , recién instalado, tiene su propio usuario . Se crean una serie de bases
de datos por defecto. Por tanto, hemos de crear una contraseña para el usuario root:

mysqladmin -u root password 'linux1'

Una vez hecho esto ya podemos acceder a la base de datos con un cliente:

mysql -u root –p

Introducimos la contraseña que hayamos definido anteriormente y Ya podríamos,


con una interfaz no demasiado amigable (en línea de comandos) exportar una base,
crear tablas, llenarlas, consultas...

Por ejemplo podemos empezar creando una nueva base de datos:

create database primerabbdd;

2. PHP:

PHP es unos de los lenguajes de creación de páginas Web dinámicas más


utilizados del mercado. La quinta versión cuenta con innumerables mejoras que
consolidan su éxito. Se ofrece la posibilidad de hacer programas orientados a objetos,
lectura de archivos XML de forma sencilla, utilización de la base de datos ligera SQLite o
la implementación de servicios Web.

PHPmyadmin es un proyecto que hace más amigable la gestión de MySQL. Las


opciones son numerosas (en interfaz gráfica): importar/exportar, gestión de privilegios
(establecer unas operaciones determinadas según privilegios, por ejemplo)...

Para instalar Php introducimos los siguientes comandos:

aptget install php5-com mon

Si tenemos algún problema de dependencias, instalamos todos los paquetes de


que depende php5-common.

  35
Cédric Marco Detchart Laboratorio de Sistemas Operativos
Eneko Vélez Yoldi

Finalmente instalaremos phpmyadmin:

apt-get install phpmyadm in

Una vez instalados todos los paquetes de que depende, php5 debería de ser
capaz de funcionar. Y así dispondríamos de una interfaz gráfica para poder utilizar
MySQL.

  36