INTEGRACIÓN DE SISTEMAS OPERATIVOS EN RED LIBRES Y PROPIETARIOS. |
TEMA 7 |
Se dice que un sistema informático es heterogéneo cuando sus componentes son distintos pero pueden comunicarse entre sí por medios comunes. En cualquier empresa podemos encontrar que disponemos de diferentes recursos, desde mainframes, pasando por ordenadores de sobremesa y hasta con dispositivos móviles.
En este tema nos referiremos más a sistemas en los que se integran tanto sistemas operativos propietarios (Windows), como sistemas operativos libres (Linux), pero no autónomos, sino conectados entre sí por medio de una red, ya sea cableada o inalámbrica.
Hoy por hoy, Microsoft es cada vez más consciente de que debe convivir con otros sistemas operativos y vá incorporando diferentes servicios para la integración con estos, sobre todo con sistemas Unix.
En esta unidad nos vamos a centrar en los dos servicios más utilizados para compartir recursos en red , que son Samba y NFS.
Los sistemas de archivos que permiten la compartición de estos vía red son los siguientes:
NFS: (Network File system). Es el sistema de archivos que se utiliza para compartir ficheros entre diferentes equipos de plataformas Unix/Linux. En las últimas versiones de Windows server, se incorpora también el software necesario tanto para crear su propio servidor NFS como el cliente para acceder a estas carpetas compartidas.
(enlace http://technet.microsoft.com/es-es/library/jj574143.aspx)
SMB: Es un sistema de ficheros para montar una carpeta compartida en red con samba.El protocolo SMB fue diseñado originalmente por IBM, pero actualmente la versión más extendida del mismo es la implementada por Microsoft en sus sistemas operativos, hoy en día denominada CIFS. En Unix existe el servicio Samba que implementa un servidor y cliente para SMB/CIFS.
Entre las características del protocolo encontramos:
• Permite compartir sistemas de archivos e impresoras
• Tradicionalmente ha utilizado NetBIOS/NetBEUI aunque las versiones nuevas pueden funcionar encima de TCP/IP. Cuando no se utiliza TCP/IP no existe posibilidad de enrutado, de manera que cliente y servidor deben estar en la misma red.
• El servicio permite explorar la red para descubrir máquinas y recursos compartidos
• Tradicionalmente se ha utilizado una resolución de nombres WINS, aunque en las versiones nuevas (a partir de Windows 2000) se ha relegado en favor de DNS y Active Directory
Principalmente vamos a utilizar dos herramientas para sistemas mixtos Windows-Linux. Estas son Samba y NFS.
Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX.
Utilizando este servidor podremos:
Samba configura directorios Unix-Linux (incluyendo sus subdirectorios) como recursos para compartir a través de la red. Para los usuarios de Microsoft Windows, estos recursos aparecen como carpetas normales de red. Los usuarios de Linux pueden montar en sus sistemas de archivos estás unidades de red como si fueran dispositivos locales, o utilizar la orden smbclient para conectarse a ellas muy al estilo del cliente de la línea de órdenes ftp.
Cada directorio puede tener diferentes permisos de acceso sobrepuestos a las protecciones del sistema de archivos que se esté usando en Linux.
El servidor está compuesto por dos aplicaciones:
Smbd: El demonio smbd es responsable de manejar los recursos compartidos entre la máquina servidora Samba y sus clientes. Proporciona servicios de archivos, impresión y visualización a los clientes Samba.
Nmdb: El demonio nmbd es un sencillo servidor de nombres que imita la funcionalidad de los servidores WINS y de resolución de nombres NetBIOS. Este demonio está a la escucha de peticiones para el servidor de nombres y proporciona la información apropiada cuando se le llama. También proporciona listas de visualización del Entorno de Red.
También hay herramientas de tipo comando de Linux como son:
Smbclient
Un cliente tipo FTP Unix que puede ser usado para conectar a recursos compartidos por Samba.
Smbtar
Un programa para realizar copias de seguridad de datos sitos en los recursos compartidos, similar al comando Unix “tar”.
Nmblookup
Un programa que proporciona búsquedas de nombres NetBIOS sobre TCP/IP.
Smbpasswd
Un programa que permite a un administrador cambiar las passwordsencriptadas usadas por Samba.
Smbstatus
Un programa para reportar las conexiones de red actuales hacia los recursos compartidos por el servidor Samba.
Testparm
Un simple programa para validar el fichero de configuración de Samba.
Testprns
Un programa que testea si varias impresoras son reconocidas por el demonio smbd.
• La ‘suite’ completa de samba se compone de varios paquetes. Se pueden localizar en http://packages.ubuntu.com buscando ‘samba’. Destacamos algunos:
• samba - Servidor de archivos e impresoras.
• samba-common - Archivos comunes de samba utilizados para clientes y servidores.
• smbclient - Cliente simple.
• swat - Herramienta de administración de Samba via web
• samba-doc - Documentación de Samba.
winbind - Servicio para resolver información de usuarios y grupos de servidores Windows NT Instalaremos los paquetes desde Ubuntu utilizando apt-get. Para ello ejecutaremos:
Sudoapt-getinstall samba samba-commonsmbclient samba-doc
Resumen de pasos para implementar un servidor samba
1. Instalar el servidor:
sudo apt-get install samba samba-common smbclient samba-doc
2. Asegurarse de que están iniciados los servicios nmbd ysmbd
psax |grep nmbd
3. Iniciar el servicio si no lo estuviera :
sudo /etc/init.d/smbd start
sudo /etc/init.d/nmbd start
o bien
sudo start smbd
sudo start nmbd
4. Crear usuarios en smbpasswd para permitir el acceso a los recursos. Previamente debemos crear el usuario en Linux .
sudo smbpasswd -a nombre_usuario
5. Crear los directorios que van a ser compartidos y asignarles los permisos locales oportunos. Es recomendable no poner estos recursos dentro de carpetas de usuario, ya que estas están protegidas para que sólo el usuario al que pertenece pueda acceder, y hay que hacer más cambios de permisos.
6. Modificar el fichero smb.conf y añadir las secciones necesarias.
7. Comprobar que el fichero es correcto utilizando el comando testparm.
8. Comprobar el acceso desde otro equipo Linux y/o Windows.
Para configurar el servidor de Samba deberá editarse el fichero /etc/samba/smb.conf, con permisos de superusuario. Este fichero tiene varias secciones a tener en cuenta:
En la sección [global] se configuran los parámetros generales (globales) que determinarán el modo de comportamiento general del servidor samba. Todos los parámetros que se omitan tomarán el valor predefinido por defecto. Existen unos 300 parámetros que se pueden configurar en ésta sección. A continuación exponemos los parámetros más significativos y ejemplo de valor:
Antes de la versión 4, Samba no puede actuar como controlador de dominio de Active Directory, es decir, no puede sustituir a Windows 2000 Server, pero sí puede actuar como controlador de dominio de Windows NT. Para esto, se utilizarían los siguientes parámetros:
A partir de la version 3.0.23 de Samba, se añade la capacidad de que cualquier usuario que no sea root pueda añadir, modificar y borrar sus propios recursos compartidos. Para ello hay una serie de parámetros que comienzan por usershares, que se encuentran en la sección [global].
En esta sección se configuran los parámetros para compartir la carpeta home (carpeta donde se almacena el perfil y todos los documentos) de cada usuario. Esta sección es opcional.
En esta sección se configuran los parámetros para compartir las impresoras o colas de impresión disponibles en el servidor. Si queremos que los equipos Windows reciba los drivers, deberemos además poner la sección [printers$].
Cada vez que se comparte una carpeta, hay que crear una sección denominada como se desee ya que dicho nombre será el nombre del recurso compartido. Ejemplo, si deseamos compartir la carpeta /home/samba/alumnos crearemos una sección [alumnos] donde se configurará dicho recurso compartido con los parámetros específicos para dicho recurso. Parámetros destacables:
Ejemplo de smb.conf
# Ejemplo de archivo de configuración de samba #smb. conf | # passwd) |
#Sección global, parámetros generales [global] security = user workgroup = AulaASIR encryptpasswords = yes winssupport = yes log level = 1 max log size = 1000 # Por defecto, lectura y escritura(por estar esta línea en la sección global) readonly = no # Se comparten también las impresoras load printers = yes |
[profesores] path = /home/samba/profesores browsable = yes readonly = no createmask = 0770 directorymask = 0770 Validusers = @profesores # Carpeta común alumnos [alumnos] browsable = yes readonly = no path = /home/samba/alumnos |
# Sección homes, carpetas home de usuarios [homes] comment = Carpetas home browsable = no createmask = 0700 directorymask = 0700 |
# Carpeta común (solo lectura) [programas] browsable = yes readonly = yes guest ok = yes path = /home/samba/programas |
# Sección printers, impresoras [printers] path = /var/tmp printable = yes min printspace = 2000 |
# Parámetros impresora [laserjet5] path = /tmp printable = yes |
# Carpeta común profesores a la que puedan
# acceder los usuarios de este grupo (definido en
Samba tiene, como se ha visto en la sección anterior, formas diferentes de dar una seguridad en el acceso, tanto a nivel de usuario que puede acceder al recurso compartido, como a nivel de recurso.
En lo que se refiere a la autentificación del usuario, puede utilizar tanto un directorio Ldap, como un directorio activo , así como tener su propia base de datos de usuarios (smbpasswd).
Para utilizar sus propios usuarios Samba dispone de una base de datos cuyas contraseñas encriptadas están en el fichero smbpasswd. Estos usuarios deben estar previamente creados en passwd . También se pueden utilizar los grupos de passwd para gestionar los accesos a los recursos compartidos.
Para gestionar los usuarios samba utilizaríamos los comandos:
sudosmbpasswd -a pepe -> Crear usuario
sudosmbpasswd–x pepe -> Borrar usuario
Otras opciones del comando smbpasswd:
-d: Deshabilitar un usuario
-e: Habilitar un usuario
-n: Usuario sin password. Necesita parámetro nullpasswords = yes en sección ‘global’ del archivo de configuración de samba
-m: Indica que es una cuenta de máquina (equipo)
Como práctica generalizada, se crea un usuario samba por cada usuario Unix, y por usuario cliente de Windows, de forma que éste no tenga que dar credenciales continuamente, al entrar al sistema y de nuevo al conectarse a un recurso de red. Se deben tener sincronizadas las contraseñas para que esto sea viable. Esto es así cuando no se utilice un directorio ldap o un directorio activo.
Para ver los usuarios que están dados de alta en smbpasswd se utiliza el comando pdbedit
Desde Windows se accede a los recursos compartidos por samba vía entorno de red en entornos gráficos y pueden utilizarse el comando “net use” para mapear una unidad de red desde el entorno de comando o desde un procedimiento bat, al igual que se hace para el resto de los recursos de red de Windows, o bien utilizar el entorno gráfico, entorno de red o poner la ip del servidor en la barra de direcciones del explorador de carpetas.
Comandos Net:
NET [ ACCOUNTS|COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |STATISTICS | STOP | TIME | USE | USER | VIEW ]
Hay que tener en cuenta que cada vez que se accede al servidor, queda creada una conexión , que habrá que borrar si se quiere hacer una nueva conexión con otras credenciales. Esto puede hacerse con el comando net use. Con este vemos las conexiones activas y podemos desconectarlas con el modificador /delete.
Net use también tiene la opción de utilizar /user para dar credenciales a la hora de crear una conexión.
Si queremos que la unidad esté siempre presente, se puede incluir una línea con net use en el script de inicio del usuario, o utilizar la opción /persistent:yes en el comando net use.
Para montar carpetas compartidas en un cliente Linux, ya sean compartidas en un equipo Windows como Linux, se pueden utilizar los comandos smbclient, o bien mount –t smbfs o mount –t cifs, o mount.cifs .
mount -t smbfs -o username=nombreUsuario //nombreHost/Compartido /mnt/Compartido
mount -t cifs -o username=nombreUsuario%password //nombreHost/Compartido /mnt/ Compartido
Si se quiere tener siempre la unidad mapeada, basta con insertar una línea en /etc/fstab.
//nombreHost/Compartido /mnt/Compartido cifsuid=nombreUsuario,credentials=/etc/cifspw 0 0
Donde el fichero /etc/cifspw contendrá lo siguiente:
Username=nombreusuario
Password=contraseña
Uso de smbclient para ver los recursos compartidos en un equipo:
smbclient - -list //aso-virtualbox
Para conectarse a un recurso compartido:smbclient //aso-virtualbox/alumnos
y a partir de ahí es como un cliente ftp, pueden utilizarse los comandos get, put,etc.También pueden utilizarse accesos gráficos con cualquier explorador , ya sea dolphin, konqueror, etc, de la forma habitual.
Es una utilidad que permite acceder a configurar desde una interfaz web todos los recursos samba. Se instala como de costumbre con apt-get en plataformas Debian:
sudoapt-getinstallswat
Además, habrá que asegurarse de que aparece en el fichero /etc/services
Y que en el fichero /etc/inetd.conf, también aparece la línea
Y para acceder a la utilidad , desde cualquier navegador se introducirá en la barra de direcciones: http:\\ip_servidor:901 . 901 es el puerto por defecto de escucha de la aplicación.
En ese momento pedirá un nombre de usuario y contraseña. Deberá introducirse el usuario root de Linux y su contraseña, si se quiere acceder a todas las características disponibles, tales como crear recursos y/o usuarios samba.
Si se está utilizando Ubuntu, habrá que habilitar el usuario root poniéndole una contraseña con el comando
sudo passwd root
La interfaz es la siguiente:
Para crear un nuevo recurso compartido
Se rellena el nombre y se pulsa en el botón “créate Share”, mostrará la pantalla siguiente:
También se puede utilizar swat para reiniciar el servidor samba, ver los recursos y usuarios que los están utilizando y algunas cosas más.
Esta es otra opción para utilizar samba de forma gráfica. Es una aplicación que se instala con aptget, y una vez instalada aparece bajo el siguiente icono
Si pulso en él, me pedirá el usuario administrador mostrará los recursos compartidos y pulsando en el símbolo + de la esquina superior izquierda dejará crear nuevos recursos de una forma sencilla.
También se puede utilizar la herramienta Webmin para administrar samba.
Como ya se indicó en la explicación del fichero smb.conf, Samba puede actuar también como controlador de dominio de NT, es decir, con un equipo Linux que tenga instalado un servidor samba, podemos conseguir autentificar a los usuarios que se unen a equipos de la red. El servidor samba se anunciará como servidor de Dominio y proveerá a los equipos de la red de un servicio de Netlogon y un recurso compartido llamado Netlogon, además de poder proveer de una carpeta compartida para almacenar los perfiles remotos de los usuarios.
Un ejemplo del fichero smb.conf para un samba controlador de dominio es el siguiente:
Para hacer que un equipo se incorpore al dominio de un PDC samba, puede ser desde las versiones de Windows XP profesional (xp Home no puede utilizarse para esto), y también equipos Linux. En Windows 8 debemos tener en cuenta que si el nombre del dominio contiene un punto, no podrá incorporarse a este, porque entiende que es un dominio kerberos o ldap.
Para que un equipo Windows 7 pueda actuar como cliente de red de un PDC SAMBA, hay que hacer unos cambios en el registro para que no nos dé un error que dice algo como:
“El dominio especificado no existe o no puede ser contactado”.
La solución consiste en modificar el registro de cada host con Windows 7 para agregar las siguientes claves, ubicadas en
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]:
“DomainCompatibilityMode”=dword:00000001
“DNSNameResolutionRequired”=dword:00000000
http://wiki.samba.org/index.php/Windows7
Este sería un ejemplo de un fichero de configuración de samba para un servidor que utilice autentificación por medio de un directorio activo de Windows, es decir los usuarios para seguridad se recogerán de los servidores de dominio de los Controladores de dominio Windows que haya en la red.
La version 4 de samba representa un salto cualitativo en tanto que incorpora un servidor LDAP, un servidor de autenticación Kerberos, un servidor DNS dinámico y todas las implementaciones de las llamadas remotas de Directorio Activo. De esta forma, se puede integrar con todos los clientes de Microsoft, incluido Windows 8.
Pueden realizarse perfiles remotos y políticas del sistema (gpos),e integrarse con Microsoft Exchange y otro software gratuito compatible, como OpenChange.
1 Instalar samba en un equipo Linux virtual.
2 Crear dos carpetas compartidas en /samba_shares/todos y /samba_shares/privado
3 Dar permisos para que todos los usuarios tengan acceso de lectura a samba_shares/todos y Jefe tenga acceso de lectura y escritura e esta.
4 /samba_shares/privado , tendrán acceso el usuario jefe de lectura y escritura y Secretaria de sólo lectura.
5 Intentar accesos con diferentes usuarios desde una máquina virtual Windows.
6 Añade la/s líneas necesarias para que uno de los equipos de tu red no tenga acceso a ninguno de los recursos de samba.
7 Comparte las carpetas home de los usuarios.
8 Accede al servidor desde un equipo cliente Linux, con uno de los usuarios dados de alta en el servidor y comprueba que en este le muestra su carpeta home.
http://www.samba.org/
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/
https://help.ubuntu.com/10.04/serverguide/samba-fileserver.html
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m4/instalacin_y_configuracin_de_samba.html
http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
http://www.lintips.com/?q=node/81
http://www.debian-administration.org/articles/165
ftp://ibiblio.org/pub/linux/docs/LuCaS/Manuales-LuCAS/doc-guia-ubuntu-breeze/guiaubuntu-htmls/servidor-samba.html
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/samba-pdc.html
http://wiki.samba.org/index.php/Samba_%26_Active_Directory
Las siglas NFS significan Sistema de Archivos de Red (del inglés Network File System) y fue desarrollado por SUN Microsystems en 1984. Su función en una red es permitir que un equipo GNU/Linux pueda montar y trabajar con un sistema de archivos de otro equipo de la red como si fuera local.
NFS es un sistema cliente-servidor, por lo que será necesario al menos un servidor y uno o más clientes. El servidor “exporta” archivos al resto de la red. El cliente “importa” archivos de la red.
NFS es un sistema de archivos virtual, que permite que en una red UNIX podamos compartir archivos entre todos los equipos que la forman. Los usuarios de la red tendrán la sensación de que los datos a los que acceden están en su propia máquina .
Aunque al servicio se le suele conocer con el nombre NFS, realmente NFS es un protocolo de nivel de Aplicación y por debajo, el protocolo subyacente que utiliza NFS son las Llamadas a Procedimientos Remotos (RPC) de nivel de Sesión, también utiliza TCP/UDP en el nivel Transporte e IP en el nivel de Red.
Las versiones de NFS más importantes son NFSv2 (RFC 1094), NFSv3 (RFC 1813) y NFSv4 (RFC 3530).
La versión 2 de NFS es la más extendida y soportada por los sistemas operativos, también es la más antigua e insegura. La versión 3 es más potente pero no es completamente compatible con clientes NFSv2. Ambas versiones pueden trabajar tanto con TCP como UDP como protocolo de transporte creando conexiones de red entre el cliente y el servidor sin supervisión (state-less). La ventaja de utilizar UDP es que, al ser una conexión desatendida, se minimiza el tráfico de red, pero si el servidor NFS cayera por cualquier circunstancia, los clientes NFS seguirían enviando peticiones al servidor produciendo el efecto contrario, que es la saturación de la red.
En general las versiones 2 y 3 de NFS permiten controlar la exportación y montaje de sistemas de archivos en función del equipo que hace la solicitud, pero no del usuario. Es decir no se contempla un control de acceso al sistema de archivos por usuario. Sólo para los equipos. Esto implica que si un sistema de archivos es exportado desde el servidor NFS, cualquier usuario de un equipo remoto cliente NFS podría acceder a él. Los únicos mecanismos de seguridad que quedan en este caso son los permisos de acceso (sólo lectura) o utilizar un usuario y grupo únicamente. Lógicamente esto limita bastante la idea de compartición que tenemos todos.
En el caso de la versión 4 de NFS( http://www.nfsv4.org) estos problemas de seguridad desaparecen pero, a cambio, tiene unos requerimientos de configuración y servicios adicionales mucho más importantes. Por ejemplo, en la versión 4 la utilización de mecanismos para la autenticación de los usuarios es obligatoria. Para ello y en función del tipo de seguridad seleccionada, se requiere la utilización del servicio Kerberos cuya misión será funcionar como servidor de entrega de tickets (KDC) y que debe estar configurado y funcionando correctamente antes de configurar el servidor NFSv4. Otra característica importante de NFS4 es la utilización de ACLs (Listas de Control de Acceso) al estilo Windows y que no son soportadas por las versiones 2 y 3 de NFS del sistema.
Kerberos: es un protocolo de autenticación de redes de ordenador creado por el MIT que permite a dos ordenadores en una red insegura demostrar su identidad mutuamente de manera segura.
1. Instalar el servidor NFS en un equipo de Linux .
2. Crear las carpetas a compartir y ponerle los permisos necesarios.
3. Modificar el fichero /etc/exports para añadir las carpetas compartidas.
4. Añadir seguridad mediante los ficheros /etc/hosts. allow y /etc/host.deny.
Los archivos de configuración que necesitamos modificar para sacar el mayor partido posible al servicio NFS son los siguientes:
• /etc/exports