<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ultimobyte &#187; Linux</title>
	<atom:link href="http://www.ultimobyte.org/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ultimobyte.org</link>
	<description></description>
	<lastBuildDate>Fri, 20 Jan 2012 09:53:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Indoona &#8211; chiamate gratis fino al 31-12-2011</title>
		<link>http://www.ultimobyte.org/2011/10/10/indoona-chiamate-gratis-fino-al-31-12-2011/</link>
		<comments>http://www.ultimobyte.org/2011/10/10/indoona-chiamate-gratis-fino-al-31-12-2011/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 09:27:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo per tutti]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Gratis]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Numeri nomadici]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=1583</guid>
		<description><![CDATA[Ho già parlato in un precedente articolo di questo nuovo servizio offerto da Tiscali. Voglio solo segnalarvi che fino a fine anno sarà possibile CHIAMARE GRATUITAMENTE TUTTI I NUMERI FISSI NAZIONALI. Aggiungo anche qualche considerazione personale soprattutto per quanto riguarda l&#8217;applicazione per iPhone. Una lacuna che secondo me va superata è il fatto che non [...]]]></description>
			<content:encoded><![CDATA[<p>Ho già parlato in un precedente articolo di questo nuovo servizio offerto da Tiscali. Voglio solo segnalarvi che fino a fine anno sarà possibile CHIAMARE GRATUITAMENTE TUTTI I NUMERI FISSI NAZIONALI.</p>
<p style="text-align: left;"><a href="http://www.ultimobyte.org/wp-content/uploads/2011/10/Indoona-out.png"><img class="aligncenter size-full wp-image-1588" title="Indoona-out" src="http://www.ultimobyte.org/wp-content/uploads/2011/10/Indoona-out.png" alt="" width="458" height="212" /></a></p>
<p>Aggiungo anche qualche considerazione personale soprattutto per quanto riguarda l&#8217;applicazione per iPhone. Una lacuna che secondo me va superata è il fatto che non è possibile chiamare o chattare con un&#8217;altra persona che ha installato indoona sul suo melafonino se l&#8217;applicazione non è in background&#8230;Fondamentalmente <span id="more-1583"></span>non c&#8217;è integrazione con il sistema di notifiche dell&#8217; iOS di Apple e questo è un grosso limite&#8230;Applicazioni come Viber, Tango e Whatsapp non solo sono migliori da questo punto di vista, ma sicuramente più diffuse (per non parlare dell&#8217;impero di Skype 8-| ).  L&#8217;unico vantaggio è il fatto di utilizzare un <a href="http://www.ultimobyte.org/2010/10/22/telecom-italia-e-linterconnessione-con-i-numeri-nomadici-55/" target="_blank">numero voip nomadico</a> (<em>compliant</em> con la legge Italiana). Insomma, la strada per il successo è ancora lunga!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2011/10/10/indoona-chiamate-gratis-fino-al-31-12-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux e i permessi su file e cartelle</title>
		<link>http://www.ultimobyte.org/2011/06/13/linux-e-i-permessi-su-file-e-cartelle/</link>
		<comments>http://www.ultimobyte.org/2011/06/13/linux-e-i-permessi-su-file-e-cartelle/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 12:50:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=1481</guid>
		<description><![CDATA[Per cambiare i permessi di accesso ad un file e/o cartella si utlizza il comando chmod con la seguente sintassi: chmod [valore utente] [valore gruppo] [valore altri] -[opzione eventuale] nomefile Di seguito l&#8217;elenco dei valori per settare i permessi sui file 7 = rwx = read, write, execute 6 = rw- = read, write 5 [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Per cambiare i permessi di accesso ad un file e/o cartella si utlizza il comando chmod con la seguente sintassi:</p>
<blockquote><p>chmod [valore utente] [valore gruppo] [valore altri] -[opzione eventuale] nomefile</p></blockquote>
<p>Di seguito l&#8217;elenco dei valori per settare i permessi sui file<br />
7 = rwx = read, write, execute<br />
6 = rw- = read, write<br />
5 = r-x = read, execute<br />
4 = r– = read<br />
3 = -wx = write, execute<br />
2 = -w- = write<br />
1 = –x = execute<br />
0 = — = no permissions</p>
<p>Esempio:</p>
<blockquote><p>chmod 750 nomefile</p></blockquote>
<p>In questo modo l’utente legge, scrive ed esegue (7), gli utenti  appartenenti al gruppo leggono ed eseguono ma non possono scrivere ne  cancellare (5); gli altri utenti non appartenenti al gruppo non possono  accedere del tutto (0)</p>
<p>se si vuole cambiare i permessi ad una intera directory  ricorsivamente (anche a tutte le sottodirectory e files in essa  contenute)</p>
<blockquote><p>chmod 750 -R nomedirectory/*</p></blockquote>
<p>per assegnare invece un file ad uno specifico utente e gruppo</p>
<blockquote><p>chown nomeutente:nomegruppo nomefile</p></blockquote>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2011/06/13/linux-e-i-permessi-su-file-e-cartelle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux Firewall &#8211; iptables su ubuntu</title>
		<link>http://www.ultimobyte.org/2011/02/05/linux-firewall-iptables-su-ubuntu/</link>
		<comments>http://www.ultimobyte.org/2011/02/05/linux-firewall-iptables-su-ubuntu/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 11:28:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=1433</guid>
		<description><![CDATA[Iptables è il firewall installato in modo predefinito su Ubuntu e su tutte le distribuzioni Linux. In questo post non troverete i concetti base ma uno script da utlilzzare e modificare per mettere in sicurezza il pc/server. Lo script permette l&#8217;accesso in ssh e http ed  è il seguente: #!/bin/bash case &#8220;$1&#8243; in start) modprobe [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ultimobyte.org/wp-content/uploads/2011/02/firewall1.png"><img class="aligncenter size-full wp-image-1437" title="firewall" src="http://www.ultimobyte.org/wp-content/uploads/2011/02/firewall1.png" alt="" width="200" height="200" /></a></p>
<p><strong>Iptables</strong> è il firewall installato  in modo predefinito su Ubuntu e su tutte le distribuzioni Linux. In questo post non troverete i concetti base ma uno script da utlilzzare e modificare per mettere in sicurezza il pc/server.</p>
<p>Lo <a href="http://www.ultimobyte.org/script/firewall">script</a> permette l&#8217;accesso in ssh e http ed  è il seguente:</p>
<blockquote><p>#!/bin/bash<br />
case &#8220;$1&#8243; in</p>
<p>start)<br />
modprobe ip_conntrack<br />
modprobe ip_conntrack_ftp<br />
### Cancella le regole precedenti ###<br />
iptables -F</p>
<p>####  Default Policy ###<br />
iptables -P INPUT DROP<br />
iptables -P FORWARD DROP<br />
iptables -P OUTPUT ACCEPT</p>
<p>######################<br />
####  Input Chain Policy ####<br />
######################</p>
<p>### Stateful firewall ###<br />
iptables -A INPUT -m state &#8211;state ESTABLISHED -j ACCEPT</p>
<p>#### ICMP policy  (rispondi al ping&#8230;..solo echo request) ####<br />
iptables -A INPUT -p icmp &#8211;icmp-type echo-request -j ACCEPT<br />
### ssh ###<br />
iptables -A INPUT -p tcp &#8211;dport 22 -s 192.168.19.0/24 -j ACCEPT</p>
<p>### http ###</p>
<p>iptables -A INPUT -p tcp &#8211;dport 80 -s 192.168.19.0/24 -j ACCEPT<br />
## User feedback&#8230;.<br />
echo &#8216;Firewall attivo&#8230;..&#8217;<br />
;;</p>
<p>stop)<br />
## setta le default policy su ACCEPT<br />
iptables -P INPUT ACCEPT<br />
iptables -P FORWARD ACCEPT<br />
iptables -P OUTPUT ACCEPT</p>
<p>## Cancella le regole precedenti<br />
iptables -F<br />
## User feedback&#8230;&#8230;..<br />
echo &#8216;Firewall disattivato. Server NON protetto.&#8217;<br />
;;</p>
<p>status)<br />
iptables -vnL<br />
;;</p>
<p>esac</p></blockquote>
<p>Supponendo che lo script abbia il nome <em>firewall</em> ed eseguite i seguenti comandi:</p>
<blockquote><p>mv firewall <em>/etc/init.d/</em><br />
update-rc.d firewall defaults</p></blockquote>
<p>A questo punto per eseguire  il firewall è sufficente eseguire il comando</p>
<blockquote><p>/etc/init.d/firewall start</p></blockquote>
<p style="text-align: right;"><em>Grazie a Marco G. per lo script</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2011/02/05/linux-firewall-iptables-su-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crontab &#8211; Pianificare le operazioni su Linux</title>
		<link>http://www.ultimobyte.org/2011/01/14/crontab-pianificare-le-operazioni-su-linux/</link>
		<comments>http://www.ultimobyte.org/2011/01/14/crontab-pianificare-le-operazioni-su-linux/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 15:38:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=1405</guid>
		<description><![CDATA[In questo post spiegherò brevemente come pianificare l&#8217;esecuzione di programmi o script in un sistema linux. Puoi essere utile infatti far partire automaticamente una certa operazione ad un determinato momento del giorno o ad un dato giorno della settimana. Per fare questo si può usare il comando crontab. Per lanciare il programma basta digitare da [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ultimobyte.org/wp-content/uploads/2011/01/linux-logo.jpg"><img class="alignleft size-thumbnail wp-image-1407" title="linux logo" src="http://www.ultimobyte.org/wp-content/uploads/2011/01/linux-logo-150x150.jpg" alt="" width="63" height="63" /></a>In questo post spiegherò brevemente come pianificare l&#8217;esecuzione di programmi o script in un sistema linux. Puoi essere utile infatti far partire automaticamente una certa operazione ad un determinato momento del giorno o ad un dato giorno della settimana. Per fare questo si può usare il comando crontab.</p>
<p>Per lanciare il programma basta digitare da linea di comando:</p>
<blockquote><p>crontab</p></blockquote>
<p>che non è nient&#8217;altro che un file di testo che viene letto e interpretato dal <em>cron deamon</em>. Se si vuole specificare l&#8217;utente per cui si esegue tale comando basta aggiungere l&#8217;opzione &#8220;-u&#8221;:</p>
<blockquote><p>crontab -u username</p></blockquote>
<p>Per editare il file e quindi inserire o togliere le nostre operazioni pianificate il comando da utilizzare è:</p>
<blockquote><p>crontab -e</p></blockquote>
<p>e automaticamente si aprirà l&#8217;editor predefinito. Se vogliamo cambiare editor sarà sufficente esegiore da linea di comando &#8220;select-editor&#8221;</p>
<blockquote>
<div id="_mcePaste"># select-editor</div>
<div id="_mcePaste">Select an editor.  To change later, run &#8216;select-editor&#8217;.</div>
<div id="_mcePaste">1. /usr/bin/vim.basic</div>
<div id="_mcePaste">2. /usr/bin/vim.tiny</div>
<div id="_mcePaste">Choose 1-2 []:</div>
</blockquote>
<div>A questo punto se è la prima volta che lanciate crontab si aprirà una pagina vuota al massimo con questo commento:</div>
<blockquote>
<div># m h  dom mon dow   command</div>
</blockquote>
<div>A questo punto possiamo aggiungere la nostra operazione pianificata. Per spiegare come si fa vediamo subito un esempio<br />
<span id="more-1405"></span><br />
:</div>
<blockquote>
<div>50 2 * * * /usr/bin/mail -s &#8216;Ciao mondo&#8217; pippo@domain.it < /tmp/</div>
</blockquote>
<div>Nel comando qui sopra abbiamo detto al nostro demone Cron di eseguire il  mandare un email a pippo@domain.it (specificandone il percorso assoluto) tutti i giorni  alle 2:50</div>
<div></div>
<div>Prima di eseguire il comando vanno quindi inseriti in ordine da sinistra verso destra:</div>
<div>
<ul>
<li>minuto, ora, giorno del mese, mese, giorno della settimana</li>
</ul>
</div>
<div>L&#8217;asterisco indica &#8220;tutti&#8221;, quindi in questo caso stiamo dicendo di mandare un email tutti i giorni  alle 2 e 50.</div>
<div><a href="http://www.ultimobyte.org/wp-content/uploads/2011/01/crontab-syntax-300x121.gif"><img class="aligncenter size-full wp-image-1406" title="crontab-syntax-300x121" src="http://www.ultimobyte.org/wp-content/uploads/2011/01/crontab-syntax-300x121.gif" alt="" width="300" height="121" /></a></div>
<div>E&#8217; possibile inoltre utilizzare l&#8217;operatore &#8220;/&#8221; per eseguire le ripetizioni:</div>
<blockquote>
<div>*/10 * * * * /usr/bin/mail -s &#8216;Ciao mondo&#8217; pippo@domain.it < /tmp/</div>
</blockquote>
<div>con questo comando quindi stiamo chiedendo al demone cron di eseguire l&#8217;invio dell&#8217;email ogni 10 minuti</div>
<div>Ogni riga che aggiungiamo indicherà un operazione pianificata!</div>
<div></div>
<blockquote></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2011/01/14/crontab-pianificare-le-operazioni-su-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dropbox &#8211; come aumentare di 800 MB lo spazio a disposizione</title>
		<link>http://www.ultimobyte.org/2010/12/06/dropbox-come-aumentare-di-800-mb-lo-spazio-a-disposizione/</link>
		<comments>http://www.ultimobyte.org/2010/12/06/dropbox-come-aumentare-di-800-mb-lo-spazio-a-disposizione/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 14:00:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo per tutti]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Utilità]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MAC OS X]]></category>
		<category><![CDATA[Servizi on-line]]></category>
		<category><![CDATA[Spazio Disco]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=1348</guid>
		<description><![CDATA[Come già scritto in questo post, Dropbox è un servizio che permette di sincronizzare i file sia online che tra computer o smartphone e che di default fornisce 2 GB di storage gratuiti. Da qualche settimana il team di Dropbox mette a disposizione per i propri utenti la possibilità di incrementare il proprio spazio disponibilie [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.dropbox.com/referrals/NjExNjQ0MTg2Nw" target="_blank"><img class="alignleft size-thumbnail wp-image-1349" title="dropbox_loveLogo" src="http://www.ultimobyte.org/wp-content/uploads/2010/12/dropbox_loveLogo-150x150.png" alt="" width="150" height="150" /></a>Come già scritto in <a href="http://www.ultimobyte.org/2010/03/19/dropbox-spazio-disco-on-line/" target="_blank">questo post</a>, <a href="http://www.dropbox.com/link/20.bipvbpuO_t/NjExNjQ0MTg2Nw">Dropbox</a> è un servizio che permette di sincronizzare i file sia online che tra computer o smartphone e che di default fornisce 2 GB di storage gratuiti. Da qualche settimana il team di Dropbox mette a disposizione per i propri utenti la possibilità di incrementare il proprio spazio disponibilie di quasi 800MB  ( esattamente 768 MB) seguendo 6 semplici azioni ognuna delle quali vi farà aumentare lo spazio di 128 MB.</p>
<p>Per fare questo è sufficiente collegarvi a <a href="https://www.dropbox.com/free">questa pagina</a> e completare i seguenti passi:</p>
<ul>
<li><strong>Connect your Twitter account with Dropbox:</strong> autorizzeate Dropbox ad interagire con il vostro account di Twitter</li>
<li><strong>Connect your Facebook account with Dropbox:</strong> autorizzeate Dropbox ad interagire con il vostro account di Facebook</li>
<li><strong>Follow @Dropbox on Twitter:</strong> dovete seguire la pagina di Dropbox con Twitter</li>
<li><strong>Tell us why you love Dropbox:</strong> dovete scrivere un breve commento sul perché vi piace Dropbox</li>
<li><strong>Like Dropbox? Tell your friends on Facebook:</strong> dovete scrivere un messaggio su Facebook spiegando i motivi per i quali secondo voi Dropbox è una buona scelta</li>
<li><strong>Tweet about Dropbox for more free space!:</strong> come sopra ma per Twitter<span id="more-1348"></span></li>
</ul>
<p>Attenzione però!  Non sottovalutate le implicazioni sulla privacy: nel caso di facebook  si concedono a dropbox privilegi non da poco conto sul proprio profilo  come la possibilità di scrivere sulla bacheca, l&#8217; acesso completo a foto ed  altro.</p>
<p style="text-align: right;"><span style="color: #999999;">(</span><span style="color: #999999;">fonte</span><em><span style="color: #999999;">: www.chimerarevo.com<span style="font-style: normal;">)</span></span></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2010/12/06/dropbox-come-aumentare-di-800-mb-lo-spazio-a-disposizione/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dove trovare giochi per Linux</title>
		<link>http://www.ultimobyte.org/2010/11/08/dove-trovare-giochi-per-linux/</link>
		<comments>http://www.ultimobyte.org/2010/11/08/dove-trovare-giochi-per-linux/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 09:46:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo per tutti]]></category>
		<category><![CDATA[Notizie]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Svago]]></category>
		<category><![CDATA[Giochi]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=1258</guid>
		<description><![CDATA[Girando un po sul web ho trovato il sito PenguSpy. E&#8217; un servizio web che offre un&#8217;ampia lista di giochi per Linux suddivisi per categoria. Inoltre per ogni gioco è possibile vedere un video dimostrativo. Sito ufficiale: www.penguspy.com]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/11/PenguSpy.png"><img class="alignleft size-full wp-image-1259" title="PenguSpy" src="http://www.ultimobyte.org/wp-content/uploads/2010/11/PenguSpy.png" alt="" width="144" height="53" /></a>Girando un po sul web ho trovato il sito PenguSpy. E&#8217; un servizio web che offre un&#8217;ampia lista di giochi per Linux suddivisi per categoria. Inoltre per ogni gioco è possibile vedere un video dimostrativo.<span id="more-1258"></span></p>
<p style="text-align: center;"><strong><span style="color: #800000;">Sito ufficiale</span></strong>: <cite><a href="http://www.penguspy.com" target="_blank">www.</a><strong><a href="http://yvy.me/G2fe2Z" target="_blank">penguspy</a></strong><a href="http://www.penguspy.com" target="_blank">.com</a></cite></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2010/11/08/dove-trovare-giochi-per-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sicurezza VoIP: come proteggersi con fail2ban</title>
		<link>http://www.ultimobyte.org/2010/11/05/sicurezza-voip-come-proteggersi-con-fail2ban/</link>
		<comments>http://www.ultimobyte.org/2010/11/05/sicurezza-voip-come-proteggersi-con-fail2ban/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 22:09:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=1205</guid>
		<description><![CDATA[Negli ultimi due/tre anni sono aumentati vertiginosamente gli attacchi verso i centralini VoIP. Il tipo di attacco più frequente è quello di eseguire uno scanning della rete per trovare i server in ascolto sulla porta di segnalazione del protocollo sip (cioè UDP 5060) e provare un l&#8217;accesso con valori di utenza e password pseudo casuali [...]]]></description>
			<content:encoded><![CDATA[<p>Negli ultimi due/tre anni sono aumentati vertiginosamente gli attacchi verso i centralini VoIP. Il tipo di attacco più frequente è quello di eseguire uno scanning della rete per trovare i server in ascolto sulla porta di segnalazione del protocollo sip (cioè UDP 5060) e provare un l&#8217;accesso con valori di utenza e password pseudo casuali fino a trovare la combinazione corretta.</p>
<p>La soluzione principale è quindi quella di utilizzare delle <strong>password sicure</strong> e magari modificare la porta di ascolto su una non standard.</p>
<p>Per rendere il nostro centralino ancora più sicuro e quindi proteggerlo da attacchi di tipo bruteforce menzionati sopra, possiamo utilizzare fail2ban. <span style="color: #993300;"><strong>La guida che segue è specifica per OpenSIPs e Asterisk</strong></span></p>
<p><span style="color: #333399;"><span style="text-decoration: underline;"><strong>Che cosa è fail2ban?</strong></span></span></p>
<p>E&#8217; un applicativo che esamina i file di log relativi al servizio che vogliamo proteggere (ssh, http, sip ecc..) e nel caso in cui riscontri più di un determinato numero di tentativi  falliti in un certo intervallo di tempo (configurabile)  blocca temporaneamente (tramite iptables)  l&#8217;IP che sta tentando l&#8217;accesso.</p>
<p><span style="color: #333399;"><span style="text-decoration: underline;"><strong>Configurazione base fail2ban</strong></span></span></p>
<p>Una volta installato (&#8220;<code>sudo apt-get install fail2ban</code> &#8221; su macchine Ubuntu e Debian) troviamo i file di configurazione sotto la cartella <em>/etc/fail2ban</em>.</p>
<p>In particolare nel file /etc/fail2ban<em>/jail.local</em> sono presenti le regole di ban per i diversi servizi. Ciascuna regola è identificata dal nome tra parentesi quadre. <span id="more-1205"></span>Esempio predefinito per ssh:</p>
<blockquote>
<div id="_mcePaste">[ssh]</div>
<div id="_mcePaste">enabled = true</div>
<div id="_mcePaste">port    = ssh</div>
<div id="_mcePaste">filter  = sshd</div>
<div id="_mcePaste">logpath  = /var/log/auth.log</div>
<div id="_mcePaste">maxretry = 6</div>
</blockquote>
<p>dove i parametri indicano:</p>
<dl>
<dt><em><strong>enabled</strong></em>: se la regola è attivata</dt>
<dt><em>port</em>: la porta che viene bloccata, è possibile indicare il servizio che  gira sulla porta o il valore della porta numerico. </dt>
<dt><strong><em>filter</em></strong>: il filtro usato dallo script per identificare i tentativi di  accesso. (NB:  i diversi filtri si trovano nella  directory <em>/etc/fail2ban/filter.d). </em> In questo caso usiamo il filtro indicato come sshd</dt>
<dt><strong><em>logpath</em></strong>: il percorso del file di log da  monitorare per determinare i tentativi di accesso.</dt>
<dt><strong><em>maxretry</em></strong>: il numero di tentativi di accesso negato da trovare prima che venga bloccato l&#8217;IP che sta tentando l&#8217;accesso.</dt>
<dt> </dt>
<dt>Nella cartella  <em>/etc/fail2ban/filter.d </em>si trovano i file che rappresentano i filtri per i vari servizi.</dt>
<dt> </dt>
<dt> <span style="color: #333399;"><span style="text-decoration: underline;"><strong>Configurazione fail2ban per OpenSIPs (ma anche OpenSER e Kamailio)</strong></span></span></dt>
<dt><span style="color: #333399;"><span style="text-decoration: underline;"><strong><br />
</strong></span></span></dt>
<dt>Prima di far interoperare opensips con fail2ban dobbiamo modificare alcuni valori del file di configurazione opensips.cfg e rsyslog.conf Di seguito le operazioni da eseguire:</dt>
<dt><strong>- sul file opensips.cfg:</strong></dt>
<dt>
<p class="vspace">modificare  <code class="escaped">log_facility=LOG_LOCAL0 con</code>: <code class="escaped">log_facility=LOG_LOCAL7</code></p>
<p class="vspace">modificare tutte le occorrenze in cui viene richiesta l&#8217;autenticazione da</p>
<pre class="escaped">if (!www_authorize("", "subscriber")) {
	www_challenge("", "0");
	exit;
}</pre>
<p>a</p>
<pre class="escaped">$var(auth_code) = www_authorize("", "subscriber");
if ( $var(auth_code) == -1 || $var(auth_code) == -2 ) {
		xlog("L_NOTICE","Auth error for $fU@$fd from $si cause $var(auth_code)");
}
if ( $var(auth_code) &lt; 0 ) {
		www_challenge("", "0");
		exit;
}</pre>
<p><strong>- s</strong><strong>ul file rsyslog.conf:</strong></p>
<p>aggiungiamo la riga: <span style="font-family: monospace;">local7.* /var/log/opensips.log</span></p>
<p><span style="font-family: monospace;"><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;">Passiamo ora alla <span style="text-decoration: underline;">configurazione di fail2ban</span>; aggiungiamo alla fine del file /etc/fail2ban/jail.conf il nuovo servizio:</span></span></p>
<pre class="escaped">[opensips]
enabled  = true
filter   = opensips
action   = iptables-allports[name=opensips, protocol=all]
           sendmail-whois[name=opensips, dest=destination@example.com, sender=source@example.com]
logpath  = /var/log/opensips.log
maxretry = 5
bantime = 3600</pre>
<p>e creiamo nella cartella <em>/etc/fail2ban/filtered.d</em> un nuovo file opensips.conf nel seguente modo:</p>
<pre class="escaped"># Fail2Ban configuration file
#
#
# $Revision: 250 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf

[Definition]

#_daemon = opensips

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "&lt;HOST&gt;" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;\S+)
# Values:  TEXT
#

failregex = Auth error for .* from &lt;HOST&gt; cause -[0-9]

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =</pre>
<p>A questo punto facciamo ripartire il servizio con il comando: <span style="font-family: monospace;">/etc/init.d/fail2ban restart</span></p>
<p><span style="color: #333399;"><span style="text-decoration: underline;"><strong>Configurazione fail2ban per Asterisk</strong></span></span></p>
<p><span style="color: #333399;"><span style="color: #000000;">Di seguito la configurazione di fail2ban per proteggere il nostro server Asterisk.</span></span><span style="font-family: monospace;"><span style="font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;"> Aggiungiamo alla fine del file /etc/fail2ban/jail.conf il nuovo servizio</span></span><span style="color: #333399;">:</span></p>
</dt>
</dl>
<pre><code>[asterisk-iptables]

enabled  = true
filter   = asterisk
action   = </code><code class="css plain">iptables[name=ASTERISK, port=</code><code class="css value">5060</code><code class="css plain">, protocol=udp]</code>
<code>           sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.org]
logpath  = /var/log/asterisk/full
maxretry = 5
bantime = 259200
</code></pre>
<dl>
<dt><span id="result_box" lang="it"><span>Con questa configurazione viene bloccato per 3 giorni l&#8217;IP che ha eseguito l&#8217;attacco</span><span>. </span><span>Assicurarsi di modificare l&#8217;azione sendmail-whois per inviare notifiche a un indirizzo appropriato.</span></span></p>
<p><span lang="it"><span>Successivamente </span></span>creiamo nella cartella <em>/etc/fail2ban/filtered.d</em> un nuovo file asterisk.conf nel seguente modo:</p>
</dt>
</dl>
<pre><code>
# Fail2Ban configuration file
#
#
# $Revision: 250 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf

[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "&lt;HOST&gt;" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P&lt;host&gt;\S+)
# Values:  TEXT
#

failregex = NOTICE.* .*: Registration from '.*' failed for '&lt;HOST&gt;' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '&lt;HOST&gt;' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '&lt;HOST&gt;' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '&lt;HOST&gt;' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for '&lt;HOST&gt;' - Peer is not supposed to register
            NOTICE.* &lt;HOST&gt; failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' \(from &lt;HOST&gt;\)
            NOTICE.* .*: Host &lt;HOST&gt; failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Failed to authenticate user .*@&lt;HOST&gt;.*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
</code></pre>
<dl>
<dt> Prima di far ripartire il servizio fail2ban è necessario (per motivi di compatibilità relativi al formato della data) modificare il file di logger di asterisk (<em>/etc/asterisk/logger.conf</em>) nel seguente modo:</dt>
</dl>
<pre><code>[general]
dateformat=%F %T
</code><code class="css plain">full =&gt; notice,warning,error</code>
</pre>
<dl>
<dt>A questo punto riavviare il modulo di logger di Asterisk </dt>
<dt><span style="font-family: monospace;">asterisk -rx &#8221;logger reload&#8221;</span></dt>
<dt> </dt>
<dt><strong>Importante</strong>: nella sezione [DEFAULT] possiamo definire gli IP che non dovranno essere MAI bannati (per non rischiare di buttare fuori uno o più host della nostra LAN), mediante il parametro ignoreip</dt>
<blockquote><dt>ignoreip = 127.0.0.1 192.168.1.0/24 </dt>
</blockquote>
<dt> </dt>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2010/11/05/sicurezza-voip-come-proteggersi-con-fail2ban/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Configurazione rete su Linux</title>
		<link>http://www.ultimobyte.org/2010/10/12/configurazione-rete-su-linux/</link>
		<comments>http://www.ultimobyte.org/2010/10/12/configurazione-rete-su-linux/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 21:55:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=1023</guid>
		<description><![CDATA[Di seguito i passi base per configurare la rete su le distribuzioni linux  CentOS e Ubuntu &#8212; CentOS &#8212; Sulle distribuzioni RH based, tra cui CentOS, è possibile configurare i parametri di rete sul file /etc/sysconfig/network-scripts/ifcfg-eth0 per quanto riguarda l&#8217;interfaccia eth0. Es: DEVICE=eth0 BOOTPROTO=static DHCPCLASS= IPADDR=192.168.100.1 GATEWAY=192.168.100.254 NETMASK=255.255.255.0 ONBOOT=yes Per eventuali indirizzi IP aggiuntivi devi [...]]]></description>
			<content:encoded><![CDATA[<p>Di seguito i passi base per configurare la rete su le distribuzioni linux  CentOS e Ubuntu</p>
<h4>&#8212; CentOS &#8212;</h4>
<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/tux-centos.png"><img class="size-thumbnail wp-image-1026 alignleft" title="tux-centos" src="http://www.ultimobyte.org/wp-content/uploads/2010/10/tux-centos-150x150.png" alt="" width="70" height="70" /></a></p>
<p>Sulle distribuzioni RH based, tra cui CentOS, è possibile configurare i parametri di rete sul file <strong>/etc/sysconfig/network-scripts/ifcfg-eth0</strong> per quanto riguarda l&#8217;interfaccia eth0. Es:</p>
<blockquote>
<p dir="ltr">
<p dir="ltr">DEVICE=eth0<br />
BOOTPROTO=static<br />
DHCPCLASS=<br />
IPADDR=192.168.100.1<br />
GATEWAY=192.168.100.254<br />
NETMASK=255.255.255.0<br />
ONBOOT=yes</p>
</blockquote>
<p>Per eventuali indirizzi IP aggiuntivi devi modificare i file <strong>/etc/sysconfig/network-scripts/ifcfg-eth0:<em>x</em></strong> con <em>x</em> pari a 0,1,2,3,4&#8230; come sopra, levando la riga che inizia per GATEWAY=.</p>
<h4>&#8212; Ubuntu &#8212;</h4>
<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/tux-ubuntu.png"><img class="size-thumbnail wp-image-1028 alignleft" title="tux-ubuntu" src="http://www.ultimobyte.org/wp-content/uploads/2010/10/tux-ubuntu-150x150.png" alt="" width="70" height="70" /></a></p>
<p>Sulla distribuzione Ubuntu invece il file da editare è <strong>/etc/network/interface </strong>nel quale vanno configurate tutte le interfacce di rete. Es<span id="more-1023"></span></p>
<blockquote><p>auto lo<br />
iface lo inet loopback</p>
<p>auto eth0<br />
iface eth0 inet static<br />
address 192.168.100.1<br />
netmask 255.255.255.0<br />
network 192.168.100.0<br />
broadcast 192.168.100.255<br />
gateway 192.168.100.254</p>
<p>auto eth1<br />
iface eth1 inet dhcp</p></blockquote>
<p>In entrambe i casi il dns va inserito nel file <strong>/etc/resolve.conf</strong></p>
<blockquote><p>search nomedominio1.it<br />
nameserver 8.8.8.8</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2010/10/12/configurazione-rete-su-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211;  Connettività digitale e analogica [decima parte]</title>
		<link>http://www.ultimobyte.org/2010/10/06/asterisk-connettivita-digitale-e-analogica-decima-parte/</link>
		<comments>http://www.ultimobyte.org/2010/10/06/asterisk-connettivita-digitale-e-analogica-decima-parte/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 10:35:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=996</guid>
		<description><![CDATA[Linea analogica (RTG) Nella telefonia analogica ci sono due tipi di interfacce (e due tipi di segnalazioni): FXS e FXO - FXS (Foreign eXchange Station) è la porta che consegna la linea analogica all&#8217;utente (la presa sul muro che fornisce il segnale dalla centrale) e quindi prodice il dial-tone. - FXO (Foreign eXchange Office) è [...]]]></description>
			<content:encoded><![CDATA[<h3>Linea analogica (RTG)</h3>
<p>Nella telefonia analogica ci sono due tipi di interfacce (e due tipi di segnalazioni): FXS e FXO</p>
<p>- FXS (<strong>F</strong>oreign e<strong>X</strong>change <strong>S</strong>tation) è la porta che consegna la linea analogica all&#8217;utente (la presa sul muro che fornisce il segnale dalla centrale) e quindi prodice il dial-tone.</p>
<p>- FXO (<strong>F</strong>oreign e<strong>X</strong>change <strong>O</strong>ffice) è la porta che riceve la linea analogica (la presa sull&#8217;apparecchio telefonico) e quindi riceve il dial-tone.</p>
<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/Photo-ott-05-12-57-06-p.2.jpg"><img class="size-medium wp-image-995 alignleft" title="Photo ott 05, 12 57 06 p." src="http://www.ultimobyte.org/wp-content/uploads/2010/10/Photo-ott-05-12-57-06-p.2-225x300.jpg" alt="" width="147" height="197" /></a></p>
<p>E&#8217; possibile utilizzare la linea analogica che abbiamo a casa con il nostro centralino Asterisk sfruttando una scheda Digium TDM410 (o analoghe) mostrata in figura</p>
<p>Questo tipo di scheda prevede l&#8217;espandibilità fino a 4 linee FXS o FXO. In particolare questa ha montato un modulo FXO (colore rosso) sulla porta 4 e un modulo FXS (colore verde) sulla porta 1.</p>
<p>Dalle cose dette prima quindi, sul modulo FXS (verde) che invia il dial-tone, va attaccato un apparato con porta FXO che riceve il dial-tone (telefono, fax, etc), mentre la porta FXO (rossa) va attaccata sulla presa FXS da cui arriva il segnale della centrale (presa muro).</p>
<h3>Linea digitale ISDN (BRI/PRI)</h3>
<p>Una linea ISDN (Integrated Services Digital Network) viene fornita all&#8217;utenza mediante due tipi di connessione verso la centrale pubblica: Basic Rate Interface (BRI) e Primary Rate Interface (PRI). Entrambi Primary Rate Interface e Basic Rate Interface sono costituiti da un certo numero di canali B e D canali. B Channel o il Canale Portatore è utilizzato per la trasmissione dei dati, tra cui voce e il canale D è destinato per la segnalazione e controllo. LA differenza <span id="more-996"></span>sta nel numero di canali di tipo B:</p>
<p>BRI: 2 canali B da 64 Kbps e 1 canale D da 16 Kbps</p>
<p>PRI: può essere di tipo E1(utlilzzato in Europa e in Australia) o T1 (utlilzzato in Nord America e Giappone).</p>
<p>- PRI E1 &#8211;&gt; 30B + D con un bit rate totale di 2,048 Mbit / s</p>
<p>- PRI T1 &#8211;&gt; 23B + D con un bit rate totale di 1,544 Mbit / s</p>
<p>La linea telefonica digitale utilizza la tecnica TDM (Time Division Multiplexing) per far passare su un unico flusso più chiamate contemporaneamente.</p>
<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/TDM.png"><img class="aligncenter size-full wp-image-1003" title="TDM" src="http://www.ultimobyte.org/wp-content/uploads/2010/10/TDM.png" alt="" width="411" height="163" /></a></p>
<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/TDM.png"></a>Di seguito una scheda Digium E1/T1 utilizzabile con Asterisk:</p>
<h3><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/Diapositiva11.png"><img class="aligncenter size-full wp-image-1006" title="Diapositiva1" src="http://www.ultimobyte.org/wp-content/uploads/2010/10/Diapositiva11.png" alt="" width="540" height="405" /></a>Configurazione DAHDI e Asterisk</h3>
<p>Ci sono due file di configurazione da modificare per far funzionare le schede analogiche e digitale con Asterisk.:</p>
<p>- /etc/dahdi/system.conf</p>
<p>- /etc/asterisk/chan_dahdi.conf</p>
<p><span style="color: #008080;"><strong>&#8212; system.conf &#8212;</strong></span></p>
<p>La configurazione hardware viene fatta nel file <strong>system.conf</strong></p>
<blockquote><p><em># configurazione relativa al flusso primario</em><br />
span=1,1,0,ccs,hdb3,crc4 <em>#una riga per ogni flusso: span1,&#8230;span2,..</em><br />
bchan=1-15 <em>#15 canali bearer</em><br />
dchan=16 <em>#1 canale di controllo</em><br />
bchan=17-31 <em>#15 canali bearer</em><br />
<em># configurazione relativa alla linea analogica</em><br />
fxoks=32<br />
fxsks=35<br />
<em># configurazione relativa ad entrambe</em><br />
loadzone=it<br />
defaultzone=it<br />
echocanceller=mg2,1-15,17-31,32,35</p></blockquote>
<p><strong>Attenzione alla configurazione delle linee analogiche</strong>: nella configurazione devo specificare non il tipo di porta ma il tipo di segnale che mi aspetto. Nel nostro caso i canali liberi per la scheda analogica in figura sono (visto che i primi 31 sono occupati dal primario):  32 (porta 1),33 (porta 2), 34 (porta 3), 35 (porta 4). In particolare:</p>
<p>- sulla porta 1 (canale 32) c&#8217;è il modulo verde FXS e quindi mi aspetto un segnale FXO (fxoks=32)</p>
<p>- sulla porta 4 (canale 35) c&#8217;è il modulo rosso FXO e quindi mi aspetto un segnale FXS (fxsks=35)</p>
<p><strong>La riga <em>span</em>&#8230;</strong></p>
<p>span=Span number,Timing,Line Build Out, Framing, Line Coding</p>
<p>A parte il promo valore che si incrementa per ogni primario che installiamo, il valore a cui dobbiamo fare attenzione è il Timinig (il clock): dovrà essere 0 se collegato al Telco mentre dovrà essere 1 se collegato al centralino.</p>
<p>NB: Dopo ogni modifica fatta al file system.conf va eseguito il comando: <strong>dahdi_cfg -vv</strong></p>
<p><span style="color: #008080;"><strong>&#8212; chan_dahdi.conf &#8212;</strong></span></p>
<blockquote><p>[channels]</p>
<p>group=1<br />
context=local<br />
signaling=fxo_ks <em>;segnalazione che si aspetta &#8211;&gt; ci attacco il telefono</em><br />
callerid=&#8221;Bob Analog&#8221;&lt;6003&gt;<br />
mailbox=&#8221;6003&#8243;<br />
callwaiting=yes<br />
threewaycalling=yes<br />
transfer=yes<br />
channel =&gt; 32</p>
<p>group=2<br />
context=from_outside<br />
signaling=fxs_ks <em>; segnalazione che si aspetta &#8211;&gt; ci attacco la linea</em><br />
callerid=asrecived<br />
callwaiting=mp<br />
channel =&gt; 35</p>
<p>group=3<br />
echocancel=yes<br />
echocancelwhenbridge=no<br />
echotraining=yes<br />
switchtype=euroisdn<br />
context=from_outside<br />
signalling=pri_cpe<br />
channel =&gt; 1-15<br />
channel =&gt; 17-31</p></blockquote>
<p>Ciascun <em>canale DAHDI</em> (system.conf) può essere assegnato a uno o più <em>channel group</em> (chan_dahdi.conf). E&#8217; necessario utilizzare il numero del gruppo nell&#8217;applicaziond Dial():</p>
<p>exten =&gt; 123,1,Dial(DAHDI/g2/06555444)</p>
<p>In questo caso su sta utilizzando la linea analogica.</p>
<p>Se scrivo</p>
<p><em>exten =&gt; 123,1,Dial(DAHDI/g1/06555444)</em></p>
<p>utilizzo il flusso primario. Ma quale sarà il canale occupato? In questo caso (g) i canali verranno occupati in maniera sequenziale (1,2,3,&#8230;) ma posso scegliere anche:</p>
<p>l&#8217;ordine inverso (G): <em>exten =&gt; 123,1,Dial(DAHDI/G1/06555444)</em></p>
<p>l&#8217;ordine casuale (round-robin) ascendente (r) : <em>exten =&gt; 123,1,Dial(DAHDI/r1/06555444)</em></p>
<p>l&#8217;ordine casuale (round-robin) dicendente (R) : <em>exten =&gt; 123,1,Dial(DAHDI/R1/06555444)</em></p>
<p><!-- adman --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2010/10/06/asterisk-connettivita-digitale-e-analogica-decima-parte/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Superamento soglie abbonamento Tre (h3g) &#8211; voce dati e sms</title>
		<link>http://www.ultimobyte.org/2010/09/15/superamento-soglie-abbonamento-tre-h3g-voce-dati-e-sms/</link>
		<comments>http://www.ultimobyte.org/2010/09/15/superamento-soglie-abbonamento-tre-h3g-voce-dati-e-sms/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 09:51:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=963</guid>
		<description><![CDATA[Ho un abbonamento con l&#8217;operatore di telefonia mobile 3 ed in particolare ho il piano telefonico Zero6 Top (che ora non esiste più). Con 34€/mese ho 400 minuti/mese di traffico telefonico (100 a settimana), 400 sms-mms/mese (100 a settimana) e 4Gb/mese di traffico dati (1Gb/settimana)&#8230;Difficilmente supero tali soglie soprattutto quella dati (a meno che non [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/09/infocosti.png"><img class="alignleft size-full wp-image-976" title="infocosti" src="http://www.ultimobyte.org/wp-content/uploads/2010/09/infocosti.png" alt="" width="184" height="74" /></a>Ho un abbonamento con l&#8217;operatore di telefonia mobile <strong>3 </strong>ed in particolare ho il piano telefonico Zero6 Top (che ora non esiste più). Con 34€/mese ho 400 minuti/mese di traffico telefonico (100 a settimana), 400 sms-mms/mese (100 a settimana) e 4Gb/mese di traffico dati (1Gb/settimana)&#8230;Difficilmente supero tali soglie soprattutto quella dati (a meno che non uso il telefono  per navigare dal computer) ma ci sono state un paio di volte che ho rischiato di farlo&#8230;</p>
<p>Naturalmente controllo ogni tanto tramite portale della Tre o tramite una delle tante applicazioni per iPhone le informazioni sui minuti/sms/dati rimasti ma mi sarebbe piaciuto un servizio di tipo &#8220;push&#8221; che mi avvertisse quando sto per finire il mio credito&#8230;</p>
<p>Ho cercato sul web ma non ho trovato nulla che facesse al caso mio e quindi ho deciso di implementarmelo da solo. Non sono un programmatore professionista però sono riuscito a buttare giù uno script in PERL che si collega al sito della TRE, mi legge le informazioni relative alle soglie e mi manda un email se mi avvicino troppo al limite da non superare&#8230;</p>
<p>Di seguito il codice che ho scritto [AGGIORNATO IL 17/01/2011]:<span id="more-963"></span></p>
<pre>#!/usr/bin/perl
## $Id: Info Costi Tre,v 1.1 2011/01/17 http://www.ultimobyte.org $

use WWW::Mechanize;
use Crypt::SSLeay;
use HTML::TreeBuilder;
use HTML::TableExtract;
use MIME::Lite;

### Invio email
#I parametri da passare sono:
# - destinatario
# - soggetto
# - corpo messaggio

sub mandaemail
{
 $msg = MIME::Lite-&gt;new(
 From =&gt; 'info@ultimobyte.org',
 To =&gt; "$_[0]",,
 Subject =&gt; "$_[1]",
 Type =&gt; 'multipart/mixed'
 );

 $msg-&gt;attach(
 Type =&gt; 'TEXT',
 Data =&gt; "$_[2]"
 );

 $msg-&gt;send('smtp', '<span style="color: #008000;">localhost</span>');
}

### Converte la stringa nella forma xxh:xxm:xxs in secondi
sub convertiinsecondi
{
 @div = split(':',$_[0]);
 foreach my $val (@div) {
 chop($val);
 push @temp,$val;
 }

 if (@div==3) {
 $totsec=$temp[0]*3600+$temp[1]*60+$temp[2];
 } else {
 $totsec=$temp[0]*60+$temp[1];
 }
}

my $root = HTML::TreeBuilder-&gt;new();
my $mech = WWW::Mechanize-&gt;new();
my $mobile = "<span style="color: #ff0000;">3471234567</span>";
my $password = "<span style="color: #ff0000;">passwordportaletre</span>";

#### ACCESSO AL PORTALE ####
$url = 'https://areaclienti.tre.it/selfcare/areaclienti133/4552_soglie_ITA_LOGGED.xsl';
$result = $mech-&gt;get( $url );
die "GET failed\n" unless $result-&gt;is_success;
print "Opened login page ...\n";

$result = $mech-&gt;submit_form(
form_name =&gt; 'formDati',
fields =&gt; {
username =&gt; $mobile,
password =&gt; $password
}
);
die "SUBMIT failed\n" unless $result-&gt;is_success;
$url2 = $result-&gt;as_string();
#print $url2;
$errore="Password non valida";
if ($url2 =~ m/$errore/) {
 print "Username o password errati\n";
 }
else {

 print "Passed  login ...\n";

 ## PARSING DELLA TABELLA SOGLIE
 $te = HTML::TableExtract-&gt;new( attribs =&gt; { class =&gt; dettaglioSoglie1 } );
 $te-&gt;parse($url2);
 $n=0;
 foreach $ts ($te-&gt;tables) {
 #print "Table with border=1 found at ", join(',', $ts-&gt;coords), ":\n";
 foreach $row ($ts-&gt;rows) {
 $lista[$n] = join(',', @$row);
 #       print "   ", join(',', @$row), "\n";
 $n=$n+1;
 }
 }

 ## STAMPE PER DEBUG
 #print "\n";
 #foreach (@lista) {
 #       print "$_\n";
 #       }

 #### CHIAMATE NAZIONALI ####
 @chiamatenazionali = split(',', $lista[1]);

 ## STAMPE PER DEBUG
 #print "\n";
 #foreach (@chiamatenazionali) {
 #       print "$_\n";
 #}

 $temporimasto= $chiamatenazionali[2];
 chop($temporimasto);
 chop($temporimasto);
 $secondi=&amp;convertiinsecondi($temporimasto);
 $minutirimasti=int($secondi/60);
 if (&amp;convertiinsecondi($temporimasto) &lt;= 600)
 {
 #print "Hai meno di $minuti minuti di conversazione\n\n";
 &amp;mandaemail("<span style="color: #ff0000;">nome\@dominio.it</span>","ATTENZIONE SOGLIE TRE","Hai meno di  $minutirimasti minuti di conversazione");
 }

 #### SMS/MMS ####
 @smsmms = split(',', $lista[2]);

 ## STAMPE PER DEBUG
 #print "\n";
 #foreach (@smsmms) {
 #       print "$_\n";
 #}

 $smsmmsrimasti= $smsmms[2];
 chop($smsmmsrimasti);
 chop($smsmmsrimasti);
 #print "sms rimasti: $smsmmsrimasti\n";
 if ($smsmmsrimasti&lt;=10)
 {
 #print "Hai meno di $smsmmsrimasti sms da inviare";
 &amp;mandaemail("<span style="color: #ff0000;">nome\@dominio.it</span>","ATTENZIONE SOGLIE TRE","Ti sono rimasti $smsmmsrimasti sms da inviare");
 }

 #### TRAFFICO DATI ####
 @trafficodati = split(',', $lista[3]);

 ## STAMPE PER DEBUG
 #print "\n";
 #foreach (@trafficodati) {
 #       print "$_\n";
 #}

 $trafficorimasto=$trafficodati[2];
 $mbrimasti = substr $trafficorimasto, 0, -5;
 if ($mbrimasti&lt;=200)
 {
 #print "Hai meno di 200 Mb di traffico\n";
 &amp;mandaemail("<span style="color: #ff0000;">nome\@dominio.it</span>","ATTENZIONE SOGLIE TRE","Hai meno di $mbrimasti Mb di traffico dati");
 }
#print "riassunto\n";
#print "minuti rimasti: $minutirimasti\n";
#print "sms rimasti: $smsmmsrimasti\n";
#print "mb rimasti: $mbrimasti\n";
print "Script completed...\n";
}
</pre>
<p>Se qualche programmatore professionista legge questo codice sicuramente poterbbe inorridire ma miglioramenti a parte funziona  bene.</p>
<p>Naturalmente fatto lo script basta inserirlo nel crontab e decidere ogni quanto fare il controllo.</p>
<p>Qualsiasi suggerimento e/o consiglio è ben accetto.</p>
<hr size="2" />
<p style="text-align: center;">Un grazie a <a href="http://www.mfila.it" target="_blank">Massimiliano Filacchioni</a> che mi ha introdotto al mondo del modulo Perl WWW::Mechanize</p>
<hr size="2" /><script type="text/javascript">// <![CDATA[
  google_ad_client = "pub-3430080201938393"; /* UB-250x250-08/09/10 */ google_ad_slot = "1680324465"; google_ad_width = 250; google_ad_height = 250;
// ]]&gt;</script></p>
<p><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2010/09/15/superamento-soglie-abbonamento-tre-h3g-voce-dati-e-sms/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

