Reti Linux - Samba

I costi di Windows Server sono elevati, inoltre Windows Server "spreca" numerose risorse della cpu e della gpu in servizi aggiuntivi che non offrono valore aggiunto e nell'interfaccia utente. Inoltre è intrinsecamente insicuro (numerosi problemi di sicurezza, bug, crash, ...). Proprio per questo gran parte dei Server usa linux/bsb. Gran parte dei servizi che offrono i Server sono standarizzati ed esistono implementazioni che possono essere installate sia su un server Windows che linux (Server Web, Server di Posta, Server DNS, Server DHCP, database). Esistono anche software multipiattaforma che girano sia su linux che su Windows, come apache, apache tomcat, mysql, postgresql, ...

Windows offre un potente sistema proprietario di condivisione di file, cartelle e stampanti in rete, come il servizio Active Direcotry, ampiamente utilizzato nelle reti per fornire l'accesso centralizzato degli utenti su postazioni Windows non è standarizzato ma è proprietario della Microsoft. Il servizio si basa sul protocollo SMB, inventato da un ingegnere IBM ed ampiamente modificato ed utilizzato da microsoft.

Server (o Short) Message Block (SMB) è un protocollo usato principalmente per condividere file, stampanti, porte seriali e comunicazioni di varia natura tra diversi nodi di una rete. Esso include anche un meccanismo di comunicazione tra processi autenticata. È soprattutto usato dai sistemi Microsoft Windows.

Samba è una implementazione in ambito Linux del protocollo SMB (Short Messagge Block), utilizzato in ambito Windows per la comunicazione tra reti.

Il protocollo è noto per la vulnerabilità usata da WannaCry e qualsiasi S.O. che implementa SMB si può interfacciare con una rete Windows.

NetBios è un protocollo sviluppato da IBM, anche esso intrisicamente insicuro, che permette di ricercare tramite messaggi broadcast informazioni in rete. Nelle ultime versioni di Windows è disabilitato di default, ma la alternativa di Microsoft fa uso di firme digitali del S.O. che rende impossibile una alternativa "libera" ed open source, per questo viene comunque abilitato nella maggior parte dei PC Windows.

Samba permette di condividere file cartelle e stampanti, Wins, Kerberos, LDAP. Inoltre può gestire anche l’Active Directory.

Samba è composto da due demoni:

  • Nmbd: si occupa di:
    • Master browser list si occupa della gestione dei nomi dei pc presenti sulla rete.
    • Wins permette la risoluzione dei nomi estesi nel suo indirizzo IP. Quando Wins manca la risoluzione avviene con un broadcast. (il PC interroga tutti i computer prima di scoprire quale macchina dispone del nome di rete a cui vuole accedere).
    • Smbd: gestisce le connessioni e le operazioni di condivisione.

Di default, le password degli utenti di samba sono diverse da quelle di linux, ma i nomi degli utenti sono gli stessi.

Installazione e configurazione di Samba per realizzare una cartella pubblica in rete

  1. Eseguiamo sulla console l’installazione dei 3 pacchetti (samba, smbclient e winbind) tramite apt-get install

  2. Aggiungiamo in nsswitch.conf il servizio wins (risolutore dei nomi NetBios). Il file di configurazione Name Service Switch
    (NSS),
    /etc/nsswitch.conf, viene utilizzato dalla libreria GNU C per determinare le fonti da cui ottenere informazioni relative al nome di servizio in una vasta gamma di categorie, e in quale ordine.

  1. Modifichiamo il file di configurazione delle interfacce di rete, mettendo un ip statico. Usiamo il comando:

  1. Realizziamo una condivisone semplice che permette l’accesso a tutti gli utenti, senza controlli: Modifichiamo il file smb.conf, per una condivisione di file in workgroup con accesso guest:
[global]
   workgroup = BORTOLIN5CIA
   netbios name = PCUBUNTU01
   server string = LINUX SERVER
   security = USER
   map to guest = Bad User

[pubblica]             
    comment = cartella pubblica
    path = /home/<Nome cartella pubblica>
    public = YES
    writable = YES

[documenti]
   comment = software ed utility
   path = /home/<Nome cartella sola lettura>
   public = YES
   writable = NO

Configurazione di Samba per realizzare una cartella privata in rete

  1. Realizziamo una condivisone semplice che permette l’accesso all’utente canguro, con una richiesta di login. Modifichiamo il file smb.conf:
[global]
   workgroup = BORTOLIN5CIA
   netbios name = PCUBUNTU01
   server string = LINUX SERVER
   security = USER
   #map to guest = Bad User
   smb passwd file = /etc/samba/smbpasswd
   encrypt passwords = YES

[pubblica]             
    comment = cartella pubblica
    path = /home/<Nome cartella pubblica>
    public = YES
    writable = YES

[canguro]
   comment = canguro
   path = /home/canguro
   public = YES
   writable = NO
   valid users = canguro
  1. Creiamo l’utente e creiamo la cartella personale tramite i seguenti comandi:
adduser canguro --> comando per creare l'utente
smbpasswd canguro -a  --> comando per creare l'utente samba ed assegnali la password
mkdir /home/canguro --> comando per creare una cartella personale per l'utente canguro
chmod 777 /home/canguro --> comando per assegnare i permessi 777 all'utente canguro
chown canguro /home/canguro --> comando per assegnare la proprietà della cartella all'utente canguro

numero UGO del chmod: il numero da mettere dopo il chomd si chiama numero "UGO" in quanto la cifra U rappresenta il livello di permessi per l'utente, G il livello di permessi del gruppo e O il livello di permessi generale. Le cifre possono essere da 1 a 7.

0 significa nessun permesso, mentre 7 lettura, scrittura ed esecuzione.

Configurazione di Samba per realizzare numerose cartelle private in rete

  1. Se si hanno tanti utenti, risulta veramente scomodo creare un blocco per ogni utente nel file smb.conf e il blocco home provvede alla creazione automatica di una condivisione personale per tutti gli utente creati e configurati in samba. I pratica viene letto l'elenco degli utenti samba (creati con smbpasswd) presenti nel file smbpasswd. Modifichiamo il file smb.conf così:
[global]
   workgroup = BORTOLIN5CIA
   netbios name = PCUBUNTU01
   server string = LINUX SERVER
   security = USER
   #map to guest = Bad User
   smb passwd file = /etc/samba/smbpasswd
   encrypt passwords = YES

[pubblica]             
    comment = cartella pubblica
    path = /home/<Nome cartella pubblica>
    public = YES
    writable = YES

[homes]
    comment = cartella utente %S
    writable = YES
    browsable = NO
    valid users = %S
    #path = /home/cartellastrana/%S

Notiamo l’uso della variabile %S e che il path non è obbligatorio. Creaiamo qualche altro utente tramite i comandi del punto 6.

Configurazione di Samba per realizzare un Domanin Controller con profili viaggianti

  1. Infine modifichiamo il file smb.conf ed attiviamo l’autenticazione di NT4 PDC con profili viaggianti (in questo caso non stiamo parlando di Active Directory ma del sistema di login pre Windows 2000 Server in quanto solo con samba 4 è possibile utilizzare l'Active Directory, nonostante ciò è possibile utilizzare i profili viaggianti)
[global]
        workgroup = DEBYDOM
        server string = PDC Linux
        interfaces = eth0, 192.168.1.100, 127.0.0.1
        server max protocol = NT1
        bind interfaces only = Yes
        update encrypted = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *password* %n\n *password* %n\n *successful*
        unix password sync = Yes
        lanman auth = Yes
        client lanman auth = Yes
        client NTLMv2 auth = No
        log level = 2
        log file = /var/log/samba/%m.log
        max log size = 100
        read raw = No
        socket options = TCP_NODELAY  IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
        add machine script = /usr/sbin/useradd -d /dev/null -g machines -s /bin/false %u
        logon script = netlogon.bat
        logon path = \\%L\profiles\%U
        logon drive = X:
        logon home = \\%L\%U\.profile
        domain logons = Yes
        os level = 255
        preferred master = Yes
        domain master = Yes
        dns proxy = No
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        hosts allow = 127.0.0.1, 192.168.1.0/255.255.255.0
        hosts deny = 0.0.0.0/0, 192.168.1.254/24


[homes]
        comment = Home Directory dell'utente
        read only = No
        create mask = 0700
        directory mask = 0700
        browseable = No

[profiles]
        comment = Salvataggio Roaming User Profile 
        path = /home/samba/profiles
        read only = No
        create mask = 0600
        directory mask = 0700
        guest ok = Yes
        profile acls = Yes
        browseable = No
        csc policy = disable

[netlogon]
        comment = Network Logon Service file netlogon.bat
        path = /home/samba/netlogon
        write list = @admin
        browseable = No
  1. Abilitiamo l’accesso degli utenti e dei computer

groupadd pc

useradd -g pc -d /dev/null -s /bin/false pc1$

  1. Creiamo l’utente samba root e gli assegnamo una password

smbpasswd -a root

  1. Creiamo il file smbusers e aggiungiamo l’alias “administrator” a root nano /etc/samba/smbusers

root = administrator

  1. Creo le cartelle per i profili con mkdir: /home/samba, /home/samba/netlogon e /home/samba/profiles

  2. Imposto i permessi 777 alle cartelle create nel punto 12 con chmod.

  3. Creo gli utenti e le cartelle:

    adduser camaleonte

    smbpassws -a camaleonte

    mkdir /home/samba/profiles/camaleonte (per windows XP)

    mkdir /home/samba/profiles/camaleonte.V2 (per windows 7)

    mkdir /home/samba/profiles/camaleonte.V6 (per windows 10)

    chown camaleonte /home/samba/profiles/camaleonte/ (per windows XP)

    chown camaleonte /home/samba/profiles/camaleonte.V2/ (per windows 7)

    chown camaleonte /home/samba/profiles/camaleonte.V6/ (per windows 10)

  4. Sulle macchine client è da lanciare un piccolo script che modifica il registro di sistema (regedit) per poter comunicare con samba senza l'autenticazione che è un sistema Windows.

Riassunto sui comandi
Comando Descrizione
sudo-s Accedere come superuser
apt-get install samba Installazione di samba(latoserver) tamite l’apt
apt-get install smbclient Installazione di samba(latoclient) tamite l’apt
apt-get install winbind Installazione di un provider di autenticazione tamite l’apt
nano <Nome file> Apre con l’editor di teso nano il file di configurazione di samba. Quando si modifica un file di configurazione effettuare una copia.
cp <Nome file><Nome file>.old Realizzare una copia di backup del file di configurazione
mv <Nome file><Nome file>.old Rinominare il file di configurazione per crearne uno di nuovo
testparm Verifica se la sintassi di smb.conf è corretto
/etc/init.d/smbd start Avvia samba
/etc/init.d/smbd stop Ferma samba.
/etc/init.d/smbd restart Riavvia samba
smbclient-L127.0.0.1 Verifica lo stato di servizio di samba
adduser <Nome Utente> Aggiungi nuovo utente
smbpasswd <Nome Utente>-a Aggiungi nuovo utente samba
mkdir /home/<Nome Cartella> Creazione della cartella
chmod 777 /home/<Nome Cartella> Impostazione dei permessi 777 alla cartella precedentemente creata
chown <Nome Utente><Nome Cartella> Assegna la cartella all’utente
smbd start Avvia samba
smbd stop Arresta samba
groupadd <Nome del Gruppo> Aggiungi nuovo gruppo
adduser-g<Nome del Gruppo><Altri Parametri> Aggiungi utente al gruppo

results matching ""

    No results matching ""