Slide di presentazione del progetto Programma Il Futuro (http://www.programmailfuturo.it) che mi ha visto come progettista del software in cooperazione con Marco Ferrigno che ha curato l'infrastruttura di rete.
Il progetto, ideato dal prof. Giorgio Ventre (Univ. "Federico II" di Napoli) ed il prof. Enrico Nardelli (Univ. di Roma "Tor Vergata") per il CINI (Consorzio Interuniversitario Nazionale per l'Informatica) ed il MIUR (Ministero dell'Istruzione, Università e Ricerca), fa parte de "La Buona Scuola", iniziativa promossa dal Ministro Giannini, in collegamento con il progetto internazionale Code.org tra i cui testimonial Barak Obama.
Il portale, che è il primo ad integrare la crittografia frattale FNA che ho sviluppato, ha come cuore il sistema di registrazione con profilazione capillare - a nodi - degli utenti, ed il bridge di comunicazione (un hack) verso il sistema di registrazione di code.org e di hourofcode.com.
Nelle slides i link ipertestuali verso pastebin.com dove sono riportate alcune parti del codice crittografico e del bridge in Perl.
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
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
users users users
application
operating system
virtual Infrastructure
server farm
app
os
vm
app
os
vm
virtual machine
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
users
app
os
vm
Programma Il Futuro: una scelta open source
guest os
quemu
host os kvm
user space
kernel space
MVC
object user
9. Debian GNU/Linux | basic services
(L)AMP2
#Linux
Apache
MySQL
PHP
Perl
CMS
Joomla
Object user
controller
Crypt::FNA
Kunena
Security
layer
Monitoring
services
layer
Intrusion detection system
Monitor and
backup
configuration
layer
Smtp server
Bug tracking
system
Backup system
10. operating system layers
Debian GNU/Linux | basic services
Strumenti di compilazione e sviluppo: gcc, make, libc6 ...
ntp, ntpdate
ssh
ftp / sftp
Programma Il Futuro: una scelta open source
I am root
11. (l)amp layer
Programma Il Futuro: una scelta open source
2
(L)AMP2
#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
Security
layer
IDS
Backup
Programma Il Futuro: una scelta open source
Monitor and
backup
configuration
layer
Lynis: scanner di vulnerabilità
Rkhunter: anti rootkit
ClamAV
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!
13. intrusion detection system layer
- 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.
Programma Il Futuro: una scelta open source
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
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
Programma Il Futuro: una scelta open source
17. sistema di registrazione utenti
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
Programma Il Futuro: una scelta open source
18. il bridge verso code.org ed
hourofcode.com
CMS
Joomla
Object user
controller
Crypt::FNA
Programma Il Futuro: una scelta open source
19. Ed ora un po' di code...
Perl Import XLSX data into MySQL→ http://pastebin.com/6RxQHeMu
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
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
Programma Il Futuro: una scelta open source
20. programmailfuturo.it: security alert
… che forse ci avrebbero creato qualche problema ...
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 ...
Programma Il Futuro: una scelta open source
21. un passo indietro ...
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
Programma Il Futuro: una scelta open source
22. ringraziamenti
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
Programma Il Futuro: una scelta open source
23. contatti
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
Programma Il Futuro: una scelta open source
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