CoreOS ed uso nei Datacenter

CoreOS Docker Cluster

CoreOS Docker Cluster

Ormai l’ho capito, dai tanti esempi di storie di successo in campo informatico che, le migliori invenzioni si realizzano nei garage. Così come i due famosi Steve furono capaci di creare da zero il primo Mac, così i creatori di Google concepirono il loro motore di ricerca proprio in un garage o giu’ di li. La storia che si sente inizia sempre cosi :
“Qualche anno fa, in un garage della Silicon Valley…” etc… ; ma cosa ci sarà mai in questi garage americani ?!?


Nasce così CoreOS

CoreOS è praticamente una leggerissima distribuzione Linux solo con kernel e systemd. Questa distribuzione, che effettua il boot in un paio di secondi, è pensata per chi deve realizzare e gestire cluster di centinaia, addirittura migliaia, di nodi. Praticamente permette di realizzare, con hardware di proprietà, un’infrastruttura IT come quella di Amazon o Google. Oltre ad essere già disponibile sui sistemi cloud di Amazon, di Rackspace e di Google ultimamente anche Microsoft ne ha annunciato la disponibilità su Windows Azure.

Il prodotto è davvero interessanteinfatti, in poco tempo ha avuto migliaia di raccomandazioni su GitHub ed una cifra compresa tra uno e cinque milioni di dollari da gruppi di investimento privati.

CoreOS, il cui codice è interamente disponibile su GitHub, è fortemente basato sudocker“, etcd e systemd oltre ad avere un sistema di aggiornamento del sistema operativo sottostante molto innovativo chiamato FastPatch:

FastPatch aggiorna l’intero sistema operativo in un’unica soluzione, non i singoli pacchetti, su uno schema di partizioni attivo/passivo e siccome le applicazioni e le configurazioni risiedono in ambienti completamente separati e indipendenti, non si corre il rischio di lasciare alcuni nodi del cluster in uno stato di inconsistenza.

Quindi se la vostra esigenza è quella di creare un cluster, CoreOS rappresenta davvero un’ottima scelta.

Nel prossimo articolo vedremo come creare un cluster CoreOS con Vagrant .

 

#CoreOSsistemaclusteravanzato

Le novita’ di Debian 8

Debian 8 Jessie

Debian 8 Jessie

Il 25 aprile 2015 è stato annunciato il rilascio di Debian 8 (alias Jessie), che e’ l’ultima versione di uno dei più noti ed apprezzati sistemi operativi basati su Linux. Questo rilascio, atteso da moltissimi utenti e da altrettante aziende, porta con sè alcune novità significative, frutto di un lavoro di sviluppo durato circa due anni, e culminato in un sistema operativo che sarà supportato fino al 2020.

In questo articolo vedremo le principali novità introdotte su Debian 8, di cui è possibile effettuare il download direttamente dal sito ufficiale del progetto.

Una distribuzione universale
Debian, ad oggi vanta una vasta gamma di pacchetti software (circa 43 mila), che consentono a chiunque di personalizzarla a proprio piacimento, in base al tipo di applicazione per cui questo sistema sarà utilizzato: dai server alle workstation, passando per il cloud, i mainframe o le board che implentano l’Internet of Things.

L’idea della distribuzione universale, adatta a tanti contesti, ha spinto negli anni la comunità open source a creare un gran numero di derivate (ed il caso più noto risponde al nome di Ubuntu). Il fatto che molti sistemi Linux si basino su Debian aumenta quindi l’importanza di ogni aggiornamento apportato a questa distribuzione in ogni rilascio, dal momento che ciò si ripercuote su tutte le sue derivate (ufficiali e non).

Il passaggio a systemd
La novità più significativa, che ha creato molti dibattiti accesi, introdotta con Debian 8, riguarda il passaggio definitivo a systemd quale sistema di init principale, sebbene sia possibile utilizzare sysvinit come alternativa. Tale scelta trova le sue motivazioni nella riduzione dei tempi di avvio ed arresto del sistema, sebbene non tutti gli utenti sembrano convinti di ciò. Inoltre, systemd non si occupa solo della fase di boot: in quanto gestore di sistema, esso incorpora anche la gestione di diverse altre funzioni (alimentazione, dispositivi, login, eccetera), con conseguenze che potrebbero comportare, ad esempio, la necessità di riavviare il sistema in caso di aggiornamento. Un problema significativo per una distribuzione server, dovuto proprio a systemd. Il problema piu’ grande sorge per via del fatto che oggettivamente, l’attuale sistema usato, SysVInit, è oggettivamente un sistema antiquato, con un elenco di noti difetti, il principale dei quali è sicuramente la grande lentezza derivante dall’approccio seriale all’avvio dei servizi. L’idea di sostituirlo con un prodotto più moderno e meglio ingegnerizzato è, quindi, tutt’altro che sbagliata.

Il problema reale è che systemd sta andando ben oltre questo encomiabile tentativo, ma sta fagocitando al suo interno tutta una serie di servizi che con la gestione dei processi e la creazione dello ‘spazio utente’ poco hanno a che fare. Approccio, questo, che viola radicalmente le logiche della filosofia Unix, che sono alla base non solo dei Linux che usiamo oggi, ma in larga parte di quella che è l’informatica moderna.

Va detto, però, che il passaggio a systemd era già in atto da tempo, e non soltanto sulle distribuzioni basate su Debian: anche Red Hat, Fedora e SUSE (per citare alcune grandi distribuzioni Linux) sono già passate a questo nuovo gestore.

Desktop e applicazioni
Dal punto di vista dell’interfaccia utente, il grande grado di personalizzazione offerto da Debian si traduce nella possibilità di scegliere il proprio desktop environment preferito tra un gran numero di possibilità. L’ultimo rilascio è infatti compatibile con GNOME 3.14, KDE Plasma 4.11.13, Xfce 4.10, MATE 1.8 e Cinnamon 2.2.16.

Ai sopra citati desktop environment si aggiungono anche diverse applicazioni, tra cui Iceweasel 31.6, GIMP 2.8.14 e LibreOffice 4.3.3 per la sfera desktop, Apache 2.4.10, Tomcat 7.0.56 e 8.0.14, MariaDB 10.0.16 e MySQL 5.5.42 per quella server, nonchè OpenJDK 7u75, PHP 5.6.7 e Python 2.7.9 e 3.4.2 per gli sviluppatori.

Altre novità
Per concludere ricordiamo che Debian 8 è basato sul kernel Linux 3.16.7, che garantisce la compatibilità con le più recenti tecnologie disponibili. È altresì interessante notare che, con il nuovo rilascio, viene garantito il supporto a ben dieci architetture diverse, tra cui x86, PowerPC, MIPS, ARM e diverse altre.

 

#DebianottoJessie

Semplificate i vostri Firewall

Ipset facilita il Firewall

Ipset facilita il Firewall

Facilitare la gestione del Firewall usando IPSET

Premessa
iptables, che fa parte del più ampio framework netfilter, è notoriamente il tool in user-space destinato alla definizione delle regole di firewall del kernel Linux.

Ipset è una estensione per iptables che permette la creazione di regole firewall applicabili contemporaneamente ad interi insiemi di indirizzi. A differenza di quanto avviene nelle normali catene iptables, che sono memorizzate e traversate linearmente, i sets sono memorizzati in strutture dati indicizzate, caratteristica che ne rende la consultazione molto efficiente, anche in presenza di sets voluminosi, oltre che in situazioni dove è facile immaginarne l’utilità, come il blocco di lunghe liste di “bad” hosts senza doversi preoccupare dell’eccessivo impiego di risorse di sistema o della congestione di quelle di rete, ipset offre anche un nuovo approccio a determinati aspetti inerenti la progettazione di un firewall, semplificandone la configurazione.

Ipset e’ composto da due parti, un modulo kernel e, uno strumento di amministrazione, alcune distribuzioni includono anche dei wrapper di servizio per caricare configurazioni ipset al boot, come l’ipset-service di Fedora.

Prima di proseguire è doveroso spendere un po’ di tempo a rinfrescare alcuni concetti fondamentali di iptables.

In sintesi, la configuratione di un firewall iptables consiste di un set di “chains” built-in (raggruppate in quattro “tables”) che contengono ciascuna una lista di regole o “rules”.

Per ciascun pacchetto, in ciascuna fase del suo trattamento, il kernel consulta la chain appropriata per determinarne il destino.
Le chains vengono consultate in rigoroso ordine, basato sulla direzione del pacchetto (remoto->locale, remoto->remoto oppure locale->remoto) e la sua fase corrente di trattamento o processing (prima o dopo il “routing”).

Il pacchetto viene confrontato con ciascuna delle regole della chain, nell’ ordine, fino a che non viene trovata una corrispondenza. Una volta che ciò avviene, viene intrapresa la azione specificata nel target della regola.
Se viene invece raggiunta la fine della chain senza trovare una corrispondenza, viene intrapresa la azione target di default per la catena, o policy.

Una chain non è altro che una lista ordinata di regole, ed una regola non è altro che una combinazione corrispondenza/target.
Un semplice esempio di corrispondenza è “TCP destination port 25″.
Un semplice esempio di target può essere “scarta il pacchetto” (DROP).
I targets possono anche redirigere ad altre chains definite dall’utente, cosa che fornisce un meccanismo per raggruppare e suddividere le regole seguendo una logica.
Ciascun comando iptables destinato a definire una regola, corto o lungo che sia, è composto di tre parti fondamentali che specificano la table/chain, la corrispondenza (match) ed il target

Per creare una completa configurazione firewall, occorre di fatto mandare in esecuzione una serie di comandi iptables, in uno specifico ordine.

ipset
ipset è una “match extension”, cioè una estensione basata sulla definizione di corrispondenze, per iptables.
Per poterla usare è prima necessario creare e popolare dei “sets” univocamente chiamati utilizzando il tool a linea di comando ipset, e successivamente fare riferimento a tali sets in una o più regole iptables.

Un set può essere semplicemente una lista di indirizzi archiviata per un efficiente ritrovamento.
Prendiamo come riferimento i seguenti normali comandi iptables destinati a bloccare il traffico in ingresso proveniente da 201.121.12.1 e 202.121.12.2:

# iptables -A INPUT -s 201.121.12.1 -j DROP
# iptables -A INPUT -s 202.121.12.2 -j DROP

La sintassi che specifica la corrispondenza (-s 201.121.12.1) significa “i pacchetti il cui indirizzo di origine è 201.121.12.1″. Per bloccare sia 201.121.12.1 che 202.121.12.2, devono venire definite due distinte regole iptables con due distinte specificazioni di corrispondenza (una per 201.121.12.1 ed una per 202.121.12.2).

In alternativa, i seguenti comandi ipset/iptables servono ad ottenere lo stesso risultato:

# ipset -N myset iphash
# ipset -A myset 201.121.12.1
# ipset -A myset 202.121.12.2
# iptables -A INPUT -m set --set myset src -j DROP

I comandi ipset appena visti creano un nuovo set (myset, del tipo iphash) con due indirizzi (201.121.12.1 e 202.121.12.2).
Il successivo comando iptables fa quindi riferimento al set specificando la corrispondenza con -m set –set myset src, che significa “i pacchetti il cui source header è compreso nel set di nome myset”.
Il flag src significa che la corrispondenza deve avvenire su “source”. Analogamente il flag dst avrebbe spostato la corrispondenza su “destination”, mentre il flag src,dst avrebbe riguardato sia source che destination.

Nella seconda versione è richiesto un solo comando iptables, indipententemente da quanti indirizzi IP siano presenti nel set.
Anche se fossero migliaia, sarebbe necessaria sempre una singola regola iptables, mentre l’approccio tradizionale, senza il vantaggio offerto da ipset, richiederebbe migliaia di regole.

Tipi di set
Ciascun set è di uno specifico tipo, che definisce che genere di valore possa esservi memorizzato (indirizzi IP, networks, porte ecc.) così come debba essere ricercata la corrispondenza (ovvero, quale parte del pacchetto debba essere controllata e come debba essere confrontata coi valori presenti nel set).
Oltre ai tipi più comuni, che controllano gli indirizzi IP, ne sono disponibili addizionali che si riferiscono alla porta, sia all’indirizzo IP che alla porta contemporaneamente, oppure contemporaneamente al MAC address e all’indirizzo IP, ecc.

Ciascun tipo di set ha le proprie regole per tipo, range e distribuzione dei valori che può contenere.
Differenti tipi di set usano anche differenti tipi di indici e risultano ottimizzati per differenti scenari. La scelta del migliore o più efficiente tipo di set dipende quindi dalla situazione.

I tipi più flessibili di set sono iphash, che archivia liste di indirizzi IP arbitrari, e nethash, che archivia liste di networks eterogenee (IP/mask) di varie dimensioni. Si faccia comunque riferimento all man page di ipset per un elenco completo ed una descrizione di tutti i tipi di set.

È anche disponibile il tipo speciale setlist, che consente di raggruppare insieme differenti sets in un set unico.
È vantaggioso se si desidera, ad esempio,avere un singolo set che contenga sia singoli indirizzi IP che networks.

Faccio ora un esempio per capire meglio la potenza di ipset:

Limitare l’accesso restringendolo solo a certi hosts pubblici da parte di certi PC della rete locale
Supponiamo che nell’ufficio di cui gestite la rete passino spesso stagisti e che il megadirettore sia molto infastidito dall’idea che questi impiegati, Pippo, Pluto e Paperino possano passare il tempo a trastullarsi con Internet invece di lavorare e vi chieda di limitare l’accesso da parte dei loro PCs a uno specifico set di siti cui è necessario collegarsi solo per lavoro.
Per limitare i tre PC (192.168.0.5 è quello di Pippo, 192.168.0.6 quello di Pluto e 192.168.0.7 quello di Paperino) ad accedere solamente a corriere.it, repubblica.it e inps.it, si possono utilizzare i seguenti comandi:

# ipset -N limited_hosts iphash
# ipset -A limited_hosts 192.168.0.5
# ipset -A limited_hosts 192.168.0.6
# ipset -A limited_hosts 192.168.0.7
# ipset -N allowed_sites iphash
# ipset -A allowed_sites corriere.it
# ipset -A allowed_sites repubblica.it
# ipset -A allowed_sites inps.it
# iptables -I FORWARD \
-m set --set limited_hosts src \
-m set ! --set allowed_sites dst \
-j DROP

Questo esempio effettua un confronto con due sets in una singola regola. Se il l’indirizzo sorgente è compreso in limited_hosts e la destinazione non è compresa in allowed_sites, il pacchetto viene semplicemente scartato (a limited_hosts è permesso comunicare solamente con allowed_sites).

Si noti che dato che questa regola si trova nella chain FORWARD, non riguarda le comunicazioni da e verso il firewall stesso nè il traffico interno.

Cosi’ come per iptables, ipset vi permette di caricare le regole da un file ed effettuare l’output in un formato adatto al caricamento, nel seguente modo :

# ipset save > /path/to/ipset.save
# ipset restore < /path/to/ipset.save

Ipset vi permettera’ di mantenere la configurazione del vostro firewall piu’ corta, leggibile e molto piu’ facile da mantenere. Se vi servono ulteriori informazioni potete visitare il sito del progetto http://ipset.netfilter.org

 

#IpsetfacilitailvostroFirewall

Proteggere i Server da attacchi SlowHTTP/Slowloris

SlowHTTP difendersi da attacchi DDOS

SlowHTTP difendersi da attacchi DDOS

Gli attacchi del tipo SlowHTTP/Slowloris sono tra i più fastidiosi da ricevere in quanto il server di per sè non riporta nessuna anomalia se non un elevato numero di processi attivo, ma senza carico effettivo sulla macchina, questo perchè l’attacco apre quante più connessioni possibili al webserver e le lascia aperte inviando saltuariamente qualche header per mantenere aperta la connessione saturando di fatto il numero massimo di connessioni che il server può gestire e rendendolo irraggiungibile.

N.B.: con il termine attacco Slowloris s’intende un tipo di attacco chiamato Distributed Denial of Service (DDoS) che, in questo caso, sfrutta lo script Slowloris, scritto da Robert Hansen, grazie a cui vengono create una serie di connessioni web con lo scopo di inviare una enorme quantità di dati al server vittima in modo da renderlo inutilizzabile per gli utenti.

Un’ attacco con tale script permette tra l’altro ad una singola macchina attaccante di occupare le risorse di un server con un’ampiezza di banda minima e limitati effetti collaterali a servizi e porte non coinvolte.

Slowloris prova a mantenere le connessioni aperte ad un server web obiettivo e trattenerle aperte il più a lungo possibile. Fa questo, aprendo le connessioni al server web obiettivo e inviandogli richieste parziali. Periodicamente, invierà le successive intestazioni HTTP, aggiungendo ma mai completando la richiesta. I server attaccati terranno così le connessioni aperte, riempiendo il loro numero di connessioni disponibili, infine negando ulteriori tentativi di connessione dai client. Viene spesso usato anche per effettuare verifiche sulla stabilità di server, che forniscono servizi sotto stress.

Per proteggersi da questo tipo di attacchi si ricorre a degli escamotage, uno dei quali è limitare il numero di connessioni massime per IP in modo da evitare che questo possa intasare il server, per proteggere un server con directadmin, come pannello di gestione, e apache da questo tipo di attacchi basta semplicemente lanciare i seguenti comandi da root

cd /root
wget ftp://ftp.monshouwer.eu/pub/linux/mod_antiloris/installoris

chmod 755 installoris
./installoris

come segnalato sul sito di DirectAdmin

questi comandi non faranno altro che scaricare e installare il modulo mod_antiloris per apache (httpd), installarlo e riavviarlo.

 

#DifendersidaAttacchiSlowHTTP

 

Una distro perfetta

Puppy Linux 6.0 Tahrpup

Puppy Linux 6.0 Tahrpup

Forse ai piu’ il nome non dira’ molto e forse non rende giutizia a questa versione di Linux “Puppy Linux” ,
ma questa volta il team di sviluppatori hanno fatto un lavoro a dir poco eccellente, infatti posso affermare che Linux Puppy 6.0 e’ una delle distribuzioni piu’ veloci che io abbia mai provato.

 

E’ anche una tra le piu’ usabili e pratiche oggi in circolazione. Veramente perfetta sotto ogni aspetto.

Dopo ben 11 anni di sviluppo la distro si e’ molto evoluta e, sempre piu’ in un ambiente ultra veloce, divertente,
pratico e molto semplice da usare. Quest’ultima versione, nome in codice Tahrpup, viene distrbuita in versione Live oppure come immagine ISO. Il progetto offre il download di due versioni, 199Mb-PAE e non PAE.
La prima e’ per i PC che hanno piu’ di 4 GB di Ram, l’altra per le macchine con minore potenza.

Come gestore delle finestre la distro usa JWM, che offre un accesso rapido a tutte le applicazioni. Nonostante le sue piccole dimensioni, la distro e’ piena di applicazioni.
Giudizio
Produttore : Puppy Linux Team
Web Site   : http://www.puppylinux.org
Licenza     : GPL/LGPL

Caratteristiche    10
Prestazioni          10
Facilita’ d’uso      10
Documentazione 10

>> insomma trovare una distro con un livello pari a questa e’ una cosa quasi rara, davvero un’ottima
scelta per tutti.

#PuppyLinux6unasuperdistro