<?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>Temporini Matteo &#187; demoni</title>
	<atom:link href="http://www.temporini.net/category/demoni/feed" rel="self" type="application/rss+xml" />
	<link>http://www.temporini.net</link>
	<description>It&#039;s time to fix!</description>
	<lastBuildDate>Fri, 10 Sep 2010 11:30:46 +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>Squid &#8211; Come configurare l&#8217;autenticazione su squid</title>
		<link>http://www.temporini.net/squid-come-configurare-lautenticazione-su-squid</link>
		<comments>http://www.temporini.net/squid-come-configurare-lautenticazione-su-squid#comments</comments>
		<pubDate>Sat, 14 Jun 2008 13:38:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[demoni]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA["configurare" "squid" "proxy" "internet" "web" "sicurez]]></category>

		<guid isPermaLink="false">http://www.temporini.net/?p=136</guid>
		<description><![CDATA[<p>Dopo aver spiegato come configurare Squid nei suoi elementi basilari, vediamo ora come aumentarne la sicurezza, inserendo un meccanismo di autenticazione, onde evitare che chiunque possa usare il nostro proxy per navigare.</p>
<p>Presupposto di questo articolo è che abbiate già uno squid funzionante, senza alcun meccanismo di autenticazione.</p>
<p>Innanzitutto dobbiamo discriminare come abbiamo installato il nostro squid</p>
<p>1- Compilato [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo aver spiegato <a title="Come installare e configurare Squid" href="http://www.temporini.net/come-installare-e-configurare-squid" target="_blank">come configurare Squid nei suoi elementi basilari</a>, vediamo ora come aumentarne la sicurezza, inserendo un meccanismo di autenticazione, onde evitare che chiunque possa usare il nostro proxy per navigare.</p>
<p>Presupposto di questo articolo è che abbiate già uno squid funzionante, senza alcun meccanismo di autenticazione.</p>
<p>Innanzitutto dobbiamo discriminare come abbiamo installato il nostro squid</p>
<p>1- Compilato da sorgenti</p>
<p>2- Pacchetto Slackware</p>
<p>nel primo caso l&#8217;eseguibile <strong>ncsa_auth </strong>dovrebbe essere già installato nel nostro sistema, nel secondo caso purtroppo, dovremo provvedere a compilarcelo a mano.</p>
<p>Basta scaricare i sorgenti di Squid e fare quanto segue:</p>
<p><code>root@localhost:# </code><code>wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE6.tar.gz<br />
</code><code>root@localhost:# </code><code>tar -zxvf  squid-3.0.STABLE6.tar.gz<br />
</code><code>root@localhost:#</code><code> cd squid-3.0.STABLE6<br />
</code><code>root@localhost:#</code><code> ./configure &amp;&amp; make ./configure --prefix=/usr/local/squid<br />
</code><code>root@localhost:#</code><code> cd helpers/basic_auth/NCSA/<br />
</code><code>root@localhost:#</code><code> make<br />
</code><code>root@localhost:#</code><code> make install</code></p>
<p>A questo punto nella cartella /usr/local/squid/libexec/ncsa_auth dovremmo avere l&#8217;eseguibile che ci serve.</p>
<p>Editiamo ora il file /etc/squid/squid.conf</p>
<p>decommentiamo la riga</p>
<p><code>#auth_param basic program &lt; uncomment and complete this line &gt;</code></p>
<p>e facciamola diventare</p>
<p><code>auth_param basic program /usr/local/squid/libexec/ncsa_auth /etc/squid/passwd</code></p>
<p>dove il file <code>/etc/squid/passwd sarà il file che conterrà user e password degli utenti che potranno usare il nostro proxy.</code></p>
<p>Ora non resta che specificare una acl che abiliti l&#8217;autenticazione con l&#8217;istruzione proxy_auth.</p>
<p><code>acl <var>nomeacl</var> proxy_auth REQUIRED</code></p>
<p><code></code>e di seguito permettere l&#8217;accesso a questa acl</p>
<p><code>http_access allow <var>nomeacl</var></code></p>
<p>Creiamo ora il primo user che potrà usare il nostro proxy, tramite il comando</p>
<p><code>root@localhost:# htpasswd -c passwd nomeutente<br />
New password:<br />
Re-type new password:<br />
Adding password for user nomeutente</code></p>
<p>Riavviamo lo squid con</p>
<p><code>root@localhost:# /etc/rc.d/rc.squid restart</code></p>
<p>da ora in avanti il nostro proxy chiederà l&#8217;autenticazione tramite una finestra, ogni volta che si vorrà navigare mediante lui.</p>
<p>Saluti</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/squid-come-configurare-lautenticazione-su-squid/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wrapper Sendmail</title>
		<link>http://www.temporini.net/wrapper-sendmail</link>
		<comments>http://www.temporini.net/wrapper-sendmail#comments</comments>
		<pubDate>Fri, 23 Nov 2007 16:16:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Postfix]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[demoni]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://www.temporini.net/wrapper-sendmail</guid>
		<description><![CDATA[<p>Problema del giorno&#8230; quante volte capita che qualche script non sicuro (es. form php senza controlli di sicurezza sull&#8217;inserimento dei dati e conseguente invio di un&#8217;email), riempia le code dei nostri server di posta? A me sinceramente molto spesso (si pensi a qualcuno che crea uno script di &#8220;test&#8221; che basta lanciarlo e viene spedita un&#8217;email, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Problema del giorno</strong>&#8230; quante volte capita che qualche script non sicuro (es. form php senza controlli di sicurezza sull&#8217;inserimento dei dati e conseguente invio di un&#8217;email), riempia le code dei nostri server di posta? A me sinceramente molto spesso (si pensi a qualcuno che crea uno script di &#8220;test&#8221; che basta lanciarlo e viene spedita un&#8217;email, lo script viene dimenticato li e trovato da qualche bontempone che si diverte a esguirlo centinaia di volte&#8230; voi direte &#8220;ma chi vuoi che lo faccia?!?!?!?&#8221; e io vi rispondo dicendo solo&#8230; &#8220;più di quanti si possa immaginare&#8221;).</p>
<p>Conseguenza di tutto questo sono ore perse a cercare qualche script, sito o altro responsabile del fattaccio, con conseguenti improperi verso ogni genere di essere vivente vi si presenti vicino.</p>
<p><span id="more-103"></span>Grazie ai consigli e all&#8217;aiuto di <strong>Marco Londero</strong>, abbiamo ideato un piccolo wrapper php che genera un log sulla posta che viene inviata trmamite il comando <strong>mail()</strong> di php, e aggiunge un <strong>header</strong> all&#8217;interno dell&#8217;email stessa in grado di permetterci di risalire al log desiderato e riuscire ad identificare meglio l&#8217;origine di un certo problema.</p>
<p>All&#8217;interno di tale log avremo una cosa molto importante, il path dello script che ha generato e inviato l&#8217;email in questione.</p>
<p>Siamo partiti a partire un <a href="http://gregmaclellan.com/blog/sendmail-wrapper/" title="Sendmail Wrapper">wrapper</a> trovato su <a href="http://www.gregmaclellan.com/">groogsblog</a> e tramite semplici modifiche siamo riusciti ad ottenere quel che ci serviva.</p>
<p>Una definizione di <strong>wrapper</strong> (giusto per capire di cosa si parla) potrebbe essere la seguente &#8220;<em>Un <strong><span class="QUOTE">wrapper</span></strong> è uno script di shell che       incorpora una utility o un comando di sistema. Questo evita di       dover digitare una serie di parametri che andrebbero passati       manualmente a quel comando.</em>&#8221;</p>
<p>Vediamo ora come installarlo.</p>
<p>Presupponiamo di utilizzare postfix (di fatto si potrebbe usare qualunqua altro sistema senza problemi),</p>
<p><code>cd /etc/postfix/</code></p>
<p><code>touch sendmail.php</code></p>
<p><code>chmod 775 sendmail.php</code></p>
<p><code>nano sendmail.php</code></p>
<p>A questo punto nel file sendmail.php inseriamo il codice del <a href="http://www.temporini.net/wp-content/uploads/2007/11/sendmailtar.gz" title="Sendmail Wrapper">Wrapper</a>, e salviamo il file.</p>
<p>Modifichiamo olra il file php.ini e permettiamo al wrapper di essere eseguito prima di sendmail (sarà il wrapper stesso dal suo interno a richiamare sendmail al momento opportuno).</p>
<p><code>nano /etc/php.ini</code></p>
<p>sostituiamo il valore di sendmail_path con il seguente</p>
<p>sendmail_path = /etc/postfix/sendmail.php</p>
<p>Prepariamo le directory che conterranno i log che che genererà il nostro simpatico wrapper</p>
<p><code>mkdir /var/log/phpmail<br />
chown root:apache /var/log/phpmail<br />
chmod 770 /var/log/phpmail</code></p>
<p>ed ora non ci resta altro che riavviare apache<br />
<code><br />
/etc/init.d/apache2 restart</code></p>
<p>Date una controllata al file /var/log/httpd/error_log per vedere che sia tutto corretto e aspettate (o create uno script in php per testarlo), ora quando verrà inviata un&#8217;email da uno script in php accadranno due cose</p>
<p>1- nell&#8217;header dell&#8217;email vi sarà un campo nuovo che si chiama X-MsgID e che altro non è che il nome del file in /var/log/phpmail/ che contiene i dati dell&#8217;email inviata dal webserver</p>
<p>2- all&#8217;interno del file relativo all&#8217;header X-MsgID vi sarà un campo che indicherà il path dello script che ha inviato un&#8217;email</p>
<p>Riporto di seguito un esempio del contenuto del file di log di un&#8217;email</p>
<p><em>Body: 574 bytesDate: Fri, 23 Nov 2007 16:35:37 +0100<br />
PWD: /var/www/vhost/XXX.TLD/home/html/phpBB2<br />
Msg ID: ns3.eastitaly.it_20071123163537.4746f3495849d</em></p>
<p><em>Message:<br />
&#8212;&#8212;&#8212;-<br />
To: tusysweelszew@mail.ru<br />
Subject: Welcome to www.</em><em>XXX.TLD</em><em> Forums<br />
Reply-to: info@</em><em>XXX.TLD</em><br />
<em> From: info@</em><em>XXX.TLD</em><br />
<em> Return-Path: info@</em><em>XXX.TLD</em><br />
<em> Message-ID: &lt;aace212218a818186b114bcd1fe00573@www.</em><em>XXX.TLD</em><em>&gt;<br />
MIME-Version: 1.0<br />
Content-type: text/plain; charset=iso-8859-1<br />
Content-transfer-encoding: 8bit<br />
Date: Fri, 23 Nov 2007 16:35:37 +0100<br />
X-Priority: 3<br />
X-MSMail-Priority: Normal<br />
X-Mailer: PHP<br />
X-MimeOLE: Produced By phpBB2<br />
X-MsgID: ns3.eastitaly.it_20071123163537.4746f3495849d<br />
&#8212;&#8212;&#8212;-<br />
Body: 574 bytes</em></p>
<p>Da questo log oltre a tutti i dati tipici di un&#8217;email si può notare la riga</p>
<p><em> PWD: /var/www/vhost/XXX.TLD/home/html/phpBB2</em></p>
<p>che non è altro che il path dello script che ha inviato l&#8217;email, chiaramente sarebbe più efficiente se vi fosse la possibilità di identificare direttamente il nome dello script, ma diciamo che già così gran parte dei problemi si riescono a isolare e identificare in breve tempo.</p>
<p>Un altra eventuali miglioria che si può apportare è di gestire tutto questo anzichè come file separati come un unico file di log, ma lo faremo col tempo e con la voglia come sempre <img src='http://www.temporini.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Saluti</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/wrapper-sendmail/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurazione snmp</title>
		<link>http://www.temporini.net/configurazione-snmp</link>
		<comments>http://www.temporini.net/configurazione-snmp#comments</comments>
		<pubDate>Wed, 20 Jun 2007 09:21:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CPU]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Memoria]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[Snmp]]></category>
		<category><![CDATA[Swap]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[demoni]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[file system]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[monitor risorse]]></category>
		<category><![CDATA[mrtg]]></category>
		<category><![CDATA[ncftp]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>

		<guid isPermaLink="false">http://www.temporini.net/archives/27</guid>
		<description><![CDATA[<p>Questa breve guida spiega (o almeno ci prova) come configurare il servizio di snmp su un server linux, per il monitoraggio delle risorse. Provvede poi a integrare i dati raccolti tramite grafici generati con Mrtg.</p>
<p>Questa guida è stata sviluppata su sistemi Fedora Core 5, ma è facilmente adattabile (se non addirittura direttamente applicabile) anche ad altri [...]]]></description>
			<content:encoded><![CDATA[<p>Questa breve guida spiega (o almeno ci prova) come configurare il servizio di <strong>snmp</strong> su un server <strong>linux</strong>, per il <strong>monitoraggio delle risorse</strong>. Provvede poi a integrare i dati raccolti tramite grafici generati con <strong><a href="http://oss.oetiker.ch/mrtg/" title="MRTG - Tobi Oetiker's MRTG">Mrtg</a></strong>.</p>
<p>Questa guida è stata sviluppata su sistemi <strong>Fedora Core 5</strong>, ma è facilmente adattabile (se non addirittura direttamente applicabile) anche ad altri sistemi (<a href="http://www.debian.org" title="Debian -- il Sistema Operativo Universale"><strong>Debian</strong></a>, <strong><a href="http://www.slackware.org" title="The Slackware Linux Project">Slackware</a> </strong>con piccole modifiche inereti al sistema di pacchettizzazione).</p>
<p><em><strong>1. Installazione e configurazione Snmpd</strong></em></p>
<p>Per prima cosa provvediamo a installare il servizio <strong>snmpd </strong>tramite i pacchetti disponibili della nostra distribuzione:<br />
<em>[root@localhost ~] yum install net-snmp-utils net-snmp</em></p>
<p>per Debian i pacchetti si installano con il seguente comando</p>
<p><em>[root@localhost ~] apt-get install snmpd snmp</em></p>
<p>A questo punto controllate se il demone <strong>snmpd </strong>è stato lanciato<br />
<em>[root@localhost ~] ps -aux | grep snmpd</em></p>
<p>dovreste visualizzare qualcosa tipo</p>
<p><em>root   5512  0.0  2.3  5872 3012 pts/0    S    22:04   0:00 /usr/sbin/snmpd</em></p>
<p>Se il demone non è in esecuzione provare a lanciarlo a mano con il seguente comando</p>
<p><em>[root@localhost ~] /etc/init.d/snmpd restart</em></p>
<p>e ricontrollate il suo stato.</p>
<p>Per aggiungere lo script all&#8217;avvio della macchina basta eseguire<br />
<em>[root@localhost ~] chkconfig &#8211;level 345 snmpd on</em></p>
<p>Ora il demone snmpd è correttamente in esecuzione, proviamo a controllarne il corretto funzionamento tramite una semplice query sulle interfacce di rete:</p>
<p><em>[root@ns9 ~]# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndexIP-MIB::ipAdEntIfIndex.81.208.101.XXX = INTEGER: 2IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1<br />
IP-MIB::ipAdEntIfIndex.192.168.0.XXX = INTEGER: 3<br />
[root@ns9 ~]#</em></p>
<p>Se tutto funziona correttamente, allora il demone è correttamente configurato, se doveste avere qualche problema, è meglio controllare il file di configurazione /etc/snmp/snmpd.conf</p>
<p>All&#8217;interno di questo file modifichiamo questa linea<br />
<em> com2sec notConfigUser  default       public</em></p>
<p>e sostituiamola con quella di seguito adattando ovviamente le subnet come preferite.</p>
<p><em> com2sec local     localhost           public<br />
com2sec mynetwork 192.168.0.0/24      public</em></p>
<p>Scendendo ancora nel file cercate la stringa</p>
<p><em>group   notConfigGroup v1           notConfigUser<br />
group   notConfigGroup v2c           notConfigUser</em></p>
<p>e sostituitela con</p>
<p><em>group MyRWGroup v1         local<br />
group MyRWGroup v2c        local<br />
group MyRWGroup usm        local<br />
group MyROGroup v1         mynetwork<br />
group MyROGroup v2c        mynetwork<br />
group MyROGroup usm        mynetwork</em></p>
<p>Cerchiamo ora la stringa seguente</p>
<p><em>view    systemview     included      system</em></p>
<p>e sostituiamola con</p>
<p><em>view all    included  .1                               80</em></p>
<p>Abbiamo quasi finito&#8230; cercate la stringa</p>
<p><em>access  notConfigGroup &#8220;&#8221;      any       noauth    exact  systemview none none</em></p>
<p>e sostituitela con</p>
<p><em>access MyROGroup &#8220;&#8221;      any       noauth    exact  all    none   none<br />
access MyRWGroup &#8220;&#8221;      any       noauth    exact  all    all    none</em></p>
<p>Ed ora l&#8217;ultima stringa da modificare<br />
<em>syslocation Unknown (edit /etc/snmp/snmpd.conf)<br />
syscontact Root root@localhost (configure /etc/snmp/snmp.local.conf)</em></p>
<p>queste stringhe sono delle brevi stringhe descrittive per l&#8217;identificazione del vostro sistema, fondamentalmente potete scriverci cosa volete io ho messo questo</p>
<p><em>syslocation Linux (FEDORA_FC5), localhost<br />
syscontact matteo@temporini.net</em></p>
<p>Bene ora se tutto è andato per il verso giusto, riavviate il demone snmp (/etc/init.d/snmpd restart) e provate a fare nuovamente la query (snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex) che a questo punto non dovrebbe darvi problemi.</p>
<p><em><strong>2. Installazione e configurazione MRTG</strong></em></p>
<p>Installiamo <strong>mrtg </strong>con il comando</p>
<p><em>[root@localhost ~]# yum install mrtg</em></p>
<p>analogamente per <strong>debian </strong></p>
<p><em>[root@localhost ~]# apt-get install mrtg</em></p>
<p>A questo punto presuppongo che abbiate un <strong>webserver </strong>correttamente funzionante (io uso <a href="http://www.apache.org" title="The Apache Software Foundation">Apache</a> ma non vi sono problemi a utilizzarne altri come <strong>ISS </strong>o <strong>Lighthttpd</strong>).</p>
<p>Presupponiamo che la root di <strong>apache </strong>stia in /var/www/html/ andiamo a creare la cartella che conterrà i nostri dati</p>
<p><em>[root@localhost ~]# mkdir -p /var/www/html/mymrtg/</em></p>
<p>ora eseguiamo il seguente comando per generare automaticamente il file di configurazione di <strong>mrtg</strong></p>
<p><em>[root@localhost ~]# cfgmaker &#8211;global &#8216;WorkDir: /var/www/html/mymrtg&#8217; &#8211;output /etc/mrtg/mymrtg.cfg public@localhost</em></p>
<p>e creiamo l&#8217;index.html del nostro sistema di monitoraggio</p>
<p><em>[root@localhost ~]# indexmaker &#8211;output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg</em></p>
<p>(N.B.= &#8212; sono due trattini (-) vicini ma sembrano una linea unica se fate il cut &#038; paste fate attenzione)</p>
<p>Ora è tutto pronto non ci resta che eseguie <strong>mrtg </strong>indicandogli il file di configurazione da utilizzare</p>
<p><em>[root@localhost ~]# env LANG=C /usr/bin/mrtg /etc/mrtg/mymrtg.cfg &#8211;logging /var/log/mrtg.log</em></p>
<p>In ambiente <strong>fedora </strong>è necessaria la stringa env LANG=C, su altri sistemi probabilmente questa variabile di ambiente è già settata in questo modo per cui potrebbe bastare solamente</p>
<p><em>[root@localhost ~]# /usr/bin/mrtg /etc/mrtg/mymrtg.cfg &#8211;logging /var/log/mrtg.log</em></p>
<p>A questo punto non rimane che vedere il risultato di tutto il nostro lavoro andando al seguente indirizzo http://www.your.com/mymrtg/ o http://localhost/mymrtg/</p>
<p>L&#8217;ultimo step da seguire consiste nel mettere in <strong>crontab </strong>l&#8217;esecuzione dello script di aggiornamento di <strong>mrtg</strong>, il modo più semplice per farlo è con il comando</p>
<p><em>[root@localhost ~]# crontab -e</em></p>
<p>Vi si aprirà una finestra e qui inseriteci</p>
<p><em>*/5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg/mymrtg.cfg &#8211;logging /var/log/mrtg.log</em></p>
<p>lo script verrà lanciato ogni 5 minuti, in tal modo i campionamenti verranno aggiornati sui nostri grafici in ogni 5 minuti. Qualora voleste avere stime più precise potete diminuire il tempo di campionamento ad 1 minuto ad esempio ottenendo così risultati più accurati.</p>
<p><em><strong>3. Ulteriori risorse da monitorare</strong></em></p>
<p>Quanto sino ad ora visto, permette di creare un piccolo sistema di monitoraggio per la banda utilizzata dai vari dispositivi di rete, in un tempo realtivamente ristretto e con una buona accuratezza (questo dipende ovviamente dall&#8217;intervallo di campionamento che si sceglie).</p>
<p>La domanda a questo punto che uno potrebbe porsi è &#8220;ma posso monitorare solo la banda o anche altre risorse?&#8221;.</p>
<p>Ovviamente la risposta è si, è possibile monitorare altri risorse di sistema, cosa che si è resa molto utile per identificare anomalie nei sitemi e risolverle (es.: utilizzi intensivi della cpu da parte di particolari processi in determinate ore della giornata).</p>
<p>Riporterò ora delle piccole porzioni di codice da aggiungere al file /etc/mrtg/myrtgc.cfg per aggiungere queste funzionalità.</p>
<p>3.1 Monitoraggio dell&#8217;utilizzo di <strong>CPU</strong></p>
<p><em>#<br />
# CPU Monitoring<br />
# (Scaled so that the sum of all three values doesn&#8217;t exceed 100)<br />
#</em></p>
<p><em>Target[server.cpu]:ssCpuRawUser.0&amp;ssCpuRawUser.0:public@localhost + ssCpuRawSystem.0&amp;ssCpuRawSystem.0:public@localhost + ssCpuRawNice.0&amp;ssCpuRawNice.0:public@localhost<br />
Title[server.cpu]: Server CPU Load<br />
PageTop[server.cpu]: &lt;H1&gt;CPU Load &#8211; System, User and Nice Processes&lt;/H1&gt;<br />
MaxBytes[server.cpu]: 100<br />
ShortLegend[server.cpu]: %<br />
YLegend[server.cpu]: CPU Utilization<br />
Legend1[server.cpu]: Current CPU percentage load<br />
LegendI[server.cpu]: Used<br />
LegendO[server.cpu]:<br />
Options[server.cpu]: growright,nopercent<br />
Unscaled[server.cpu]: ymwd </em></p>
<p>3.2 Monitoraggio dell&#8217;utilizzo della <strong>memoria </strong>totale rispetto a quella disponibile</p>
<p><em>#<br />
# Memory Monitoring (Total Versus Available Memory)<br />
#</em></p>
<p><em>Target[server.memory]: memAvailReal.0&amp;memTotalReal.0:public@localhost<br />
Title[server.memory]: Free Memory<br />
PageTop[server.memory]: &lt;H1&gt;Free Memory&lt;/H1&gt;<br />
MaxBytes[server.memory]: 100000000000<br />
ShortLegend[server.memory]: B<br />
YLegend[server.memory]: Bytes<br />
LegendI[server.memory]: Free<br />
LegendO[server.memory]: Total<br />
Legend1[server.memory]: Free memory, not including swap, in bytes<br />
Legend2[server.memory]: Total memory<br />
Options[server.memory]: gauge,growright,nopercent<br />
kMG[server.memory]: k,M,G,T,P,X</em></p>
<p>3.3  Percentuale di utilizzo della <strong>Memoria</strong></p>
<p><em>#<br />
# Memory Monitoring (Percentage usage)<br />
#<br />
Title[server.mempercent]: Percentage Free Memory<br />
PageTop[server.mempercent]: &lt;H1&gt;Percentage Free Memory&lt;/H1&gt;<br />
Target[server.mempercent]: ( memAvailReal.0&amp;memAvailReal.0:public@localhost ) * 100 / ( memTotalReal.0&amp;memTotalReal.0:public@localhost )<br />
options[server.mempercent]: growright,gauge,transparent,nopercent<br />
Unscaled[server.mempercent]: ymwd<br />
MaxBytes[server.mempercent]: 100<br />
YLegend[server.mempercent]: Memory %<br />
ShortLegend[server.mempercent]: Percent<br />
LegendI[server.mempercent]: Free<br />
LegendO[server.mempercent]: Free<br />
Legend1[server.mempercent]: Percentage Free Memory<br />
Legend2[server.mempercent]: Percentage Free Memory</em></p>
<p>3.4. Nuove connessioni <strong>TCP</strong></p>
<p><em>#<br />
# New TCP Connection Monitoring (per minute)<br />
#</em></p>
<p><em>Target[server.newconns]: tcpPassiveOpens.0&amp;tcpActiveOpens.0:public@localhost<br />
Title[server.newconns]: Newly Created TCP Connections<br />
PageTop[server.newconns]: &lt;H1&gt;New TCP Connections&lt;/H1&gt;<br />
MaxBytes[server.newconns]: 10000000000<br />
ShortLegend[server.newconns]: c/s<br />
YLegend[server.newconns]: Conns / Min<br />
LegendI[server.newconns]: In<br />
LegendO[server.newconns]: Out<br />
Legend1[server.newconns]: New inbound connections<br />
Legend2[server.newconns]: New outbound connections<br />
Options[server.newconns]: growright,nopercent,perminute</em></p>
<p>3.5 Connessioni <strong>TCP </strong>stabilite</p>
<p><em>#<br />
# Established TCP Connections<br />
#</em></p>
<p><em>Target[server.estabcons]: tcpCurrEstab.0&amp;tcpCurrEstab.0:public@localhost<br />
Title[server.estabcons]: Currently Established TCP Connections<br />
PageTop[server.estabcons]: &lt;H1&gt;Established TCP Connections&lt;/H1&gt;<br />
MaxBytes[server.estabcons]: 10000000000<br />
ShortLegend[server.estabcons]:<br />
YLegend[server.estabcons]: Connections<br />
LegendI[server.estabcons]: In<br />
LegendO[server.estabcons]:<br />
Legend1[server.estabcons]: Established connections<br />
Legend2[server.estabcons]:<br />
Options[server.estabcons]: growright,nopercent,gauge</em></p>
<p>3.6 Utilizzo del <strong>disco</strong></p>
<p>L&#8217;utilizzo di questo parametro di monitoraggio richiede l&#8217;inserimento nel file /etc/snmp/snmpd.conf del seguente codice</p>
<p><em>disk /</em></p>
<p>con conseguente riavvio del demone snmpd<br />
<em>#<br />
# Disk Usage Monitoring<br />
#</em></p>
<p><em>Target[server.disk]: dskPercent.1&amp;dskPercent.1:public@localhost<br />
Title[server.disk]: Disk Partition Usage<br />
PageTop[server.disk]: &lt;H1&gt;Spazio su disco utilizzato&lt;/H1&gt;<br />
MaxBytes[server.disk]: 100<br />
ShortLegend[server.disk]: %<br />
YLegend[server.disk]: Utilization<br />
LegendI[server.disk]: Partizione /<br />
Options[server.disk]: gauge,growright,nopercent<br />
Unscaled[server.disk]: ymwd</em></p>
<p>3.7 Carichi della <strong>CPU</strong></p>
<p><em>#<br />
# Load Average<br />
#</em></p>
<p><em>Target[server.loadavg]: laLoadInt.2&amp;laLoadInt.3:public@localhost<br />
MaxBytes[server.loadavg]: 5000<br />
Title[server.loadavg]: Load Average * 100<br />
PageTop[server.loadavg]:&lt;h1&gt;Load Average * 100&lt;/h1&gt;<br />
YLegend[server.loadavg]: Load Average<br />
ShortLegend[server.loadavg]:<br />
Legend1[server.loadavg]: Load average 5 min<br />
Legend2[server.loadavg]: Load average 15 min<br />
LegendI[server.loadavg]:  5min load avg<br />
LegendO[server.loadavg]:  15min load avg<br />
Options[server.loadavg]: nopercent,growright,noinfo,gauge</em></p>
<p><strong>4. Monitoraggio del traffico email di Postfix </strong></p>
<p>Un discorso a parte va fatto per quanto riguarda il monitoraggio sull&#8217;invio e la ricezione di email tramite <strong>postfix</strong>.</p>
<p>Grazie alla documentazione trovata in rete mi è stato possibile implmentare un sistema che permette di contare il numero di email inviate e ricevute dal server di posa, nell&#8217;arco di tempo dell&#8217;intervallo di campionamento (i famosi 5 minuti). Questo viene  realizzato tramite il richiamo, da parte di <strong>mrtg</strong>, di alcuni script esterni che fanno quanto richiesto, una volta raccolti i dati vengono processati da mrtg per la generazione dei grafici.</p>
<p>Questi script che bisogna utilizzaresono scritti in perl per cui dovete installare alcuni moduli in perl tramite <strong>cpan</strong>, prima di fare questo installate <strong>ncftp </strong>che viene utilizzato da perl per scaricare i file, questo semplicemente usando il comando</p>
<p><em>[root@localhost ~]# yum install ncftp</em></p>
<p>analogamente per <strong>debian </strong></p>
<p><em>[root@localhost ~]# apt-get install ncftp</em></p>
<p>a questo punto lanciate il comando cpan e dopo aver risposto a un po&#8217; di domande, che vi chiederà lui per la corretta configurazione di della shell del <strong>perl </strong>(solitamente basta dare invio a tutte prendendo i parametri di default), eseguite il comando</p>
<p><em>[root@localhost ~]# cpan<br />
Terminal does not support AddHistory.</em></p>
<p><em>cpan shell &#8212; CPAN exploration and modules installation (v1.7602)<br />
ReadLine support available (try &#8216;install Bundle::CPAN&#8217;)</em></p>
<p><em>cpan&gt; install File::Tail</em></p>
<p>una volta finita l&#8217;installazione di questo moduletto possiamo caricare i file in <strong>perl</strong>, son tre semplici file che dovete mettere in /usr/local/bin con i permessi di esecuzione</p>
<p><a href="http://www.temporini.net/wp-content/uploads/mrtg-mailstats.pl" title="mrtg-mailstats.pl">mrtg-mailstats.pl</a><br />
<a href="http://www.temporini.net/wp-content/uploads/mailstats.pl" title="mailstats.pl">mailstats.pl</a><br />
<a href="http://www.temporini.net/wp-content/uploads/update-mailstats.pl" title="update-mailstats.pl">update-mailstats.pl</a></p>
<p>A questo punto non ci rimane che lanciare il processo  update-mailstats.pl (script che si occupa di tenere costantemente monitorato il traffico del <strong>mailserver</strong>) con il comando</p>
<p><em>[root@localhost ~]# /usr/local/bin/update-mailstats.pl &amp;</em></p>
<p>con il comando mailstats.pl è possibile vedere le statistiche in tempo reale sul numero totale di messaggi inviati e ricevuti come nel seguente esempio</p>
<p><em>[root@localhost ~]# mailstats.pl<br />
RECEIVED:smtp 98057<br />
SENT:local 235<br />
SENT:smtp 54423<br />
SENT:virtual 42947<br />
[root@localhost ~]#  </em></p>
<p>Aggiungiamo nel file /etc/mrtg/mymrtg.cfg il seguente codice</p>
<p><em>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;#<br />
# MRTG mail cfg:  Postfix mailstats plotting with MRTG          #<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;#<br />
Target[postfix]: `/usr/local/bin/mrtg-mailstats.pl`<br />
Options[postfix]: gauge, growright<br />
Title[postfix]: Postfix Statistics<br />
PageTop[postfix]: &lt;H1&gt;Postfix Statistics&lt;/H1&gt;<br />
MaxBytes[postfix]: 1000000<br />
WithPeak[postfix]: dwmy<br />
YLegend[postfix]: No. of messages<br />
ShortLegend[postfix]: messages<br />
LegendI[postfix]:  Incoming:<br />
LegendO[postfix]:  Outgoing:<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;#</em></p>
<p>rigeneriamo l&#8217;index di <strong>mrtg </strong>con il comando</p>
<p><em>[root@localhost ~]# indexmaker &#8211;output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg</em></p>
<p>e abbiamo finito <img src='http://www.temporini.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ora dovreste vedere, man mano che i valori vengono campionati, i grafici anche sulle mail in ingresso e in uscita di postfix. Una tecnica simile penso sia molto semplice da utilizzare anche per altri programmi e risorse.</p>
<p>Se avete suggerimenti, scritiche miglioramenti, script o teniche per il monitoraggio di altre risorse di sistema, contattatemi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/configurazione-snmp/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
