Proteggere settore rete da virus con samba

Spersso ci viene richiesto di rendere una rete sicura soprattutto dalle infezioni; premesso che l’unica rete inviolabile è quella non collegata al mondo esterno i cui membri non hanno interfaccie DVD, USB, CardReader etc etc ( i floppy non li cito più ), e soprattutto a costi bassi (di bridge in commercio ce ne sono anche troppi! ).
Oggi una rete non collegata al mondo è di poca utilità quindi bisogna trovare una soluzione che almeno (dico almeno perché se consentissimo a questa rete di avere accesso a internet questo articolo non avrebbe nessuno scopo) consenta lo scambio di file con il resto del modo.

Una soluzione che usiamo da diversi anni con successo è quella di usare un pc con 2 o più schede di rete, Debian GNU/Linux , Samba e un antivirus anche non opensource.
Per dimensionare il pc si devono tenere in considerazione essenzialmente 3 fattori:
• Quanti files devono transitare quotidianamente da questo pc;
• Quanto sono grandi mediamnte i files che transitano tra le 2 schede;
• Che tipo di file devono essere processati;

Una volta scelte le perestazioni si deve comunque prevedere l’upgrade del sistema nella maniere più indolore possibile, dato che siamo sicuri che il flusso dati col passare del tempo difficilmente diminuisce.
Grazie alla versatilità di Samba si possono impostare 2 o più istanze che abbiano in comune una partizione del filesystem, per farlo basta creare uno script di avvio per ogni istanza che vogliamo fa partire.
Assegniamo a questo punto alle 2 interfaccie di rete (per semplicità portiamo l’esempio di solo 2 interfaccie di rete) quella collegata alla DMZ eth0, solo per fare un esempio, e eth1 quella collegata all’MZ.
Per rendere il sistema più snello e performante assumiamo che i file provenienti dalla MZ non necessitano di verifica da parte dell’anti virus quindi l’istanza di Samba in ascolto sull’eth1 non avrà la configurazione che sottopone ogni file in transito all’antivirus.
due_router

Di seguito un esempio della configurazione dell’istanza di Samba in ascolto sulla scheda eth0 della MZ

[global]
        workgroup = MZ
        netbios name = bridge
        interfaces = 192.168.3.4
        security = share
        obey pam restrictions = Yes
        bind interfaces only = Yes
        syslog = 0
        log level = 2
        log file = /var/log/samba/log.%m

[archivio]  <--directory condivisa
        comment = Directory di scambio DMZ.
        path = /home/archivio
        read only = No
        guest ok = Yes
        create mask = 0666
        directory mask = 0775

Questa è un esempio dell'istanza in ascolto sulla scheda della DMZ con questa configurazione Samba svolge anche funzione di PDC.

[global]
        workgroup = DMZ
        netbios name = BRIDGE
        server string =
        interfaces = 192.168.175.30
        bind interfaces only = Yes
        obey pam restrictions = Yes
        passdb backend = tdbsam
        passwd program = /usr/local/samba/bin/smbpasswd %u
        passwd chat = *New*password* %n\n *Retype*new*password* 
        %n\n *passwd:*all*authentication*tokens*updated
        *successfully*
        log level = 2
        syslog = 0
        log file = /var/log/samba_pdc/log.%m
        max log size = 1000
        socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 
        SO_SNDBUF=8192 add machine script = /usr/sbin/useradd 
        -d /dev/null -g machines -s /bin/false -M %u
        logon path =
        logon home =
        domain logons = Yes
        os level = 64
        preferred master = Yes
        domain master = Yes
        dns proxy = Yes
        wins support = Yes
        name resolve order = wins bcast hosts
        panic action = /usr/share/samba/panic-action %d
        unix password sync = no

[profiles]
        path = /home/profiles
        read only = No
        create mask = 0600
        directory mask = 0700
        browseable = No

[netlogon]
        comment = Network Logon Service
        path = /home/netlogon
        guest ok = Yes
        share modes = No
        browseable = No

[archivio] <--directory condivisa
        comment = Directory di scambio DMZ.
        path = /home/archivio
        read only = No
        create mask = 0666
        directory mask = 0775

/*******************************************/
Ogni file che transita da questa directory viene sottoposto all'anti virus in questo caso ClamAV. Come detto in precedenza Samba supporta lintegrazione con molti anti virus.
/******************************************/

      vfs object = vscan-clamav
      vscan-clamav: config-file = /etc/samba_pdc/vscan-clamav.conf
/*******************************************/
        browseable = yes
        guest ok = yes
        force user = root

Nota:Non usate queste configurazioni su macchine in produzione sono solo esempi.

Gli script di avvio richiameranno le due configurazioni in maniera indipendente così da avere dal lato DMZ tutti i file sottoposti a scansione e dal lato MZ una semplice directory condivisa.
Come già detto grazie alla versatilità di Samba, si aprono scenari molto interessanti nell'utilizzare una configurazione simile a quella proposta. Infatti questa configurazione prevede anche la "promozione" di Samba a PDC per una piccola rete.