Receta del servidor de ficheros e impresoras Samba

TÍTULO:         Receta del servidor de ficheros e impresoras Samba
VERSIÓN LFS:    3.0-RC1
AUTOR:          Patrick Kirk < patrick@kirks.net >
TRADUCTOR:      Proyecto LFS-ES


Introducción


Samba te permite realizar algunas de las funciones típicamente
reservadas a Windows 2000 Server Edition, por ejemplo actuar como 
Controlador Primario de Dominio para un Dominio Win2k, actuar como
controlador de Copias de Seguridad de Dominio o simplemente como un 
servidor de ficheros que permita la compartición de archivos con otros 
PCs de una manera segura y protegida. En todas estas capacidades, 
Samba espera ahorrar un montón de licencias siendo más segura que 
cualquier otra alternativa.

Esta receta sirve para instalar y configurar samba como servidor de 
ficheros e impresoras en una máquina en la que es importante la 
seguridad. El énfasis se hace en la seguridad del servidor y en el 
uso por parte de los usuarios. Por ejemplo, uso estas opciones en la 
máquina que comparte mi conexión ADSL.



1. Instalación

Puedes descargar Samba de www.samba.org. La instalación por omisión 
crea un directorio llamado samba en /usr/local y coloca todo el 
programa ahí. Si como yo quieres ser capaz de hacer una copia de 
seguridad de tus ficheros de configuración haciendo tan sólo una 
copia de seguridad del directorio /etc necesitarás hacer cambios en 
la instalación. Además, para no tener que estar cambiando tu ruta de 
búsqueda de binarios (path), es mejor colocar los ejecutables en 
/usr/local/bin y sbin de manera apropiada.

Como administrador (root) ejecuta los siguientes comandos:

cd /usr/src &&
tar xzvf samba*.tar.gz &&
mkdir -p /etc/samba  &&
mkdir -p /var/lock/samba  &&
cd samba-2.2.1a/source &&
/configure --prefix=/usr/local --bindir=/usr/local/bin \
--sbindir=/usr/local/sbin --libdir=/etc/samba --sysconfdir=/etc/samba \
--with-smbmount && make && make install 

2. Configurando la compartición

Crea en /etc/samba un fichero llamado smb.conf que contenga lo siguiente:

[global]
    workgroup = KIRKS.NET    # Pon el nombre de tu propio dominio aquí
    netbios name = ENTERPRISE    # Pon el nombre de tu máquina
    server string = %h server (Samba %v)
    encrypt passwords = Yes
    smb passwd file = /etc/samba/sambapasswd    #Facilitar las copias de seguridad
    syslog = 0    #Nivel de registro de syslog. Mantenlo bajo
    max log size = 1000
    log file = /var/log/samba/samba.log.%m # fichero de registro
    log level = 2    #Registra únicamente la información interesante
    # Optimizando el rendimiento - esto funciona.
    # Lee el p*** manual (RTFM) antes de hacer cambios
    socket options = IPTOS_LOWDELAY \ 
    TCP_NODELAY SO_SNDBUF=4096 SO_RCVBUF=4096
    dns proxy = No    #Una herramienta para cada trabajo. Utiliza bind como DNS.
    #Seguridad
    #Estas líneas son esenciales.
    invalid users = root    
    #De otra manera cualquiera puede hacer un ataque con tan sólo navegar por 
    # nuestros ficheros compartidos 
    
    # Especifica el rango de IP de tu red local y las tarjetas ethernet que
    # utilizas para acceder a ella
    # Quita la dirección 127.0.0.1 para hacer diagnósticos
    interfaces = eth0 192.168.0.0/255.255.255.0 127.0.0.1/24 
    # Aun si un atacante remoto consigue descifrar una clave, seguirá sin
    # poder entrar
    bind interfaces only = yes


[homes]
    # Permite a los usuarios almacenar información en sus cuentas del servidor
    comment = Directorios Home
    read only = No
    create mask = 0700
    directory mask = 0700
    browseable = Yes
[data]
    # Crea una carpeta para compartir ficheros bases de datos, listas de
    # teléfonos, etc.
        comment = Ficheros de datos y copias de seguridad
    # Necesitas establecer el directorio.  El mio es...
        path = /home/data
        read only = No
        create mask = 0775
        directory mask = 0775
        browseable = Yes

[system]
    # Copia aquí la carpeta i386 del CD del Win2k. 
    # Te evitará un montos de tiempo de instalación de controladores (drivers)! 
    # Y otros CDs que uses frecuentemente.
    # 
        comment = Ficheros de instalación y sistemas
    # Necesitas establecer el directorio.  El mio es...
        path = /home/system
        read only = No
        create mask = 0775
        directory mask = 0775
        browseable = Yes

[printers]
        comment = Todas las impresoras
        path = /tmp
        create mask = 0700
        printable = Yes
        browseable = No

# Fin del fichero



3. Añadir usuarios
smbpasswd -a john añade al usuario john y solicita su clave.  A no ser 
que tengas un montos de usuarios, repite esta acción para cada uno de 
ellos. Si tienes tantos que imposibilita esta acción, configura SWAT 
que permite manejar usuarios remotamente desde un navegador web. SWAT 
es muy fácil de utilizar pero si lo necesitas puedes encontrar 
información detallada en un libro de O'Reilly en formato html en 
http://sunsite.dk/samba/docs

4. Configuración de las máquinas clientes
Las maquinas con Windows 2000 podrán trabajar si el nombre de usuario 
en la máquina es el mismo que el de las cuentas que has creado en el 
servidor samba. Si no es el mismo deberás mapear la compartición de 
archivos como unidades de red y configurarlos para que utilicen el 
usuario y la clave que hayas establecido en el servidor.

Deberías considerar crear un fichero de procesamiento por lotes 
llamado login.bat que se ejecute en los clientes que contenga lo 
siguiente:

net use h: \\192.168.0.1\homes /persistent:no

net use i: \\192.168.0.1\data /persistent:no

net use j: \\192.168.0.1\system /persistent:no

5. Iniciando samba
Crea un fichero en /etc/init.d llamado samba y copia lo siguiente 
en él:

#!/bin/sh
# Begin /etc/init.d/samba

#
# Incluye las funciones declaradas en el fichero /etc/init.d/functions
#

source /etc/init.d/functions

case "$1" in
        start)
                echo -n "Iniciando el demonio Samba..."
                loadproc /usr/local/sbin/nmbd

                echo -n "...demonio Samba iniciado."
                loadproc /usr/local/sbin/smbd
                ;;

        stop)
                echo -n "Parando el demonio Samba..."
                killproc smbd

                echo -n "...demonio Samba parado."
                killproc nmbd
                ;;

        reload)
        echo -n "Recargando la configuración del demonio Samba..."
                reloadproc smbd
        ireloadproc nmbd
                ;;

        restart)
                $0 stop
                /usr/bin/sleep 1
                $0 start
                ;;

        status)
                statusproc /usr/local/sbin/nmbd
                statusproc /usr/local/sbin/smbd
                ;;

        *)
                echo "Uso: $0 {start|stop|reload|restart|status}"
                exit 1
        ;;

esac

# Fin de /etc/init.d/samba

Para iniciar samba simplemente debes ejecutar /etc/init.d/samba start

Para que samba se inicie cada vez que enciendes tu ordenador ejecuta 
los siguientes comandos:

chmod 754 /etc/init.d/samba &&

ln -s  ../init.d/samba /etc/rc0.d/K400samba &&

ln -s  ../init.d/samba /etc/rc1.d/K400samba &&

ln -s  ../init.d/samba /etc/rc2.d/K400samba &&

ln -s  ../init.d/samba /etc/rc3.d/S600samba &&

ln -s  ../init.d/samba /etc/rc4.d/S600samba &&

ln -s  ../init.d/samba /etc/rc5.d/S600samba &&

ln -s  ../init.d/samba /etc/rc6.d/K400samba


6. Fin
Enhorabuena. Ya tienes un servidor de ficheros protegido, estable y 
seguro.