Compartir archivos con #Samba de forma segura

Cierre económico a final de mes, una total locura en las empresas cubanas[en otros lados no sé].

Problemática:

Se necesita un servidor de archivos compartidos[un lugar de almacenamiento rápido] donde se puedan almacenar los «excel», los «word» y cuanto formato de documento que se necesite para que se puedan pasar entre las económicas/financistas, el jefe de departamento y director de UEB para que los revisen. Sólo eso, documentos.

Solución: Samba!!!

Pero la OSRI golpea, y sin piedad cada carpeta compartida que encuentra, por las múltiples vulnerabilidades que presentan[en sistemas Windows].

Nota: Cabe destacar acá, que Samba emula el comportamiento de la compartición de archivos y carpetas, pero no emula las vulnerabilidades. Así que ya saben OSRI-seños.

Tomaremos para este tutorial, un CT de Proxmox con base Debian/Ubuntu, y por ejemplo, con 2GB de RAM y 4 núcleos. Estas prestaciones son necesarias si vamos a compilar Samba, pero si instalamos desde el repositorio, con la mitad resolvemos el asunto. De todas formas, explicaré las dos maneras acá.

Samba desde el repositorio

Asumo que ya hayan updateado/upgradeado el sistema, y si no lo han hecho ¿Qué esperan?:

apt update ; apt upgrade -y
apt install -y samba samba-common

Lo primero que haremos será detener y deshabilitar NETBIOS, no lo necesitaremos[y de paso nos evitamos problemas con posibles escaners de red]:

systemctl stop nmbd
systemctl disable nmbd
systemctl mask nmbd

Ahora, smbd. Estado del servicio:

systemctl status smbd

Para reiniciar el servicio ante cualquier cambio, existen tres maneras, use la que usted considere mejor:

systemctl restart smbd

o:

service smbd restart

o:

/etc/init.d/smbd restart

Entonces… Editamos según nuestras necesidades, pero primero hacemos un backup:

mv /etc/samba/smb.conf{,.orig}

Un ejemplo de configuración pudiera ser:

nano /etc/samba/smb.conf

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = shares
security = user
map to guest = bad user
dns proxy = no

#----------- Shares -----------

[Economia]
path = /mnt/samba/economia
valid users = @sambashare
guest ok = no
writable = yes
browsable = yes

Y reiniciamos el servicio. Ya vimos como hacerlo. Para comprobar que todo está OK, ejecutamos:

testparm

Es decir, para este ejemplo, creamos un recurso compartido[Economia] que apunta a una carpeta llamada «economia» dentro de /mnt/samba donde pondremos las cosas[documentos] del Departamento. En /mnt/samba tendremos un punto de montaje de nuestro Proxmox, con espacio suficiente para las operaciones que requieren nuestros compañeros de Economía. También debemos notar que los usuarios válidos a usar este recurso, deben pertenecer al grupo «sambashare».

Samba crea, en la instalación, un grupo por defecto en sistemas Debian/Ubuntu llamado: «sambashare», el cual usaremos para agregar usuarios en el próximo paso. A esta carpeta que creamos, debemos aplicarle estos permisos. Procedemos:

cd /mnt/samba
mkdir economia
chmod -R 0770 economia
chown root:sambashare economia

Ahora crearemos un usuario que podrá trabajar en esta carpeta. Samba usa el sistema de usuarios y permisos pero tiene su propio mecanismo de autenticado, separado del que normalmente usa linux[el sistema], por lo que para que todo funcione correctamente, crearemos el usuario con el sistema de autenticado normal de linux y le pondremos la contraseña con la utilidad smbpasswd que trae samba. Una de las económicas se llama Yadira y para tomarla como ejemplo le crearemos el usuario de la siguiente forma:

useradd yadira -s /bin/false -G sambashare

Y para asignarle un password a Yadira:

smbpasswd -a yadira

Ahora sólo debemos ir al Explorador de Windows y crear una unidad mapeada en red, cosa trivial:

Configuración de la unidad:

Autenticándonos:

Y listo:

Como pudieron ver, algo ligero de configurar y llevar a cabo. Ahora veamos como hacer lo mismo, pero compilando samba.

Compilando Samba

Lo primero es obtener samba.

cd /opt
wget -c https://download.samba.org/pub/samba/samba-latest.tar.gz

A día de hoy[en estoy escribiendo este tutorial 28-8-2020], la última versión estable de Samba, es la 4.12.6.

¿Updatearon/upgradearon el sistema?

apt update ; apt upgrade -y

Instalar las dependencias necesarias para compilar:

apt install -y rsync acl attr autoconf bind9utils bison build-essential \
debhelper dnsutils docbook-xml docbook-xsl flex gdb libjansson-dev \
libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev \
libcap-dev libcups2-dev libgnutls28-dev libgpgme-dev libjson-perl \
libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl libicu-dev \
libpopt-dev libreadline-dev nettle-dev perl perl-modules pkg-config \
python-all-dev python-crypto python-dev python-dnspython libtasn1-bin \
python3-dnspython python3-gpg python-markdown python3-markdown \
python3-dev xsltproc zlib1g-dev liblmdb-dev lmdb-utils mc net-tools

Extraer y compilar:

tar -xvf samba-latest.tar.gz
cd samba-latest

./configure -p --enable-fhs --prefix=/usr --sysconfdir=/etc \
 --localstatedir=/var --enable-debug --enable-selftest --cross-answers \
 --cross-execute --sbindir=/usr/sbin --mandir=/usr/share/man \
 --with-logfilebase=/var/log/samba --with-piddir=/run/samba \
 --with-systemd --systemd-install-services --with-systemddir=/etc/systemd/system \
 --with-syslog --enable-spotlight --with-pam --with-automount \
 --with-shared-modules=idmap_rid,idmap_ad,idmap_adex,idmap_hash,idmap_ldap,idmap_tdb2,vfs_dfs_samba4,auth_samba4,vfs_nfs4acl_xattr \
 --with-smbpasswd-file=/etc/samba/smbpasswd --without-ad-dc -j 4

make -j`nproc`
make install

Nota: En un futuro, si quieren actualizar Samba a la última versión, descargen y compilen con las mismas opciones de configuración que lo hicieron en el primer momento, sino, les dará error. Si desean ver cómo fue compilado samba anteriormente sólo debemos ejecutar:

smbd -b

Archivo de configuración[puede usar el anterior, o generar uno de base]:

cp examples/smb.conf.default /etc/samba/smb.conf

Habilitar el inicio Samba con systemd:

systemctl enable smb
systemctl start smb

Creamos el grupo para los usuarios que deben trabajar con el recurso compartido:

addgroup sambashare

Y a partir de acá es lo mismo, que si lo instalaras del repositorio, crear la carpeta:

cd /mnt/samba
mkdir economia
chmod -R 0770 economia
chown root:sambashare economia

Y crear los usuarios:

useradd tania -s /bin/false -G sambashare
smbpasswd -a tania

Esto es todo. Adjunto la configuración usada la cual recomiento estudiarse pues tiene opciones muy interesantes, como son:

0- Evitar que los usuarios invitados vean los recursos compartidos.

1- Habilitar autenticación de usuarios obligatoria

2- Habilitar sólo los recursos para IPs específicos

3- Mejorar el tratamiento del tráfico de red

4- Deshabilitar el uso de impresoras por Samba

5- Deshabilitar NETBIOS a nivel de configuración

6- En caso de ser necesario deshabilitar SMB1

7- Evitar que se suban archivos no permitidos al recurso compartido y de haberlos que no los muestre.

Entre otras.

[Referencias]
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/samba.html
https://docs.microsoft.com/en-us/windows/desktop/FileIO/microsoft-smb-protocol-and-cifs-protocol-overview

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.6 / 5. Recuento de votos: 8

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

4 comentarios

  1. Firefox 68.0 Firefox 68.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0

    Buenas tardes amigo, he implementado su manual para una infrastrucura de dominio ,la verdad funciona genial, muy bueno su aporte ademas de que en lo personal me ahorro muchos recursos de hardware, pero tengo un problema es que cada vez que reinicio la pc o la de los demas usuarios me desconecta la unidad de red me la deja con una cruzeta en rojo y tengo que eliminarla y volverla a crear, saludos y por favor ayudeme

  2. Firefox 72.0 Firefox 72.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0

    Hola Leslie. Te puedo hacer llegar mi tuto para que agregues la parte de fileserver usando usuarios virtuales por LDAP.
    Tengo una variante usando OpenMediaVault y otra que es Debian puro (este último lo hizo Ariel Alvarez @Mutantix)
    SL2

  3. Google Chrome 84.0.4147.135 Google Chrome 84.0.4147.135 GNU/Linux x64 GNU/Linux x64
    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36

    Muy bueno, gracias por el tutorial!

    • Waterfox 56.3 Waterfox 56.3 GNU/Linux x64 GNU/Linux x64
      Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0 Waterfox/56.3

      Un placer, hermano. Estamos para ayudarnos…

Responder a Adrian Cancelar la respuesta

Tu dirección de correo electrónico no será publicada.


*