Ansible per l’automazione IT ed il Configuration Management

Ansible e l’automazione IT

Ansible e l’automazione IT

Ansible e’ un tool di Configuration Management ed IT Automation che sta riscuotendo un notevole successo tra gli addetti ai lavori in virtu’ della sua immediatezza, della sua semplicita’ di utilizzo e del superamento delle limitazioni della tipica configurazione basata su “server & agent”.

Che cos’e’ Ansible

Ansible quindi e’ un tool di Configuration Management ed IT Automation che rientra nella sfera degli strumenti tipici del metodo DevOps.

DevOps e’ un movimento nato per abbattere il muro di gomma che nel corso degli anni si e’ innalzato tra Developer e Sysadmin. Per usare un’analogia, DevOps e’ una cultura che ha lo scopo di creare una pipeline (in pratica un ponte di comunicazione) tra sviluppatori ed amministratori di sistema.

L’obiettivo e’ uno solo: aumentare costantemente la soddisfazione del cliente producendo ed erogando software allo stato dell’arte con continue release correttive.

Per raggiungere un obiettivo cosi’ ambizioso e’ importante poter contare non solo sulle persone ma anche sugli strumenti. Cosi’ sono nati tool agili ed intuitivi che hanno lo scopo di automatizzare lo sviluppo, il testing e la configurazione di server ed applicazioni. Questa famiglia di tool per il Configuration Management comprende gia diversi nomi blasonati come ad esempio Puppet, Chef, Saltstack e CFEngine.

Configuration Management in breve

Il Configuration Management e’ un processo utilizzato per definire la configurazione delle applicazioni web e dei server in modo consistente, possibilmente sotto controllo di versione. Con il Configuration Management e’ possibile definire a priori come dovra’ essere configurato il server X o l’applicazione Y. Il tutto in linguaggio sorgente o sotto forma di meta-linguaggio.

I tool di Configuration Management leggono le configurazioni a partire da un file sorgente ed applicano le stesse su uno o piu’ server, in modo automatico e prevedibile.

Esempio:

inizio configurazione
1 assicurati che apache2 sia installato
2 assicurati che php5 sia installato
3 assicurati che mysql sia installato
fine configurazione

Un tool di Configuration Management puo’ leggere queste istruzioni ed applicarle su uno o piu’ server. In questo modo l’operatore puo’ replicare la stessa configurazione su decine di server oppure ricostruire la stessa in pochi secondi quando uno o piu’ server vengono messi fuori uso.

Ansible, un po’ di storia

Lanciato nel 2012, Ansible  nasce da un’idea di Michael de Haan, creatore tra l’altro di Cobbler. De Haan un bel giorno sente la necessita’ di scrivere un software che potesse semplificare all’ennesima potenza le attivita’ di Configuration Management ed Automazione IT.

Fino a quel momento il panorama del Configuration Management era dominato da Puppet e Chef (che comunque mantengono e sicuramente manterranno  anche in futuro quote di mercato molto vaste). Ma seppure ottimi, sia Puppet che Chef hanno alcuni punti deboli, che fanno storcere il naso ai Sysadmin piu’ esigenti:

* Puppet e Chef funzionano principalmente in modalita’ server – agent

* Chef richiede anche la conoscenza del linguaggio Ruby

Anche se non si tratta di limitazioni insormontabili ci sono comunque alcuni svantaggi in questo tipo di approccio.

Prima di tutto non sempre e’ possibile installare un agent sul server di destinazione, poiche’ un agent e’ comunque un piccolo software che rimane in esecuzione permanente su uno o piu’ server ed ha lo scopo di attendere comandi e configurazioni impartite dal server master.

Sia Chef che Puppet utilizzano questo approccio che spesso non e’ possibile mettere in pratica.

Pensiamo ad esempio ad ambienti server che per ragioni di conformita’ o sicurezza non possono ospitare agenti o software estranei oppure a quei server con un discreto numero di anni sulle spalle, dove l’installazione di una versione aggiornata di Ruby (richiesta, ad esempio, da Puppet) potrebbe causare effetti imprevedibili.

I vantaggi di Ansible

Perche’ dunque adottare Ansibile ?
Se sei un Sysadmin o un Developer potrai trarre sicuramente grande beneficio dall’uso di questo tool: con Ansible non e’ mai stato cosi’ semplice definire lo stato di un server e delle tue applicazioni web.
Con Ansible quindi il risparmio di tempo e di codice e’ notevole rispetto a Puppet o Chef.

Curva di apprendimento bassa

Dalla lettura della documentazione alla scrittura dei primi Playbooks il passo sara’ breve, ed in pochi minuti vi sara’ possibile iniziare a lavorare con Ansible senza dover penare con configurazioni di server Master e agenti vari.

Non sono richieste capacita’ di coding

Puppet e Chef nascono entrambi da un team di sviluppatori follemente innamorati di Ruby. Per la definizione dello stato dei server e delle configurazioni Puppet adotta un linguaggio simile al codice Ruby mentre per definire lo stato di un server con Chef e’ addirittura essenziale conoscere il linguaggio, invece Ansible supera completamente questa limitazione.

In Ansible ad esempio e’ possibile definire che il server X dovra’ contenere Apache con due righe:
es:

Install Httpd
yum: name=httpd state=latest

Come si puo’ notare, a differenza di Puppet, Chef e Saltstack, Ansible non ha bisogno di nessun agente per applicare le configurazioni su un server. Ansible utilizza di default il trasporto SSH: questo elimina la necessita’ di installare software estraneo sui nodi.

Modulare e Open Source

Ansible e’ composto da numerosi moduli. Per analogia i moduli di Ansible hanno la stessa funzione delle risorse in Puppet. Ogni modulo svolge delle funzioni ben precise e gestisce un singolo aspetto di ogni sistema. Questa architettura consente di espandere Ansible praticamente all’infinito, senza contare che i moduli possono essere scritti in qualsiasi linguaggio di programmazione. Inoltre Ansible e’ Open Source e la comunita’ continua a crescere rapidamente.

Ansible, i concetti chiave

Prima di terminare con questa introduzione su Ansible vediamo quali sono i concetti chiave ed i componenti che ruotano attorno a questo software.

Ansible: l’inventario

L’inventario e’ una lista di server sui quali Ansible applica, a comando, le configurazioni di sistema e le istruzioni di automazione. L’inventario di solito e’ contenuto all’interno del file /etc/ansible/hosts anche se e’ possibile specificare una posizione a piacere.

All’interno dell’inventario l’operatore puo’ specificare la lista dei server “bersaglio”. E’ chiaramente obbligatorio che ogni server abbia una corrispondenza DNS anche se e’ possibile specificare ogni server con il proprio indirizzo IP . Un esempio di inventario:

[webservers]
webserver1.example.com
webserver2.example.com

[dbservers]
dbserver1.example.com
dbserver2.example.com

Ansible ed i Tasks

In Ansible i Tasks sono dei “compiti” ovvero una serie di istruzioni che Ansible esegue in ordine di apparizione. Ogni istruzione contiene la definizione e/o la configurazione che dovra’ essere applicata ad ogni sistema.

Ansible e gli Handlers

Gli Handlers in Ansible sono delle istruzioni che vengono eseguite a seguito di una determinata azione. Ad esempio dopo aver installato httpd un operatore puo’ voler avviare Apache automaticamente. Un esempio di Handler che avvia Apache su CentOS:

name: start httpd
service  : name=httpd state=started enabled=yes

Gli Handlers si basano sul modulo service di Ansible (questo modulo viene utilizzato per gestire i servizi di sistema).

Ansible ed i Playbook

In Ansible i Playbook sono delle collezioni di Tasks. Ogni Playbook puo’ contenere un determinato numero di Tasks e di Handlers. I Playbook devono essere definiti in linguaggio YAML.


Ansible ed i Moduli

Ansible e’ composto da numerosi moduli. Esistono moduli per gestire i servizi di Cloud Computing (EC2 su AWS), Rackspace e Google Compute Engine, esistono moduli per installare pacchetti software su server Linux con apt e yum, moduli per gestire file di configurazione e database e molto altro ancora.

Per una lista completa dei moduli puoi consultare la documentazione ufficiale: Ansible Modules.

#AnsibleConfigurationManagement

Shellshock Bug verifichiamo il nostro sistema

Shellshock Bug

Shellshock Bug

I ricercatori di Red Hat hanno recentemente segnalato un particolare bug denominato “Shellshock” presente nella Shell che potrebbe mettere in serio pericolo milioni di sistemi Linux. A quanto pare questo bug potrebbe essere utilizzato da utenti malintenzionati per poter operare sul sistema operativo.

Shellshock pare sia un exploit molto più pericoloso di Heartbleed, che avrebbe potuto mettere letteralmente in ginocchio la maggioranza dei web server esistenti, perché permette di prendere il pieno controllo della macchina, non importa quale, ed eseguire del codice (ottenendo tutti i permessi d’amministrazione).

Cos’è e come funziona Shellshock?  In pratica, è una vulnerabilità del terminale, che gli utenti di Windows conoscono meglio come Prompt dei comandi,  che espone all’attacco una serie di servizi, da Apache al DHCP dei router ecc… Se la versione di BASH installata è afflitta dal bug, un malintenzionato potrebbe eseguire da remoto una serie d’operazioni, che spaziano dai comandi CGI ai demoni avviati in automatico dal sistema operativo. Significa che, senza una patch ad hoc chiunque potrebbe prendere possesso dei server.

Non è però ben chiaro come questi possano accederne dato che effettuare modifiche nel sistema, installazione di software ecc vengono richiesti i permessi di root. Da notare inoltre che Red Hat e le principali distribuzioni Linux hanno già risolto il bug, basterà quindi aggiornare la distribuzione o server Linux per risolvere questo problema.

Possiamo facilmente verificare se il nostro sistema operativo è o meno  “infetto” da Shellshock.

Basta semplicemente avviare il terminale e digitare:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

se avremo come risultato:

vulnerable
this is a test

vuol dire che nel nostro sistema è presente il bug Shellshock in bash

se invece abbiamo come risultato

this is a test

possiamo star tranquilli.

Per risolvere il problema bastera’ semplicemente aggiornare la Bash digitando da terminale:

Per Debian, Ubuntu e derivate:

sudo apt-get update
sudo apt-get install bash

Per Fedora, CentOS, Red Hat e derivate:

sudo yum install bash

Per openSUSE e derivate:

sudo zypper install bash

Per Arch Linux e derivate, Chakra, Manjaro ecc:

sudo pacman -Sy bash

Al termine bastera’ rilanciare il comando di verifica, ed ecco risolto il problema di Shellshock.

 

#ShellshockBugVerifichiamo

Cisco Academy nuovo corso NDG Linux Essentials

Back to School Cisco Academy

Back to School Cisco Academy

Oggi vi segnalo il nuovo corso “NDG Linux Essentials” realizzato dal Programma Cisco Networking Academy e proposto da Linux Professional Institute (LPI).

NDG Linux Essentials
Un nuovo percorso formativo arricchisce il Programma Cisco Networking Academy, promosso dall’azienda in tutto il mondo per consentire di acquisire le competenze professionali ICT più richieste nel mercato del lavoro: si tratta di NDG Linux Essentials, dedicato alla conoscenza dei principi fondamentali del sistema operativo Linux.
Il corso NDG Linux Essentials è stato ideato dal gruppo di sviluppo della NDG (Network Development Group), è conforme alle linee guida proposte da Linux Professional Institute (LPI) ed insegna i fondamenti di un sistema la cui adozione è in costante crescita, generando una importante domanda di personale qualificato.

Il corso NDG Linux Essentials è disponibile in tutto il mondo sulla piattaforma Cisco NetSpace Learning, dedicata ai corsi del programma Cisco Networking Academy, ed è erogato secondo l’approccio pratico tipico del programma: si offre una piattaforma operativa che consente agli studenti una continua interazione con il materiale formativo a loro disposizione, aumentando il loro coinvolgimento e le loro conoscenze.

Il Cisco NetSpace Learning è una piattaforma cloud e questo costituisce un ulteriore valore aggiunto, perché l’integrazione al suo interno di un vero ambiente di laboratorio Linux consentirà a università, scuole, enti formativi di inserire l’istruzione open source nella propria offerta senza dovere sviluppare in proprio una struttura dedicata.

Per maggiori informazioni consultare la sezione dedicata a NDG Linux Essentials dal portale Cisco.

 

#CiscoAcademyCorsoLinuxEssentials

OSSEC host-based intrusion detection system

host-based intrusion detection system

OSSEC host-based intrusion detection system

Spesso, da sisteimsti, capita di dover tenere sotto controllo un grande numero di sistemi e di dover analizzare i log con una certa costanza per problemi di sicurezza. Ma amministrare molti sistemi e collegarcisi quotidianamente è un’operazione dispendiosa e anche noiosa.

Il problema può essere affrontato con l’aiuto di analizzatori di log, come ad esempio il noto Logwatch oppure con software di integrity checker come AIDE, oppure con rootkit control come Rkhunter. Ci sono molti di questi strumenti, ma la loro funzione è molto specifica, ed alla fine ci occorre installare diversi software per poter ottenere un controllo completo.

OSSEC è un “host-based intrusion detection system” (HIDS) opensource, ed e’ in grado di monitorare il funzionamento di un sistema “dal suo interno” anziché ricorrere all’uso delle interfacce di rete, come fanno invece i network-based intrusion detection system. Ossec e’ un sistema scalabile che possiede un potente motore di analisi e correlazione che può effettuare analisi dei log, file integrity checking, Windows registry monitoring (per scovare intrusioni non autorizzate), rootkit detection, real-time alerting e active response; inoltre Ossec è multipiattaforma e supporta la maggior parte dei sistemi operativi, come Linux, OpenBSD, MacOS, Solaris e Windows.

I software HIDS , si occupano di sorvegliare costantemente il comportamento del sistema oggetto d’esame e lo stato in cui sta operando. Mentre i NIDS ispezionano il contentuto di ogni singolo pacchetto dati in transito, un HIDS, qual è OSSEC, può stabilire a quali risorse tentano di accedere i programmi installati bloccando tempestivamente operazioni sospette. Per esempio, un word-processor non deve poter modificare le password di sistema o la configurazione di aree vitali, se lo fa significa che, con buona probabilità, sta eseguendo del codice maligno, collegato all’azione di un malware.
Un HIDS quindi controlla lo stato del sistema verificando le informazioni memorizzate, sia in RAM che sul file system, i file di log e così via, poiche’ l’obiettivo è quello di rilevare tempestivamente le anomalie.

In particolare, OSSEC si incarica di analizzare i log di sistema, verificare l’integrita dei file memorizzati su disco, controllare la presenza di rootkit e tenere traccia delle performance di ogni macchina collegata alla rete locale nella quale e installato.

CARATTERISTICHE:
Architettura: Ossec è costituito da più di un dispositivo, possiede un Manager centrale che monitorizza tutto e riceve informazioni da agents (sensori), syslog e databases.

  • Manager: Il manager è la parte centrale di Ossec e contiene i databases dei file integrity checking , dei logs e degli eventi. Contiene anche tutte le regole, i decoder e le configurazioni cosi da
    rendere più facile l’amministrazione di agents multipli.
  • Agent: L’agent è un piccolo programma installato nei sistemi che si desidera monitorare. Esso raccoglie informazioni e le spedisce al Manager per l’analisi. Sono progettati per utilizzare veramente poche risorse quindi non influenzano le prestazioni del sistema.
  • Agentless: Per i sistemi in cui non si possono installare agents, Ossec permette operazioni di file integrity monitoring . Alcuni esempi possono essere firewalls, routers o anche particolari sistemi Unix.
  • Sicurezza: Ossec offre svariate funzionalità nell’ambito della sicurezza:
    • Analisi dei log e correlazioni:
    • Regole flessibili basate su XML
    • Time Based Alerting
    • Libreria contenente molte regole già integrata
    • Integrity Checking
    • Root Kit detection
    • Active Response: Ossec permette di intervenire immediatamente sulla minaccia con vari metodi:
    • Disabilitare il servizio per un determinato intervallo di tempo (espresso in minuti)
    • Blacklists
    • Firewall-Drop: uno script che permette di comunicare universalmente con i firewall delle più comuni distribuzioni Unix/Linux Firewalls, Switch e Routers: Ossec può ricevere ed analizzare eventi di Syslog da una grande varietà di firewalls, switch e routers che supportano
      questa tecnologia.
  • Scansione dei processi nascosti: grazie all’utilizzo delle funzioni getsid() e kill() sicontrolla se esistono pid utilizzati. In caso positivo, se il comando permostrare i processi attivi (ps in Linux, tasklist in Windows) non `e in grado di rilevarli, significa che nel sistema `e presente un rootkit a livello kernel;
  • Scansione delle porte segrete: con la funzione bind() si controlla ogni porta TCP e UDP del sistema. Se il binding relativo a una porta fallisce (il che significa che tale porta `e attualmente utilizzata), ma netstat, il comando che permette di visualizzare le connessioni attive del computer, non `e in grado di rilevarla, `e probabile la presenza di un rootkit all’interno del sistema
  • Scansione delle interfacce di rete: se una o pi`u interfacce sono in modalit`a promiscua, e il comando ifconfig non lo evidenzia, `e probabile che un rootkit stia nascondendo la presenza di uno o pi`u dispositivi che intercettano tutti i pacchetti di rete

Un’altra interessante estensione del software permette di realizzare la disabilitazione distribuita delle memorie USB, per impedire ai dipendenti di appropriarsi in modo illecito dei contenuti del patrimonio informativo aziendale.


Funzionalita’
OSSEC ha un motore di analisi dei log in grado di correlare e analizzare i log da più dispositivi e formati. I seguenti sono quelli attualmente supportati:

  • Sistemi Unix:
    • Unix PAM
    • sshd
    • Telnetd Solaris
    • Samba
    • Su
    • Sudo
  • Server FTP:
    • ProFTPd
    • Pure FTPd
    • vsftpd
    • Microsoft FTP Server
    • Ftpd Solaris
  • I server di posta:
    • Imapd e pop3d
    • Postfix
    • Sendmail
    • Vpopmail
    • Microsoft Exchange Server
  • Basi di dati:
    • PostgreSQL
    • MySQL
  • Server Web:
    • Apache Server
    • Web server IIS
    • Log Zeus errori del server Web
  • Applicazioni Web:
    • Horde IMP
    • SquirrelMail
    • ModSecurity
  • Firewall:
    • Iptables firewall
    • Solaris IPFilter firewall
    • AIX IPsec/firewall
    • Netscreen firewall
    • Windows Firewall
    • Cisco PIX
    • Cisco FWSM
    • Cisco ASA
  • NIDS:
    • Modulo Cisco IOS IDS/IPS
    • Snort IDS
  • I tool di sicurezza:
    • Symantec AntiVirus
    • Nmap
    • Arpwatch
    • Cisco VPN Concentrator
  • Altri:
    • Detto
    • Proxy Squid
    • Zeus Traffic Manager eXtensible

 

INSTALLAZIONE
Partiamo installando i pre-requisiti di base con il seguente comando :

sudo apt-get install build-essential apache2 libapache2-mod-php5 apache2-utils

Adesso passiamo ad effettuare il download dei pacchetti che ci servono direttamente dal sito del produttore  DOWNLOAD

Server/Agent 2.8 – Linux/BSD  : ossec-hids-2.8.tar.gz
Web UI 0.8 : ossec-wui-0.8.tar.gz

tar xfz ossec-hids-2.8.tar.gz
cd ossec-hids-2.8/
sudo ./install.sh

Start OSSEC HIDS:

sudo /var/ossec/bin/ossec-control start

Installiamo OSSEC Web UI

tar xfz ossec-wui-0.8.tar.gz
sudo mv ossec-wui-0.8 /var/www/html/osssec-wui/
cd /var/www/html/osssec-wui/
sudo ./setup.sh

Restart apache:

sudo apache2ctl restart

Adesso apriamo il browser e facciamolo puntare all’url :  http://localhost/osssec-wui/

Una volta entrati con le credenziali impostate durante l’installazione non rimane che fare pratica delle configurazioni.
Nel prossimo articolo vedremo come affiancare ad Ossec un ottimo tool per la getione dei Log come l’ottimo Splunk.

Splunk è un tool che può essere integrato in OSSEC per trasformare i log in formato grafico con integrati alcuni report che permettono di controllare più facilmente i sistemi monitorati.

#OssecHIDS

DJ in mobilita’ con Openmix

Openmix DJ ovunque

Openmix DJ ovunque

La musica e’ da sempre una vera passione e poter ascoltare la propria musica ovunque e’ ormai una cosa alla portata di tutti grazie a software come Spotify e Deezer ecc… ;  ma se volessimo ascoltare piu’ canzoni insieme, prese dalle Playlist di altri amici e presenti sui loro Smartphone, magari per trasformare una festa privata in un party di successo…!!!

Bene ora in aiuto di ogni dj in erba e’ arrivato OPENMIX , un piccolo e pratico accessorio che permette di mixare i brani provenienti da due smartphone, tablet, pc, lettori MP3 o qualsiasi altro dispositivo in grado di riprodurre musica digitale.

Infatti Openmix e’ dotato di due spinotti laterali con cui collegare i dispositivi da cui estrarre le tracce musicali e, nella parte bassa sono disponibili ben due ingressi, uno in uscita, per poter collegare Openmix agli altoparlanti e l’altro per un terzo dispositivo con cui aggiungere effetti musicali per arricchire ancora di più la vostra esperienza.

Al seguente URL e’ possibile vedere un video di presentazione VIDEO

L’ingombro e’ assolutamente nullo, tanto che lo potete appendere al vostro porta chiavi od allo zaino ed il costo e’ davvero ottimo 30,85 € .

 

#openmixdjinmobilita