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
Eseguiamo sulla console l’installazione dei 3 pacchetti (samba, smbclient e winbind) tramite apt-get install
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.
- Modifichiamo il file di configurazione delle interfacce di rete, mettendo un ip statico. Usiamo il comando:
- 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
- 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
- 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
- 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
- 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
- Abilitiamo l’accesso degli utenti e dei computer
groupadd pc
useradd -g pc -d /dev/null -s /bin/false pc1$
- Creiamo l’utente samba root e gli assegnamo una password
smbpasswd -a root
- Creiamo il file smbusers e aggiungiamo l’alias “administrator” a root nano /etc/samba/smbusers
root = administrator
Creo le cartelle per i profili con mkdir: /home/samba, /home/samba/netlogon e /home/samba/profiles
Imposto i permessi 777 alle cartelle create nel punto 12 con chmod.
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)
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 |