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