lunedì gen 12, 2009

La sicurezza delle Zone di (Open)Solaris

Riprendo questo post recente perché è stato reso disponibile un nuovo blueprint che approfondisce ulteriormente le funzionalità di sicurezza delle Zone di Solaris ed OpenSolaris, che solitamente sono utilizzate per consolidare più ambienti applicativi in un unico sistema fisico, ma permettono anche di creare ambienti virtuali sicuri dove esporre i servizi più critici di una infrastruttura IT:

Ecco, tratti dall'indice, i temi descritti nel blueprint:

  • Zone Root File System
  • Process Containment
  • Operating System Privileges
    • Default Privileges
    • Required Privileges
    • Prohibited Privileges
    • Optional Privileges
  • Operating System Kernel Modules
  • Operating System Devices
  • Networking
    • Shared IP
    • Exclusive IP
  • Operating System Files
  • Operating System Security Configuration
  • Resource Management
    • Memory Controls
      • Physical and Virtual Memory Capping
      • Shared Memory
      • Locked Memory
    • CPU Controls
      • Fair Share Scheduler
      • CPU Capping
      • Private Pool
      • Shared Pool
    • Miscellaneous Controls
  • File Integrity Checks
  • Security Auditing
  • Solaris Trusted Extensions

giovedì dic 18, 2008

Virtualizzare con (Open)Solaris per migliorare la sicurezza

La virtualizzazione delle infrastrutture IT è già da alcuni anni uno dei più importanti trend tecnologici di questo periodo. Ma "virtualizzare" delle risorse implica che queste siano poi "condivise" tra più sistemi, applicazioni o servizi. E ciò può porre dei problemi di gestione per la sicurezza degli ambienti virtualizzati.

In realtà implementando una virtualizzazione gestita direttamente dal sistema operativo, e non da un hypervisor al di sotto dei sistemi operativi, una architettura può essere resa ancora più sicura.

In paricolare le zone di Solaris (ed OpenSolaris) permettono di allocare in modo granulare i privilegi di sistema alle singole macchine virtuali, permettendo di controllare ed eventualmente limitare l'uso delle risorse non necessarie per ogni singola componente architetturale.

Alcuni esempi sono illustrati nel seguente blueprint:

martedì ott 14, 2008

Annunci di benchmark e record nei sistemi con 4 processori

...con l'annuncio nella famiglia CoolThreads del nuovo sistema Sun SPARC Enterprise T5440 Server (che può ospitare fino a 4 processori UltraSPARC T2 Plus, ciascuno con 8 core) sono stati presentati anche i risultati dei principali benchmark di mercato, sia quelli più "tecnici" (come SPECcpu2006, SPECjbb2005, SPECjAppServer2004) che quelli più "realistici", basati su applicazioni "vere" (ad esempio SAP e Siebel).

La maggior parte delle informazioni utili sono state raccolte nel blog del collega Allan Packer.

Il sistema include le funzionalità di virtualizzazione e partizionamento delle risorse sia a livello firmware (tramite i Logical Domain) che di sistema operativo (con i Solaris Container). In particolare con i Solaris Container è possibile consolidare in uno stesso sistema fisico ambienti Solaris 8, Solaris 9 e Solaris 10.

Ricordo che è possibile approfondire "a piacere" l'architettura hardware e software del sistema, dato che sono distribuite in modalità open source rispettivamente nei progetti OpenSPARC e OpenSolaris.

giovedì ott 25, 2007

Migrare Sistemi Solaris 8 in Container Solaris 10

E' disponibile il Solaris 8 Migration Assistant, precedentemente noto come Project Etude: il framework include il software ed i servizi che permettono di migrare ambienti applicativi che utilizzano Solaris 8 in Container di un sistema Solaris 10. In tal modo è possibile implementare un consolidamento dell'infrastruttura superando anche i limiti di compatibilità hardware di Solaris 8 con i sistemi di ultima generazione.


Ecco i link per il download e la documentazione.

venerdì set 21, 2007

Installare una zona su UFS e clonarla con ZFS

Il manuale di amministrazione delle zone di Solaris 10 anche nella versione 8/07 (aka Update 4) indica di non installare le zone con zonepath su ZFS, in quanto in tal caso non è ancora supportata la procedura di patching e upgrade.

Per rispettare tale vincolo, ma poter allo stesso tempo sfruttare i vantaggi di ZFS (in particolare snapshot e cloni) è possibile utilizzare come zonepath un filesystem UFS creato su un volume ZFS.

Supponiamo di voler creare una zona "zone1" e poi clonarla in "zone2" e "zone3" senza occupare il triplo dello spazio disco, ma solo lo spazio necessario per le effettive differenze ("delta") delle nuove zone. Questi sono i passi operativi:

  1. Creare un volume ZFS ad esempio da 10GB in un pool di nome "tank"
    # zfs create -V 10g tank/zone1vol
  2. Creare un filesystem UFS nel volume appena creato e montarlo come "/zone/zone1" (il mount può essere reso persistente aggiungendo il filsystem al file "/etc/vfstab")
    # newfs /dev/zvol/dsk/tank/zone1vol
    # mkdir -m 700 -p /zone/zone1
    # mount /dev/zvol/dsk/tank/zone1vol /zone/zone1
  3. Configurare la nuova zona "zone1" in modalità whole root (ovvero con una copia locale di tutti i file di sistema), in modo da evidenziare meglio i vantaggi del cloning (in questo esempio come scheda di rete utilizzo una interfaccia wireless "wpi0")
    # zonecfg -z zone1
    zone1: No such zone configured
    Use 'create' to begin configuring a new zone.
    zonecfg:zone1> create -b
    zonecfg:zone1> set zonepath=/zone/zone1
    zonecfg:zone1> add net
    zonecfg:zone1:net> set physical=wpi0
    zonecfg:zone1:net> set address=192.168.1.201/24
    zonecfg:zone1:net> end
    zonecfg:zone1> info
    zonename: zone1
    zonepath: /zone/zone1
    brand: native
    autoboot: false
    bootargs:
    pool:
    limitpriv:
    scheduling-class:
    ip-type: shared
    net:
            address: 192.168.1.201/24
            physical: wpi0
    zonecfg:zone1> verify
    zonecfg:zone1> commit
    zonecfg:zone1> exit
  4. Installare zone1
    # zoneadm -z zone-one install
    Preparing to install zone <zone1>.
    Creating list of files to copy from the global zone.
    Copying <162382> files to the zone.
    Initializing zone product registry.
    Determining zone package initialization order.
    Preparing to initialize <1220> packages on the zone.
    Initialized <1220> packages on zone.                                
    Zone <zone1> is initialized.
    Installation of <1> packages was skipped.
    The file </zone/zone1/root/var/sadm/system/logs/install_log> contains a log of the zone installation.
  5. Verificare l'installazione della zona
    # zoneadm list -cv
      ID NAME             STATUS     PATH                           BRAND    IP   
       0 global           running    /                              native   shared
       - zone1            installed  /zone/zone1                    native   shared
  6. Verificare lo spazio occupato per questa zona (di tipo whole root), nel mio caso sono circa 2.53GB
    # zfs list
    NAME               USED  AVAIL  REFER  MOUNTPOINT
    tank              11.2G  80.8G    18K  none
    tank/export_home  1.23G  80.8G  1.23G  /export/home
    tank/zone1vol     2.53G  88.3G  2.53G  -
  7. Effettuare il detach della zona
    # zoneadm -z zone1 detach
  8. Per effettuare il flush su disco del filesystem UFS è necessario forzare un lock, in quanto i metadati di UFS sono aggiornati subito su disco, ma i dati sono gestiti dalla cache di sistema (demone fsflush). Se non si forza il lock in scrittura lo snapshot potrebbe contenere dati e metadati tra loro disallineati.
    # lockfs -w /zone/zone1
    # lockfs
    Filesystem           Locktype   Comment
    /zone/zone1          write 
  9. Creare uno snapshot del volume che contiene il filesystem con la zona in detach
    # zfs snapshot tank/zone1vol@detach
  10. Rimuovere il lock, in modo che il file system torni accedibile in scrittura
    # lockfs -u /zone/zone1
  11. Creare due cloni dello snapshot precedentemente creato
    # zfs clone tank/zone1vol@detach tank/zone2vol
    # zfs clone tank/zone1vol@detach tank/zone3vol
    # zfs list
    NAME                    USED  AVAIL  REFER  MOUNTPOINT
    tank                   11.2G  80.8G    18K  none
    tank/export_home       1.23G  80.8G  1.23G  /export/home
    tank/zone1vol          2.53G  88.3G  2.53G  -
    tank/zone1vol@detach       0      -  2.53G  -
    tank/zone2vol              0  80.8G  2.53G  -
    tank/zone3vol              0  80.8G  2.53G  -
  12. Creare i nuovi path e effettuare il mount dei filesystem UFS contenuti nei volumi ZFS clonati (il mount può essere reso persistente aggiungendo il filsystem al file "/etc/vfstab")
    # mkdir -m 700 -p /zone/zone2
    # mkdir -m 700 -p /zone/zone3
    # mount /dev/zvol/dsk/tank/zone2vol /zone/zone2
    # mount /dev/zvol/dsk/tank/zone3vol /zone/zone3
  13. Configurare una nuova zona "zone2" a partire dal filesystem UFS contenuto nel secondo volume e ricordarsi di cambiare l'IP address
    # zonecfg -z zone2
    zone2: No such zone configured
    Use 'create' to begin configuring a new zone.
    zonecfg:zone2> create -a /zone/zone2
    zonecfg:zone2> select net physical=wpi0
    zonecfg:zone2:net> set address=192.168.1.202/24
    zonecfg:zone2:net> end
    zonecfg:zone2> info
    zonename: zone2
    zonepath: /zone/zone2
    brand: native
    autoboot: false
    bootargs:
    pool:
    limitpriv:
    scheduling-class:
    ip-type: shared
    net:
            address: 192.168.1.202/24
            physical: wpi0
    zonecfg:zone2> verify
    zonecfg:zone2> commit
    zonecfg:zone2> exit
  14. Allo stesso modo configurare una nuova zona "zone3" a partire dal filesystem UFS contenuto nel terzo volume e ricordarsi di cambiare l'IP address
    # zonecfg -z zone3
    zone3: No such zone configured
    Use 'create' to begin configuring a new zone.
    zonecfg:zone3> create -a /zone/zone3
    zonecfg:zone3> select net physical=wpi0
    zonecfg:zone3:net> set address=192.168.1.203/24
    zonecfg:zone3:net> end
    zonecfg:zone3> info
    zonename: zone3
    zonepath: /zone/zone3
    brand: native
    autoboot: false
    bootargs:
    pool:
    limitpriv:
    scheduling-class:
    ip-type: shared
    net:
            address: 192.168.1.203/24
            physical: wpi0
    zonecfg:zone3> verify
    zonecfg:zone3> commit
    zonecfg:zone3> exit
  15. La situazione delle zone è la seguente
    # zoneadm list -cv
      ID NAME             STATUS     PATH                           BRAND    IP   
       0 global           running    /                              native   shared
       - zone1            configured /zone/zone1                    native   shared
       - zone2            configured /zone/zone2                    native   shared
       - zone3            configured /zone/zone3                    native   shared
  16. Effettuare l'attach delle tre zone
    # zoneadm -z zone1 attach
    # zoneadm -z zone2 attach
    # zoneadm -z zone3 attach
  17. Lo stato delle zone ora è cambiato
    # zoneadm list -cv
      ID NAME             STATUS     PATH                           BRAND    IP   
       0 global           running    /                              native   shared
       - zone1            installed  /zone/zone1                    native   shared
       - zone2            installed  /zone/zone2                    native   shared
       - zone3            installed  /zone/zone3                    native   shared
  18. Rispetto all'occupazione su disco, le due nuove zone whole root occupano circa 150KB l'una, ma tale valore non è realistico in quanto molte configurazioni di una zona sono effettuate al primo boot
    # zfs list
    NAME                   USED  AVAIL  REFER  MOUNTPOINT
    tank                  11.2G  80.8G    18K  none
    tank/export_home      1.23G  80.8G  1.23G  /export/home
    tank/zone1vol         2.53G  88.3G  2.53G  -
    tank/zone1vol@detach   148K      -  2.53G  -
    tank/zone2vol          150K  80.8G  2.53G  -
    tank/zone3vol          150K  80.8G  2.53G  -
  19. Effettuare il boot delle tre zone su tre terminali diversi, ad esempio per la prima zona si avrebbe (nota: si esce dalla console premendo in rapida successione i caratteri '~' (tilde) e '.' (punto), il carattere '~' su una tastiera italiana si può ottenere con AltGrf + '\^')
    # zoneadm -z zone1 boot; zlogin -C zone1
    [Connected to zone 'zone1' console]

    SunOS Release 5.11 Version snv_72 32-bit
    Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
    Use is subject to license terms.
    Hostname: zone1

    zone1 console login: root
    Password:
    Sep 20 22:37:58 zone1 login: ROOT LOGIN /dev/console
    Sun Microsystems Inc. SunOS 5.11 snv_72 October 2007
    #
  20. Dopo aver atteso un po' di tempo, in modo da lasciar terminare i processi di configurazione per il primo boot, fermiamo le tre zone ed usciamo dalle console (attenzione: questi comandi vanno eseguiti nelle rispettive console delle zone)
    # init 5
    ~.
  21. Vediamo ora l'occupazione "realistica" delle zone clonate
    # zfs list
    NAME                   USED  AVAIL  REFER  MOUNTPOINT
    tank                  11.4G  80.6G    18K  none
    tank/export_home      1.23G  80.6G  1.23G  /export/home
    tank/zone1vol         2.62G  88.0G  2.59G  -
    tank/zone1vol@detach  31.5M      -  2.53G  -
    tank/zone2vol         94.1M  80.6G  2.59G  -
    tank/zone3vol         93.0M  80.6G  2.59G  -

Le zone "clonate" occupano poco meno di 100MB di spazio disco ciascuna.

Questo esempio non analizza le performance  di una configurazione di questo tipo che ha dei pro e dei contro nell'utilizzo di volumi ZFS clonati.

Tutte le considerazioni precedenti rimangono valide se i volumi ZFS utilizzati sono esportati come iSCSI target da un nodo che ha accesso allo storage (il pool "tank" nell'esempio) ad un altro nodo con le zone "installate". In tal caso l'attach ed il detach possono avvenire anche su sistemi differenti (con lo stesso livello di package/patch) e quindi si possono clonare zone da un nodo verso altri.

martedì feb 20, 2007

Solaris Express, Developer Edition

Solaris Express Developer Edition è una distribuzione ottimizzata per gli sviluppatori con un ambiente desktop aggiornato ed una serie di strumenti per lo sviluppo di applicazioni Solaris, Java e Web 2.0.

La release 2/07 include tutte le funzionalità dell'ultimo Solaris Express, Community Edition (build 55, disponibile in CD o DVD) con il seguente software preinstallato:

Sono presenti anche tutte le nuove funzionalità introdotte in OpenSolaris per Zone, Resource Management e DTrace, in modo che possano essere testate e valutate dalla comunità.

La distribuzione è disponibile anche come immagine VMware: VMware for Solaris Express, Developer Edition.


About

Un diario digitale sui miei interessi: Internet, Solaris, Java, Fotografia, ecc.

Search

Archives
« aprile 2014
lunmarmergiovensabdom
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today