<?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>Luigi Molinaro Blog</title>
	<atom:link href="http://blog.luigimolinaro.it/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.luigimolinaro.it</link>
	<description>Make the complex more Complex</description>
	<lastBuildDate>Thu, 09 Feb 2012 12:03:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mysql Proxy</title>
		<link>http://blog.luigimolinaro.it/2012/02/mysql-proxy/</link>
		<comments>http://blog.luigimolinaro.it/2012/02/mysql-proxy/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 12:03:46 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=244</guid>
		<description><![CDATA[Vi è mai capitato di dover configurare un&#8217;applicazione in modo che in un&#8217;archiettura mysql master/slave scriva automaticamente sul master e legga dagli slave senza modificare l&#8217;applicativo ? Mysql-proxy è quello che fa per te ! MySQL Proxy&#160;è un programma che &#8230; <a href="http://blog.luigimolinaro.it/2012/02/mysql-proxy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vi è mai capitato di dover configurare un&#8217;applicazione in modo che in un&#8217;archiettura mysql master/slave scriva automaticamente sul master e legga dagli slave senza modificare l&#8217;applicativo ?</p>
<p>Mysql-proxy è quello che fa per te !</p>
<p><strong>MySQL Proxy</strong>&nbsp;è un programma che si interpone fra un&nbsp;<a title="Client" href="http://it.wikipedia.org/wiki/Client">client</a>&nbsp;e un&nbsp;<a title="Server" href="http://it.wikipedia.org/wiki/Server">server</a>&nbsp;<a title="MySQL" href="http://it.wikipedia.org/wiki/MySQL">MySQL</a>, per consentire di effettuare operazioni sul traffico di dati, in maniera trasparente per l&#8217;utente. MySQL Proxy usa il protocollo client/server esteso di&nbsp;<a title="MySQL" href="http://it.wikipedia.org/wiki/MySQL">MySQL</a>, introdotto con la versione 4.1. Pertanto, questa applicazione è compatibile con i server dalla versione 4.1 e superiore.</p>
<p><strong>MySQL Proxy</strong>&nbsp;è un&#8217;applicazione molto leggera (200 KB in compilazione dinamica, 1.5 MB in compilazione statica con le librerie), che è stata disegnata per interporsi fra un&nbsp;<a title="Client" href="http://it.wikipedia.org/wiki/Client">client</a>&nbsp;e un&nbsp;<a title="Server" href="http://it.wikipedia.org/wiki/Server">server</a>&nbsp;<a title="MySQL" href="http://it.wikipedia.org/wiki/MySQL">MySQL</a>&nbsp;ed eseguire operazioni sui pacchetti inviati e ricevuti.<br />
Il programma ha poche opzioni di configurazione. La caratteristica che lo rende interessante e funzionale è un interprete&nbsp;<a title="Lua" href="http://it.wikipedia.org/wiki/Lua">Lua</a>&nbsp;integrato, grazie al quale è possibile analizzare ed eventualmente modificare i pacchetti passati fra client e server.<br />
Il client non si accorge del Proxy, che agisce da&nbsp;<a title="Man in the middle" href="http://it.wikipedia.org/wiki/Man_in_the_middle">man in the middle</a>. Il client si connette con le solite credenziali. Il Proxy intercetta la richiesta e si collega al server. Da quel momento, ogni query inviata dal client e i relativi risultati restituiti dal server passano attraverso il Proxy.</p>
<p>Si noti che MySQL Proxy non è un&#8217;applicazione di&nbsp;<a title="Malware" href="http://it.wikipedia.org/wiki/Malware">malware</a>, anche se la definizione resa sopra, con la sua possibilità di intercettazione, potrebbe farlo credere. L&#8217;uso del Proxy è trasparente per il client, in materia di protocollo, ovvero il client usa il server tramite il Proxy senza avvertire differenze (tranne quando usa funzioni esplicitamente create per il Proxy). Ma il Proxy usa una porta diversa dal server, e pertanto, anche se l&#8217;uso è trasparente per l&#8217;applicazione, l&#8217;amministratore è conscio della sua esistenza. L&#8217;uso del Proxy senza consenso di una delle due parti non è possibile. Il Proxy può essere usato dall&#8217;amministratore, per ampliare le funzionalità del server, o dall&#8217;utente, per lo stesso motivo. Nel primo caso, il Proxy sarà visibile a tutti gli utenti. Nel secondo caso solo l&#8217;utente che l&#8217;ha installato nella sua macchina è al corrente delle funzioni estese.</p>
<p>Nella sua forma essenziale, MySQL Proxy è uno strumento di ridirezione, che passa un pacchetto di richiesta dal client al server, prende dal server i risultati, e li passa al client. Nel passaggio di dati, il Proxy può intervenire, ed effettuare operazioni sulla query prima che venga inviata, o sui risultati, prima che vengano restituiti. Le modifiche vengono effettuate tramite script in&nbsp;<a title="Lua" href="http://it.wikipedia.org/wiki/Lua">Lua</a>, che usano funzioni predefinite per alterare lo stato dei pacchetti. Le funzioni sono le seguenti:</p>
<ul>
<li><em><a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-connect-server.html" rel="nofollow">connect_server</a></em>&nbsp;in cui si può agire al momento della connessione al server;</li>
<li><em><a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-handshake.html" rel="nofollow">read_handshake</a></em>&nbsp;che avviene immediatamente dopo la connessione;</li>
<li><em><a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-auth.html" rel="nofollow">read_auth</a></em>&nbsp;in cui si passano al server le credenziali di accesso;</li>
<li><em><a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-auth-result.html" rel="nofollow">read_auth_result</a></em>&nbsp;dove viene ricevuto il risultato dell&#8217;operazione precedente;</li>
<li><em><a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-query.html" rel="nofollow">read_query</a></em>&nbsp;che si attiva per ogni query inviata al server;</li>
<li><em><a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-query-result.html" rel="nofollow">read_query_result</a></em>&nbsp;che viene richiamata quando il Proxy riceve il risultato di una query modificata;</li>
<li><em>disconnect_client</em>&nbsp;che si attiva quando un client viene disconnesso.</li>
</ul>
<p>Ecco come l&#8217;ho configurato ed installato &nbsp;su Ubuntu per avere uno splitting r/w :<br />
<pre>apt-get install mysql-proxy</pre><br />
Mi sono crato uno script dentro /root/scritpt/proxy.sh :<br />
<pre>#!/bin/bash

MASTERDB=<strong>server1
</strong>SLAVEDB01=<strong>server2
</strong>
LUA_PATH="/usr/share/mysql-proxy/?.lua" /usr/sbin/mysql-proxy \
 --daemon \
 --proxy-backend-addresses=$MASTERDB:3306 \
 --proxy-read-only-backend-addresses=$SLAVEDB01:3306 \
 --proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua</pre><br />
e gli ho assegnato i permessi di esecuzione con chmod.<br />
Notare che lo script puo&#8217; essere modificato per avere + slave.</p>
<p>&nbsp;A questo punto facciamo partire automaticamente lo script creando un file in /etc/init.d/mysql-proxy :<br />
<pre>#!/bin/bash
#
# mysql-proxy: Start mysql-proxy in daemon mode
#
# Author: OpenX
#
# chkconfig: - 99 01
# description: Start mysql-proxy in daemon mode with r/w splitting
# processname: mysql-proxy
start(){
 echo "Starting mysql-proxy..."
 /root/script/proxy.sh
}
stop(){
  echo "Stopping mysql-proxy..."
  killall mysql-proxy
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: mysql-proxy {start|stop|restart}"
exit 1
esac</pre><br />
Occhio alle perfomance pero&#8217; !&nbsp;<br />
<a href="http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/">http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/</a>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2012/02/mysql-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash script cambio password</title>
		<link>http://blog.luigimolinaro.it/2011/12/bash-script-cambio-passoword/</link>
		<comments>http://blog.luigimolinaro.it/2011/12/bash-script-cambio-passoword/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 17:13:34 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=237</guid>
		<description><![CDATA[Personalmente me lo sono scrittp per cabiare qualcosa come 54 password ftp. Non volendolo fare a mano sono ricorso al solito bash Gli utenti nei sistemi Linux sono contenuti in questo file &#160;/etc/passwd e si presentano in questo modo : &#8230; <a href="http://blog.luigimolinaro.it/2011/12/bash-script-cambio-passoword/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Personalmente me lo sono scrittp per cabiare qualcosa come 54 password ftp.</p>
<p>Non volendolo fare a mano sono ricorso al solito bash</p>
<p>Gli utenti nei sistemi Linux sono contenuti in questo file &nbsp;/etc/passwd<br />
e si presentano in questo modo :<br />
<pre>test.it:x:526:526:test.it:/home/test.it:/bin/sh</pre><br />
Per prima cosa elimino tutto quello che non mi serve :<br />
<pre>awk -F":" '{ print $1 }' /etc/passwd > user.txt</pre><br />
ed ottengo quindi solo lo user :<br />
<pre>test.it</pre><br />
<span style="font-family: 'Courier 10 Pitch', Courier, monospace; font-size: x-small;"><span style="font-family: 'Courier 10 Pitch', Courier, monospace; font-size: x-small;">A questo punto ecco che entra in azione lo script vero e proprio :</span></span></p>
<address>#!/bin/bash</p>
<p>function randpass<br />
{<br />
echo `&lt;/dev/urandom tr -dc A-Za-z0-9 | head -c8`<br />
}</p>
<p>for i in `more ftp_ok`<br />
do<br />
p=`randpass`<br />
echo $i $p</p>
<p>echo $p | passwd &#8211;stdin $i<br />
done</p>
<p><span class="Apple-style-span" style="font-family: 'Courier 10 Pitch', Courier, monospace; line-height: 16px; font-size: x-small;">Il gioco è fatto !</span></address>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2011/12/bash-script-cambio-passoword/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Allineare mysql slave</title>
		<link>http://blog.luigimolinaro.it/2011/11/allineare-mysql-slave/</link>
		<comments>http://blog.luigimolinaro.it/2011/11/allineare-mysql-slave/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 14:20:03 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=235</guid>
		<description><![CDATA[Cosa succede se si fa una bella insert sul nostro database mysql slave? Due cose : Lo slave server si disallinea Il sistemista bestemmia&#160; Per controllore lo stato dello slave bisogna lanciare dallo slave : mysql&#62; show slave status\G&#160; Lo &#8230; <a href="http://blog.luigimolinaro.it/2011/11/allineare-mysql-slave/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Cosa succede se si fa una bella insert sul nostro database mysql slave?<br />
Due cose :</p>
<ol>
<li>Lo slave server si disallinea</li>
<li>Il sistemista bestemmia&nbsp;</li>
</ol>
<address>Per controllore lo stato dello slave bisogna lanciare dallo slave :</address>
<p><pre>
mysql&gt; show slave status\G&nbsp;</pre></p>
<address>
<em>Lo Slave utilizza piu&#8217; thread. Il primo e&#8217; una connessione remota al Master ed ha il compito di raccogliere i dati dal bin-log (BinLog Dump) ed e&#8217; sempre attivo. Gli altri thread sono locali ed hanno il compito di ricevere il contenuto del bin-log (Slave I/O) e di applicarlo alla base dati (Slave SQL). In caso d&#8217;errore nell&#8217;inserimento dei dati il thread Slave SQL si interrompe mentre lo Slave I/O continua a raccogliere i dati dal Master. Con&nbsp;<strong>show slave status\G</strong>&nbsp;si ottiene l&#8217;indicazione dell&#8217;errore occorso; una volta corretto il problema la replicazione riprende dal punto in cui si era interrotta applicando il relay-log.&nbsp;</em></address>
<p>Per risolvere il problema numero 1 bisogna seguire questa facile guida :</p>
<p>1. Stoppare sugli SLAVE SERVER il servizio di replica :<br />
<pre>mysql&gt; stop slave;</pre><br />
2. Lokkare le tabelle sul MYSQL MASTER (occhio a non uscire da mysql altrimenti questo comando viene flushato)<br />
<pre>mysql&gt; FLUSH TABLES WITH READ LOCK;</pre><br />
3. Effettuare un dump completo e copiarli sullo/i SLAVE/s :<br />
<pre>mysqldump --all-database &gt; <em>databases</em>.sql -u root -p&nbsp;</pre><br />
4. Restore DB sugli SLAVE<br />
<pre>mysql -u root -p&nbsp;<em>databases</em>.sql&nbsp;</pre><br />
5. Controllare lo stato del MYSQL MASTER per vedere fino a che punto è arrivata il transaction bin log : (in un altra sessione ssh, vedi punto 2)<br />
<pre>mysql&gt; show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| <span style="color: #ff0000;"><strong>mysql-bin.000059</strong></span> | <span style="color: #ff0000;"><strong>17908642</strong></span> |              |                  |
+------------------+----------+--------------+------------------+</pre><br />
6. Riattivare il MYSQL SLAVE<br />
<pre>CHANGE MASTER TO MASTER_LOG_FILE = 'mysql-bin.000059', MASTER_LOG_POS = 17148864;</pre><br />
7. Riattivare lo slave<br />
<pre>mysql&gt; start slave;</pre><br />
8. Riattivare il MYSQL MASTER in scrittura<br />
<pre>UNLOCK TABLES;</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2011/11/allineare-mysql-slave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitorare coda postfix</title>
		<link>http://blog.luigimolinaro.it/2011/11/monitorare-coda-postfix/</link>
		<comments>http://blog.luigimolinaro.it/2011/11/monitorare-coda-postfix/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 11:18:01 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=232</guid>
		<description><![CDATA[Un semplice script bash che controlla la coda di postix e ci avverte se supera un determinato limite : #!/bin/bashlimit=50;notifyemail=luigi.molinaro@gmail.com;servername=$&#40;hostname&#41;;&#160;queue_p=$&#40;postqueue -p &#124; grep Request &#124; awk '{print $5}'&#41;;&#160;if &#91; $queue_p -ge $limit &#93; ; then&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo &#34;Dear Server admin,&#160;We have $limit &#8230; <a href="http://blog.luigimolinaro.it/2011/11/monitorare-coda-postfix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Un semplice script bash che controlla la coda di postix e ci avverte se supera un determinato limite :</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li><span style="color: #666666; font-style: italic;">#!/bin/bash</span></li><li><span style="color: #007800;">limit</span>=<span style="color: #000000;">50</span>;</li><li><span style="color: #007800;">notifyemail</span>=luigi.molinaro<span style="color: #000000; font-weight: bold;">@</span>gmail.com;</li><li><span style="color: #007800;">servername</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">hostname</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;</li><li>&nbsp;</li><li><span style="color: #007800;">queue_p</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>postqueue <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> Request <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $5}'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;</li><li>&nbsp;</li><li><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$queue_p</span> <span style="color: #660033;">-ge</span> <span style="color: #007800;">$limit</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;</span></li><li><span style="color: #ff0000;">Dear Server admin,</span></li><li>&nbsp;</li><li><span style="color: #ff0000;">We have <span style="color: #007800;">$limit</span> in local mailqueue.</span></li><li><span style="color: #ff0000;">&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> mail <span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;Mailqueue limit exceeding - <span style="color: #007800;">$servername</span>&quot;</span> <span style="color: #007800;">$notifyemail</span></li><li>&nbsp;</li><li><span style="color: #000000; font-weight: bold;">fi</span></li><li></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2011/11/monitorare-coda-postfix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Proteggi SSH con SSHguard</title>
		<link>http://blog.luigimolinaro.it/2011/11/proteggi-ssh-con-sshguard/</link>
		<comments>http://blog.luigimolinaro.it/2011/11/proteggi-ssh-con-sshguard/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 14:23:13 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=230</guid>
		<description><![CDATA[&#160;sshguard&#160;, è scritto in C, quindi usa meno memoria e CPU durante l’esecuzione pur ottenendo gli stessi risultati. COSA FA SSHGUARD ? La versione corta è: riceve i messaggi di log, rileva quando un servizio in rete è attaccato basandosi &#8230; <a href="http://blog.luigimolinaro.it/2011/11/proteggi-ssh-con-sshguard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;<a href="http://www.sshguard.net/">sshguard&nbsp;</a>, è scritto in C, quindi usa meno memoria e CPU durante l’esecuzione pur ottenendo gli stessi risultati.</p>
<h2>COSA FA SSHGUARD ?</h2>
<p>La versione corta è: riceve i messaggi di log, rileva quando un servizio in rete è attaccato basandosi su di essi, e blocca l’indirizzo di chi sta attaccando, dopo qualche tempo, rimuove questo blocco.</p>
<p>La versione completa è: sshguard gira su una macchina come un piccolo demone, e riceve i messaggi di log (in diversi modi, ad esempio da syslog). Quando si determina che l’indirizzo X ha fatto qualcosa di male al servizio Y, attiva una regola nel firewall della macchina (uno dei tanti supportati) per il blocco di X.<br />
Sshguard mantiene X bloccato per qualche tempo, poi lo rilascia automaticamente.</p>
<p>Si prega di notare che, nonostante il suo nome sshguard rileva di base gli attacchi per molti servizi, non solo SSH, ma anche diversi demoni ftpds, Exim e Dovecot. E’ in grado di operare con tutti i principali sistemi di firewalling, e fornisce supporto per IPv6, whitelist, sospensione, e registra i messaggi di autenticazione.</p>
<h2>Installazione</h2>
<p>Sshguard è distribuito sotto la permissiva licenza BSD: è possibile utilizzare, modificare e ridistribuire il software, a proprio rischio, per qualsiasi uso, anche commerciale, a condizione di conservare l’avviso di copyright originale che si trova al suo interno. Il software è distribuito nel repository principale delle più utilizzate distribuzioni GNU/Linux e per alcuni sistemi *BSD, ma è anche possibile scaricare i sorgenti dalla loro&nbsp;<a href="http://www.sshguard.net/download/">pagina di downlaod&nbsp;</a>.</p>
<p>Per installarlo su Debian ( o altre distribuzioni che utilizzano i .deb come Ubuntu) lanciate da un terminale:</p>
<div>
<div>
<pre>sudo aptitude install sshguard</pre></p>
<h2>Configurazione</h2>
</div>
</div>
<p>Sshguard si interfaccia al sistema in due punti:</p>
<ul>
<li>il sistema di logging (come sshguard riceve i messaggi di log per il monitoraggio)</li>
<li>il firewall (come sshguard blocca gli indirizzi indesiderati )</li>
</ul>
<p>A partire dalla versione 1.5, sshguard viene fornito con il&nbsp;<a href="http://www.sshguard.net/docs/setup/getlogs/log-sucker/">Log Sucker&nbsp;</a>. Con il Log Sucker, SSHGuard recupera le voci dai log in modo proattivo, e gestisce in modo trasparente eventi come la rotazione dei file di log e la scomparsa e riapparizione dei file.</p>
<p>Nella pagina della<a href="http://www.sshguard.net/docs/setup/">&nbsp;documentazione ufficiale&nbsp;</a>ci sono delle istruzioni per molti firewall differenti, io seguirò le istruzioni per netfilter/iptables.</p>
<p>sshguard non ha un file di configurazione. Tutta la configurazione che deve essere fatta è la creazione di una chain chiamata “sshguard” nella catena di INPUT di iptables dove sshguard inserisce automaticamente le regole per i pacchetti provenienti da host malevoli:</p>
<div>
<div>
<pre>#Per il supporto a IPv4 :
iptables -N sshguard
# Se volete anche il supporto a IPv6 :
ip6tables -N sshguard</pre>
</div>
</div>
<p>Ora aggiornare la catena di INPUT in modo che passi tutto il traffico che si desidera a sshguard, specificare con – dport tutte le porte dei servizi che si desidera proteggere con sshguard. Se si desidera impedire agli aggressori di fare tutto il traffico verso l’host, rimuovere completamente l’opzione:</p>
<div>
<div>
<pre>#Blocca tutto il traffico:
iptables -A INPUT -j sshguard
ip6tables -A INPUT -j sshguard
&nbsp;
        -- o --
&nbsp;
#Blocca gli attaccanti solo per i servizi SSH, FTP, POP, IMAP  (usa il modulo "multiport")
iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard
ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard</pre>
</div>
</div>
<p>Se al momento non usate iptables e volete solo avere sshguard installato e funzionante senza alcun ulteriore impatto sul sistema, questi comandi creano e salvano una configurazione iptables che non fa assolutamente nulla se non permettere ad sshguard di funzionare:</p>
<div>
<div>
<pre># iptables -F
# iptables -X
# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -N sshguard
# iptables -A INPUT -j sshguard
# /etc/rc.d/iptables save</pre>
</div>
</div>
<h2>Conclusioni</h2>
<p>E questo è tutto quello che dovete fare per avere una installazione di base di sshguard installata e funzionante, vi aiuterà ad avere il vostro ssh, ftp ed altri demoni un po’ più sicuro.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2011/11/proteggi-ssh-con-sshguard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creazione automatica sito web apache con bash</title>
		<link>http://blog.luigimolinaro.it/2011/10/creazione-automatica-sito-web-apache-con-bash/</link>
		<comments>http://blog.luigimolinaro.it/2011/10/creazione-automatica-sito-web-apache-con-bash/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 11:18:11 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=225</guid>
		<description><![CDATA[Ecco un semplice script che crea website, alias, directory automaticamente tramite bash&#160; #!/bin/bash&#160;echo &#34;Inserisci dominio (es: example.com):&#34;;read domain;echo &#34;&#34; echo &#34;Inserisci Alias (es: www.example.com):&#34;;read domain_alias;echo &#34;&#34; &#160;### Check $domain esisteif ! grep &#34;${domain}&#34; /etc/apache2/sites-available/${domain}.conf &#62;&#62; /dev/null; then&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo &#34;${domain} will be &#8230; <a href="http://blog.luigimolinaro.it/2011/10/creazione-automatica-sito-web-apache-con-bash/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ecco un semplice script che crea website, alias, directory automaticamente tramite bash&nbsp;</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li><span style="color: #666666; font-style: italic;">#!/bin/bash</span></li><li>&nbsp;</li><li><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Inserisci dominio (es: example.com):&quot;</span>;</li><li><span style="color: #c20cb9; font-weight: bold;">read</span> domain;</li><li><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;&quot;</span> </li><li><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Inserisci Alias (es: www.example.com):&quot;</span>;</li><li><span style="color: #c20cb9; font-weight: bold;">read</span> domain_alias;</li><li><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;&quot;</span> </li><li>&nbsp;</li><li><span style="color: #666666; font-style: italic;">### Check $domain esiste</span></li><li><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${domain}</span>&quot;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${domain}</span>.conf <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null; <span style="color: #000000; font-weight: bold;">then</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${domain}</span> will be created&quot;</span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${domain}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>htdocs,logs,cgi-bin<span style="color: #7a0874; font-weight: bold;">&#125;</span>;</li><li> <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> www-data:www-data <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${domain}</span><span style="color: #000000; font-weight: bold;">/</span></li><li>&nbsp;</li><li> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot; </span></li><li><span style="color: #ff0000;">## Automatic generation from Genesi on <span style="color: #780078;">`eval date +%d.%m.%Y`</span></span></li><li><span style="color: #ff0000;">## <span style="color: #007800;">${domain}</span></span></li><li><span style="color: #ff0000;">&lt;VirtualHost *:80&gt;</span></li><li><span style="color: #ff0000;"> ServerName <span style="color: #007800;">${domain}</span></span></li><li><span style="color: #ff0000;"> ServerAlias <span style="color: #007800;">${domain_alias}</span></span></li><li><span style="color: #ff0000;"> DocumentRoot /var/www/<span style="color: #007800;">${domain}</span>/htdocs</span></li><li><span style="color: #ff0000;"> ServerAdmin tech@neen.it</span></li><li>&nbsp;</li><li><span style="color: #ff0000;"> ErrorLog /var/www/<span style="color: #007800;">${domain}</span>/logs/error.log</span></li><li><span style="color: #ff0000;"> CustomLog /var/www/<span style="color: #007800;">${domain}</span>/logs/access.log combined</span></li><li><span style="color: #ff0000;">&lt;/VirtualHost&gt;</span></li><li>&nbsp;</li><li><span style="color: #ff0000;">&lt;Directory /var/www/<span style="color: #007800;">${domain}</span>/htdocs&gt;</span></li><li><span style="color: #ff0000;"> Options FollowSymLinks MultiViews</span></li><li><span style="color: #ff0000;"> AllowOverride All</span></li><li><span style="color: #ff0000;"> Order allow,deny</span></li><li><span style="color: #ff0000;"> allow from all</span></li><li><span style="color: #ff0000;">&lt;/Directory&gt;</span></li><li><span style="color: #ff0000;"> &quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${domain}</span>.conf</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Testing configuration&quot;</span> </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #c20cb9; font-weight: bold;">apache2ctl configtest</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a2ensite <span style="color: #800000;">${domain}</span>.conf </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 reload</li><li><span style="color: #000000; font-weight: bold;">else</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${domain}</span> Dominio già esistente&quot;</span> </li><li><span style="color: #000000; font-weight: bold;">fi</span></li><li></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2011/10/creazione-automatica-sito-web-apache-con-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mediawiki FCKeditor</title>
		<link>http://blog.luigimolinaro.it/2011/10/mediawiki-fckeditor/</link>
		<comments>http://blog.luigimolinaro.it/2011/10/mediawiki-fckeditor/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 09:45:25 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Varie]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=223</guid>
		<description><![CDATA[Dalla versione di MediaWiki &#62; 1.16 la versione stabile di FCKeditor è disponibile qui : http://svn.wikimedia.org. SVN path:&#160;http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/FCKeditor) Peccato solo che la versione ufficiale esce con un bel baco : Fatal error: Cannot redeclare js_unescape&#40;&#41; &#40;previously declared in /home/webapps/ineh/extensions/FCKeditor/FCKeditorSajax.body.php:268&#41; in &#8230; <a href="http://blog.luigimolinaro.it/2011/10/mediawiki-fckeditor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dalla versione di MediaWiki &gt; 1.16 la versione stabile di FCKeditor è disponibile qui : http://svn.wikimedia.org.</p>
<p><strong>SVN path</strong>:&nbsp;http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/FCKeditor)</p>
<p>Peccato solo che la versione ufficiale esce con un bel baco :</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li>Fatal error: Cannot redeclare js_unescape<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>previously declared <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>webapps<span style="color: #000000; font-weight: bold;">/</span>ineh<span style="color: #000000; font-weight: bold;">/</span>extensions<span style="color: #000000; font-weight: bold;">/</span>FCKeditor<span style="color: #000000; font-weight: bold;">/</span>FCKeditorSajax.body.php:<span style="color: #000000;">268</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>webapps<span style="color: #000000; font-weight: bold;">/</span>ineh<span style="color: #000000; font-weight: bold;">/</span>includes<span style="color: #000000; font-weight: bold;">/</span>AjaxFunctions.php on line <span style="color: #000000;">55</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Per risolvere basta modificare questa pagina all&#8217;interno della cartella extensions/FCKeditor e cambiare&nbsp;&nbsp;‘js_unescape’ con ‘fck_js_unescape’;</p>
<p>O lo fate a mano o usate rpl ad esempio :</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Bash"><div class="devcodeoverflow"><ol><li>rpl js_unescape fck_js_unescape FCKeditorSajax.body.php</li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2011/10/mediawiki-fckeditor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LVM &#8211; Come funziona</title>
		<link>http://blog.luigimolinaro.it/2011/10/lvm-come-funziona/</link>
		<comments>http://blog.luigimolinaro.it/2011/10/lvm-come-funziona/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 15:24:27 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=208</guid>
		<description><![CDATA[Introduzione&#160; LVM (Logical Volume Manager) permette l’utilizzo di dispositivi logici virtuali per accedere ai disci, mascherano cosi’ la natura dei dispositivi fisici su cui risiedono i dati. E’ quindi possibile utilizzare un device virtuale di cui possono fare parte diversi &#8230; <a href="http://blog.luigimolinaro.it/2011/10/lvm-come-funziona/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introduzione&nbsp;</h2>
<p>LVM (Logical Volume Manager) permette l’utilizzo di dispositivi logici virtuali per accedere ai disci, mascherano cosi’ la natura dei dispositivi fisici su cui risiedono i dati.</p>
<p>E’ quindi possibile utilizzare un device virtuale di cui possono fare parte diversi hard disk fisici, anche di natura, velocità e dimensioni diverse.</p>
<p>I vantaggi di un simile approccio alla gestione dei file system sono maggiore flessibilita’ e scalabilita’, alta disponibilita’ del servizio e ridondanza.</p>
<h2>Schema</h2>
<p><pre>                        -------------------------------------------------
Logical Volumes  (LV)   |    lv_share   |    lv_backup   |   (unused)   |
                        -------------------------------------------------
Volume Groups    (VG)   |                 vg_fileserver                 |
                        -------------------------------------------------
Physical Volumes (PV)   | /dev/sdb1 | /dev/sdc1 | /dev/sdd1 | /dev/sde1 |
                        -------------------------------------------------</pre></p>
<h2>Ricerca nuovi dischi&nbsp;</h2>
<p>Per vedere nuovi dischi aggiunti alla macchina:<br />
echo 1 &gt; /sys/class/fc_host/host/issue_lip<br />
rescan-scsi-bus.sh -l -w -c<br />
multipath</p>
<h2>Physical Volumes (PV)&nbsp;</h2>
<p>Per creare un Physical Volume (PV) su una partizione esistente, cioe’ rendere la partizione adatta ad ospitare dei Volume Group (VG):<br />
pvcreate ”/dev/sdb1”</p>
<p>Per visualizzare tutti i Physical Volume (PV) presenti:<br />
pvdisplay</p>
<p>Per spostare tutti i dati da un Physical Volume (PV) ad un altro:<br />
pvmove -i 10 ”/dev/sdb1” ”/dev/sdc1”</p>
<h2>Volume Groups (VG)&nbsp;</h2>
<p>Per creare un Volume Group (VG) su un Physical Volume (PV) precedentemente creato:<br />
vgcreate ”vg_name” ”/dev/sdb1” ”/dev/sdc1”</p>
<p>Per attivare un Volume Group (VG) non attivo:<br />
vgchange -a y ”vg_name”</p>
<p>Per estendere un Volume Group (VG):<br />
vgextend ”vg_name” ”/dev/sdd1”</p>
<p>Per visualizzare tutti i Volume Group (VG) presenti:<br />
vgdisplay</p>
<p>Per rinominare un Volume Group (VG):<br />
vgrename ”vg_name” ”vg_new_name”</p>
<h2>Logical Volumes (LV)</h2>
<p>Per creare un Logical Volume (LV) grande 2 GB su un Volume Group (VG) precedentemente creato:<br />
lvcreate -L”2G” -n ”lv_name” ”vg_name”</p>
<p>Per formattare in xfs il Logical Volume (LV) appena creato:<br />
mkfs.xfs /dev/”vg_name”/”lv_name”</p>
<p>Per estendere un Logical Volume (LV) di 1 GB:<br />
lvextend -L”+1G” /dev/”vg_name”/”lv_name”</p>
<p>Per estendere il filesystem presente sul Logical Volume (LV) appena esteso:<br />
xfs_growfs /mountpoint</p>
<p>Per visualizzare tutti i Logical Volume (LV) presenti:<br />
lvdisplay</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2011/10/lvm-come-funziona/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitorare progresso restore Mysql</title>
		<link>http://blog.luigimolinaro.it/2011/10/monitorare-progresso-restore-mysql/</link>
		<comments>http://blog.luigimolinaro.it/2011/10/monitorare-progresso-restore-mysql/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 11:07:07 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=194</guid>
		<description><![CDATA[Vi è mai capitato di dover copiare un file di grandi dimensioni e voler monitorare lo stato di avanzamento della copia? Con pv è possibile farlo in maniera molto semplice. Le distribuzioni più comuni permettono di installare pv con un semplice apt-get install pv o yum &#8230; <a href="http://blog.luigimolinaro.it/2011/10/monitorare-progresso-restore-mysql/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="post-1951">
<div>
<p>Vi è mai capitato di dover copiare un file di grandi dimensioni e voler monitorare lo stato di avanzamento della copia? Con pv è possibile farlo in maniera molto semplice. Le distribuzioni più comuni permettono di installare pv con un semplice<strong> apt-get install pv o yum install pv</strong>, dopodiché potete monitorare lo stato di avanzamento di una copia semplicemente mettendo pv in pipe con altri comandi. pv di per sé si comporta in maniera molto simile a cat, quindi, ad esempio, se dovete mandare una serie di query a mysql :<br />
<pre># pv database_backup.sql | mysql my_database
96.8MB 0:00:17 [5.51MB/s] [==&gt;                                ] 11% ETA 0:02:10</pre>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2011/10/monitorare-progresso-restore-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ecco il nuovo sito Ubuntu App Developer: annuncio ufficiale!</title>
		<link>http://blog.luigimolinaro.it/2011/09/ecco-il-nuovo-sito-ubuntu-app-developer-annuncio-ufficiale/</link>
		<comments>http://blog.luigimolinaro.it/2011/09/ecco-il-nuovo-sito-ubuntu-app-developer-annuncio-ufficiale/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 09:38:19 +0000</pubDate>
		<dc:creator>Luigi Molinaro</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.luigimolinaro.it/?p=190</guid>
		<description><![CDATA[Punto di riferimento fondamentale per tutti gli sviluppatori Ubuntu: il nuovo sito è stato ufficialmente annunciato e risulta giù attivo a questo indirizzo: http://developer.ubuntu.com/. Un supporto passo passo per chi ha voglia di dedicarsi allo sviluppo di applicazioni per uno dei sistemi &#8230; <a href="http://blog.luigimolinaro.it/2011/09/ecco-il-nuovo-sito-ubuntu-app-developer-annuncio-ufficiale/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2><span class="Apple-style-span" style="font-size: 13px; font-weight: normal;"><a href="http://blog.luigimolinaro.it/wp-content/uploads/2011/09/developer-ubuntu.png"><img class="alignnone size-full wp-image-191" title="developer-ubuntu" src="http://blog.luigimolinaro.it/wp-content/uploads/2011/09/developer-ubuntu.png" alt="" width="560" height="292" /></a><br />
</span></h2>
<div>
<div>
<div>
<div>
<p>Punto di riferimento fondamentale per tutti gli sviluppatori Ubuntu: <strong>il nuovo sito è stato ufficialmente annunciato e risulta giù attivo a questo indirizzo: <a href="http://developer.ubuntu.com/" target="_blank">http://developer.ubuntu.com/</a>.</strong></p>
<p>Un supporto passo passo per chi ha voglia di dedicarsi allo sviluppo di applicazioni per uno dei sistemi operativi free più utilizzati al mondo: il sito è costituito da diverse sezioni, tutte con uno scopo ben preciso.</p>
<ul>
<li><a href="http://developer.ubuntu.com/get-started/" target="_blank">Get started</a> – Per incominciare…</li>
<li><a href="http://developer.ubuntu.com/resources/" target="_blank">Resources</a> – Tutorial, guide e tutta la documentazione necessaria per lo sviluppo</li>
<li><a href="http://developer.ubuntu.com/publish/" target="_blank">Publish</a> – Viene spiegato come usufruire del famoso Ubuntu Software Centre</li>
<li><a href="http://developer.ubuntu.com/community/" target="_blank">Community</a> – Community che riunisce tutti gli sviluppatori</li>
<li><a href="https://myapps.developer.ubuntu.com/" target="_blank">My Apps</a> – Sezione in cui possiamo tutte le applicazioni sviluppate e relative informazioni.</li>
</ul>
<p><strong>Ci si aspettano ulteriori novità e cambiamenti che verranno probabilmente discusse e rivelate in occasione dell’ Ubuntu Developer Summit che si terrà ad Orlando</strong></p>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.luigimolinaro.it/2011/09/ecco-il-nuovo-sito-ubuntu-app-developer-annuncio-ufficiale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

