8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
1/13
CFS, montiamo un filesystem criptato su un cluster SUNing. R. Turco ([email protected])
A volte nei sistemi Unix/Linux si fa uso di account machine to machine in SFTP perricevere file che possono contenere dati sensibili; Tali file ottenuti tramite un flussobatch dovranno essere rielaborati ulteriormente da un ETL, da un Dispatcher o da unsistema ESB per ricavare informazioni da inserire in un database o produrre un flussoon-line in una architettura SOA.
In termini di sicurezza occorre fare attenzione al duplice problema del transito deidati con protocolli sicuri (SFTP, SSH, etc) e della permanenzadei file sul file systemstesso per un certo periodo.
Possibili soluzioni alla permanenza dei file potrebbero essere: Un database in cui memorizzare i file dopo la elaborazione, in colonne BLOB o
CLOB o crittate e mantenerli l finch una procedura di svecchiamento possaeliminarli dopo un certo tempo; questa soluzione semplice ha l inconveniente chei file non sono facilmente leggibili se occorre una operazione di ritrasmissione orielaborazione
Usare un file system crittato, accessibile solo da un amministratore autorizzatoNel panorama file system crittato con buoni algoritmi di cifratura appare CFS, unprodotto Open Source.
I vantaggi nelluso di CFS sono diversi:o capace di rendere un filesystem criptato e, quindi, a cifratura automaticao Trust con uso di smart-card e in modalit base
osenza generazione di chiavi, n residenza della stessa su filesystem
o senza necessit di Key Management, distribuzione chiavi e conservazione chiavi
mailto:[email protected]:[email protected]:[email protected]:[email protected]8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
2/13
o con generazione dell'utente solo della password (passphrase) di utilizzo del
filesystem criptato con lunghezza minima di 16 caratteri. Essa la passphrasedi utilizzo del filesystem e non di una chiave di crittaggio e deve essere nota
all'operatore autorizzato all'accesso ai dati criptati e all'applicativo(configurabile).
o ad algoritmo simmetrico con combinazione ricorsiva di almeno due DSAcodebook (64 bit-> 2x64=128 bit) e stream cipher (256 Kbyte) fino alraggiungimento del 3-DES
o pochissime vulnerabilitEsiste anche una versione per Windows ( vedi il link:http://cfs.umbi.umd.edu/cfs/software/download.htm)
Lo svantaggio/croce e delizia dei fai da s:-occorre compilarselo sulla piattaforma Unix/Linux che si dispone-se si ha un cluster occorre configurarlo in modo opportuno
Nel seguito si suppone di usare una versione cfs-1.4.1,tar ma voi userete lultimaversioni disponibile sul sito.
Ecco gli step necessari, da verificare in base alla propria piattaforma:
#Step 0 Procurarsi il tar
#Step 1 Starare da root il pacchetto tar (es: cfs-1.4.1,tar)
#Step 2 - Leggersi il README.install e verificare cosa modificare del Make
Generalmente servono questi sotto-step:- Assegnare da root la variabile nel seguente modo:
PATH=/usr/ucb:$PATH;export PATH- Verificare la directory dove il compilatore cc sul sistema per inserirla nel
Makefile- Accedere alla directory cfs-1.4.1 e modificare Makefile come in allegato- Effettuare i comandi:
make cleanmake installa_cfs
Il make installa il tutto in /usr/local/etc il daemon cfsd e in /usr/local/bin
http://cfs.umbi.umd.edu/cfs/software/download.htmhttp://cfs.umbi.umd.edu/cfs/software/download.htmhttp://cfs.umbi.umd.edu/cfs/software/download.htm8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
3/13
tutti gli eseguibili necessari. Make e script sono mostrati in APPENDICE.
#Step 3 - Installazione in produzione
In produzione non si pu fare compilazione, n conviene portare sul versionatore delsoftware (SVN, PVCS, CVS o altro) i sorgenti e il Makefile per una questione disicurezza. Per cui si creer solo un tar degli eseguibili.
Da rootportare nella $home il tar CFS-TAR.tar (che conserva anche i privilegi).
effettuare i seguenti comandi:tar xvf CFS-TAR.tar
cd cfs-tar./install-cfs.sh
Lo script provvede a distribuire i file sul nodo del root. Lo script deve essere lanciatoPer ogni nodo del cluster da root.
Note1) il file secrets che cresce di dimensioni.2) Lo script si attende un filesystem gfs denominato da root /null e con protezioni
chmod 0 /null.
Lo script provvede a:
aggiungere in /etc/exports:/null localhost
aggiungere in /etc/dfs/dfstabshare -F nfs -o rw=localhost -d "cfs directory" /null
eseguire il comando:shareall
effettuare in / (su ogni nodo del cluster) le seguenti operazioni:mkdir /nullchmod 0 /nullmkdir /cryptcopiare gli eseguibili nelle directory opportune
chiedere la passprhase che crea in /ftp_input/secrets (un gfs se si su cluster)creare in rc3.d il file S99cfs-rclocal
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
4/13
eseguire il file S99cfs-rclocal in modalit nohup.
3) Prima di un UPGRADE del prodotto CFS (cambio versione CFS) si richiede cheda root, su ogni nodo del cluster, si effettuano i seguenti comandi:
umount /cryptps -efa | grep cfsd
Dal pid del processo individuato effettuare il comando:kill -9
starare il nuovo tar con gli eseguibili ed effettuare i seguenti comandi:tar xvf CFS-TAR.tar
cd cfs-tar./upgrade-cfs.sh
l'upgrade non fa altro che ricopiare in modo forzato gli eseguibili.
Eseguire il RESTART di CFS. E' sufficiente effettuare il comando:
nohup /etc/rc3.d/S99cfs-rclocal
PrerequisitiLinstallazione presume:
- lesistenza di un gfs (global-file-system) con mount point /ftp_input.- La possibilit di usare NFS in localhost
Avvertenza: Se il filesystem gfs non denominato come /ftp_input occorremodificare almeno due shell di seguito mostrate in APPENDICE: installa-cfs.sh emyattach.sh.
Installazione Cluster nodo 1Per linstallazione Cluster nodo 1 quindi ad esempio facciamo:
Effettuare i seguenti passi:1. collegarsi come root sul nodo in questione2. effettuare il comando:
mkdir p /applicativi/CFS-INSTALL3. posizionarsi nella sottodirectory col comando:
cd /applicativi/CFS-INSTALL4. scaricare da PVCS il tar CFS-TAR.tar nella directory precedentemente
creata5. scompattare il tar col comando:
tar xvf CFS-TAR.tar6. effettuare i seguenti comandi:
cd cfs-tar
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
5/13
./install-cfs.shAvvertenza: la procedura di installazione (install-cfs.sh) chiede unapassphrase, di almeno 16 caratteri. Tale passphrase viene creata in/ftp_input/secrets.
Installazione Cluster nodo 2
Se linstallazione di CFS avvenuta sul nodo 1 sufficiente rieseguire in
sequenza soltanto i punti 3 e 6.
Nelle installazioni successive alla prima non viene richiesta la passphrase, inquanto essa creata su un gfs che visibile da tutti i nodi del cluster.
Verifica dellinstallazione CFS
Linstallatore pu effettuare le verifiche di seguito descritte.
Da root, su ogni nodo del cluster (DB cluster), effettuare i seguenti duecomandi:
ps -efa | grep cfsdDa root o da utente unix diverso da root effettuare il comando:
/usr/local/bin/myattach.sh cd /crypt ls
In seguito al comando ls, linstallatore trover una directory temporanea
corrispondente ad .
E necessario scollegarsi a fine utilizzo col comando:
/usr/local/bin/mydetach.sh Utilizzo CFSDa utente applicativo unix per operare con il filesystem criptato occorre farelattach con i due comandi:
sh /usr/local/bin/myattach.sh cd /crypt ls
In seguito al comando ls, loperatore trover una directory temporaneacorrispondente ad .
Una volta eseguito il comando di attach il filesystem utilizzabile come unfilesystem normale con relative operazioni.
Avvertenze: In generale lalias univoco; ovvero uno stesso alias, da duesessioni diverse o stessa sessione o da due utenti diversi, non possibileusarlo; tuttavia lo script myattach.sh controlla se lalias gi usato non locrea e permette di accedere. Per convenzione un operatore dovrebbe usare unalias: matricola-utente. Lo script myattach.sh ha un delay di 30 minuti, oltreai quali sgancia loperatore dal filesystem criptato. Se, invece, loperatore habisogno di non essere limitato nel tempo deve usare una sintassi diversa ovvero:
/usr/local/bin/cattach /ftp_input/secrets Questa istruzione richiede obbligatoriamente il detach a fine operazioni.
A fine utilizzo del filesystem criptato necessario scollegarsi da esso col
comando: /usr/local/bin/cdetach oppure con il commando: sh /usr/local/bin/mydetach.sh
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
6/13
Stop CFSDa root, su ogni nodo del cluster (DB cluster), effettuare i seguenti duecomandi:
umount /crypt (necessaria a non mandare in crisi nfs) ps -efa | grep cfsd
Dal pid del processo individuato col comando precedente:
kill -9 Start CFSDa root, su ogni nodo del cluster (DB cluster), effettuare il seguente comando:nohup /etc/rc3.d/S99cfs-rclocal
Nelle situazioni di upgrade del prodotto verr fornito un ulteriore kit diinstallazione ovviamente diverso dal presente.
Cambio password
Da root, su un qualsiasi nodo del cluster, effettuare il seguente comando:/usr/local/bin/cpasswd /ftp_input/secretsOld passphrase:New passphrase:Again:
Avvertenza: richiede una password di almeno 16 caratteri
Utilizzo file system criptato da applicativo
Utilizzo filesystem criptato da applicativo
AttachE possibile fare un attach nel seguente modo:
sh /usr/local/bin/myattach.sh
Avvertenze: Lo script solo eseguibile e prevede un detach dopo 30 minuti. Talevalore, se necessario, modificabile da root. Lalias univoco; ovvero unostesso alias, non possibile usarlo n come stessa sessione, n due sessionidiverse. Per convenzione si suggerisce di usare come alias: . Lo scriptmyattach.sh controlla se lalias gi usato non lo crea e permette di accedere.
Una volta eseguiti i due comandi di attach il filesystem utilizzabile come un
filesystem normale con relative operazioni.
Detach
E possibile fare il detach nel seguente modo:
sh /usr/local/bin/mydetach.sh
APPENDICE
Shell startPaTH.sh
Serve a settare il PATH prima di lanciare il Make e contiene:
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
7/13
#!/bin/shPATH=/usr/ucb:$PATH;export PATHecho $PATH
Shell install-cfs.sh
Installa il prodotto in un mount-point /ftp_input/secrets
#!/bin/sh
# Configurazione CFS
clear
echo " "echo "Checkpoint A: controlli pre-installazione x Solaris 2.9 ..."echo " "
user=`who am i|awk '{print $1}'`export user
if [ $user -ne "root" ]
thenecho "Verifica NOK: user = $user"echo "Abort: l'installazione va fatta da utente root"exit 1elseecho "Verifica OK: user = $user"echo "Prosegue l'installazione ... "
fi
if [ -d /usr/local/etc ]then
echo " "echo "OK: /usr/local/etc esistente"echo " "
elsemkdir /usr/local/etc
fi
echo " "
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
8/13
echo "Installazione del software ..."echo " "
cp -f cattach /usr/local/bin/.
cp -f cdetach /usr/local/bin/.cp -f cfssh /usr/local/bin/.cp -f cmkkey /usr/local/bin/.cp -f cpasswd /usr/local/bin/.cp -f ccat /usr/local/bin/.cp -f cmkdir /usr/local/bin/.cp -f cname /usr/local/bin/.cp -f myattach.sh /usr/local/bin/.cp -f secureattach.sh /usr/local/bin/.
cp -f mydetach.sh /usr/local/bin/.cp -f cfsd /usr/local/etc/.
chmod g-x,o-x /usr/local/bin/cmkdirchmod g-x,o-x /usr/local/bin/cpasswdchmod g-w+x,o-w+x /usr/local/bin/myattach.shchmod g-w+x,o-w+x /usr/local/bin/secureattach.shchmod g-w+x,o-w+x /usr/local/bin/mydetach.sh
echo " "echo "Inizio configurazione /etc/dfs/dfstab"echo " "
if [ -f /etc/dfs/dfstab ]then
echo "##" >> /etc/dfs/dfstabecho "## Non toccare: sono per CFS (Cryptographic Filesystem)" >>
/etc/dfs/dfstab
echo "##" >> /etc/dfs/dfstabecho "share -F nfs -o rw=localhost -d \"cfs filesystem\" /null" >> /etc/dfs/dfstabelseecho "##" > /etc/dfs/dfstabecho "## Non toccare: sono per CFS (Cryptographic Filesystem)" >>
/etc/dfs/dfstabecho "##" >> /etc/dfs/dfstabecho "share -F nfs -o rw=localhost -d \"cfs filesystem\" /null" >> /etc/dfs/dfstab
fi
echo " "
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
9/13
echo "Creazione del filesystem virtuale /crypt"echo " "
mkdir /crypt
echo " "echo "Creazione del filesystem da montare /null"echo " "
mkdir /nullchmod 0 /null
echo " "echo "Esecuzione del shareall"shareallecho " "
echo " "echo "Configurazione di S99cfs-rclocal"cp S99cfs-rclocal /etc/rc3.d/.echo " "
echo " "echo "Lancio di S99cfs-rclocal"chgrp sys /etc/rc3.d/S99cfs-rclocalchmod u+x /etc/rc3.d/S99cfs-rclocalnohup /etc/rc3.d/S99cfs-rclocal
echo " "echo "Installazione terminata correttamente sul nodo $hostname"
echo " "
if [ -d /ftp_input/secrets ]then
echo " "echo "Passprhase in /ftp_input/secrets"echo " "
elseecho "-Prima Area- "
echo "Creazione Passprhase in /ftp_input/secrets (almeno 16 caratteri)"/usr/local/bin/cmkdir /ftp_input/secrets
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
10/13
echo " "echo "Conservare la prima password "echo " "
fi
chmod -R 775 /ftp_input/secrets
if [ -d /ftp_input/mysecure ]then
echo "-Seconda Area- "echo "Passprhase in /ftp_input/mysecure"echo " "
else
echo " "echo "Inserisci la password iniziale di seguito indicata: xyz20m06busbu0rcs0"/usr/local/bin/cmkdir /ftp_input/mysecureecho " "
fi
chmod -R 775 /ftp_input/mysecure
echo "Attivit ancora da svolgere:"
echo "1. Ripetere il tutto anche sull'altro nodo del cluster"echo " "
Shell makeDBcryptfs.sh
Serve a creare 3 directory (di esempio nellarticolo) e di appoggio sul file systemcrittato a cui accedere successivamente da operatore, quando egli spostermanualmente i file oppure anche da applicativo.
#!/bin/shif [ $# = 0 ]thenecho "Errore: Inserire anche la passphrase operatore!!"exit 0
fi
sh /usr/local/bin/myattach.sh creafsdb $1
var=0
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
11/13
while [ $var -lt 1 ]do
echo ".........."
if [ -d /crypt/creafsdb ]then
var=2echo "Attach eseguito"sleep 5
fidoneecho "posizionamento su /crypt"
cd /crypt/creafsdbmkdir -p migrazionemkdir -p dbspecchiomkdir -p recoveryecho "Creazione directory eseguita"sh /usr/local/bin/mydetach.sh creafsdb
shell S99cfs-rclocal
#!/sbin/sh## Configurazione per CFS#if [ -x /usr/local/etc/cfsd ]; then
/usr/local/etc/cfsd && \/etc/mount -o port=3049,vers=2,proto=udp,intr localhost:/null /crypt
Fi
Shell myattach.sh
#!/bin/sh## $1 alias di attach a CFS# $2 password di attach a CFS##
## Controlla se l'alias gi attaccato
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
12/13
# Se e' gia' attaccato l'alias viene restituito 1 con exit##if [ $# = 0 ]
thenecho "Usage: myattach.sh "
exit 1fi
if [ $# != 2 ]thenecho "Usage: myattach.sh "
exit 1
fi
if [ -d /crypt/$1 ]thenexit 0
fi
## L'attach ha un timeout di 30 minuti
#
/usr/local/bin/cattach -i 30 -- /ftp_input/secrets $1
8/8/2019 CFS, montiamo un filesystem criptato su un cluster SUN
13/13
Shell secureattach.sh#!/bin/sh## $1 alias di attach a CFS
# $2 password di attach a CFS##
## Controlla se l'alias gi attaccato# Se e' gia' attaccato l'alias viene restituito 1 con exit##
if [ $# = 0 ]thenecho "Usage: secureattach.sh "
exit 1fi
if [ $# != 2 ]thenecho "Usage: secureattach.sh "
exit 1fi
if [ -d /crypt/$1 ]thenexit 0
fi
#
# L'attach ha un timeout di 30 minuti#
/usr/local/bin/cattach -i 30 -- /ftp_input/mysecure $1
Top Related