Com fer que un servidor de fitxers i impressores Samba sigui segur

Modes de seguretat del Samba

There are two security levels available to the Common Internet Filesystem (CIFS) network protocol user-level and share-level. Samba's security mode implementation allows more flexibility, providing four ways of implementing user-level security and one way to implement share-level:

  • security = user: obliga els clients a proporcionar un nom d'usuari i una contrasenya per accedir a les comparticions. Els comptes d'usuaris del Samba es troben separats dels comptes del sistema, però el paquet libpam-smbpass sincronitza els usuaris i les respectives contrasenyes del sistema amb la base de dades dels usuaris del Samba.

  • security = domain: aquest mode permet que el servidor Samba aparegui en els clients Windows com un Primary Domain Controller (PDC), Backup Domain Controller (BDC), o com un Domain Member Server (DMS). Per a més informació vegeu: “El Samba com a controlador de dominis”.

  • security = ADS: permet al servidor Samba d'unir-se a un domini de Directori actiu com un membre nadiu. Vegeu “Samba Active Directory Integration” per a obtenir-ne més detalls.

  • security = server: aquest mode ha esdevingut obsolet i a causa d'alguns aspectes de seguretat no s'hauria d'utilitzar . Vegeu l'apartat Server Security de la guia del Samba per a obtenir-ne més informació.

  • security = share: permet que els clients es connectin als recursos compartits sense proporcionar cap nom d'usuari ni contrasenya.

El mode de seguretat que trieu dependrà de l'entorn i de la funció que us calgui que faci el servidor Samba.

Security = User

En aquest apartat es reconfigurarà el servidor de fitxers i d'impressió del Samba de “Servidor de fitxers Samba” i “Servidor d'impressió Samba”, per a accedir-hi mitjançant l'autenticació.

Primer instal·leu el paquet libpam-smbpass, el qual possibilita la sincronització dels usuaris del sistema amb la base de dades dels usuaris del Samba:

sudo apt-get install libpam-smbpass
[Nota]

Si heu escollit la tasca Samba Serverdurant la instal·lació, el libpam-smbpass ja es troba instal·lat.

Editeu el fitxer /etc/samba/smb.conf i en l'apartat [share] canvieu:

    guest ok = no

Finalment, reinicieu el Samba de manera que els paràmetres nous tinguin efecte:

sudo /etc/init.d/samba restart

Ara si us connecteu als directoris compartits o a les impressores el sistema us hauria de demanar el nom d'usuari i la contrasenya.

[Nota]

If you choose to map a network drive to the share you can check the Reconnect at Logon check box, which will require you to only enter the username and password once, at least until the password changes.

Seguretat dels recursos compartits

There are several options available to increase the security for each individual shared directory. Using the [share] example, this section will cover some common options.

Grups

Els grups defineixen un conjunt d'ordinadors o usuaris que tenen un nivell d'accés equivalent a recursos concrets de la xarxa i ofereix un nivell de granularitat en controlar l'accés a aquest recursos. Per exemple si es defineix un grup anomenatqa, els usuaris del qual són marta, laura i jordi i es defineix un segon grup anomenatmanteniment amb els usuaris laura, pere i vicent llavors alguns recursos de la xarxa configurats per permetre l'accés al grup qa només seran accessibles per a la marta, la laura i en jordi però no per a en pere o en vicent. Atès que l'usuària laura pertany a ambdós grups qa i manteniment podrà accedir als recursos configurats pels dos grups, mentre que la resta d'usuaris només podran accedir als recursos autoritzats explícitament al grup al qual pertanyen.

De manera predeterminada, el Samba cerca al sistema local grups definits al fitxer /etc/group per a determinar quins usuaris pertanyen a quin grup. Per més informació sobre com afegir i suprimir usuaris d'un grup vegeu “Adding and Deleting Users”.

Si es vol definir un grup en el fitxer de configuració del Samba, /etc/samba/smb.conf empreu la sintaxi correcta tot posant "@" davant del nom del grup. Per exemple, si voleu definir un grup anomenat sysadmin en un apartat concret del fitxer /etc/samba/smb.conf heu d'introduir el nom del grup de la manera següent: @sysadmin.

Permisos de fitxer

Els permisos de fitxers defineixen els drets explícits que un ordinador o un usuari tenen sobre un directori, fitxer o conjunt de fitxers concrets. Aquests permisos es poden definir editant el fitxer /etc/samba/smb.conf. En aquest fitxer es poden especificar els permisos explícits d'un fitxer compartit.

Per exemple, si heu definit una carpeta compartida del Samba anomenada share i desitgeu donar permisos només de lectura al grup d'usuaris anomenat qa però voleu permetre'n l'escriptura al grup anomenat sysadmin i a l'usuari vicent, podeu editar el fitxer /etc/samba/smb.conf i afegir-hi les següents entrades sota [share]

    read list = @qa
    write list = @sysadmin, vincent

Una altra possibilitat d'atorgar permisos en el Samba es declarar permisos administratius a un recurs compartit concret. Els usuaris que tinguin permisos administratius poden llegir, escriure o modificar qualsevol informació inclosa en el recurs pel qual l'usuari hagi obtingut permisos administratius explícits.

Per exemple, si voleu atorgar permisos administratius a l'usuari anna en l'exemple share anterior, editeu el fitxer /etc/samba/smb.conf i afegiu-hi la línia següent sota el l'entrada [share]

    admin users = anna

Després d'editar el fitxer /etc/samba/smb.conf reinicieu el Samba perquè els canvis tinguin efecte:

sudo /etc/init.d/samba restart
[Nota]

Per fer que les llistes read list i write list funcionin, el mode de seguretat del Samba no s'ha de definir com a security = share

Ara que Samba s'ha configurat per a limitar l'accés dels grups als directoris compartits és necessari actualitzar els permisos del sistema de fitxers.

Els permisos de fitxer tradicionals del Linux no coincideixen totalment amb les llistes de control d'accés del Windows NT (ACL). Per sort els servidors Ubuntu disposen d'ACL POSIX que proporcionen un control més acurat. Per exemple, per a habilitar ACL a /srv en un sistema de fitxer EXT3, editeu el fitxer /etc/fstab i afegiu l'opció acl:

UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv  ext3    noatime,relatime,acl 0       1

Després torneu a muntar la partició:

sudo mount -v -o remount /srv
[Nota]

L'exemple anterior pressuposa que el fitxer /srv es troba en una partició separada. Si el fitxer /srv o el lloc on hàgiu configurat el vostre camí compartit es part de la partició /, pot ser que hàgiu de reiniciar l'ordinador.

To match the Samba configuration above the sysadmin group will be given read, write, and execute permissions to /srv/samba/share, the qa group will be given read and execute permissions, and the files will be owned by the username melissa. Enter the following in a terminal:

sudo chown -R anna /srv/samba/share/
sudo chgrp -R sysadmin /srv/samba/share/
sudo setfacl -R -m g:qa:rx /srv/samba/share/
[Nota]

The setfacl command above gives execute permissions to all files in the /srv/samba/share directory, which you may or may not want.

Now from a Windows client you should notice the new file permissions are implemented. See the acl and setfacl man pages for more information on POSIX ACLs.

Perfil AppArmor del Samba

Ubuntu comes with the AppArmor security module, which provides mandatory access controls. The default AppArmor profile for Samba will need to be adapted to your configuration. For more details on using AppArmor see “AppArmor”.

There are default AppArmor profiles for /usr/sbin/smbd and /usr/sbin/nmbd, the Samba daemon binaries, as part of the apparmor-profiles packages. To install the package, from a terminal prompt enter:

sudo apt-get install apparmor-profiles
[Nota]

This package contains profiles for several other binaries.

By default the profiles for smbd and nmbd are in complain mode allowing Samba to work without modifying the profile, and only logging errors. To place the smbd profile into enforce mode, and have Samba work as expected, the profile will need to be modified to reflect any directories that are shared.

Edit /etc/apparmor.d/usr.sbin.smbd adding information for [share] from the file server example:

  /srv/samba/share/ r,
  /srv/samba/share/** rwkix,

Now place the profile into enforce and reload it:

sudo aa-enforce /usr/sbin/smbd
cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r

You should now be able to read, write, and execute files in the shared directory as normal, and the smbd binary will have access to only the configured files and directories. Be sure to add entries for each directory you configure Samba to share. Also, any errors will be logged to /var/log/syslog.

Recursos