En este artículo voy a explicar cómo restringir el acceso a un directorio compartido (típicamente conocido como share) de Samba por usuario y por IP/subred.
Supongamos que tenemos una configuración de share como la del artículo Agregar shares y usuarios a un servidor Samba:
[Compartido] comment = Nuevo share path = /var/samba/compartido guest ok = no browseable = no writable = yes write list = cfulanito create mask = 0777 directory mask = 0777
Previamente hemos creado el usuario "cfulanito" tal como explica el mencionado artículo, y deseamos restringir el acceso al share para mejorar la seguridad del servidor Samba.
Restringir acceso por usuario
Si deseamos que sólo el usuario "cfulanito" pueda acceder a "Compartido", es necesario recurrir a la opción valid users. Esta opción admite como parámetro una lista de nombres de usuarios y grupos (separados por espacios) que pueden acceder al share:
[Compartido] comment = Nuevo share path = /var/samba/compartido valid users = cfulanito guest ok = no browseable = no writable = yes write list = cfulanito create mask = 0777 directory mask = 0777
Con esta nueva configuración, sólo "cfulanito" podrá acceder al share "Compartido".
Si se requiere permitir el acceso a un grupo de usuarios, los nombres de grupo de usuarios Unix se identifican anteponiendo un arroba, por ejemplo:
valid users = cfulanito @wheel
Esta configuración permite el acceso a "cfulanito" y a todos los usuarios que pertenezcan al grupo "wheel".
Restringir acceso por IP/subred
Supongamos que además, deseamos que "cfulanito" sólo pueda conectarse al share desde un cliente ubicado en una subred o IP en particular, por ejemplo 192.168.37.0/24. Para ello se debe recurrir a la opción hosts:
[Compartido] comment = Nuevo share path = /var/samba/compartido valid users = cfulanito guest ok = no browseable = no writable = yes write list = cfulanito create mask = 0777 directory mask = 0777 hosts deny = ALL hosts allow = 192.168.37.0/24
Con esta configuración se niega el acceso a todas las IP, excepto aquellas que pertenezcan a la subred 192.168.37.0/24. Una vez más, la opción hosts allow permite especificar una mezcla de subredes y direcciones IP separadas por espacios.
Sin embargo, para el filtrado por IP, una opción más conveniente y segura consiste en utilizar directamente un firewall. De esta forma, el sistema operativo se encarga de permitir o denegar los accesos a los puertos de Samba para las direcciones IP y subredes en cuestión, antes de que los clientes puedan siquiera conectarse con el servidor Samba, evitando así cualquier tipo de vulnerabilidad en el demonio smbd.
Por ejemplo, para permitir el acceso al servidor Samba sólo a la subred 192.168.37.0/24, utilizar las siguientes reglas:
iptables -A INPUT -p tcp --sport 1024:65535 -s 192.168.37.0/24 --dport 139 -m state --state NEW -j ACCEPT iptables -A INPUT -p tcp --sport 1024:65535 -s 192.168.37.0/24 --dport 445 -m state --state NEW -j ACCEPT
Referencias
Fuente: linuxito
