1. Programma Il Futuro: una scelta open source
di
Marco Ferrigno Mario Rossano
SysAdmin & IT Security Manager Web and Software Engineering
Declaimer: attualmente lo stato del progetto è da definirsi in beta pubblica, pertanto gli autori si riservano dal rivelare attuali
dettagli critici e future implementazioni
2. il pensiero computazionale
Il pensiero computazionale è un processo mentale per cui tramite
competenze logiche si acquisisce la capacità di risolvere
problemi in modo creativo ed efficiente.
Programma Il Futuro: una scelta open source
3. uno strumento per domarli tutti:
programmailfuturo.it
Nasce come piattaforma di supporto alla versione italiana del portale code.org, progetto –
quest'ultimo – made in USA che ha visto nel 2013 la partecipazione di circa 40 milioni di studenti e
insegnanti di tutto il mondo.
Dal portale sono fruibili i seguenti servizi:
Indicazioni sulla finalità del progetto
Iscrizione come insegnante di scuola statale
Iscrizione come insegnante di scuola paritaria
Iscrizione per studenti
Iscrizione per altre tipologie di utenti
Lezioni interattive
Lezioni “senza rete”
Forum di supporto
Programma Il Futuro: una scelta open source
4. programmailfuturo.it
- ipotesi di carico -
Al di là del fine e prima ancora della tecnica, giusto qualche specifica dimensionale:
~7.000.000 di studenti
~650.000 insegnanti
~400.000 accessi distribuiti (ipotesi di picco nella settimana Hour of Code, 8-14 dicembre 2014)
…
~60.000.000 di abitanti
Programma Il Futuro: una scelta open source
5. programmailfuturo.it in cloud server
L'infrastruttura cloud server è realizzata su macchine
multiprocessore multicore ridondate N+1, con SAN ad
alta disponibilità . L'elevato tasso di scalabilità
permette di aggiungere server di varia potenza e
natura ed assemblare delle infrastrutture complesse e
dinamiche, anche stand-alone: web server, db server,
load balancer, firewall etc ...
Programma Il Futuro: una scelta open source
6. il cloud server su carta
server farm
virtual Infrastructure
vm
os
app
vm
os
app
virtual machine
operating system
application
users users users
n+1
7. cloud server: i dettagli sono
importanti
Server farm e virtual infrastructure – punti di forza:
KVM (Kernel-based Virtual Machine)
SAN in multipath
Firewall ridondante
Switch in fault-tolerance e load-balancing
Programma Il Futuro: una scelta open source
8. cloud server: i dettagli sono
importanti
Programma Il Futuro: una scelta open source
vm
os
app
users
guest os
quemu
host os kvm
user space
kernel space
MVC
object user
9. Debian GNU/Linux | basic services
(L)AMP
2
#Linux
Apache
MySQL
PHP
Perl
Joomla
Kunena
CMS
Security
layer
Monitoring
services
layer
Intrusion detection system
Monitor and
backup
configuration
layer
Smtp server
Bug tracking
system
Backup system
Crypt::FNA
Object user
controller
10. operating system layers
Programma Il Futuro: una scelta open source
Debian GNU/Linux | basic services
Strumenti di compilazione e sviluppo: gcc, make, libc6 ...
ntp, ntpdate
ssh
ftp / sftp
I am root
11. (l)amp layer
Programma Il Futuro: una scelta open source
2
(L)AMP
2
#Linux
Apache
MySQL
PHP
Perl
libapache2-mod-php5
...
phpmyadmin (via https con .htaccess)
Data::Dumper
Try::Tiny
FastCGI
Net::SMTP
Net::SMTP:SSL
WWW::Mechanize
LWP::UserAgent
Crypt::FNA
12. security layer
Programma Il Futuro: una scelta open source
Security
layer
IDS
Backup
Monitor and
backup
configuration
layer
cosa c'è di più comodo di un antivirus
opensource messo in cron ed eseguibile,
magari per una diversa esigenza, stand-alone
da riga di comando?
Una serie di layers a correlazione stretta!
Lynis: scanner di vulnerabilità
Rkhunter: anti rootkit
ClamAV
13. intrusion detection system layer
Programma Il Futuro: una scelta open source
- un po' di letteratura informatica: ids~=ips (intrusion prevention system) -
Fail2ban: è un software per la prevenzione delle intrusioni scritto in Python.
E’ in grado di girare su sistemi POSIX che hanno un interfaccia ed un sistema di controllo
dei pacchetti o firewall installato localmente (per esempio, iptables o TCP Wrapper).
La funzione principale di Fail2ban è quella di bloccare gli indirizzi IP selezionati che potrebbero
appartenere a dei computers che stanno tentando di violare la sicurezza del sistema.
Determina i server che devono essere bloccati da un controllo dei file di log
(per esempio /var/log/pwdfail, /var/log/auth.log, etc) e proibisce l’accesso dagli IP
degli host che hanno troppi tentativi di accesso indesiderato o esegue altre azioni in un arco di tempo
definito dall’amministratore.
Portsentry: è un attack detection tool il cui compito consiste nella rilevazione di scansioni
e nella risposta a tali scansioni.
ATTENZIONE: effettua un bind verso ogni porta che monitorizza e di conseguenza offre la visione
ad un attaccante che vi sia una moltitudine di open ports disponibili ad un exploit sulla macchina vittima.
Snort: è un software opensource con funzione di ids.
Si pone come efficiente contromisura ad attività di footprinting e scansione da parte di un attacker,
identificando quindi accessi non autorizzati.
14. monitoring & co
Programma Il Futuro: una scelta open source
Security
layer
IDS
Backup
Monitor and
backup
configuration
layer
Backup configuration layer
etckeeper
Questo software e’ una collezione di
script bash che consentono di tenere
sotto controllo tramite un sistema di
revisione distribuito la nostra
directory /etc, dove sono appunto
presenti i file di configurazione della
maggior parte dei nostri servizi in
Linux.
bzr
un software di controllo versione a cui
etckeeper si appoggia
15. monitoring & co
Programma Il Futuro: una scelta open source
Monitoring services layer
munin
erogatore di grafici e statistiche tramite
interfaccia web
monit
è un programma gratuito e open source per
la gestione e il monitoraggio di processi,
file, directory e file system su un sistema
UNIX. Monit effettua la manutenzione e la
riparazione automatica e può eseguire
azioni significative in situazioni di errore.
logcheck
è una semplice utility che è progettata per
consentire ad un amministratore di sistema
di visualizzare i file di log che si realizzano
su macchine sotto il proprio controllo.
Lo fa, attraverso una sintesi dei log
mandati tramite email, filtrando prima le
voci “normali” presenti nei log.
Monitoring
services
layer
….
….
16. sistema di registrazione utenti
Programma Il Futuro: una scelta open source
Preventiva importazione dati MIUR nel database MySQL
Step 1
Form di registrazione con struttura a nodi - logica condizionale
Popolamento select scuole statali tramite AJAX
Controllo inserimento dati con jQuery
Invio dati all'object user del CMS
Hook nel controller dell'object user
Salvataggio password utente tramite Crypt::FNA su MySQL
Invio mail all'utente con token di autenticazione
17. Programma Il Futuro: una scelta open source
Preventiva importazione dati MIUR nel database MySQL
Step 2
Utente riceve mail con url (token di autenticazione)
Passaggio token all'object user del CMS
Hook nel controller dell'object user
Verifica token
Recupero password utente tramite Crypt::FNA su MySQL
Invocazione bridge in Perl verso Code.org ed HourOfCode.com
sistema di registrazione utenti
18. il bridge verso code.org ed
hourofcode.com
Programma Il Futuro: una scelta open source
Joomla
CMS
Crypt::FNA
Object user
controller
19. Ed ora un po' di code...
Programma Il Futuro: una scelta open source
PHP - Javascript AJAX System - part ONE → http://pastebin.com/KLG2CNkH
PHP - Javascript AJAX System - part TWO → http://pastebin.com/rNgCg8Sz
PHP - Javascript AJAX System - part THREE → http://pastebin.com/y4uDc1EY
Perl Import XLSX data into MySQL→ http://pastebin.com/6RxQHeMu
PHP hack Controller Object User → http://pastebin.com/j47eP3CM
Perl signUp bridge to Code.org → http://pastebin.com/2yke0TE2
Perl Crypt::FNA service → http://pastebin.com/qygfZzRf
20. programmailfuturo.it: security alert
Programma Il Futuro: una scelta open source
shellshock (23 settembre 2014)
un bug di sicurezza trovato in bash, un programma di shell di comando comunemente utilizzato
su sistemi UNIX-like.
Il bug in questione è una vulnerabilità legata all’esecuzione di codice in modalità remota, o
RCE.
L’attaccante è in grado di ingannare bash e “forzarlo” ad eseguire codice arbitrario sulla macchina
target. Ufficialmente, il bug è documentato come CVE20146271 e CVE20147169.
poodle (13 ottobre 2014)
(Padding Oracle On Downgraded Legacy Encryption) è un tipo di attacco alle connessioni https
in grado di rubare informazioni sensibili, incluse, teoricamente, le password degli account.
L’attacco si basa su una vulnerabilità di SSLv3, RFC6101, un protocollo del novembre 1996
poco sicuro che fa parte del gruppo di protocolli di scambio dati previsti da https e da tutti i
protocolli che usano TLS, come IMAPS, POP3S, SMTP con STARTTLS, etc ...
… che forse ci avrebbero creato qualche problema ...
21. un passo indietro ...
Programma Il Futuro: una scelta open source
siege -b -c 300 -r 3 <<url>>
Transactions: 4300 hits
Availability: 99.08 %
Elapsed time: 57.81 secs
Data transferred: 1.42 MB
Response time: 2.75 secs
Transaction rate: 74.38 trans/sec
Throughput: 0.02 MB/sec
Concurrency: 204.26
Successful transactions: 4354
Failed transactions: 40
Longest transaction: 31.46
Shortest transaction: 0.08
siege -b -c 1023 -r 3 <<url>>
siege aborted due to excessive socket failure; you
can change the failure threshold in $HOME/.siegerc
Transactions: 1500 hits
Availability: 45.29 %
Elapsed time: 94.60 secs
Data transferred: 0.86 MB
Response time: 11.47 secs
Transaction rate: 15.86 trans/sec
Throughput: 0.01 MB/sec
Concurrency: 181.90
Successful transactions: 2629
Failed transactions: 1812
Longest transaction: 40.05
Shortest transaction: 0.00
22. ringraziamenti
Programma Il Futuro: una scelta open source
programmailfuturo.it
direzione didattica:
- Prof. Giorgio Ventre | CINI - Università degli Studi di Napoli Federico II
direzione dei lavori:
- Prof. Enrico Nardelli | CINI - Università degli Studi di Roma Tor Vergata
Comitato tecnico-scientifico MIUR
Linux Day Napoli 2014
- INAF OACN
- NaLUG team
23. contatti
Programma Il Futuro: una scelta open source
Marco Ferrigno @marco_ferrigno
- Researcher and consultant in
computer security and systems
engineering
- ICTFF (International Cyber Threat
Task Force) Member
- NaLUG (Napoli Linux Users Group)
Member
- Developer of the Italian Debian
GNU/Linux HowTos
- http://marcoferrigno.wordpress.com/
- marcoferrigno@cryptolab.net
Mario Rossano @anakthewolf
- Cryptographic research
- CPAN (Comprehensive Perl
Archive Network) Author
- Perl.it Member
- NaLUG (Napoli Linux Users
Group) Member
- Application dev/Analyst
- CEO Netlogica
- software@netlogica.it
- anak@cpan-org