nfs server on debian

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. NFSBasado 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.

Upload: dcontrerasr7509

Post on 14-Jun-2015

1.356 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: NFS Server On Debian

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.

NFSBasado 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.

Page 2: NFS Server On Debian

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.

Page 3: NFS Server On Debian

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

Page 4: NFS Server On Debian

/*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.

Rendimientodebe 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

Page 5: NFS Server On Debian

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

Page 6: NFS Server On Debian

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)

Page 7: NFS Server On Debian

/****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.

###rwpermiso 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_checkdirectiva 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_squashpor defecto los archivos compartidos por NFS cambian el

usuario “root” por el usuario “nfsnobody”, una cuenta de usuario sin privilegios.

Page 8: NFS Server On Debian

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_squashtodos 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.

###noaccessimpide el acceso al directorio especificado.

Habiendo hecho esto deberemos actualizar el fichero de “exports”

#exportfs –ra

Page 9: NFS Server On Debian

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

Page 10: NFS Server On Debian

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

Page 11: NFS Server On Debian
Page 12: NFS Server On Debian

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.

0es 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.

1es la columna de fsck, que chequea si el sistema de ficheros debe ser chequeado o no, si es

cero (0) no se chequeará.

Page 13: NFS Server On Debian

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