miércoles, 23 de marzo de 2016

Implantacion de un servidor Samba en FreeBSD para compartir archivos en redes heterogeneas

COMPARTIR ARCHIVOS CON SAMBA EN FREEBSD


    Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows, anteriormente conocido como SMB, recientemente nombrado CIFS, para sistemas del tipo UNIX.

    Samba fue creado originalmente para UNIX por Andrew Tridgell usando un sniffer para entender el protocolo y aplicarle ingeniería inversa para su implementación en software libre.

    Samba configura directorios y subdirectorios de UNIX y GNU/Linux como recursos para compartir a través de la red. Para los usuarios de Microsoft Windows, estos recursos aparecen como carpetas normales de la red.

El funcionamiento de Samba es el de permitir un lenguaje común entre sistemas UNIX y Windows, lo cual permite desde un equipo trabajando con Windows, ver las particiones y compartir archivos e impresoras con el equipo UNIX donde esté instalado.

Esta comunicación se logra con la implementación por parte de Samba del protocolo a nivel de sesión NetBIOS, el cual permite establecer una conexión entre dos computadoras conectadas en una red. El otro protocolo implementado por Samba es el SMB (Server Message Block), el cual se implementa sobre el protocolo NetBIOS y es el que permite a los equipos Windows compartir directorios y archivos.

Esencialmente Samba consiste en la ejecución de dos programas, smbd y nmbd, los cuales logran la comunicación con los sistemas Windows.

    Antes de realizar la instalación de cualquier paquete, se debe actualizar el árbol de ports del sistema para tener disponibles los paquetes mas actualizados para su instalación.

    Para realizar la instalación del paquete samba en nuestro sistema FreeBSD, procedemos a ubicarnos en la siguiente ruta:
cd  /usr/ports/net


    Al momento de revisar los paquetes dentro de este directorio, nos percatamos que existen varias versiones de samba almacenadas en diferentes carpetas, basicamente la diferencia fundamental entre las versiones 3.xxx y la 4.xxx, es que con las primeras podemos instalar, entre otros tipos de servicios, un Controlador Principal de Dominio al estilo de los NT4 de Microsoft; mientras que con la serie 4, ya podemos hacernos un Directorio Activo o “Active Directory” al estilo de los Directorios Activos con Microsoft Windows 2000 o superiores.

    Dentro del directorio actual se revisan las carpetas existentes para verificar las versiones de samba existentes dentro del árbol de ports descargado en nuestro sistema.
ls -l | grep samba


    Por el momento no se va a utilizar en esta implementación el Active Directory, por lo tanto usaremos la versión samb 3.6 que es la más documentada, nos ubicamos dentro del directorio indicado.
cd  samba36


    Una vez ubicados dentro del directorio se procede a ejecutar el comando de instalación de samba.
make install clean


    Una vez iniciado el proceso de instalación del paquete samba, se muestra la ventana de opciones de instalación. En esta ventana podemos activar la opción de instalar la interfaz web de configuración de samba SWAT.


    Se dejan las opciones seleccionadas por defecto y continua la instalación del paquete.


    A continuación se presenta la ventana de instalación de python para el correcto funcionamiento del paquete samba.


    Comienza la instalación de python.


    Se solicita la instalación de una serie de paquetes para el correcto funcionamiento de nuestro servidor samba



    A continuación comienza la instalación de toda la paquetería necesaria para el correcto funcionamiento de samba y su correspondiente compilación.






    Una vez instalados todos los paquetes necesarios para el funcionamiento de nuestro servidor samba, procedemos a configurar el inicio automático del servicio al arrancar el sistema, lo cual se logra editando el archivo /etc/rc.conf.


    Al final del referido archivo se debe agregar la siguiente línea
samba_enable=”YES”.


    Toda la configuración del servidor samba que estamos implementando se encuentra en un único archivo ubicado en el siguiente directorio.
cd  /usr/local/etc


    Como podemos observar en el listado de archivos del directorio indicado, existe un archivo con el nombre smb.conf.sample, el cual sirve como ejemplo de configuración del servidor samba, como podemos ver dicho archivo está protegido contra escrituras para mantenerlo original, lo que podemos hacer es crear una copia de este archivo para usarla en nuestra configuración personalizada y dejar un respaldo del archivo original.


    Al detallar el listado de archivos, podemos percatarnos que el archivo copiado hereda la permisología de solo lectura que presenta el archivo original, procedemos a cambiar dicha permisología para poder editar el mencionado archivo.


    Se procede a editar el archivo correspondiente smb.conf, para comenzar a configurar nuestro servidor samba



    Dentro de este archivo se revisan los parámetros básicos de configuración de nuestro servidor samba, los cuales incluyen el grupo de trabajo al cual queremos que pertenezca el servidor, la descripción del servidor, el modo de seguridad y los segmentos de red a los que se les va a brindar el servicio de directorio compartido.


    Para comenzar indicamos el grupo de trabajo al cual va a pertenecer nuestro equipo en la línea workgroup

Se indica una descripción de nuestro servidor samba en la línea server string

Se indica el modo de seguridad en la línea security, la cual puede tener una de las siguientes opciones

user
share
server

    Para definir los equipos o redes que se permite acceder al servicio, se indica en la linea hosts allow, en caso de ser una red completa como de 192.168.1.1 hasta 192.168.1.254 se indica con la opcion 192.168.1., al equipo local se le indica con la opción 127.

    Para realizar la correcta configuración del servidor samba se procede a realizar los pasos que a continuación se resumen.

  • Se crea el o los usuarios a los cuales se les quiere dar acceso a recursos compartidos en el servidor samba
    • adduser  nombreusuario
  • Se crea el grupo de usuarios al cual se va a agregar el o los usuarios que van a compartir el recurso
    • pw  groupadd  nombregrupo
  • Se agregan el o los usuarios al grupo correspondiente para darles acceso a la carpeta compartida por medio del servidor samba
    • pw  user  mod  nombreusuario  -G  grupo
  • Se crea el directorio a compartir
    • mkdir  directorioacompartir
  • Se cambia el grupo al cual pertenece la carpeta que se quiere compartir
    • chgrp nombregrupo directorioacompartir
  • Se cambian los permisos del directorio a compartir para que solo de acceso al usuario propietario y al grupo correspondiente
    • chmod  770  directorioacompartir
  • Se debe crear el bloque en el archivo correspondiente de configuración de samba /usr/local/etc/smb.conf
    • vi  /usr/local/etc/smb.conf
  • Finalmente se debe asignar a los usuarios una contraseña para que se validen en el servidor samba
    • smbpasswd  -a  nombreusuario

    Siguiendo estos pasos básicos podemos tener configurado un servidor samba para darle acceso a los usuarios a los cuales necesitemos brindarles algún tipo de almacenamiento compartido o para que guarden archivos fuera de su equipo personal para protegerlos de algún fallo de su equipo.

    A continuación se detallan los pasos a seguir para los diferentes escenarios que se presentan al momento de compartir un espacio de almacenamiento con uno o varios usuarios, los posibles casos que se presentan con mayor frecuencia son el compartir una carpeta con un único usuario, compartir la carpeta de acceso de cada uno de los usuarios creados, compartir una carpeta con los usuarios que pertenecen a un grupo específico.



CREAR UN ESPACIO PRIVADO DENTRO DE UN SERVIDOR SAMBA



    Para continuar con la configuración se procede a crear un espacio privado de almacenamiento perteneciente a un usuario específico, agregando al archivo smb.conf la siguiente información.


    Se crea el directorio necesario para compartir.
cd  /usr/home/dc/
mkdir  samba



    A continuación se procede a configurar los permisos de la carpeta que se va a compartir de la siguiente manera
chmod 770 samba


    Una vez creada la carpeta que se quiere compartir, es el momento de crear el grupo de samba y agregarle el usuario que va a compartir la carpeta samba mediante el siguiente comando.
pw groupadd smbprivate -M dc

Verificamos que el grupo fue creado correctamente y que se agrego el usuario deseado mediante el siguiente comando
cat /etc/group


    Al final del respectivo archivo se verifican el grupo creado y el usuario registrado a dicho grupo


    Una vez que se ha creado el grupo de samba, procedemos a agregar la carpeta creada para compartir al grupo de samba.
chgrp smbprivate samba


    Una vez realizada esta configuración, se procede a crear la contraseña del usuario de samba usando el siguiente comando
smbpasswd -a dc


    Ahora procedemos a iniciar el servicio con uno de los siguientes comandos, solo hace falta usar uno de ellos

/usr/local/etc/rc.d/samba onestart

ó

service samba restart


    A continuación se procede a comprobar el servidor con el siguiente comando.


    Al ingresar la contraseña de usuario samba, se despliega toda la información del servidor y del grupo de trabajo al cual pertenece.


    Para realizar la prueba definitiva del funcionamiento del servidor samba que acabamos de implementar, verificamos en el sistema la dirección IP asignada.
ifconfig


    Buscamos desde un equipo con Microsoft Windows la dirección indicada por nuestro servidor y tratamos de ingresar con el usuario y la contraseña creados en el equipo con samba.


    Para ingresar a nuestro directorio el sistema solicita autenticarse con nuestro usuario y contraseña





ESPACIO COMPARTIDO POR USUARIO



    Para realizar la configuración de compartir los directorios de conexión de cada usuario creado en el servidor samba, se procede a revisar el archivo de configuración para activarlo.

    En los bloques del archivo smb.conf se presenta un segmento marcado con la etiqueta homes


    Este segmento indica al servidor samba que comparta la carpeta home de cada usuario registrado en el sistema, si el usuario y la contraseña creados en el servidor samba coinciden con el usuario y contraseña de inicio de sesión de windows, se ingresa a la carpeta con solo indicar la dirección IP del servidor y sin necesidad de loguearse.

    Al colocarle browsable = yes al recurso compartido en Samba se visualiza en las carpetas compartidas, pero solo los usuarios pertenecientes al grupo administración pueden visualizar el contenido de la referida carpeta.

    Con esta configuración basta con crear el usuario en el sistema FreeBSD con la misma contraseña con el que está creado en la sesión de windows.
adduser


    Se colocan los datos del nuevo usuario que se está creando, teniendo la precaución de colocarle el mismo nombre de usuario de windows y la misma contraseña,

    Por último se crea la contraseña de acceso de samba para el usuario creado para habilitarlo a iniciar sesion en el servidor samba y ver su carpeta de acceso.
smbpasswd -a nombreusuario



ESPACIO COMPARTIDO PARA UN GRUPO



    Para realizar la configuración de espacio compartido con un grupo de usuarios específicos se debe proceder de la siguiente manera

    Se procede a agregar la sección al archivo smb.conf para dar acceso a un espacio de almacenamiento a todos los miembros del grupo administración.


A continuación se procede a crear una carpeta de acceso a los usuarios pertenecientes a un grupo específico.
cd  /home/samba
mkdir  administracion

Cambiamos la permisología de la carpeta creada para que sea accesible sólo para el usuario y el grupo con el siguiente comando
chmod 770 administracion

    Se debe crear el grupo al que se quiere dar acceso al almacenamiento, de forma tal que todos los usuarios pertenecientes al mencionado grupo puedan acceder al directorio indicado.
pw groupadd administracion

    Luego creamos el usuario que se va a loguear en nuestro servidor de archivos samba
adduser


Una vez creado nuestro usuario, este se agrega al grupo respectivo
pw user mod nuevousuario -G administracion


    Se agrega la contraseña de samba al usuario recién creado.
smbpasswd -a nuevousuario


 
REFERENCIAS



Usando samba, de Robert Eckstein, David Collier−Brown, Peter Kelly.
http://es.tldp.org/Manuales-LuCAS/USANDO-SAMBA/usando-samba.pdf

Servidor Samba
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m4/servidor_samba.html

Configuración básica de samba
http://www.alcancelibre.org/staticpages/index.php/como-samba-basico 

Instalacion y configuracion de Samba en FreeBSD 10
http://freebsd.mx/tutorial-instalacion-y-configuracion-de-samba-en-freebsd-10 

Instalar y configurar Samba FreeBSD
http://gnulinuxcodigo.blogspot.com/2013/12/instalar-y-congurar-samba-freebsd.html 

Gestión de usuarios, grupos y permisos de samba
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m4/gestin_de_usuarios_grupos_y_permisos_de_samba.html 

Tipos de servidores samba y el archivo smb.conf
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-samba-servers.html 

Montaje de unidad remota de Windows con samba
http://informatica-online.blogspot.com/2009/12/montar-unidad-compartida-via-cliente.html 
http://fraterneo.blogspot.com/2011/06/conectarse-desde-gnulinux-una-carpeta.html 

FreeBSD + Samba + Cups
http://angelvg.blogspot.com/2007/01/freebsd-samba-cups.html

Implementación de un servidor samba con autenticación LDAP como alternativa libre a los servidores de dominio de Windows, de Lázaro J. Ramos Alfonso y Miriel Martin Mesa.
http://www.monografias.com/trabajos-pdf4/implementacion-servidor-samba-autenticacion-ldap/implementacion-servidor-samba-autenticacion-ldap.pdf 

Migrar usuarios samba a nuevo servidor
http://www.tododebian.es/contenidos.php?opc=v&idc=00000126

Vulnerabilidades de denegación de servicio en Samba
http://feedproxy.google.com/~r/hispasec/zCAd/~3/aZh1il3emW4/vulnerabilidades-de-denegacion-de.html