Páginas

Mostrando entradas con la etiqueta samba. Mostrar todas las entradas
Mostrando entradas con la etiqueta samba. Mostrar todas las entradas

viernes, 11 de abril de 2025

Configuración de Zerotier Acceso a Servidor LAN vía SSH FreeBSD 14.2

Configuración para conectar clientes a un servidor FreeBSD via Zerotier y SSH

Instalación y configuración de Zerotier en el servidor FreeBSD

Instalación y puesta en marcha de Zerotier

 pkg install net/zerotier
 sysrc zerotier_enable=YES
 service zerotier start

Unirse a la Red Zerotier (192.168.192.0-24):

 zerotier-cli join <Network ID>

Reemplaza <Network ID> con el ID de tu red Zerotier (puedes verlo en Zerotier central).

Autorizar el servidor en Zerotier, aparecerá en la lista de miembros con su ID

Asigna una IP fija al servidor en la red Zerotier (por ej: 192.168.192.133).

Configuración del cortafuegos PF en el servidor FreeBSD

Habilitar IP Forwarding (Reenvío de paquetes):

echo "net.inet.ip.forwarding=1" >> /etc/sysctl.conf

Aplicar los cambios:

sysctl net.inet.ip.forwarding=1
net.inet.ip.forwarding: 1

Reglas PF (/etc/pf.conf)

# Macros
wan_if = "re0"               # Interfaz conectada al MikroTik (LAN)
lan_net = "192.168.88.0/24"  # Red local
zt_if = "zt1ocu1pr8e2sac"    # Interfaz ZeroTier
zt_net = "192.168.192.0/24"  # Red ZeroTier

# Opciones generales
set block-policy drop
set skip on { lo0, $zt_if }  # ZeroTier no necesita filtrado estricto
scrub in all fragment reassemble

# Reglas predeterminadas
block all
pass out quick keep state

# Permitir tráfico entre redes LAN y ZeroTier
pass quick from $lan_net to $zt_net
pass quick from $zt_net to $lan_net

# Permitir servicios desde la LAN (Samba, NFSv4, SSH)
pass in on $wan_if proto { tcp, udp } from $lan_net to any port { 139, \
445, 111, 2049, 22 }

# Permitir SSH desde ZeroTier (clientes externos)
pass in on $zt_if proto tcp from $zt_net to ($wan_if) port 22

# Reglas para ZeroTier (puerto UDP 9993 y comunicación entre peers)
pass in on $zt_if proto udp from any to any port 9993

# Permitir ICMP (pings y mensajes de error)
pass in inet proto icmp all icmp-type { echoreq, unreach }

Configuración de clientes Zerotier:

Instalar Zerotier en los dispositivos cliente

Unirlos a la red Zerotier

zerotier-cli join <Network ID> o mediante la app

Autoriza los clientes en Zerotier y asígnales IPs fijas si es necesario

Acceso SSH al servidor

Conectarse desde un cliente usando la IP de Zerotier del servidor

 ssh usuario@192.168.192.133

Ruta estática entre la red local (192.168.88.0/24) y Zerotier (192.168.192.0/24)

¿Por qué es necesaria?

Los clientes en Zerotier (192.168.192.0/24) no saben como llegar a la red local del servidor (192.168.88.0/24) por defecto.

La ruta estática indica a Zerotier que el servidor actúa como puerta de enlace para la red local.

Configuración en Zerotier Central:

Ir a su red en Zerotier
En Advanced > Managed Routes,
añadir:

 - Destination: 192.168.88.0/24
 - Via: 192.168.192.133 (IP Zerotier del servidor)

Explicación Técnica

Zerotier como VPN Layer 2:

Crea una red virtual donde todos los dispositivos aparecen como si estuvieran en la misma LAN, evitando la necesidad de port forwarding

Ruta estática:

Dirige el tráfico desde Zerotier hacia la red local a través del servidor, que actúa como router.

Regla de Cortafuegos en Mikrotik

Agregar una regla que permita el tráfico SSH desde la red ZeroTier hacia el servidor FreeBSD

# En Mikrotik (RouterOS CLI)

/ip firewall filter add chaind=filter action=accept protocol=tcp \
dst-port=22 src-address=192.168.192.0/24 comment="Permitir SSH desde ZeroTier"

El servidor usa la IP de ZeroTier para SSH, asegúrese de que SSH está configurado para escuchar en esa IP

# En /etc/ssh/sshd_config
ListenAddress 192.168.192.133

Reiniciar SSH después

service sshd restart

Verificaión:

Desde un cliente Zerotier, por ej: desactivo la conexión wifi de mi teléfono móvil y activo los datos para conectarme desde una red externa:

 ssh carlos@192.168.192.133


Captura de tráfico

 tcpdump -i zt1ocu1pr8e2sac

Optimizar ZeroTier:

- En /usr/local/etc/zerotier-one/zerotier-one.conf, configura allowManaged y allowGlobal para controlar el acceso a rutas:

   {
     "settings": {
       "allowManaged": true,
       "allowGlobal": false
     }
   }

Diagrama de Flujo

Esta configuración garantiza que solo los servicios necesarios estén expuestos, y la comunicación entre redes se realice de manera segura y controlada.

FreeBSD es genial!.

viernes, 26 de julio de 2024

Recursos Compartidos con Samba FreeBSD

Samba FreeBSD

SAMBA es un conjunto de programas originalmente creados por Andrew Tridgell y mantenidos en la actualizad por The SAMBA Team, bajo licencia Pública General GNU e implementado por sistemas basados en UNIX.

En el servidor

pkg install samba416
sysrc samba_server_enable="YES"

Crear conjunto de datos


zfs create zroot/usr/backup/dellhome
zfs create zroot/usr/backup/poolrecovery
zfs create zroot/usr/backup/publico
zfs create zroot/usr/backup/docs
zfs create zroot/usr/backup/codigo

El directorio público será propiedad del usuario y grupo nobody


chown nobody:nobody /usr/backup/publico

Archivo de configuracion

[global]
	unix charset 		= UTF-8
	workgroup 		= CORP
    	client min protocol 	= SMB3
    	server string 		= Samba Server Version %v en %L
	hosts allow 		= 127., 192.168.88., 10.10.10.
	netbios name 		= servidor
	security 		= user
    	passdb backend          = tdbsam
	load printers 		= no
    	domain master 		= yes
	guest account		= nobody
	printable		= no
	hide dot files		= yes
	log level		= 1 auth:5
	log file		= /var/log/samba/%m.log
	max log size 		= 10000
	deadtime 		= 60
	create mask 		= 0644
	directory mask 		= 0755
	map to guest 		= never
	wins support 		= yes 	 	 	
	interfaces 		= re0, 127.0.0.1, 192.168.88.160/24, 10.10.10.1/24
    bind interfaces only 	= yes 
	
[dellhome]
	comment		= FreeBSD
	path 		= /samba/dellhome
	public 		= no
	browseable 	= yes
	writeable 	= yes
	write list 	= carlos

[codigo]
	comment 	= Scripts
	path 		= /samba/codigo
	public 		= no
	read only 	= yes
	browseable 	= yes  	
	valid users 	= carlos
	write list 	= carlos

[poolrecovery]
	path 		= /samba/poolrecovery
	public 		= no
	writeable 	= yes
    	browseable	= yes
	guest ok 	= no
	valid users 	= carlos

[docs]
	comment		= Documentos
	path 		= /samba/docs
	public 		= no
	writeable 	= yes
	browseable 	= yes
    	valid users 	= @administradores

[public]
	comment		= Publico
	path		= /samba/publico
	public 		= yes
	writeable	= yes
	browseable	= yes
	guest ok	= yes

Que los permisos del sistema de archivos en /samba/publico sean seguros

chown -R nobody:nobody /samba/publico 

guest ok

Permite o no el acceso como usuario invitado, el valor puede ser Yes o No.

public

Define si se permite el acceso como usuario invitado, el valor puede ser Yes o No.

browseable

Permite o no mostrar este recurso en las listas de recursos compartidos, el valor puede ser Yes o No.

writable

Permite o no la escritura, es la opción opuesta a read only. El valor puede ser Yes o No. writable = Yes es lo mismo que read only = No y viceversa.

valid users

Define los usuarios o grupos, que podrán acceder al recurso compartido. Los valores pueden ser nombres de usuarios separados por comas o nombre de grupos precedido de @. Ejemplo: user1, user2, @contabilidad @administradores.

write list

Define que usuarios o grupos pueden acceder con permiso de escritura. Los valores pueden ser nombres de usuarios separados por comas o bien nombre de grupos precedidos de @. Ejemplo: user1, user2 , @contabilidad, @administradores.

admin users

Define usuarios o grupos que pueden acceder con permisos administrativos para el recurso. Pueden acceder realizando todas las operaciones como super-usuario. Los valores pueden ser nombres de usuarios separados por comas o bien nombre de grupos precedidos por una @. Ejemplo: user1, user2, @finanzas, @administradores.

directory mask

Define qué permisos en el sistema tendrán los subdirectorios creados dentro del recurso.

create mask

Define que permisos en el sistema tendrán los nuevos archivos creados dentro del recurso.

Iniciar el servicio SAMBA

service samba_server start

Reglas cortafuegos PF permitir tráfico samba

Como servidor es necesario abrir los puertos 137/udp, 138/udp, 139/tcp y 445/tcp

# /etc/pf.conf
...
pass in on $int_if proto { tcp, udp } from { 10.10.10.0/24, 192.168.88.0/24 } \
to $samba_ip port { 139, 445 }
pass in on $int_if proto udp from { 10.10.10.0/24, 192.168.88.0/24 } \
to $samba_ip port { 137, 138 }
...

Agregar usuario carlos a Samba

pdbedit -a carlos
new password:
retype new password

Activar acceso al usuario carlos

smbpasswd -e carlos
New SMB password:
Retype new SMB passwd:
Added user carlos

Reiniciar SAMBA

service samba_server restart

Conectar a un recurso compartido desde un cliente FreeBSD


Podemos usar indistintamente tanto la dirección IP del servidor FreeBSD como su nombre

cat /etc/hosts | grep tormenta
---
192.168.88.160   	tormenta
---

smbclient es parte de Samba, por tanto, es necesario instalar Samba

pkg install samba416

Debe existir el archivo smb4.conf de lo contrario smbclient falla:

smbclient: Can't load /usr/local/etc/smb4.conf - run testparm to debug it

touch /usr/local/etc/smb4.conf
echo "workgroup = CORP">/usr/local/etc/smb4.conf
echo "client min protocol = NT1">>/usr/local/etc/smb4.conf

Listar recursos compartidos por el servidor Samba

» smbclient -L tormenta
Password for [CORP\carlos]:

	Sharename       Type      Comment
	---------       ----      -------
	dellhome        Disk	  FreeBSD
	codigo          Disk      Scripts
	poolrecovery    Disk
	docs            Disk
	public          Disk      Permitido
	IPC$            IPC       IPC Service (Samba Server Version 4.16.11 en SERVIDOR)
Reconnecting with SMB1 for workgroup listing.

	Server               Comment
	---------            -------
	servidor	     Samba Server Version 4.16.11 en SERVIDOR
                         
	Workgroup            Master
	---------            -------
	CORP                 SERVIDOR

Conectar a un recurso compartido


$ smbclient -U carlos //192.168.88.160/dellhome
smb: \>

Las conexiones Samba actuales

root@tormenta: # smbstatus

Samba version 4.16.11
PID     Username   Group        Machine     Protocol Version  Encryption     Signing
--------------------------------------------------------------------------------------------------------
22653   carlos  carlos  192.168.88.51 (ipv4:192.168.88.51:39769)  SMB3_11  partial(AES-128-GMAC)
22472   nobody  nobody  192.168.88.51 (ipv4:192.168.88.51:21993)  SMB3_11      -         -

Service      pid     Machine       Connected at                   Encryption Signing
---------------------------------------------------------------------------------------------
IPC$         25576   solaris        Sun Jul 28 21:04:52 2024 CEST    -            -
public       22472   192.168.88.51  Sun Jul 28 10:48:09 2024 CEST    -            -
docs         22653   192.168.88.51  Sun Jul 28 11:17:03 2024 CEST    -            -
dellhome     61262   macbook-pro    Mon Jul 29 08:39:57 2024 CEST    -            -

No locked files

Listar sockets abiertos IPv4

root@tormenta: # sockstat -4
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
root     smbd       22653 34 tcp4   192.168.88.160:445    192.168.88.51:39769
carlos   sshd       22630 4  tcp4   192.168.88.160:22     192.168.88.51:42658
root     sshd       22628 4  tcp4   192.168.88.160:22     192.168.88.51:42658
root     smbd       22472 34 tcp4   192.168.88.160:445    192.168.88.51:21993
root     smbd       22478 34 tcp4   192.168.88.160:445    192.168.88.135:21996
root     smbd       13189 29 tcp4   127.0.0.1:445         *:*
root     smbd       13189 30 tcp4   127.0.0.1:139         *:*
root     smbd       13189 31 tcp4   192.168.88.160:445    *:*
root     smbd       13189 32 tcp4   192.168.88.160:139    *:*
root     nmbd       13182 16 udp4   *:137                 *:*
root     nmbd       13182 17 udp4   *:138                 *:*
root     nmbd       13182 18 udp4   192.168.88.160:137    *:*
root     nmbd       13182 19 udp4   192.168.88.255:137    *:*
root     nmbd       13182 20 udp4   192.168.88.160:138    *:*
root     nmbd       13182 21 udp4   192.168.88.255:138    *:*
root     sshd       92484 5  tcp4   *:22                  *:*
...

Conectar a un recurso compartido desde un cliente FreeBSD

Conectar a un recurso compartido desde un cliente MacOS

FreeBSD es genial!.

viernes, 16 de febrero de 2018

Samba en un Servidor Centos Linux

Configuración de Samba en Centos

Protocolo SMB

SMB (Server Message Block), también llamado CIFS (Common Internet File System), es un protocolo del nivel de presentación del modelo OSI de TCP/IP creado por IBM en el año 1985.

Samba

SAMBA es un conjunto de programas originalmente creados por Andrew Tridgell y mantenidos por The Samba Team.

Instalar a través de yum

# yum -y install samba samba-client samba-common

Abrir los puertos 135 al 139 (TCP Y UDP) y el puerto 445 (TCP).

Utilizando desde la consola el mandato iptables


# ptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT

# iptables -A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

# service iptables save

O editar el archivo /etc/sysconfig/iptables y añadir lo siguiente

-A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

# service iptables restart

SELinux y el servicio smb

Con la finalidad de que SELinux permita al servicio smb la escritura como usuario anónimo, ejecute:

# setsebool -P allow_smbd_anon_write 1

A fin de que SELinux permita al servicio smb funcionar como Controlador Primario de Dominio (PDC)

# setsebool -P samba_domain_controller 1

Para que SELinux perminta al servicio smb compartir los directorios de inicio de los usuarios locales del sistema, ejecute:

# setsebool -P samba_enable_home_dirs 1

A fin de que SELinux desactive la protección para los directorios de inicio de los usuarios a través de smb, ejecute:

# setsebool -P use_samba_home_dirs 1

Con la finalidad de que SELinux permita al servicio smb crear nuevos directorios de inicio para los usuarios a través de PAM (operación común en PDC, ejecute

# setsebool -P samba_create_home_dirs 1

Para que SELinux permita al servicio smb funcionar como un organizador de mapa de puertos (portmapper):

# setsebool -P samba_portmapper 1

Para que SELinux permita al servicio smb ejecutar guiones dentro del directorio /var/lib/samba/scripts sin confinamiento:

# setsebool -P samba_run_unconfined 1

Con el fin de que SELinux permita al servicio smb compartir todos los recursos en modo de sólo lectura:

# setsebool -P samba_export_all_rw 1

Para que SELinux perminta al servicio smb compartir todos los recursos en modo de lectura y escritura:

# setsebool -P samba_export_all_rw 1

Mandato chcon

Para definir que un directorio será compartido a través del servicio smb y que debe considerarse como contenido Samba, por ejemplo /var/samba/publico:

# chcon -t samba_share_t /var/samba/publico

Antes de configurarse en el el archivo /etc/samba/smb.conf, cada nuevo directorio que se vaya a compartir debe ser configurado como se ha descrito anteriormente.

Iniciar el servicio

# service nmb start
# service smb start

Añadir el servicio al arranque del sistema

# chkconfig nmb on
# chkconfig smb on

Después de aplicar cambios al archivo de configuración de Samba es necesario reiniciar el servicio smb

# service smb restart

El servicio nmb es el encargado de proveer el servidor de nombre para los clientes a través de NetBios sobre IP. Por tanto, debe reiniciar el servicio nmb si realiza cualquier cambio en la configuración de la opción netbios name

# service nmb restart

Alta de cuentas de usuario

Primero asigne una contraseña al usuario root (no tiene que ser la misma utilizada en el sistema).

# smbpasswd -a root

La sincronización de cuentas entre el servidor Samba y las estaciones Windows se realiza ingresando el mismo nombre de usuario y contraseña tanto en el servidor Samba como en la máquina Windows.

La mayoría de las cuentas de usuario que se utilizan para acceder a Samba no requieren acceso al intérprete de comandos del sistema, no hace falta asignar una contraseña con el mandato passwd. El intérprete de comandos quedará definido como /sbin/nologin o /bin/false para la cuenta de usuario. Esta cuenta en cuestión estará inactiva para el resto de servicios.

# useradd -s /sbin/nologin andrius
# smbpasswd -a andrius

Archivo lmhosts

Se utiliza para resolver de manera local los nombres NetBios, asociándolos con su dirección IP correspondiente. El nmbre NetBios no debe exceder los doce caracteres alfanuméricos. Como mínimo debe definirse el nombre del anfitrión del servidor Samba junto a su dirección IP.

# vi /etc/samba/lmhosts
127.0.0.1      localhost
192.168.0.1      servidor

Configuración básica del archivo smb.conf

# vi /etc/samba/smb.conf

La opción workgroup define el grupo de trabajo

workgroup = MYGROUP

Opción netbios name

Define un nombre de anfitrión distinto al detectado automáticamente. Debe ser el mismo que aparece en el archivo /etc/samba/lmhosts

netbios name = servidor

Opción server string

server string = Servidor Samba %v en %L

Opción hosts allow

En esta entrada del archivo smb.conf se pueden definir direcciones IP o redes que tendrán permiso de acceso hacia el servidor. Por tanto, una red con anfitriones con direcciones IP desde 192.168.0.1 hasta 192.168.0.254, el rango de direcciones IP definido en hosts allow será 192.168.0., (los tres primeros octetos).

Vamos a definir las redes 192.168.0.0/24, 102.168.1.0/24 y 192.168.3.0/24 como vimos con anterioridad utilizando los tres primeros octetos de la dirección IP de red, en el caso de cualquier dirección IP de la red 127.0.0.0/8 se define sólo el primer octeto de dicho segmento.

hosts allow = 127., 192.168.0., 192.168.1., 192.168.3.

Opción name resolve order

Define el orden en que se intenta de resolver los nombres NETBIOS. Primero con la información del archivo /etc/samba/lmhosts, luego el archivo /etc/hosts, a continuación de consultas en el servidor WINS y, si todo lo anterior falla, a través de la dirección IP de difusión de la red local.

name resolve order = lmhosts hosts wins bcast

Gestor de archivos Nautilus

Esta configuración es necesaria para el gestor de archivos predeterminado de Gnome, Nautilus y además que se especifique wins en el orden de resolución de nombres del archivo /etc/nsswitch.conf del anfitrión desde el cual se ejecute.

# vi /etc/nsswitch.conf

hosts:    files dns

al final agregje wins

hosts:    files dns wins

Opción remote announce

remote announce = 192.168.3.127, 192.168.1.255

Reinicie los servicios para aplicar los cambios.

# service smb restart
# service nmb restart

Compartir directorios

Crear el directorio /var/samba/publico

# mkdir -p /var/samba/publico

Cambiar el contexto de SELinux para que este directorio sea considerado como contenido Samba.

# chcon -t samba_share_t /var/samba/publico


[publico]

comment = Recurso compartido publico

path = /var/samba/publico

guest ok = yes

read only = yes

write list = andrius

directory mask = 0755

create mask = 0644

Listas de control de acceso ACL

setfacl se utiliza para cambiar los permisos en las listas de control de acceso de un archivo o directorio dado. Asignar cambiar permisos de lectura, escritura y ejecución al usuario andrius

Crear el usuario y agregarlo al grupo samba

# useradd -s /sbin/nologin andrius
# smbpasswd -a andrius
# passwd andrius

# setfacl -m u:andrius:rwX /var/samba/publico

Se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso a directorios evitando aplicar el bit de ejecución a los archivos.

getfal se utiliza para determinar los permisos establecidos en las listas de control de acceso de un archivo o directorio.

# getfacl /var/samba/publico/

getfacl: Eliminando '/' inicial en nombres de ruta absolutos

# file: var/samba/publico/

# owner: root

# group: root

user::rwx

user:andrius:rwx

group::r-x

mask::rwx

other::r-x


Estos permisos que se establecieron en la lista de control de acceso del directorio /var/samba/publico son exclusivamente para éste. Cualquier nuevo archivo o directorio creado carecerá de estos nuevos permisos. Si se desea que éstos permisos se vuelvan los predeterminados para los nuevos archivos y directorios que sean creados en lo sucesivo dentro del directorio /var/samba/publico, se ejecuta el mismo mandato setfacl, pero añadiendo la opción -d para definir que serán los permisos  predeterminados  para nuevos archivos  y directorios.

Lo anterior muestra que sólo el propietario del directorio tiene permisos de lectura, escritura y acceso. Para lograr que un usuario en particular pueda acceder también a este directorio, se ejecuta el mandato setfacl, con la opción -m para modificar la lista de control de acceso, [u,g,o]:[usuario,grupo]:[r,w,x] y la ruta del directorio como argumentos. Ejemplo:

setfacl -m u:usuario:rX /var/samba/publico

En el ejemplo anterior se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso de a directorios evitando aplicar el bit de ejecución a los archivos.

Lo mismo en notación octal

# setfacl -m u:usuario:5 /var/samba/publico

Editar el archivo /etc/samba/smb.conf y al final añada el siguiente contenido


[publico]

comment = Recurso compartido publico 

path = /var/samba/publico

guest ok = yes

read only = yes

write list = andrius

directory mask = 0755

create mask = 0644


# service smb restart

Ocultando archivos que empiezan por punto.

Los archivos cuyo nombre comienza con un punto (archivos de configuración, normalmente), como es el caso del directorio de inicio del usuario en el servidor Samba (.bash_profile, .bashrc, .bash_history entre otros) pueden ocultarse con la opción hide dot files y el valor Yes.

[homes]
    comment = Home Directories
    browseable = no
    writable = yes
    valid users = %S
    inherit acls = yes
    hide dot files = yes

Reinicie el servidor smb para que los cambios tengan efecto

# service smb restart


Montar recursos compartidos desde un cliente Linux

$ cat /etc/hosts
127.0.0.1        localhost.localdomain localhost
::1        localhost6.localdomain6 localhost6
192.168.0.1    servidor

# mkdir /mnt/publico

# mount.cifs -o username=andrius //servidor/publico /mnt/publico

Solicitará la contraseña del usuario utilizado en el servidor Samba

Password for andrius@//servidor/publico:

# mount | grep publico
//servidor/publico on /mnt/publico type cifs (rw)

Cree el archivo /etc/acreditar para hacer permanente lo anterior.

# vim /etc/acreditar

Especifique el nombre de usuario y contraseña utilizados con el recurso compartido.

username=andrius
password=password

Cambiando los permisos de acceso al archivo para que sólo el usuario root pueda ver y modificar el contenido.

# chmod 600 /etc/acreditar

# vim /etc/fstab

Este recurso será montado automáticamente en el siguiente reinicio del sistema. Agregue la siguiente línea incluyendo las opciones uid y gid

//servidor/publico /mnt/publico cifs credentials=/etc/acreditar,uid=501,gid=501 0 0

Utilizar smbclient desde Linux

Lo más práctivo y sencillo para hacer pruebas es el mandato smbclient. Permite acceder hacia cualquier servidor Samba y Windows.

# smbclient -U andrius -L servidor


Conectar un cliente Windows al servior Samba

Esta máquina está en la red 192.168.3.0/25 detrás de un firewall router Soekris y OpenBSD.






https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/pdf/system_administrators_guide/Red_Hat_Enterprise_Linux-7-System_Administrators_Guide-en-US.pdf

Centos es genial!.

martes, 28 de junio de 2016

Samba 4 ipfw en FreeBSD 10.3

Configurar Samba4 e ipfw firewall

Nivel: Avanzado

$ cat /boot/loader.conf
...
autoboot_delay="2"
loader_logo="beastie"
sem_load=YES
mqueuefs_load=YES

Samba es una implementación libre del protocolo de archivos compartidos de Windows (SMB y CIFS) para sistemas de tipo UNIX. De manera que nuestro pc con FreeBSD se vea como servidor de archivos en redes Windows.

Dirección IP del servidor Samba

$ cat /etc/rc.conf | grep ifconfig_em0
ifconfig_em0="inet 192.168.1.110 netmask 255.255.255.0"

# hostname
root@fbsdsmb

Instalar samba42
# pkg search samba
# pkg install samba42

Un solo usuario accediendo a su directorio personal

La forma más fácil de configurar un cliente es crear una cuenta Unix y su correspondiente directorio personal para el cliente en el servidor, luego  notificar a Samba la existencia de ese usuario. Posteriormente en el fichero de configuración de Samba se creará un recurso de disco compartido que apunte al directorio personal del usuario y a traves de valid users restringiremos su acceso.

# adduser
...

# smbpasswd -a luca

[luca]
path = /home/luca
comment = Luca's Home Directory
writeable = yes
valid users = luca

o puedes referirte al directorio personal del usuario usando la variable %H. También puedes utilizar las variables de nombre de usuario Unix %u y de nombre de usuario cliente %U.

[luca]
comment = %U Home Directory
writeable = yes
valid users = luca
path = %H

Estos dos ejemplos funcionan mientras el usuario Unix que Samba utiliza para referirse al cliente tiene derechos de lectura/escritura sobre el directorio al que se refiere la opcion path.

Agregar usuario luca a Samba
# smbpasswd -a luca

Acceso de grupo a un recurso compartido

Si estás creando un directorio compartido para acceso de grupo, hay varios pasos adicionales a realizar. Vamos a echar un vistazo a un recurso compartido para el departamento de Contabilidad en el fichero smb4.conf:

[contabilidad]
comment = Directorio Departmento de Contabilidad
writeable = yes
valid users = @cuenta
path = /srv/accounting
create mode = 0660
directory mode = 0770

@account como el usuario válido en lugar de uno o más nombres de usuario individuales es un atajo para decir que los usuarios válidos están  representados por el grupo Unix cuenta. Estos usuarios necesitan ser añadidos al grupo cuenta en el fichero de grupos del sistema (/etc/group) para ser reconocidos como parte del grupo. Una vez que lo son, Samba los reconocerá como usuarios válidos para el recurso compartido. Necesitarás crear un directorio compartido para que los miembros del grupo tengan acceso, que será mapeado a través de la opción de configuración path.


# mkdir /srv/accounting
# chgrp cuenta /srv/accounting
# chmod 770 /srv/accounting

Crear grupo cuenta
# pw groupadd cuenta

Agregar usuario luca al grupo cuenta
# pw groupmod cuenta -M luca

Ejemplos de usuarios, grupos y comparticiones

Crear los directorios
# mkdir -p /svr/p
# mkdir /svr/s
# mkdir /svr/t
# mkdir /srv/public

Añadir los usuarios al sistema FreeBSD
# adduser
Username: prof
...
# adduser
Username: super
...
# adduser
Username: argo
...
# adduser
Username: invitado
...
# adduser
Username: susiaxel

Establecer los usuarios propietarios de los directorios

# chown -R prof:prof /svr/p
# chown -R super:super /svr/s
# chown -R argo:prof /svr/t
# chown -R invitado:invitado /svr/public

Crear nuevos grupos

# pw groupadd stp
# pw groupadd tp

Agregar usuario super al grupo stp

# pw groupmod stp -M super

Agregar usuarios argo y prof al grupo tp

# pw groupmod tp -M argo,prof

Agregar usuarios invitado y susiaxel al grupo invitado

# pw groupmod invitado -M invitado,susiaxel
# pw groupshow tp
tp:*1009:prof,argo
# pw groupshow invitado
invitado:*:1007:invitado,susiaxel

Archivo de configuración de Samba /usr/local/etc/smb4.conf

##############INICIO###############
[global]

invalid users = root bin daemon adm sync shutdown \
halt mail news uucp operator gopher
workgroup = MYOFFICE
server string = My Office Server
dos charset = cp850
unix charset = UTF-8
fstype = NTFS
security = user
encrypt passwords = yes
wins support = yes
name resolve order = wins lmhosts hosts bcast
max open files = 16384
use mmap = yes
unix extensions = no
hosts allow = 192.168.1. 192.168.3. localhost

# Debug logging information
log level = 2
log file = /var/log/samba4/samba.log.%m
max log file = 100
debug timestamp = yes

# Browsing election options
os level = 34
local master = yes

[homes]

comment = Home Directories
browseable = no
writeable = yes
directory mask = 0750
create mask = 0644

[luca]

comment = %U Home Directory
writeable = yes
valid users = luca path = %H

[contabilidad]

comment = Directorio Departmento de Contabilidad
writeable = yes
valid users = @cuenta
path = /srv/accounting
create mode = 0660
directory mode = 0770

[public]

comment = public
path = /srv/public
public = no
writeable = yes
write list = @invitado
directory mask = 0770
create mask = 0660

[super]

comment = super
path = /srv/s
public = no
writeable = yes
write list = super
directory mask = 0750
create mask = 0644

[profesores]

comment = Profesores
path = /srv/p
public = no
writeable = yes
write list = prof, @stp
directory mask = 0750
create mask = 0644

[alumnos]

comment = alumnos
path = /srv/t
public = no
writeable = yes
write list = super, @tp
directory mask = 0770
create mask = 0660
#############FINAL###############

Habilitar Samba server

# echo 'samba_server_enable="YES"'>>/etc/rc.conf

Iniciar el servicio
# service samba_server start

Opciones de ficheros de registro

Hemos añadido un fichero de registro de usuario que reporta información de depuración de nivel 2. El nivel 2 nos proporcionará información útil sin ocupar mucho espacio en disco en el sevidor.

Este fichero está localizado en el directorio /var/log/samba4 definido con la opción log file del fichero de configuración. Podemos usar una de las variables proporcionada por Samba para crear ficheros de registro independientes para cada cliente, como la variable %m.
log file = /var/log/samba4/samba.log.%m

Aislar los mensajes de registro puede resultar útil en el momento de tener que rastrear un error de red si el problema viene de una máquina o cliente determinado. Ninguno de ellos puede exceder en tamaño de 100 kb, indicado en la opción log size.

La fecha y la hora de la depuración en los registros nos la proporciona la opción debug timestamp, el cual es el valor por defecto. Coloca una cadena de fecha y hora en el formato timestamp junto a cada mensaje en el fichero de registro.


Recurso compartido homes

La sección [homes] puede representar cualquier cuenta en la máquina, esto no es deseable. Por ejemplo, podría crear un recurso compartido para root, bin, uucp y similares. La opción invalid users protege frente a esto.

Si un usuario intenta conectar a un recurso compartido ordinario que no aparece en el fichero smb.conf, Samba va a buscar el recurso compartido [homes]. Si no existe, el nombre del recurso compartido enviado a Samba se asume como un nombre de usuario y se busca como tal su contraseña en la base de datos (/etc/passwd) del servidor Samba. Si aparece, Samba asume que el cliente es un usuario Unix intentando conectar a su directorio personal.

Si susi esta intentando conectar a un recurso compartido llamado [susi] en el servidor Samba. Existe un recurso compartido [homes], No hay un recurso compartido con ese nombre en el fichero de configuración, el usuario susi está presente en la base de datos de contraseñas entonces, Samba crea un nuevo recurso compartido llamado [susi] con el  especificado en la seccion, Samba la inicializa a su directorio personal. Samba inicializa las opciones del nuevo recurso a partir de las opciones por defecto de la sección [globals], por último conecta al cliente susi a este nuevo recurso.

Aumentar la seguridad

Hemos visto que ocurre cuando especificas usuarios válidos, también puedes establecer una lista de usuarios no válidos, a los que nunca les será permitido acceder a Samba o a sus recursos. Esto se hace con la opción invalid users. Un valor por defecto relacionado con la sección [homes] para asegurar que determinados usuarios y superusuarios del sistema no pueden ser manipulados o alterados para conseguir acceso a éste.

[global]

invalid users = root bin daemon adm sync shutdown \
halt mail news uucp operator gopher

Por conveniencia, decidimos habilitar la opción del fichero Samba hosts allow = 192.168.1. 192.168.3. localhost que permite conectar con nuestro servidor desde las redes: 192.168.3.0/25 y 192.168.1.0/24. Una vez hecho esto cambiaremos la dirección IP del servidor a la dirección 192.168.3.110 para que quede detrás de nuestro firewall basado en openbsd, soekris y pf, configurado en un artículo anterior cuya IP es 192.168.3.1 y con DHCP activado.

Cambiar IP y puerta de enlace del servidor:

# ee /etc/rc.conf
ifconfig_em0="inet 192.168.3.110 netmask 255.255.255.128"
defaultrouter="192.168.3.1"
...

Cambios en el Firewall ipfw

A continuación añadimos estas dos líneas al fichero de configuración del firewall /etc/ipfw.rules

add 5139 allow tcp from 192.168.3.0/25 to any 139 keep-state setup
add 5300 allow ip from 192.168.3.0/25 to 192.168.3.0/25

Conexiones físicas

Conectamos los cables ethernet al router Soekris de las máquinas involucradas. En este caso nuestro servidor, la máquina win xp, la máquina win 7, cualquier otra máquina conectadas directamente al router cuya ip es 192.168.1.1 (proveedor ISP) también podrá acceder a los recursos del servidor como ya hemos visto.

# service samba_server restart
# service ipfw restart

El servidor Samba está actuando como visualizador maestro local para la actual subred

nmbd/nmbd_become_lmb.c:become_local_master_stage2
*****
Samba name server FBSDSMB is now a local master browser for
workgroup MYOFFICE on subnet 192.168.3.110
****

write list - Una lista de usuarios o grupos (nombres de grupo tienen el prefijo @) que será capaz de escribir a este recurso compartido. Los permisos de usuarios adecuados todavía tienen que ser establecidos en el directorio.

directory mask - por defecto - 0755
create mask - por defecto - 0744
force create mode - por defecto - 000
force directory mode - por defecto - 0000

En Samba en lugar de definir lo que está restringido, define lo que está permitido.

Los siguientes valores de las opciones definidas de un recurso compartido en smb4.conf :

directory mask = 0700
create mask = 0600

directory mask. Permite al usuario propietario permisos de lectura, escritura y ejecución. Al grupo y otros no les permite ni leer, ni escribir, ni ejecutar (no tendrán acceso a este directorio).

create mask. Permisos de lectura, escritura al usuario propietario. El grupo y otros no tienen permisos de lectura ni escritura.

create mask = 744

Por ejemplo, la opción create mask forzará que los permisos de un archivo creado por un cliente Windows sean, como mucho, 744

mientras que la opción directory mask que mostramos a continuación forzará los permisos de un recién creado directorio a, como mucho, 755:

directory mask = 755

directory mask - Recomendamos la máscara 0750 o rwxrx, eliminando la posibilidad de acceso al resto de usuarios que no son tú, y no pertenecen a tu grupo. 

create mask - Si necesitas cambiarlo a archivos no ejecutables, recomendamos 0644, o rw−r−r−.

Como ejemplo, considere los siguientes valores de las opciones definidas de un recurso compartido en smb4.conf :

create mask = 0770
directory mask = 0770

Esto permitiría ambos, archivos y directorios leer, escribir y ejecutar permisos para usuario y grupo, pero no a otros. Al mismo tiempo, obliga al grupo permisos leer y escribir para archivos y de lectura, escritura y ejecución para los directorios.

testparm comprueba la existencia de errores en el fichero de configuración del servidor Samba

# testparm

Solucionar errores 

# sysctl kern.maxfilesperproc=16384
kern.maxfilesperproc: 14040 -> 16384
# sysctl kern.maxfiles=16384
kern.maxfiles: 14040 -> 16384

Hacer permanente los cambios

# echo 'kern.maxfilesperproc=16384'>>/etc/sysctl.conf
# echo 'kern.maxfiles=16384'>>/etc/sysctl.conf

Que está ofreciendo el servidor a la red

# smbclient -U% -L localhost


Sincronizar usuarios

Esto se puede resolver de tres maneras: en primer lugar al mantener manualmente los usuarios de FreeBSD y sincronizar con una base de datos de usuario Samba - específica mediante la utilidad smbpasswd. Esta utilidad se comporta de manera similar a la utilidad "pw". Es la solución más simple y se recomienda para pequeñas instalaciones con varios usuarios, que muy rara vez cambian sus contraseñas. Tenga en cuenta que primero tendrá que añadir un usuario a FreeBSD (shell-nologin), y luego añadir un usuario Samba con el mismo nombre usando "smbpasswd -a".

Despúes de añadir usuarios a FreeBSD lo agregamos a Samba 

# smbpasswd -a super
# smbpasswd -a prof
# smbpasswd -a argo
# smbpasswd -a invitado
# smbpasswd -a susiaxel


Implementación del firewall ipfw

Los firewalls de red bloquean (previenen) a ciertos tipos de paquetes de red llegar a determinados servicios del sistema. la práctica moderna de seguridad es en realidad para bloquear todos los paquetes excepto un pequeño conjunto de elegidos, con el fin de reducir al mínimo la superficie de ataque, o el número y el alcance de los servicios que están expuestos a la red.

En este caso permitimos todo tráfico IP mediante la interfaz loopback, ssh, http, https, samba-cifs, permitir todos los paquetes IP independientemente del protocolo o cualquier otro detalle de todas las direcciones en una red local a todas las direcciones en la misma red, Niega todos los demás paquetes de red y los registra en syslog.

# cat /etc/ipfw.rules

###########INICIO####################
add 500 allow ip from any to any via lo0

add 1000 allow icmp from any to any

add 2000 allow tcp from me to any setup keep-state

add 2001 allow udp from me to any keep-state

add 4022 allow tcp from any to me 22 setup keep-state

add 4080 allow tcp from any to me 80, 443 setup keep-state

add 4139 allow tcp from 192.168.1.0/24 to any 139 keep-state setup

add 5000 allow ip from 192.168.1.0/24 to 192.168.1.0/24

add 5139 allow tcp from 192.168.3.0/25 to any 139 keep-state setup

add 5300 allow ip from 192.168.3.0/25 to 192.168.3.0/25

add 65400 deny log ip from any to any
###############FINAL#####################

# echo 'firewall_enable="YES"'>>/etc/rc.conf
# echo 'firewall_type="/etc/ipfw.rules"'>>/etc/rc.conf

# service samba_server restart
# service ipfw restart

# netstat -a | grep ipv4
# ipfw list


Eleccion de Visualizador

Samba puede usar una elección de visualizador para una variedad de resultados, incluyendo el ser siempre el visualizador maestro local de la subred o no serlo nunca. Por ejemplo, las siguientes opciones (sección global), asegurará que Samba siempre gane la elección de visualizador maestro local, sin importar qué otras máquinas estén presentes en la red:

# Browsing election options
os level = 34
local master = yes

Saber si una máquinan es el visualizador maestro local

Usando el comando nbtstat puedes saber si una máquina es el visualizador maestro local. Coloca el nombre NetBIOS de la máquina que quieras interrogar tras la opción −a:

C:\> nbtstat -a fbsdsmb


La línea que estás buscando es ..__MSBROWSE__.<01>. Indica que el servidor está actuando como el visualizador maestro local para la actual subred. 

Conectar con un recurso compartido desde un ordenador con Windows XP. 

En este caso utilizando el nombre del servidor y el nombre del recurso compartido (alumnos), que pertenece al usuario argo. El nombre de usuario y la contraseña que fueron creadas en el cliente deben coincidir con la combinación usuario/contraseña del servidor.


Desde un ordenador con Windows 7 conectamos con un recurso compartido. Los usuarios solo podrán acceder a los archivos y carpetas cuyos permisos sean establecidos en el archivo smb4.conf.


Referencias:
https://wiki.freebsd.org/Samba
https://www.freebsd.org/doc/faq/
http://es.tldp.org/Manuales-LuCAS/USANDO-SAMBA/usando-samba.pdf

Unix es genial!.

miércoles, 4 de marzo de 2015

Samba compartir archivos en un grupo de trabajo


Version recomendada 4.0 porque la 4.1 no contiene el modulo pam_smbpass disponible en el paquete samba4.

Autor : Ivan Voras

Configuracion inicial

La configuracion de Samba se realiza en un simple archivo de configuracion,
/usr/local/etc/smb4.conf cuyas opciones estan documentadas en smb4.conf(5) main paginas.

[global]
workgroup = MIOFICINA
server string = Servidor Trabajo
dos charset = cp852
unix charset = UTF-8
security = user
encrypt passwords = yes
socket options = TCP_NODELAY SO_RCVBUF=262144
SO_SNDBUF=262144
use sendfile = yes
use mmap = yes
unix extensions = no
wide links = yes
[homes]
comment = Home Directories
browseable = no
writeable = yes
directory mask = 0770
create mask = 0660
[public]
comment = Public
path = /srv/public
public = no
writeable = yes
write list = @wheel
directory mask = 0770
create mask = 0660

La estructura es similar a ficheros .INI de Windows.

Entre las secciones de configuracion globales:

- workgroup - el nombre de Windows (entorno de red)
- server string - descripcion que se muestra en el explorador de Windows
- dos charset - conjunto de caracteres utilizado por las aplicaciones no unicode en el lado cliente
- unix charset - conjunto de caracteres se utilizaran en el Servidor para almacenar nombre de archivos
- security - user es la utilizada en versiones de escritorio de Windows xp, 7.
- encrypt passwords - obliga a los clientes a transmitir solo contrasenas cifradas.
- socket options - define opciones de socket de red; desactiva algoritmo Nagle's y establece tamanos de bufer grande.
- use sendmail, use nmap - activa algunas optimizaciones genericas en el acceso a archivos y servicios
- unix extensions, wide links - extensiones unix sólo son útiles para los clientes Unix, no Windows.

Otra seccion especial es homes, establece el modo en que tradicionalmente los directorios home Unix seran automaticamente compartidos con samba y puede contener cualquier opciones de configuracion disponible para configurar comparticiones.

- comment - descripcion visible en el explorador de Windows
- browseable - los directorios de inicio que estaran visible en el explorador de Windows
- writeable - cualquier usuario bajo cualquier circunstancia podran escribir a este recurso compartidos
- directory mask - al crear nuevos directorios seran propiedad del usuario que los crea y su grupo de Unix se establecera en el grupo predeterminado de este usuario, pero los permisos de archivo de Unix se estableceran en la mascara de numero octal tradicional dada en esta directiva.
- create mask - similar a directory mask pero para archivos ordinarios.

La seccion public la configuraremos como un recurso compartido accesible a todos los usuarios del sistema grup "wheel" y la colocaremos en el directorio /srv/publico. Las opciones adicionales son:

- path - el directorio que sera compartido
- public - accesible sin contrasena
- write list - lista de usuarios o grupos (nombres de grupo con el prefijo @), que podran escribir en este recurso compartido (los usuarios tienen que tener los adecuados
permisos dentro del propio directorio).

Despues de creado el archivo smb4.conf, Samba tiene que ser activado agregando la siguiente linea al archivo /etc/rc.conf

samba_server_enable="YES"

Sincronizando usuarios

Samba tiene que asignar usuarios que los clientes Windows utilizan para los usuarios del sistema. En otras palabras, cada usuario Windows necesita ser usuario del sistema Unix
 para que coincidan. Los sistemas Unix y Windows almacenan las contrasenas en formatos totalmente incompatibles. Para resolverlo hay que mantener manualmente los usuarios FreeBSD
 y Sincronizar con una base de datos de usuarios Samba especifica mediante la utilidad sbmpasswd (una combinacion de adduser, deleuser, etc). Es una solucion simple recomendada
 para pequenas instalaciones con varios usuarios que rara vez cambian sus contrasenas. Hay que tener en cuenta que primero tendra que agregar un usuario FreeBSD y luego un
 usuario Samba con el mismo nombre con:

 "smbpasswd -a"

 Una segunda manera de hacer lo mismo es replicar las dos bases de datos de contrasenas. En este escenario, tanto la base de datos de usuarios FreeBSD como la de Samba existen en el mismo
 tiempo, pero las contrasenas son copiadas de uno a otro segun sea necesario. Agregar la linea siguiente:

 pam password change = yes

 a la seccion global de smb4.conf para permitir a los usuarios cambiar la contrasena de Windows, que Samba propagara a la base de datos de los usuarios del sistema FreeBSD.
 En el otro sentido (cambiar la contrasena del ususario del sistema y propagarla a la base de datos de los usuarios Samba se puede activar anadiendo la siguiente linea
 al archivo /etc/pam.d/system:

 auth optional
 /usr/local/lib/pam_smbpass.so migrate

 y la linea siguiente al archivo /etc/pam.d/passwd

 passwd required
 /usr/local/lib/pam_smbpass.so nullok use_authtok try_first_pass

 Esto permitirá a los usuarios a cambiar tanto su contraseña FreeBSD y Samba contraseña en
al mismo tiempo mediante la utilidad "passwd" , así como migrate (copia) su FreeBSD
contraseña para la base de datos Samba la próxima vez que inicien sesión.
Tenga en cuenta que usted todavía necesita para mantener la pertenencia a grupos fuera de Samba, en el /etc/group, y que los usuarios todavía tienen que ser creado con el argumento

smbpasswd -a

en la base de datos de Samba.

La ultima manera es tener la base de datos de usuario principal sólo en Samba, y utilizar el Winbind facilitado por Samba para que aquellos usuarios a disposición del sistema a través de los mecanismos PAM y NSS. De esta manera que, no es necesario crear o mantener usuarios y grupos FreeBSD, sólo los usuarios y grupos de samba, y FreeBSD los trata como si fueran usuarios locales del sistema .

Permisos de archivo

Listas ACL de estilo de Windows pueden introducirse añadiendo la opción de montaje " nfsv4acls " al sistema de archivos deseado, y permitiendo que el "zfsacl" VFS plugin smb4.conf, la entrada fstab debería tener este aspecto:

/dev/da0p2 / ufs rw,nfsv4acls 1 1

Las entradas adicionales para la seccion global en el archivo nfs4.conf son:

vfs objects = zfsacl
map acl inherit = Yes
inherit permissions = Yes
inherit acls = Yes
store dos attributes = Yes

Unix es genial!.

lunes, 16 de diciembre de 2013

Instalar y congurar Samba FreeBSD

Samba en servidor FreeBSD 9.1

Samba fue creado para proveer servicios de archivos e impresión para todo tipo de clientes SMB/CIFS, incluyendo las diferentes versiones de los sistemas operativos windows. Andrew Tridgell desarrollo Samba en 1992 utilizando ingerieria-inversa.

# cd /usr/ports/net/samba3
# make config

En el menú que aparece deseleccione LDAP presionando la barra espaciadora.

Instalar samba
# make install clean
# rehash

Archivo de configuración:
# ee /usr/local/etc/smb.conf

[global]
workgroup = FREEBSD
server string = Unix Servidor de Archivos
security = user
hosts allow = 192.168.1. 192.168.3. 127.

log file = /var/log/samba/log.%m
max log size = 50

display charset = ISO8859-15
unix charset = ISO8859-15
dos charset = 850

[homes]
comment = Home Directories
browseable = no
writable = yes

[compartido]
comment = Compartido Unix Windows
path = /compartido
valid users = compartido
public = no
writable = yes

Ejecutar demonios desde inetd:


Releer archivo de confiuración

# killall -1 inetd


Comprobar errores de sintaxis:
# testparm

Usar el comando adduser para añadir usuario unix:

# adduser
Username: compartido
Full name: compartidou
Uid (Leave empty for default):
Login group [compartido]:
Login group is compartido. Invite compartido into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]:
Home directory [/home/compartido]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : compartido
Password   : *****
Full Name  : compartidou
Uid        : 1009
Class      :
Groups     : compartido
Home       : /home/compartido
Home Mode  :
Shell      : /bin/sh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (compartido) to the user database.
Add another user? (yes/no): no
Goodbye!

Crear el directorio a compartir por Samba:
# mkdir /compartido

Agregando el grupo Samba smbprivate y el usuario compartido:
root@freebsdsvr # pw groupadd smbprivate -M compartido

Cambiar permisos sobre el directorio Samba:
root@freebsdsvr # chgrp smbprivate /compartido
root@freebsdsvr # chmod 770 /compartido

root@freebsdsvr # ls -ld /compartido/
drwxrwx---  2 root  smbprivate  512 May 15 08:58 /compartido/

Ahora es el momento de establecer la contraseña:
root@freebsdsvr # smbpasswd -a compartido
New SMB password:
Retype new SMB password:
Added user compartido.

Reiniciar el servicio Samba:
root@freebsdsvr # service samba restart
Removing stale Samba tdb files: . done
Starting nmbd.
Starting smbd.

Comprobar el servidor:
root@freebsdsvr: # smbclient -U compartido -L localhost


Iniciar el servidor Samba automáticamente con el sistema.
# ee /etc/rc.conf
samba_enable="YES"

guardar y salir, reiniciar Samba:
# /usr/local/etc/rc.d/samba restart
# /usr/local/etc/rc.d/samba status

Montar directorio compartido en cliente FreeBSD:
# mkdir /media/samba
# cd /media

Configurar permisos directorio cliente:
# chown root:carles samba/
# chmod 770 samba/

$ ls -ld samba/ drwxrwx  ---  1 root  carles  16384  1 ene  1970 samba

root@freebsd:/ # mount_smbfs -I 192.168.3.1 //compartido@freebsdsvr/compartido /media/samba/

Crear el fichero /root/.nsmbrc, permisos 600:


Agregar el directorio compartido al fichero /etc/fstab. La opción -N significa que no pregunte por la contraseña, la leerá del fichero /root/.nsmbrc



Acceder desde cliente Windows 7

Para conectar a las unidades de red;

Inicio, Panel de control, Herramientas administrativas, Directivas locales, Opciones de seguridad, cambiar lo siguiente:

- seguridad de red: nivel de autenticación de lan manager: enviar lm y ntlm: usar la seguridad de sesion ntlmv2 si se negocia
- Seguridad de red: seguridad de sesión minima para clientes NTLM basados en SSP: Sin mínimo
- Seguridad de red: seguridad de sesión minima para servidores NTLM basados en SSP: Sin mínimo

\\192.168.3.1\compartido








Gestionar usuarios:
pdbedit es la utilidad que gestiona la base de datos de usuarios de Samba.

Agregar usuarios
# pdbedit -a

Eliminar usuario
# pdbedit -x nombreusuario

Por ejemplo para agregar al usuario Liliam Junqueras a la base de datos Samba con el nombre de usuario lili:
# pdbedit -a -u lili -f "Liliam Junqueras"

Listar usuarios en la base de datos en detalle
# pdbedit -L -v

Mostrar la política de cuenta, longitud mínima de la contraseña
# pdbedit -P "min password length"

Cambiar la longitud mínima de la contraseña a 8 caracteres:
# pdbedit -P "min password length" -C 8

Más información
# man pdbedit

Unix es genial!.