Вы находитесь на странице: 1из 13

MANUAL DE INTRODUCCIÓN , INSTALACIÓN Y CONFIGURACIÓN DE UN SERVIDOR NFS EN

DEBIAN

Existen varias formas y/o servicios de compartir archivos a través de la red.

Entre ellos hallamos:

En Internet/LAN FTP
Con otros Linux NFS
Con equipos Windows SMB

Para empezar a hablar de NFS hablemos un poco sobre los Sistemas distribuidos.

Un sistema distribuido es un conjunto de hosts conectados en red que dan la sensación de


ser una sola computadora. Este tipo de sistema brinda ventajas tales como: compartición de
recursos, la concurrencia, alta escalabilidad, y tolerancia a fallos.

A pesar que agregar complejidad al software y disminuir los niveles de seguridad, los
sistemas de procesamiento distribuidos brindan una buena relación precio-desempeño y
pueden aumentar su tamaño de manera gradual al aumentar la carga de trabajo.

NFSBasado en el protocolo RPC (Remote Procedure Call), sistema de fichero de red


creado originalmente por Sun Mycrosystems en los años 1980’s para compartir archivos
sobre sistemas Unix.

NFS es una implementación Cliente/Servidor que transparentemente dispone volúmenes


remotos en un cliente local. Usa varios demonios y archivos de configuración para el hecho
de compartir de archivos.

Por defecto, este proceso es llevado a cabo sin ningún tipo de autenticación por separado, lo
que hace a NFS un riesgo en la seguridad.

Cómo funciona NFS?

NFS corre sobre el protocolo UDP, el cual es no orientado a la conexión ya que no requiere
conocimiento de la entrega de paquetes. NFS intenta hacer esto para obligar un
reconocimiento da cada comando que se envía. Si el reconocimiento ocurre, continua
enviando datos. Sino recibe en una determinada cantidad de tiempo, entonces los datos son
retransmitidos.

NFS envuelve no sólo el protocolo NFS, sino también el protocolo MOUNT. Estos
protocolos son implementados por NFS como demonios: rpc.mountd, nfsd y portmap en el
servidor.
Mountd le dice a nfsd que sistemas de ficheros están disponibles para ser montados en
los equipos locales.

Portmap maneja los servicos RPC.

Nfsd corre en el servidor atendiendo las peticiones NFS de los clientes (manipulación de
archivos). Pueden levantarse más de un demonio para atender eficientemente las llamadas
(8 es el estándar) #nfd 8

En el cliente final, nfs es empleado a través de los demonios biod, rpc.statd y rpc.lockd.

Biod corre en el servidor manejando las opeaciones de entrada y salida en un sistemas


NFS. Al igual que en el servidor, pueden levantarse más de un demonio; 8 es el estándar.
#biod 8

rpc.lockd para no acceder al mismo archivo al mismo tiempo, los clientes bloquean los
archivos que usan y los servidores requiera desbloquearlos.

Rpc.statd demonio que realiza el monitoreo del estado de la red. Es llamado por el
rpc.lockd para monitorear los servicios. Corre tanto en clientes como en servidores.

Referencia http://www.riuady.uady.mx/riuady/cursos/linux_serviciostxt/manual/cap2/nfs.html

Los archivos de Key incluyen el archivo “/etc/exports”, el cual define que compartidos
están disponibles y a quien, y el archivo “/etc/fstab”, el cual mantiene la lista de sistemas
de ficheros montados para el cliente.

NFS, es útil y fácil de usar, sin embargo se apoda "No File Security". NFS no utiliza un
sistema de contraseñas como el SAMBA, solo una lista de control de acceso determinada
por direcciones IP o nombres.

Es por esto que es importante entender que el servidor NFS puede ser un verdadero e
inmenso agujero de seguridad si este no es configurado apropiadamente e implementado
detrás de un firewall.

El protocolo NFS se implementa con arquitectura cliente-servidor, por lo que necesita:

un servidor NFS en la máquina remota, la que exporta el directorio.


un cliente NFS en la máquina local, la que monta el directorio.

NFS TRABAJA SOBRE RPC

El servidor NFS trabaja sobre RPC (Remote Procedure Call), protocolo que utiliza como
capa de transporte UDP.
Los servidores que trabajan sobre RPC (como NFS), no tienen puertos asignados
oficialmente, por lo que cuando arrancan, contactan con el daemon portmap y le
informan qué puerto usan.
Cuando un cliente quiere contactar con un servidor RPC, contacta primero con
portmap (que escucha en el puerto 111 TCP) y le pregunta cuál es el puerto
correspondiente al servidor en cuestión. Una vez que conoce ese dato, el cliente ya
puede contactar directamente con el servidor.

RPC RPC es una tecnología, tradicionalmente empleada en ambiente UNIX, que permite
el desarrollo de sistemas de procesamiento distribuido. Con el advenimiento de
implementaciones para plataformas Windows, así como para Java, es posible pensar en
RPC como un mecanismo de integración de software heterogéneo.

Una llamada a un procedimiento remoto el sistema local invoca, a través de la red, a una
función alojada en otro sistema.

Según el modelo OSI, RPC cae en algún lado entre las capas de transporte y aplicación.
Usualmente es considerada parte de la capa de presentación, ya que RPC le oculta a la capa
de aplicación los detalles de la red, que incluye una especificación de algún formato
estándar para el intercambio de argumentos y resultados entre cliente-servidor.

Algunas implementaciones de RPC serían:

ONC-RPC (Open Network Computing) desarrollada por Sun Mycrosystems,


distribuida en casi todas las distros UNIX.
DCE (Distributed Computing Enviroment) desarrollado por Microsoft y definida
por la Open Software Foundation. Está incluida en los SO Windows.

Un ejemplo de esta tecnología sería el NFS, que se haya disponible en la mayoría de las
plataformas UNIX.

Ok, empecemos ahora si implementando nuestro servidor NFS.

Algunos detalles primero.

Si deseamos ver los servicios RPC que están activos y su respectivo puerto, haremos lo siguiente:

#rpcinfo –p

Instalaremos los paquetes necesarios para esta prueba.

Pero antes deberé editar mi lista de repositorios para lograr mi cometido de conseguir los
paquetes.

Para mi caso especifico estoy usando una máquina de Debian 5.0 Lenny, por lo que

#nano /etc/apt/sources.list
/*esta es la línea que agrego a mi lista*/

deb http://http.us.debian.org/debian lenny main contrib non-free

/*Salvo los cambio y actualize*/

#apt-get update

Ahora sí instalo los paquetes:

#apt-get install portmap /*usualmente viene con la distro instalado*/

/*El servicio “portmap” es un demonio de asignación de puertos dinámico para servicios


RPC tales como NIS y NFS. Tiene mecanismos de autenticación débiles y la habilidad de asignar un
amplio rango de puertos para los servicios que controla. Por esto es difícil de controlar.

/****Al asegurar “portmap” solamente afecta a las implementaciones de NFSv2 y NFSv3, ya que
NFSv4 ya no lo requiere. Para usar un servidor NFSv2 o NFSv3, se requiere usar portmap.

Hay formas de proteger portmap, ya sea por TCP Wrappers o IPTables

Url protección portmap http://web.mit.edu/rhel-doc/OldFiles/4/RH-DOCS/rhel-sg-es-4/s1-


server-port.html ****/

#apt-get install unfs3 /*usualmente viene con la distro instalado*/

/*UNFS3 es una implementación de usuario de la especificación del servidor NFSv3.


Provee un demonio para los protocolos MOUNT y NFS, los cuales son usados por clientes NFS para
acceder a archivos en el servidor.

Los principales objetivos de UNFS3 serían:

Corrección se aplica la semántica de NFSv3 muy estrechamente.

Portabilidad debería funcionar sobre cualquier sistema operativo UNIX, ya sea Linux
y/o SunOS /Solaris.

Integridad apoyar todos los aspectos de la especificación NFSv3, dentro de los


límites posibles.

Rendimientodebe ser lo más rápido posible. */

Url UNFS3 http://unfs3.sourceforge.net/

#apt-get install nfs-user-server /*Contiene todos los paquetes necesarios para hacer que
tu máquina Linux actue como un servidor NFS, siendo un demonio NFS (rpc.nfsd), un
demonio mount (rpc.mountd). Corre enteramente en el espacio del usuario, es más lento
que otras implementaciones pero es más presentable y fácil de depurar que el “nfs-kernel-
server”.*/

Url nfs-user-server http://packages.ubuntu.com/dapper/nfs-user-server

#apt-get install nfs-kernel-server /*Se usa usualmente si poseemos un kernel reciente


(2.2.13 o superior) y si desea usar el servidor NFS en modo kernel*/

url nfs-kernel-server http://linux.about.com/cs/linux101/g/nfskernelserver.htm

Cuando estemos instalando este último nos pedirá si deseamos “mantener la versión local
actualmente instalada” refiriéndose al fichero de “exports” que es donde definiremos lo que se
desea compartir.

El servidor NFS tiene varios demonios, siendo los principales “nfsd, rpc.mountd, rpc.statd, y lockd”

Miremos los servicios RPC activos mediante la instalación del NFS.

#rpcinfo –p
Muy bien, ahora debemos decidir que deseamos compartir. Una vez decidido esto, que para mi
caso será un directorio alojado en /mnt llamado “nfstest” que contendrá archivos de prueba nada
más.

Para esto deberemos editar el fichero “/etc/exports”

#nano /etc/exports

/*añadiendo al final del archivo las siguientes líneas*/

/mnt/nfstest
192.168.0.0/255.255.255.0(rw,sync,no_subtree_check,no_root_squash)
/****Definimos con esto

###192.168.0.0/255.255.255.0 a quien deseamos compartir los archives, en este


caso será el rango de red clase C con su respectiva máscara.

###rwpermiso de lecto-escritura; si usamos “ro” será de sólo lectura.

###sync el servidor será síncrono en las peticiones que lo hará más lento pero
más seguro, además NFs notifica al usuario los cambios (escritura) en los archivos cuando se
hayan ejecutado; si deseamos que sea más rápido podríamos usar “async” asíncrona pero ,más
insegura, además no espera la confirmación por parte del servidor para comunicar al usuario los
cambios. Esta opción es peligrosa ya que si hay varios usuarios trabajando simultáneamente sobre
un mismo archivo se pueden generar archivos corruptos.

###no_subtree_checkdirectiva que le restringe ciertos derechos al cliente en


cuanto al volumen compartido, es decir, si solo se comparte una parte de una partición del disco el
cliente no tendrá privilegios de acceder al directorio raíz.

###subtree_check permite al cliente los privilegios no dados en el anterior.

###no_root_squashpor defecto los archivos compartidos por NFS cambian el


usuario “root” por el usuario “nfsnobody”, una cuenta de usuario sin privilegios.
Pero con esta opción “no_root_squash” los usuarios remotos podrán cambiar cualquier archivo en
el sistema de archivos compartido y dejar aplicaciones con troyanos para que otros usuarios los
ejecuten.

###root_squash los accesos con el UID=0 (root) se convierten en el servidor en


accesos con UID de un usuario anónimo (opción por defecto).

Otros valores

### () opción que establece los valores por defecto del NFS.

###All_squashtodos los accesos desde el cliente (con cualquier UID) se


transforman en acceso anónimo.

###anoniud, anongid Cuando se activa la opción root_squash all_squash, los


accesos anónimos utilizan normalmente el UID y GID primario del usuario denominado nobody, si
éste existe en el servidor (opción por defecto). Si se desean utilizar otras credenciales, los
parámetros anonuid y anongid establecen, respectivamente, qué uid y gid tendrá la cuenta
anónima que el servidor utilizará para acceder contenido del directorio.

###noaccessimpide el acceso al directorio especificado.

Habiendo hecho esto deberemos actualizar el fichero de “exports”

#exportfs –ra
Reiniciaremos ahora el servidor NFS

#/etc/init.d/nfs-kernel-server restart

Si queremos reiniciamos el “portmap”

/etc/init.d/portmap restart

Podremos ver los directorios compartidos mediante

#exportfs

Podremos ver también los clientes NFS que se conecten, mediante

# cat /var/lib/nfs/rmtab

Ahora enfoquémonos en acceder desde el cliente a los archivos compartidos.

Como cliente se está usando Ubuntu 9.04 (jaunty) para el proceso.

Instalaremos el paquete “nfs-common”

#apt-get install nfs-common/*Sirve para montar unidades NFS*/.

Referencia http://www.debian.org/releases/stable/ia64/release-notes/ch-
information.es.html
Ahora podemos montar la unidad NFS compartida, mediante

#mount –t nfs IPNFSserver:/ruta_archivos_compartidos /ruta_a_montar /*hay que


tener en cuenta que para montarlo en algún lugar local deberemos crear el directorio donde se va
a montar.

###para mi caso sería

#mount –t nfs 192.168.0.144:/mnt/nfstest /mnt/nfstest


Ahora, también se podría montar el archivo compartido desde el arranque, editando el fichero
/etc/fstab

#nano /etc/fstab /*y agregamos las líneas correspondientes

###192.168.0.144:/mnt/nfstest /mnt/nfstest nfs rw,hard,intr 0 1

/*****Entendamos un poquito esto

192.168.0.144 IP servidor NFS

/mnt/nfstest volumen que deseamos compartir

/mnt/nfstest Donde queremos almacenar/montar el volumen compartido

nfs tipo de sistema de fichero, en nuestro caso será nfs

rw monta el volumen con permisos de lecto-escritura.

0es la opción dump, que especifica si desea hacer un backup del sistema de archivo o no, en el
caso de cero (0) se omite y no se hace backup.

1es la columna de fsck, que chequea si el sistema de ficheros debe ser chequeado o no, si es
cero (0) no se chequeará.
Bueno espero les haya servido este manual básico.

Enjoy!!!!

Referencia http://www.tuxfiles.org/linuxhelp/fstab.html****/

Administración NFS http://www.it.uc3m.es/aat/Lab4/

VOCABULARIO

Concurrencia El sistema permite que múltiples procesos sean ejecutados al mismo tiempo.

Referencia http://www.alegsa.com.ar/Dic/concurrencia.php

Troyano A primera vista parece ser un programa útil pero en realidad hará daño una vez
instalado o ejecutado en tu ordenador.

Referencia http://www.masadelante.com/faq-que-es-un-troyano.htm

Вам также может понравиться