Personal Cloud Storage

cloud_syncHosting Personale

Oggi giorno tutti ci vogliamo affidare ai Mega Brand dell’informatica per gestire i nostri dati importanti. Spesso pero’ non ci rendiamo conto che questo significa che diamo in gestione importanti pezzi della nostra vita ad aziende che se ne prenderanno cura fino al giorno in cui questo dara’ loro un profitto. E’ il caso, ad esempio, di Ubuntu One che ha annunciato a tutti i suoi utenti che il 31 Luglio 2014 il servizio sarebbe stato chiuso e che da quel giorno nessuno sarebbe piu’ potuto entrare nella propria area per recuperare i propri dati. Quindi il consiglio e’ quello di usare ovviamente i servizi Web esterni ma di avere pur sempre un proprio backup casalingo, magari sincronizzandoli.

Proveremo ad analizzare i seguenti servizi : OwnCloud , SeaFile , BitTorrentSync

Tutti questi servizi non funzionano come le tradizionali applicazioni desktop.


* OwnCloud
La procedura d’installazione e’ minimale e possiede un file manager davvero ottimale, in grado di gestire i documenti nei formati piu’ diffusi. Offre anche un comodo set di applicazioni che rende OwnCloud davvero completo ed in termini di sicurezza si rimane soddisfatti dalla crittografia di base e dal controllo della versione dei file. L’applicazione per la gestione del versioning ci mette al riparo dal saturare lo spazio a disposizione, eliminando automaticamente le vecchie versioni dei files.
OwnCloud permette anche di utilizzare servizi Cloud esterni , come Google Drive, Amazon S3, Dropbox, e OpenStack Swift ed e’ capace di gestire i dati senza soluzione di continuita’ con il vostro Cloud privato. Supporta i protocolli CalDAV e CardDAV per la sincronizzazione dei calendari e delle rubriche.

Seguendo però le istruzioni date sul sito potremmo non riuscire a configurare il programma a causa di problemi con alcuni pacchetti.

Installiamo quindi le dipendenze mancanti di cui necessitiamo con i seguenti comandi:

sudo apt-get install apache2 php5 php5-json php5-gd php5-sqlite
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
sudo apt-get install php5-common php-xml-parser
sudo apt-get install sqlite

A questo punto andiamo sul sito ufficiale di ownCLOUD e scarichiamo l’ultima release disponibile (attualmente la 7.0.0) e scompattiamola:

wget https://download.owncloud.org/community/owncloud-7.0.0.tar.bz2
tar -xjf owncloud-7.0.0.tar.bz2

Creiamo una cartella sul nostro server web dedicata a ownCLOUD con il comando mkdir e copiamoci il contenuto di owncloud:

sudo mkdir /var/www/owncloud
sudo cp -r owncloud/* /var/www/owncloud
sudo chown -R www-data:www-data /var/www/owncloud

In questo modo abbiamo anche provveduto a dare i permessi di scrittura alla cartella del programma. Spesso non serve ma un bel riavvio del server apache fa sempre bene:

sudo service apache2 restart

A questo punto, con un browser, puntiamo su http://localhost/owncloud (sostituire localhost con l’indirizzo IP del server se si accede da un altro PC in rete). Se l’installazione è andata a buon fine troveremo la finestra di configurazione dell’account di amministratore: date un nome utente e una password all’amministratore di sistema di owncloud e cliccare su termina configurazione.

A questo punto possiamo iniziare ad operare via web oppure, in alternativa, con gli strumenti client che vengono messi a disposizione per tutte le piattaforme (android compreso).

Buon lavoro tra le nuvole…


* SeaFile
Questo servizio di Storage ha un processo d’installazione lineare e chiaro basato su script, che utilizza vari componenti operanti su diverse porte. Quando si verifica un problema, tuttavia, diventa complesso identificarlo. L’interfaccia Web, inoltre, e’ un tantino dispersiva ma SeaFile e’ un Cloud server dalle grandi possibilità.

## Installiamolo sul nostro computer!

Prima di tutto prepariamo il nostro Ubuntu installando le dipendenze di terze parti necessarie al perfetto funzionamento:

sudo apt-get install python2.7 python-setuptools python-simplejson python-imaging sqlite3

A questo punto scarichiamo dal sito del produttore la componente server di Seafile a 32bit o 64bit a seconda delle nostre esigenze. Salviamola nella nostra home directory.

Ora da una finestra del terminale digitiamo i seguenti comandi partendo dalla nostra home directory:

mkdir seafile
mv seafile-server-* seafile
cd seafile
tar zxvf seafile-server-*
mkdir installato
mv seafile-server-* installato

Ora eseguiamo la configurazione del programma digitando i seguenti comandi sempre nella solita finestra terminale:

cd seafile-server-*
./setup-seafile.sh

 

Rispondiamo alle domande che ci verranno poste a seconda della nostra configurazione: diamo un nome a piacere (senza spazi), l’indirizzo IP (privato della rete interna, pubblico se si vuole raggiungere il server dall’esterno o il nome host se tale indirizzo ip è associato ad un dominio) e per il resto diamo invio confermando i dati che vengono proposti in modo predefinito.

Al termine delle operazioni verrà chiesto anche un indirizzo e-mail ed una password per l’amministratore di seafile. Confermati tutti i dati inseriti possiamo provare ad attivare il server con i comandi:

./seafile.sh  start
./seahub.sh start

Se non vengono riscontrati errori sarà possibile raggiungere il proprio server seafile da http://indirizzo:8000 e loggarci con il proprio indirizzo e-mail e relativa password scelta al momento dell’installazione.

L’utente admin potrà aggiungere altri utenti, creare gruppi e fare tutta una serie di operazioni tramite la comoda interfaccia web.

Al server ci possiamo collegare anche da terminali mobili (esistono clients per Android e iOS) dando come indirizzo il proprio ip o il nome a dominio seguiti da “:8000″;

Nome utente e password sono sempre l’indirizzo e-mail e la relativa password scelta.

A questo punto non resta che automatizzare il caricamento all’avvio di ubuntu della parte server inserendo nel file /etc/rc.local le seguenti righe:

/bin/su -c “/home/nomeutente/seafile/seafile-server-versione/seafile.sh start &” nomeutente
/bin/su -c “/home/nomeutente/seafile/seafile-server-versione/seahub.sh start ” nomeutente

Naturalmente sostituendo i valori in neretto con quelli che sono appropriati per la propria installazione.

Divertitevi con Seafile!!


* BitTorrentSync
BitTorrent Inc., il nome dietro allo standard torrent che tanti usano per scaricare contenuti più o meno lecitamente, ha creato un’alternativa particolare agli altri sistemi di storage, proprio perché BitTorrent Sync non ha davvero nulla in comune con i servizi Cloud, anzi, si basa sul P2P per tenere i nostri file al sicuro senza mandarli a server sconosciuti.

Come funziona
Sync consente di conservare il controllo dei propri file; gli utenti sincronizzano i file tra i propri vari PC, e non si usa nessun server remoto per farlo. Non essendoci intermediari, non ci sono neppure limiti di alcun genere, neppure nella banda usata. BitTorrent Sync è molto più veloce della concorrenza.

Se vi serve condividere dei file, anche giganteschi, tra i vostri PC o con quelli di amici e parenti, è sufficiente scaricare l’app su ogni terminale. Sync è disponibile su Windows, OS X, Linux ed è persino accessibile ai NAS tramite un’interfaccia web. Sync usa lo standard di trasferimento BitTorrent, ma al contrario del solito, solo quelli che hanno la nostra chiave di accesso possono raggiungere le cartelle condivise.

Una volta installati i pacchetti sui vari PC non vi rimara’ altro che :

INIZIARE AD USARE BITTORRENT SYNC

  • Scegliere una cartella per la sincronizzazione e generate un secret, generando due chiavi, una di sola lettura e l\altra per l’accesso completo. Il secret è casuale ed unico, e funziona come una chiave che connette terminali multipli in un solo network
  • Sugli altri terminali deve essere scelta una cartella. Invece di generare un secret, inserite quello che avete creato nella prima
  • Mantenete acceso BitTorrent Sync fino al termine della sincronizzazione

Funzioni e feature

Le cartelle scelte per il sync possono essere gestite in qualsiasi momento dall’app oppure dall’interfaccia web.

  • Sync consente di scegliere quali file e cartelle desideriamo condividere, escludendo qualsiasi loro contenuto non vogliamo passare. Non conta il numero di cartelle, né la loro dimensione o quella dei file.
  • Sync consente la sincronizzazione a senso unico, ovvero possiamo selezionare un nostro file o cartella per l’invio, ma non permettere di sincronizzare nessuna modifica proveniente dal terminale a cui inviamo
  • Sync consente di creare un secret valido per una sola sincronizzazione, quindi non dovete lasciare le vostre “chiavi di casa” a nessuno

Il miglior servizio di condivisione di file con amici, parenti e colleghi.!

Grafici di rete con Vnstat

vnstat-php-frontend-screenshots

Controllare la banda

Sui server, come sui PC, è utile monitorare e raccogliere dati circa l’utilizzo della banda di rete. E’ possibile utilizzare vnstat per avere un monitoraggio in tempo reale della banda; questo piccolo programma ha qualcosa in più degli altri, oltre a mostrare statistiche in tempo reale, la caratteristica in cui brilla questo piccolo programma è la sua capacità di raccogliere dati su un lungo periodo di tempo. vnstat è un monitor di traffico di rete basata su console per Linux e BSD che mantiene un log del traffico di rete per l’interfaccia/e che gli indicherete nel file di conf. Utilizza le statistiche dell’interfaccia di rete fornite dal kernel come fonte di informazioni, ciò significa che vnstat non sta effettivamente sniffando il traffico, inoltre assicura anche un basso impatto sull’uso delle risorse di sistema.

In Linux, è richiesto almeno un kernel della serie 2.2, che vuol dire che tutti oggigiorno sono in grado di utilizzare questo piccolo programma.

Il programma è open source/GPL e può essere utilizzato sia come root che come utente non privilegiato.

INSTALLAZIONE

sudo apt-get install vnstat
                     vnstati
                     apache2
                     php5
                     php5-gd

Primo setup

Durante la prima esecuzione è necessario inizializzare ogni interfaccia che desiderate registrare su vnstat. Ad esempio per una interfaccia cablata con cavo di rete è necessario utilizzare il comando:

# vnstat -u -i eth0

o per una interfaccia wireless:

# vnstat -u -i wlan0

Quando si inizializza una interfaccia per la prima volta ci potrà essere un messaggio di errore che stamperà ‘unable to read database’. Se questo messaggio è seguito da un messaggio di informazioni che dice ‘a new database has been created’ l’interfaccia è stata aggiunta con successo.
Se questo non accade verificare che l’interfaccia specificata sia valida.

Per vedere tutte le interfacce del vostro sistema Linux, è possibile utilizzare il comando

 ip link show
 ... ora scarichiamo il pacchetto vnstat_php_frontend nel seguente modo :
# cd /tmp
# wget http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz
scompattiamolo nel percorso dei file di Apache ( /var/www/html )
# sudo tar zxvf vnstat_php_frontend-1.5.1.tar.gz -C /var/www/html/

a questo punto non rimane altro che spostarci nel percorso sopra indicato in cui potremo trovare la nuova directory
# cd /var/www/html
** rinominiamo x maggiore comodita’ da “vnstat_php_frontend-1.5.1” a semplicemente vnstat
# sudo mv vnstat_php_frontend-1.5.1 vnstat

…. spostiamoci all’interno della Directory vnstat ed andiamo a fare alcune veloci modifiche che ci permetteranno di diventare subito operativi.

# cd vnstat
…effettuiamo come consuetudine un backup del file config.php prima di fare qualunque modifica
# cp config.php config.php.bck

ora possiamo passare ad editare il file in questione e ad apportare le seguenti modifiche :
# vim config.php

*** modifichiamo nel seguente modo
$locale = 'en_US.UTF-8';
$language = 'en';
$iface_list = array('eth0', 'eth1'); # nel mio caso ho modificato le interfacce con la mia wlan0 

$iface_title['wlan0'] = 'Internal';
// $iface_title['eth1'] = 'External'; # se non avete due o piu' interfacce da monitorare potete commentarla

…salvate ed uscite dal file; a questo punto bastera’ puntare il browser all’URL

http://localhost/vnstat/

 

da qui in avanti potrete tenere sotto controllo i consumi della/e vostra interfaccia di rete (ora,giorno,mese).

Piu’ veloci tramite la gestione della RAM

RAM vs SWAPRAM  vs  SWAP 

La maggior parte dei moderni sistemi operativi sono in grado di utilizzare una partizione, nota come swap o file di paging, per estendere la quantità di RAM disponibile scrivendo alcuni dati sul disco rigido. Con il termine swap si intende, l’estensione della capacità della memoria volatile complessiva del computer, oltre il limite imposto dalla quantità di RAM installata, attraverso l’utilizzo di uno spazio sul disco fisso.

Se il vostro computer dispone di 2 GB di RAM o più, difficilmente, nella maggior parte dei casi, avrete bisogno di utilizzare l’area di swap. La RAM infatti è molto più veloce di un disco rigido ed è conveniente lasciare che la RAM gestisca la maggior parte dei processi. La tendenza a ricorrere all’area di swap è chiamata swappiness. Quest’ultima accetta valori numerici interi da 0 a 100: assegnandogli 0 linux utilizzerà lo swap solo quando la ram sarà finita, per evitare che il sistema si blocchi; assegnandogli 100 invece utilizzerà praticamente sempre lo swap. In genere, su Ubuntu (e OS derivati), la priorità è a 60: questo significa che lo swap verrà usato quando la ram sarà piena il 40%. Se avete abbastanza ram, potete abbassare la priorità dello swap in modo che venga usato solo quando la ram occupata è al 90%, ma anche all’ 80% se preferite. Per ridurre lo swappiness in modo tale da forzare l’utilizzo dell RAM del vostro sistema possiamo digitare da terminale il seguente comando:

sudo sysctl -w vm.swappiness=60

Ora quello che possiamo fare per lavorare sulla gestione della RAM da parte del kernel e’ di “abbassare” questo valore, quindi fate coma al solito una copia di backup del file, prima di effettuare le modifiche, e cerchiamo di fare alcuni test per vedere quale valore meglio si adatta al vostro PC ed alla vostra RAM.

Le modifiche effettuate da questo comando però resteranno attive solo per la sessione in corso e non al successivo riavvio del sistema. Se invece, vogliamo mantenere le modifiche in maniera permanente bastera’ editare il file sysctl.conf:

sudo gedit /etc/sysctl.conf

Inserire il valore vm.swappiness=10 al termine del file e salvarlo;a questo punto potete tenere sotto controllo le modifiche effettuate ed i relativi miglioramenti tramite l’utilizzo di un comodo tool qual’e’ htop .

Ma, nel caso in cui  si doveste necessariamente dover creare un file per aumentare lo swap allora eseguite questa procedura:

dd if=/dev/zero of=/media/swapfile bs=1M count=1024
mkswap /media/swapfile
swapon /media/swapfile
cat /proc/swaps
nano /etc/fstab
/media/swapfile swap swap defaults 0 0

 

Vedi anche (proteggersi da scansioni ed intrusi)

Proteggersi da scansioni ed intrusioni

SysctlSysctl

Molte volte si pensa che per poter difendere il nostro amato PC da occhi indiscreti ci voglia chissa’ quale software sofisticato , oppure una decennale esperienza nella scrittura di regole con iptables ; certo tutto questo aiuta comunque, ma e’ anche vero che nella maggior parte dei casi il nostro PC non e’ poi cosi’ invitante e non contiene nessun vero segreto che valga la pena, per un hacker ( o x meglio dire chracker ) di perderci del tempo. Quindi molte volte alziamo fortificazioni esagerate, oltre il nostro vero sapere e controllo, senza avere un buon motivo. Si potrebbe invece iniziare a prendere dimestichezza con tutta quella serie di tools che Linux fornisce di base per cominciare a restringere le possibilita’ di accesso agli estranei ed ai curiosi.

Oggi inizieremo da sysctl ossia ” la gestione dei parametri del kernel  ”

Il comando sysctl viene usato per la personalizzazione dei parametri in run-time del kernel che si trovano in /proc/sys.
Per avere uno sguardo dell’output del comando basterà digitare da root:

sysctl -a

Le categorie

                 debug
                 dev
                 fs
                 kernel
                 net
                 vm

Significato
parametri per il debug.
parametri dei dispositivi.
parametri dei filesystem.
parametri generici del kernel.
parametri della rete.
parametri della memoria virtuale.

Praticamente possiamo modificare molti valori riguardanti il sistema,la rete,ecc.

Possiamo cambiare valore ai vari parametri in base alle nostre esigenze, facciamo un esempio.
Vogliamo cambiare valore all’ip forward:

sysctl -a | grep ip_forward

@lorenzo:/etc# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0

Come vediamo il valore è a 0 e noi lo vogliamo mettere a 1:

sysctl -w net.ipv4.ip_forward=”1″

Come possiamo vedere ha preso il valore 1:

@lorenzo:/etc# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0

Ovviamente questa modifica è temporanea infatti dopo un riavvio il valore torna a 0, ma possiamo renderla definitiva andato a editare il file /etc/sysctl.conf (facendo sempre prima un bel backup) mettendo 1 alla voce net.ipv4.ip_forward.

Una volta scritta la regola nel file ed usciti dalla modalita’ scrittura dovremo far rileggere la configurazione dei parametri di questo file tramite il seguente comando:

sysctl -p

Vediamo ora alcuni parametri e scopriamo a cosa servono :

net.ipv4.tcp_syncookies:  Quando abilitato, protegge dagli attacchi SYN FLOOD

net.ipv4.icmp_echo_ignore_broadcasts: Quando abilitato, ignora tutte le richieste ICMP ECHO e TIMESTAMP dirette ad indirizzi broadcast e multi cast proteggendo il server da attacchi SMURF.

net.ipv4.icmp_ignore_bogus_error_responses: Quando abilitato, protegge da errori ICMP maligni

net.ipv4.tcp_keepalive_time: Definisce ogni quanti secondi inviare al client con una connessione keepalive aperta un pacchetto in modo tale da mantenerla aperta.

L’abilitazione dei seguenti paramentri permette di inoltrare il traffico di rete da un’interfaccia ad un’altra agendo come un router:

net.ipv4.ip_forward
net.ipv4.conf.all.send_redirects
net.ipv4.conf.default.send_redirects

net.ipv4.tcp_max_syn_backlog=512   Quando la coda dei segmenti SYN provenienti da un certo host supera il numero stabilito in questo parametro il kernel invece di tenere i dati in arrivo nella coda dei pacchetti SYN in attesa di risposta, invierà un SYN+ACK di risposta.
Si svuota cosi la coda SYN, evitando che diventi troppo grande,

net.ipv4.icmp_echo_ignore_broadcasts = 1  Il kernel ignorerà i ping destinati all’indirizzo di broadcast della rete. Questo può evitare diversi tipi di attacchi DOS.

net.ipv4.ip_conntrack_max=15000  Viene impostato il numero massimo di connessioni che il sistema può gestire. E’ bene dimensionare tale numero in base alle risorse del sistema, per evitare in ogni momento il rischio che la RAM si esaurisca. *** ***Prevenzione attacchi DOS.

net.ipv4.ipfrag_high_tresh=131072

net.ipv4.ipfrag_low_tresh=102400

Queste due opzioni indicano la quantità di RAM massima e minima che deve essere usata nel momento in cui i segmenti TCP vengono riassemblati, per non esaurire la RAM.  ***Prevenzione attacchi DOS.

net.ipv4.ipfrag_time=20 Quest’opzione indica in secondi il tempo che i segmenti TCP devono essere tenuti in memoria

net.ipv4.conf.all.rp_filter=1 Quest’opzione è utile quando un pacchetto arriva in ingresso su un’interfaccia di rete diversa da quella che ci si aspetterebbe secondo le tabelle di routing.  ***Protezione contro attacchi di Spoofing

net.ipv4.tcp_mem = 12288, 16384, 24576
Queste impostazioni istruiscono lo stack TCP su come compostarsi nei riguardi dell’uso della memoria. Indicano al kernel qual’e’ la soglia al di sopra della quale debba iniziare un uso più attento della memoria. Il primo attributo indica il valore per il quale il kernel non si deve preoccupare dell’utilizzo della memoria. Il secondo attributo invece indica la valore per il quale il kernel deve iniziare a forzare la diminuzione dell’uso della memoria. Questo stato si chiama memory pressure mode.
L’ultimo valore indica il valore per il quale il kernel non può piu assegnare pagine di memoria finchè non torna sotto la soglia.

Per l’architettura x86 ad esempio le pagine di memoria sono grandi 4096 byte.
E’ bene dimensionare la configurazione di questa variabile in base alla RAM disponibile sulla propria macchina, per evitare l’esaurimento delle risorse.

Nel prossimo articolo vedremo altri tool ed altri sistemi di protezione integrati , bye !!

LXC Linux Containers

LXC - Linux Container

LXC – Linux Container

LXC è una nuova tecnologia per il controllo degli userspace attraverso i Linux Containers, un meccanismo leggerissimo e sicuro per avere un sistema virtuale.

LXC è un’evoluzione di chroot per implementare sistemi completi virtuali, con l’aggiunta di meccanismi di gestione avanzate delle risorse attraverso cgroup e che offre un avanzato grado di isolamento sia di sistema che di applicazione.

I containers Linux adottano un approccio completamente diverso rispetto alle tecnologie di virtualizzazione come Xen e KVM.

E’ possibile virtualizzare solamente macchine linux su linux. Le macchine virtualizzate condividono con il sistema ospitante il kernel con un sistema molto efficiente di isolamento e di sicurezza, e come si può ben capire molto molto efficiente in termini di risorse utilizzate. Con questo sistema si è in grado di supportare simultaneamente centinaia di sistemi emulati su un singolo server. Le macchine virtuali non avranno nessuna perdita di prestazioni rispetto alla macchina che ospita il tutto.

E non è tutto! Il bello sta nella facilità di installazione e di gestione delle macchine virtuali. Non necessita di nessuna modifica al kernel. E’ possibile comprimere una intera macchina virtuale e clonarla in pochi secondi, impressionante direi…

INSTALLAZIONE

Da terminale diventate Root e installate i pacchetti necessari.

sudo -s
apt-get install lxc debootstrap bridge-utils

# creiamo un container
root@lxc:~# lxc-create -n ubuntu01 -t ubuntu
Checking cache download in /var/cache/lxc/trusty/rootfs-i386 …
Installing packages in template: ssh,vim,language-pack-en,language-pack-it
Downloading ubuntu trusty minimal …
……..
………
dopo molte molte righe dovreste ottenere qualcosa come questo :
##
# The default user is ‘ubuntu’ with password ‘ubuntu’!
# Use the ‘sudo’ command to run tasks as root in the container.
##

ora possiamo verificare se e quali container vengono effettivamente visti dal sistema :

root@lxc:~# lxc-ls 
ubuntu01

adesso non rimane che far partire il nostro nuovo container tramite il comando :

root@lxc:~# lxc-start -n ubuntu01 -d

se non ci sono errori la shell non dovrebbe restituirvi altro che il cursore per andare avanti e poterci ora collegare alla console del container :

root@lxc:~# lxc-console -n ubuntu01

ora ci verra’ presentata una schermata di login in cui entrare con le credenziali sopra indicate in fase d’installazione :

Ubuntu 14.04.1 LTS ubuntu01 tty1

ubuntu01 login: ubuntu
Password: 
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic i686)
ubuntu@ubuntu01:~$

 …da qui in avanti le possibilita’ di utilizzo sono quasi infinite e dipendono dall’uso che meglio si adatta alle vostre esigenze, vi rimando quindi alle guide ufficiali del progetto:
lxc_container