Gruppo di lavoro in rete mista

Obbiettivo:
Creare una rete a gruppo di lavoro mista. L'esempio di configurazione sotto riportato illustra la condivisione di risorse su una macchina Linux e una Windows e i corrispettivi accessi dell'una alle risorse dell'altra. Il tutto può ovviamente venire replicato allo stesso modo per ogni altro client della LAN
che entra a far parte del gruppo di lavoro in un secondo momento.
Il sistema di accesso impiegato prevede l'utilizzo di un'utenza comune replicata su ogni macchina facente parte del gruppo di lavoro.

Risorse impiegate:
- 1 workstation GNU/Linux Ubuntu Breezy 5.10 kernel 2.6.12-9-386
- 2 workstation Windows XP Prof SP2
- Samba 3.0.14a
- iptables 1.3.1

Indice:
1.1 - Configurare Linux come file server SMB
2.1 - Configurare Windows come file server SMB
3.1 - Utilizzare Windows come client SMB
4.1 - Utilizzare Linux come client SMB




1.1 Configurare Linux come file server SMB

Obbiettivo:
Configurare una workstation Linux come file server SMB.
Le workstations attive con la seguente configurazione avranno attivo un server samba in grado di condividere due risorse ad accesso anonimo ed un'altra ad accesso limitato.

Installare samba e i suoi derivati:

  • root@linux:~# apt-get install samba
  • root@linux:~# apt-get install samba-common
  • root@linux:~# apt-get install smbclient
  • root@linux:~# apt-get install smbfs
Assegnare un indirizzo alla scheda di rete nel caso in cui non ci sia un server DHCP a fornirlo in automatico:
  • root@linux:~# ifconfig eth1 10.0.0.1 netmask 255.0.0.0 up
Salvare le configurazioni della scheda di rete per il successivo riavvio (opzionale):
  • root@linux:~# echo "iface eth1 inet static" >> /etc/network/interfaces
  • root@linux:~# echo "address 10.0.0.1" >> /etc/network/interfaces
  • root@linux:~# echo "netmask 255.0.0.0" >> /etc/network/interfaces
  • root@linux:~# echo "auto eth1" >> /etc/network/interfaces
Creare un utente per l'accesso generale a samba.
* Esso non riguarda i singoli share che possono avere accessi riferiti ad utenze differenti.
** Se si preferisce un accesso di tipo anonimo settare security = share in smb.conf.

  • root@linux:~# useradd -p 12345 share
  • root@linux:~# smbpasswd -a share
  • New SMB password:
  • Retype new SMB password:
  • Added user share.
  • root@linux:~#
Creare le cartelle che si intende condividere.
La prima (documenti) sarà accessibile a chiunque con permessi di lettura e scrittura.
La seconda (paghe) sarà accessibile a chiunque in sola lettura.
La terza (personale) risulterà accessibile al solo utente James, previa autenticazione remota, con permessi di lettura e scrittura.

  • root@linux:~# mkdir -m 0777 /home/documenti
  • root@linux:~# mkdir -m 0775 /home/paghe
  • root@linux:~# mkdir -m 0777 /home/personale
Configurare /etc/samba/smb.conf:
  • root@linux:~# cp /etc/samba/smb.conf /etc/samba/smb.conf.old
  • root@linux:~# vi /etc/samba/smb.conf
[global]
    workgroup = OFFICE
    netbios name = LINUX_WKS
    server string = LINUX_WKS
    hosts allow = 127.0.0.1 10.0.0.0/255.0.0.0
    security = user
    valid users = share
    encrypt passwords = true
    debug timestamp = no
    log file = /var/log/samba/log.%m
    log level = 2
    max log size = 1000


[documenti]
    comment = pubblic +rw
    path = /home/documenti
    browseable = yes
    read only = no
    guest ok = Yes

[buste paga]
    comment = pubblic +r-w
    path = /home/paghe
    browseable = yes
    read only = yes
    guest ok = yes

[private]
    valid users = James
    comment = private +rw
    path = /home/personale
    writeable = yes
    browseable = yes
    read only = no

Creare l'utente 'privato' James e aggiungerlo al db utenti di Samba.

  • root@server:~# useradd -g users -p my_pa$$word James
  • root@server:~# smbpasswd -a James
    New SMB password:
    Retype new SMB password:
    Added user James.
    root@server:~#
Testare la corretta sintassi di smb.conf tramite l'utilizzo di /usr/bin/testparm:
  • root@server:/home# testparm
    Load smb config files from /etc/samba/smb.conf
    Processing section "[documenti]"
    Processing section "[buste paga]"
    Processing section "[private]"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    Press enter to see a dump of your service definitions
    [...]
    root@server:/home#
Riavviare il demone Samba:
  • root@server:/home/billiejoex# /etc/init.d/samba restart
     * Stopping Samba daemons...                                             [ ok ]
     * Starting Samba daemons..                                                [ ok ]
    root@server:/home/billiejoex
Firewalling:
Le porte utilizzate dal server samba sono le stesse di un server SMB Windows ovvero 137 UDP, 138 UDP,
139 TCP e 445 TCP. Una possibile configurazione di iptables potrebbe essere la seguente:
  • root@server:~# iptables -P INPUT DROP
  • root@server:~# iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  • root@server:~# iptables -A INPUT -p TCP --dport 139 -j ACCEPT
  • root@server:~# iptables -A INPUT -p TCP --dport 445 -j ACCEPT
  • root@server:~# iptables -A INPUT -p UDP --dport 137 -j ACCEPT
  • root@server:~# iptables -A INPUT -p UDP --dport 138 -j ACCEPT
Nota aggiuntiva per postazioni server:
Nel caso in cui si abbia una postazione Linux server avente due interfacce di rete WAN (eth0) e LAN (eth1) è fondamentale lasciare il server Samba in ascolto sulla sola interfaccia LAN. Appendere nella sezione [global] di smb.conf le seguenti righe e riavviare samba (etc/init.d/samba restart) :

hosts allow = 127.0.0.1 10.0.0.0/255.255.255.0
bind interfaces only = yes
interfaces = eth1
  • root@server:~# etc/init.d/samba restart
  • root@server:~# ss -a
  • State     Recv-Q  Send-Q   Local Address:Port     Peer Address:Port
  • LISTEN  0            0             127.0.0.1:32770       *:*
  • LISTEN  0            0             127.0.0.1:32771       *:*
  • LISTEN  0            0             10.0.0.1:netbios-ssn  *:*
  • [...]
  • root@server:~# iptables -P INPUT -i eth1 DROP
  • root@server:~# iptables -A INPUT -i eth1 -p TCP --dport 139 -j ACCEPT
  • root@server:~# iptables -A INPUT -i eth1 -p TCP --dport 445 -j ACCEPT
  • root@server:~# iptables -A INPUT -i eth1 -p UDP --dport 137 -j ACCEPT
  • root@server:~# iptables -A INPUT -i eth1 -p UDP --dport 138 -j ACCEPT



1.2 Configurare Windows come file server SMB

Obbiettivo:
configurare una workstation Windows XP prof come server SMB per la condivisione di risorse locali.
Le workstation attive con la seguente configurazione condivideranno 2 risorse ad accesso pubblico con differenti ACL ed una risorsa ad accesso limitato ad un solo utente.
La configurazione seguente si differenza dalle solite reti workgroup in quanto anzichè replicare tutte le utenze presenti sulle macchine su ogni singolo computer del gruppo di lavoro, verrà replicata una sola utenza comune. Questo garantisce una maggior semplicità di gestione e un livello di sicurezza decisamente più elevato.

Assegnare un indirizzo valido alla scheda di rete (nel caso in cui non ci sia un server DHCP a fornirlo in automatico): Pannello di controllo --> Connessioni di rete --> NIC --> Proprietà TCP/IP

  nic_small.jpg

Abilitare i servizi utili alla condivisione risorse

I servizi (Start --> Esegui --> services.msc[INVIO]) che permettono una piena funzionalità sia come server di condivisione risorse che come client di accesso a risorse remote sono: "Browser di computer", "Helper di NetBIOS di TCP/IP", "Server" e "Workstation", che devono essere avviati ed avere un tipo di avvio "automatico". Un sistema con configurazioni di default è già predisposto per poter svolgere entrambi i ruoli, in tal caso saltare questo paragrafo.
Start --> Esegui --> cmd[INVIO]:

  • net start browser
  • net start lmhosts
  • net start srv
  • net start rdr
  • net start netbt
  • sc config browser start= auto
  • sc config lmhost start= auto
  • sc config srv start= auto
  • sc config rdr start= auto
  • sc config netbt start= auto

Assicurarsi, inoltre, che sia attivo il servizio NetBIOS over TCP sull'interfaccia LAN desiderata utile per condividere files e stampanti con sistemi precedentei a Windows 2000 e Linux Samba:
Start --> Pannello di controllo --> Connessioni di rete --> Scheda di rete --> Proprietà --> Protocollo Internet (TCP/IP) --> Avanzate --> Wins --> Impostazione NetBIOS: Predefinite.
Nel caso in cui si abbiano due interfacce di rete, una LAN e WAN, abilitare NetBIOS over TCP sulla sola interfaccia LAN.

nbtcp_small.jpg

A seguito delle seguenti configurazioni dovrebbero risultare in stato LISTENING le porte: 137UDP, 138UDP, 139TCP, 445TCP. Assicurarsi che a riguardo vi siano esplicite regole di permesso su eventuali firewalls.
  • C:\WINDOWS>netstat -an
    Connessioni attive 
    Proto  Indirizzo locale       Indirizzo esterno       Stato
       TCP    0.0.0.0:135              0.0.0.0:0              LISTENING
       TCP    0.0.0.0:445              0.0.0.0:0              LISTENING
       TCP    0.0.0.0:3389            0.0.0.0:0              LISTENING
       TCP    10.0.0.5:139            0.0.0.0:0              LISTENING
       TCP    10.0.0.5:1041          10.0.0.1:445         ESTABLISHED
       UDP    0.0.0.0:445              *:*
       UDP    10.0.0.5:137            *:*
       UDP    10.0.0.5:138            *:*
       UDP    127.0.0.1:1025         *:*
    C:\WINDOWS>

Entrare a far parte del gruppo di lavoro "OFFICE":
Click di dx su Risorse del computer --> Proprietà --> Nome computer --> Cambia:

wkg_small.jpg

Disabilitare l'accesso anonimo: 
Pannello di controllo --> Opzioni cartella --> Visualizzazione: Deflaggare "Utilizza condivisione file semplice"
  simplefs_small.jpg

Creare un utente di accesso comune da replicare su tutte le workstations:

Click di dx su risorse --> Gestione --> Utenti e gruppi locali --> Users --> Nuovo utente
  user_add_small.jpg

Condividere una directory (public +rw)
accessibile da tutti i membri del worgroup in lettura e scrittura. Nella lista degli owner di condivisione (Click di dx su risorsa --> Condivisione e protezione --> Condividi cartella --> Autorizzazioni) includere il solo utente "share" autorizzando il controllo completo come in figura 2. Nella lista di permission ACL
(Click di dx su risorsa --> Condivisione e protezione --> Protezione) includere il gruppo Users e spuntare tutti i flags autorizzando il controllo completo come in figura 3. Consiglio personale: sia per la gestione delle condivisioni che delle utenze è molto comodo utilizzare lo snap-in di gestione sistema (Click di dx su Risorse del computer --> Gestione) di figura 4 .
                                
  share_dir_small.jpg (1) share_perm_small.jpg (2) acl_perm_small.jpg (3) manage_small.jpg (4)

Condividere una directory (public +r-w)
accessibile da tutti i membri del worgroup in sola lettura. Nella lista degli owner di condivisione (Click di dx su risorsa --> Condivisione e protezione --> Condividi cartella --> Autorizzazioni) includere il solo utente "share" autorizzando l'accesso in sola lettura  (fare riferimento a fig 2 precedente). Nella lista di permission ACL (Click di dx su risorsa --> Condivisione e protezione --> Protezione) includere il gruppo Users e deflaggare i permessi relativi a scrittura e modifica  (fare riferimento a fig 3 precedente).

Condividere una directory (private +rw) accessibile in lettura e scrittura dal solo utente "Josh".
Creare l'utente Josh:
net user Josh my$EcrET /add. Nella lista degli owner di condivisione (Click di dx su risorsa --> Condivisione e protezione --> Condividi cartella --> Autorizzazioni) includere il solo utente "Josh" autorizzando il controllo completo (fare riferimento a fig 2 precedente).
Nella lista di permission ACL (Click di dx su risorsa --> Condivisione e protezione --> Protezione) includere il gruppo Users e spuntare tutti i flags autorizzando il controllo completo (fare riferimento a fig 3 precedente).

Disabilitare le condivisioni amministrative (opzionale):
Di default Windows XP prof condivide in automatico tutti i dischi rigidi di sistema. Essi possono essere accessibili da remoto loggandosi con le credenziali di un utente amministratore presente sulla  macchina locale. Disabilitarle è sempre buona norma, per ovvie ragioni di sicurezza:
Start --> Esegui --> regedit.exe[INVIO]
Creare un valore DWORD == "AutoShareWks" di valore 0 in:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
La modifica avrà effetto al successivo riavvio.

adm_share_small.jpg

* Nota sul sistema di accessi:
L'utenza comune precedentemente creata può ovviamente venire utilizzata anche per l'accesso al computer locale oltre che per l'accesso remoto.
Questo rappresenta ovviamente un problema per la sicurezza in quanto chiunque può loggarsi da qualunque postazione.  E' quindi utile, a tal proposito, settare una policy che nega l'accesso locale all'utenza "share", rendendola a tutti gli effetti "share-purposes-only".
In questo modo nessuno viene a conoscenza delle credenziali di nessuno, eccetto le proprie.
Nel caso in cui non vi sia un controller di dominio una soluzione di questo tipo appare discretamente efficiente.

Start --> esegui --> %SystemRoot%\system32\secpol.msc /s [INVIO] --> Criteri locali --> Assegnazione diritti utente --> Nega accesso locale: aggiungere l'utenza "share"
  local_logon_small.jpg

Comandi shell utili:

Assegna un indirizzo statico all'interfaccia di rete:
netsh interface ip set address name="Nome scheda" static 10.0.0.5 255.0.0.0

Obbliga l'interfaccia a ricercare un dhcp server per farsi assegnare un indirizzo:
netsh interface ip set address name="Nome scheda" source=dhcp

Condivide una risorsa (sharing owner = Everyone):

NET SHARE "Nome risorsa"=C:\Python24 /REMARK:"Stringa di commento"

Elimina una condivisione:

NET SHARE C:\Python24 /DELETE

Mostra tutti i file condivisi attualmente aperti:
NET FILE

Mostra tutte le sessioni attualmente instaurate con i computer remoti:

NET SESSION

Chiude tutte le sessioni attualmente in corso:

NET SESSION /DELETE

Creare un nuovo utente:
NET USER "Nome_utente" password /add

Crea un nuovo gruppo:
NET LOCALGROUP "Nome gruppo" /add

VIsualizza statistiche del server SMB:
NET STATISTICS SERVER




1.3 Utilizzare Windows come client SMB

Visuallizzare le risorse di una macchina remota:
Start --> Esegui --> \\10.0.0.1[INVIO]
Start --> Tutti i programmi --> Accessori --> Esplora risorse --> Risorse di rete --> Risorse di rete

share_access_small.jpg
Nota sugli accessi:
Quando si accede a un computer o una risorsa remota il sistema tenta di loggarsi automaticamente con l'utenza che si è utilizzata per effettuare l'accesso locale. Non essendo essa replicata sulla macchina remota apparirà un form di login (fig. 1) in cui specificare delle credenziali alternative che in questo caso saranno quelle dell'utenza comune denominata "share" con cui si potrà ottenere l'accesso.
Molto spesso può capitare che al posto del form di login compare un messaggio di errore relativo all'accesso (fig. 2)  senza avere la possibilità di specificare credenziali alternative. Questo accade quando il sistema cerca di accedere al computer remoto utilizzando utenze non più valide, salvate nella cache locale. Per ovviare a tale problema è sufficiente andare in Pannello di controllo --> Account utente --> [proprio utente] --> Gestione password di rete e aggiungere l'utenza con cui si desidera effettuare l'accesso. (fig 3):

  logon_form_small.jpg (1)  access_err_small.jpg (2)   cached_acc_small.jpg  (3)
 
Comandi shell utili:

Autenticarsi al computer remoto per la sessione corrente:
NET USE \\10.0.0.1\ my_password /user:share

Autenticarsi al computer remoto in modo permanente:
NET USE \\10.0.0.1 /savecred

Visualizzare le risorse remote:
NET VIEW \\10.0.0.1\

Mappare la risorsa come se fosse "locale":
NET USE Z: \\10.0.0.1\nome_condivisione

VIsualizza statistiche di accesso ai server SMB remoti:
NET STATISTICS WORKSTATION





1.3 Utilizzare Linux come client SMB

Visualizzare le risorse della macchina remota:
  • root@server:/media# smbclient -L \\10.0.0.5 -U share%12345
    added interface ip=10.0.0.1 bcast=10.255.255.255 nmask=255.0.0.0
    Domain=[CLIENT] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

            Sharename       Type      Comment
            ---------                ----          -------
            IPC$                 IPC       IPC remoto
            public rw          Disk      Accesso pubblico in lettura/scrittura
            private rw        Disk      Accesso a Josh in lettura/scrittura
            ADMIN$          Disk      Amministrazione remota
            C$                    Disk      Condivisione predefinita
            public r            Disk      Accesso pubblico in sola lettura

    Domain=[CLIENT] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

            Server               Comment
            ---------                -------

            Workgroup       Master
            ---------                 -------
    root@server:/media#
Montare una condivisione per l'utente root:
  • root@linux:~# mkdir /mnt/share
  • root@linux:~# smbmount //10.0.0.5/public\ rw /mnt/share -o username=share,password=12345
Montare una condivisione accessibile in scrittura dall'utente corrente (es. billiejoex)
  • smbmount //10.0.0.5/public\ rw /mnt/share -o uid=billiejoex,gid=billiejoex,fmask=0600,dmask=0700,username=share,password=12345
Montarla automaticamente all'avvio tramite fstab:
  • root@linux:~# vi /etc/fstab
# Appendere in coda al file:
//10.0.0.5/Programmi /mnt/share  smbfs rw,auto,uid=billiejoex,gid=billiejoex,fmask=0600,dmask=0700,username=share,password=12345 0 0

Visualizzarle da Konqueror:
  • smb://share@10.0.0.5/





billiejoex
EOF 2005-11-10 2:55 AM
last update 2005-11-10