Archive for the ‘Progetti’ Category

Analisi di mercato su Google Android

Saturday, April 4th, 2009

Nell’ultimo periodo mi sono interessato abbastanza a uno dei progetti open source di Google: Android.
Per dirla in due righe, Android e` un sistema operativo open source che Google ha sviluppato per portare ordine nel mondo della tecnologia mobile, soprattutto arginando la frammentazione tecnologica che al momento e` presente in questo mercato.
Il sistema operativo e` gratuito e disponibile per diversi telefoni, tra cui HTC, Motorola, Samsung, e altri.

A parte l’interesse genuino che nutrivo gia` di mio per questo progetto, ho deciso di fare un piccolo sondaggio e di scrivere una relazione da presentare al corso di Gestione delle Imprese Informatiche.

Si tratta di un’analisi di mercato che spiega in maniera abbastanza semplice in che cosa consiste il progetto, perche` potrebbe avere successo, e le difficolta` che incontra.

La relazione include anche i risultati di un piccolo sondaggio che ho allestito per capire quale fosse la percezione comune nei confronti di Google Android.

Ecco qui l’analisi di mercato scaricabile.

Android – Analisi di mercato

Grazie a tutti i partecipanti.

Be aware of pinciaoche™

Friday, December 1st, 2006

Continuano le difficoltà  nasali, visto che mi sono preso un raffreddore coi fiocchi (nel naso), di quelli che non ti lasciano respirare insomma. E questo mi dispiace visto che volevo fare una capatina da HM. Di studiare in queste condizioni ovviamente non se ne parla, perciò penso che passerò la giornata davanti a Warcraft 3. Nei momenti liberi terminerà di traslocare.

Eh si, perché ho cambiato stanza. Adesso occupo una stanza molto più grande, anche se non ho veramente nulla da ridire nei confronti della vecchia stanza, che, come recita questo post è in grado di accogliere in maniera più che confortevole ben quattro persone.

Oltre a questo ieri io e il mio socio brail (ma lui preferirebbe essere chiamato presidente, d’altro canto io preferirei chiamarlo pinciaoche, mangiamerda, gettafumo, tegolaro) abbiamo consegnato il progetto di Sicurezza nei sistemi di calcolo: un firewall con iptables.

Figurone, valutato come più che ottimo e con tanto di domanda

Ma voi questo lo fate per lavoro?

Insomma siamo stati dei fighi, perciò niente di nuovo.

Ovviamente abbiamo dovuto studiare, e un ringraziamento particolare e sentito va a Simone Piccardi autore di ottima documentazione riguardante l’argomento. Ho appena saputo che Simone ha apprezzato molto i nostri ringraziamenti :) . Grazie ancora!

Segue la parte tecnica, insomma, il firewall, che magari potrà  essere d’utilità  per qualcuno. (Trenqui Lagranz, tanto chi ci viene qui?)

#!/bin/sh
#
# Progetto di Sicurezza nei sistemi di calcolo per l'anno 2006/2007
#
# Luca Bagante   4XXXXX
# Stefano Lampis 4XXXXX
#

#
# Scenario
#
# Nel nostro scenario abbiamo 5 host appartenenti a 4 sottoreti di classe C.
# 10.126.0.1 su tap0  : Computer in DMZ con in esecuzione i servizi www domain
#                       smtp imap2
# 10.126.0.2 su tap0  : In realta` si tratta dello stesso host di sopra, con un
#                       ulteriore indirizzo IP allo scopo di simulare un altro host
#                       che faccia da mirror al web server dell'host precedente.
# 10.126.1.1 su tap1  : Host nella rete degli uffici.
# 10.126.2.1 su tap2  : Host nella rete degli uffici cui e` proibita la navigazione nel web.
# 10.126.3.1 su tap3  : Computer adibito all'amministrazione, da qui l'amministratore puo`
#                       collegarsi via SSH al firewall.
#
# NOTA
# Al fine di abilitare il NAT abbiamo nascosto le sottoreti virtuali al
# router centrale. Abbiamo cambiato gli indirizzi IP
# da 10.26.Y.1
# a 10.126.Y.1
#

#
# Protezioni a livello kernel
#
# Queste protezioni possono (e molte lo sono) essere attivate via iptables
# ma nel campo della sicurezza la ridondanza non fa mai male.
#

# Protezione per i pacchetti di tipo echo request diretti in broadcast
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Disabilita i pacchetti il cui instradamento è insito nel pacchetto stesso.
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

# Protezione da attacchi di tipo syn flood.
# Potrebbe degradare le prestazioni, inoltre nel kernel è disabilitato di
# default.
#echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Disabilita i pacchetti ICMP di tipo redirect
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# Disabilita l'invio dei pacchetti di sopra
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

# Abilita la protezione antispoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Effettua il log dei pacchetti con indirizzi impossibili.
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

#
# Politiche
#

# Vogliamo che di default vengano scartati tutti i pacchetti.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Riportiamo tutto allo stato iniziale, azzerando catene, regole, contatori,
# nel caso che lo script venga invocato direttamente piuttosto che da un altro
# script sysVinit-like.
iptables -F
iptables -X
iptables -Z

iptables -t nat -F
iptables -t mangle -F

#
# Catene definite dall'utente
#

# Per prima cosa stabiliamo una serie di regole relative ai pacchetti da
# accettare in più circostanze e mettiamole in una nuova catena.
# La ricezione di questi pacchetti è sempre sicura.
iptables -N allowed

# Questo va fatto per consentire i pacchetti appartenenti a connessioni
# stabilite o correlate.
iptables -A allowed -m state --state ESTABLISHED,RELATED -j ACCEPT

# Consentiamo i pacchetti ICMP non pericolosi, o utili.
iptables -A allowed -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A allowed -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A allowed -p icmp --icmp-type echo-request -j ACCEPT
iptables -A allowed -p icmp --icmp-type fragmentation-needed -j ACCEPT

# Creiamo una catena per i servizi raggiungibili dall'esterno.
iptables -N services

# Webserver e mirror.
iptables -A services -d 10.126.0.1 -p tcp -m multiport \
	--destination-ports 80,443 -j ACCEPT
iptables -A services -d 10.126.0.2 -p tcp -m multiport \
	--destination-ports 80,443 -j ACCEPT

# Posta
iptables -A services -d 10.126.0.1 -p tcp -m multiport --destination-ports \
	25,143 -j ACCEPT

# Altro servizio
iptables -A services -d 10.126.0.1 -p tcp --dport 8080 -j ACCEPT

# DNS
iptables -A services -d 10.126.0.1 -p udp --dport 53 -j ACCEPT

# Raggruppa in maniera logica tutto il traffico tra le sottoreti e verso
# Internet
iptables -N forwarding

# La DMZ esce via http e ftp solo per effettuare gli aggiornamenti da
# security.debian.org che facciamo corrispondere a server.math.unipd.it
# in mancanza di accessi verso Internet.
iptables -A forwarding -m state --state NEW -p tcp -i tap0 -o eth0 \
	-s 10.126.0.0/24 -d security.debian.org -m multiport --destination-ports \
	21,80 -j ACCEPT

# La DMZ può contattare DNS server all'esterno.
iptables -A forwarding -m state --state NEW -p udp -i tap0 -o eth0 \
	-s 10.126.0.0/24 --dport 53 -j ACCEPT

# La sottorete in tap1 può accedere ai seguenti servizi.
iptables -A forwarding -m state --state NEW -p tcp -i tap1 -o eth0 \
	-s 10.126.1.0/24 -m multiport --destination-ports 21,22,25,80,110,143,443 \
	-j ACCEPT

iptables -A forwarding -m state --state NEW -p tcp -i tap1 -o tun0 \
	-s 10.126.1.0/24 --dport 80 -j ACCEPT

# NASELLO
# Meta` della sottorete non puo` uscire via SSH.
# iptables -A forwarding -m state --state NEW -p tcp -i tap2 -o eth0 \
#	-s 10.126.2.0/25 --dport 22 -j DROP

# La sottorete in tap2 può accedere ai servizi di sopra tranne la navigazione
# sul web.
iptables -A forwarding -m state --state NEW -p tcp -i tap2 -o eth0 \
	-s 10.126.2.0/24 -m multiport --destination-ports 21,22,25,110,143 -j ACCEPT

# La sottorete in tap3 può accedere agli stessi servizi di quella in tap1.
iptables -A forwarding -m state --state NEW -p tcp -i tap3 -o eth0 \
	-s 10.126.3.0/24 -m multiport --destination-ports 21,22,25,80,110,143,443 \
	-j ACCEPT

# Tutte le sottoreti hanno accesso alla DMZ per cio` che riguarda i servizi elencati.
iptables -A forwarding -m state --state NEW -p tcp -i tap+ -o tap0 \
	-s 10.126.0.0/16 -d 10.126.0.0/24 -m multiport --destination-ports \
	22,25,80,143,443,8080 -j ACCEPT
iptables -A forwarding -m state --state NEW -p udp -i tap+ -o tap0 \
	-s 10.126.0.0/16 -d 10.126.0.0/24 --dport 53 -j ACCEPT

iptables -A forwarding -m state --state NEW -p tcp -i tun0 -o tap0 \
	-d 10.126.0.0/24 -m multiport --destination-ports \
	25,80,143,443,8080 -j ACCEPT

#
# Attuazione delle regole
#

# INPUT chain
#iptables -A INPUT -j LOG --log-prefix "INPUT"
# Il firewall accetta sempre connessioni generate localmente.
iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

# Protezione contro lo spoof degli indirizzi IP.
iptables -A INPUT -i eth0 -s 10.0.0.0/8     -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/12  -j DROP
iptables -A INPUT -i eth0 -s ! 192.168.84.0/24 -j DROP

iptables -A INPUT -j allowed

# OpenVPN
# Inseriamo un controllo anche sul MAC address. Questo ovviamente e` possibile
# solo nella nostra realta` dove i due estremi della VPN risiedono sullo
# segmento di rete.
iptables -A INPUT -m state --state NEW -p udp -s 192.168.84.27 \
	-m mac --mac-source 00:12:3f:ab:01:e1 --dport 1194 -j ACCEPT

# Consente a questo host che fa parte dell'amministrazione di connettersi
# via SSH.
iptables -A INPUT -m state --state NEW -p tcp -i tap3 -s 10.126.3.1 --dport 22 \
	-j ACCEPT

# Log di tutto il resto
iptables -A INPUT -j LOG --log-prefix "INPUT DROP: "

# OUTPUT chain

# Le connessioni dirette a localhost sono sempre permesse.
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -j allowed

iptables -A OUTPUT -p udp -d 192.168.84.27 --dport 1194 -j ACCEPT

# Il firewall può collegarsi a Internet solo per effettuare gli aggiornamenti.
iptables -A OUTPUT -m state --state NEW -p tcp -o eth0 -d security.debian.org \
	-m multiport --ports 21,80 -j ACCEPT

# Il firewall può interrogare server DNS esterni e quello in DMZ.
iptables -A OUTPUT -m state --state NEW -p udp --dport 53 -o eth0 -j ACCEPT

iptables -A OUTPUT -m state --state NEW -p udp --dport 53 -o tap0 -j ACCEPT

# Log di tutto il resto
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT DROP: "

# FORWARD chain
iptables -A FORWARD -j allowed

# Servizi raggiungibili dall'esterno
iptables -A FORWARD -i eth0 -o tap0 -m state --state NEW -j services

# Pacchetti che vengono instradati
iptables -A FORWARD -i tap+ -j forwarding

iptables -A FORWARD -i tun0 -j forwarding

# Log di tutto il resto
iptables -A FORWARD -j LOG --log-prefix "FORWARD DROP: "

#
# NAT
#
# Per prima cosa dobbiamo mascherare i pacchetti, poiché escono tutti
# con lo stesso IP.
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.84.26

# Log di tutto il resto
iptables -t nat -A POSTROUTING -o eth0 -j LOG --log-prefix "POSTROUTING DEBUG: "

# Il webserver in DMZ è raggiungibile dall'esterno.
# Vengono specificati due indirizzi IP perché nel nostro immaginario esistono
# un web server e un suo mirror.
# In questo modo si ottiene una forma semplificata di bilanciamento del carico.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \
	--to-destination 10.126.0.1-10.126.0.2

# Anche il server smtp e imap
iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --destination-ports \
	25,143,8080 -j DNAT --to-destination 10.126.0.1

# Anche il server DNS.
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT \
	--to-destination 10.126.0.1

# Log di tutto il resto
iptables -t nat -A PREROUTING -i eth0 -j LOG --log-prefix "PREROUTING DEBUG: "