<?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>Je pensais qu&#039;il était avec vous... &#187; Surveillance</title>
	<atom:link href="http://www.patpro.net/blog/index.php/tag/surveillance/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.patpro.net/blog</link>
	<description>patpro.net</description>
	<lastBuildDate>Mon, 23 Jan 2012 23:09:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Utiliser auditd sur Mac OS X et FreeBSD &#8211; 3</title>
		<link>http://www.patpro.net/blog/index.php/2011/06/05/1895-utiliser-auditd-sur-mac-os-x-et-freebsd-3/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/06/05/1895-utiliser-auditd-sur-mac-os-x-et-freebsd-3/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 16:17:00 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1895</guid>
		<description><![CDATA[Cet article est la suite de Utiliser auditd sur Mac OS X et FreeBSD - 2 Exploiter les résultats de l'audit Dans le premier article j'ai mentionné très succinctement une commande qui permet de lire les logs d'audit en temps réel. Et finalement la consultation de ces logs est sans doute la chose la plus [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/06/05/1895-utiliser-auditd-sur-mac-os-x-et-freebsd-3/' addthis:title='Utiliser auditd sur Mac OS X et FreeBSD &#8211; 3 '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p>Cet article est la suite de <ins datetime="2011-06-01T13:53:14+00:00"><a href="/blog/index.php/2011/06/01/1840-utiliser-auditd-sur-mac-os-x-et-freebsd-2/">Utiliser auditd sur Mac OS X et FreeBSD - 2</a></ins></p>
<h4>Exploiter les résultats de l'audit</h4>
<p>Dans le premier article j'ai mentionné très succinctement une commande qui permet de lire les logs d'audit en temps réel. Et finalement la consultation de ces logs est sans doute la chose la plus intéressante. Personne n'a envie d'activer l'audit sur une machine pour le simple plaisir de remplir son disque dur. Tout ceci doit avoir une raison d'être&nbsp;: pouvoir ensuite (ou en temps réel) exploiter les logs d'<code>auditd</code>.<span id="more-1895"></span><br />
Comme précisé par défaut dans le fichier <code>audit_control</code>, la taille maximale d'un fichier de log d'audit est 2Mo, et les anciens fichiers sont supprimés pour que le volume total ne dépasse pas 10 Mo&nbsp;:</p>
<pre>filesz:2M
expire-after:10M</pre>
<p>Il existe plusieurs options intéressantes pour <code>expire-after</code> que je vous laisse découvrir dans le <a href="x-man-page://audit_control">man audit_control</a>. Sachez seulement qu'en fonction de ce que vous choisirez de surveiller, vous allez devoir modifier ces paramètres. Sur une machine assez sollicitée, 10 Mo de log peuvent représenter moins d'une heure d'audit. Si vous avez besoin d'enquêter sur un événement de la veille, il vous sera alors impossible d'en retrouver la trace.</p>
<p>Il y a deux moyens immédiats d'exploiter les logs d'audit. Vous pouvez soit les suivre en direct comme je l'ai montré dans le premier article via la commande <code>praudit /dev/auditpipe</code>, soit les étudier <em>a posteriori</em>. C'est sans doute cette option qui sera le plus souvent utilisée. Vous pouvez ainsi utiliser <code>praudit</code> pour lire les fichiers de logs enregistrés dans <code>/var/audit/</code>.<br />
Comme les logs d'audit peuvent grossir très vite, et qu'on cherche souvent l'aiguille dans la meule de foin, il est bon de pouvoir réduire les logs à ce que l'on cherche avant de les afficher. C'est le rôle de la commande <a href="x-man-page://auditreduce">auditreduce</a>. Cette commande permet de filtrer les logs selon une série de critères tels que la date, le ou les flags d'évènement (<code>fc</code>, <code>ex</code>, ...), l'UID, le ou les évènements précis (tels qu'ils sont répertoriés dans le fichier <code>audit_event</code>), et d'autres encore.<br />
auditreduce s'utilise sous la forme générale suivante&nbsp;:</p>
<pre>auditreduce paramètres fichiers_de_log | praudit</pre>
<p>Comme les logs sont binaires, il est impératif de les traduire via <code>praudit</code>.<br />
Sur Mac OS X, voici un exemple de ce que l'on peut obtenir avec la configuration par défaut d'<code>auditd</code>. Je cherche ici tous les événements pour l'UID réelle patpro ayant eu lieu après le 5 juin 2011 à 12h. Je fais cette recherche dans le fichier de log ouvert par <code>auditd</code>.</p>
<pre># auditreduce -a 2011060512 -r patpro /var/audit/current | praudit
header,68,11,logout - local,0,Sun Jun  5 15:47:35 2011, + 877 msec
subject,patpro,root,patpro,patpro,patpro,10485,10485,0,0.0.0.0
return,success,0
trailer,68
header,68,11,logout - local,0,Sun Jun  5 15:57:05 2011, + 718 msec
subject,patpro,root,patpro,patpro,patpro,10948,10948,0,0.0.0.0
return,success,0
trailer,68</pre>
<p>Ces deux évènements correspondent à la fermeture d'une fenêtre de terminal. On voit que chacun d'eux commence par "header" et termine par "trailer". Je ne vais pas couvrir l'intégralité des champs d'un enregistrement de log d'audit, il y a beaucoup trop de possibilités. Reportez-vous au <a href="x-man-page://audit.log">man audit.log</a> pour le détail. Ceux qui ont un intérêt sinon universel, au moins relativement général, sont <code>subject</code> qui décrit le sujet qui a généré les évènements, <code>path</code> qui décrit le chemin du fichier concerné, et <code>return</code> qui indique si l'opération a réussi ou non.<br />
Le champ <code>subject</code> contient les UID et GID (audit UID, effective UID et GID, real UID et GID), le PID, et le port et l'IP de la machine connectée.<br />
Le champ <code>path</code> donne par exemple le chemin d'un exécutable lancé, ou le chemin d'un fichier créé/modifié/détruit.<br />
Le champ <code>return</code> indique success ou failure.</p>
<p>Voici un second exemple, pour un serveur Apache sur Mac OS X, lancé via l'utilitaire <code>setaudit</code>&nbsp;:</p>
<pre>header,127,11,execve(2),0,Wed Jun  1 14:50:44 2011, + 667 msec
exec arg,ls
path,/bin/ls
path,/bin/ls
attribute,100555,root,wheel,234881026,24767,0
subject,_www,_www,_www,_www,_www,26696,100031,0,0.0.0.0
return,success,0
trailer,127
header,131,11,open(2) - write,creat,trunc,0,Wed Jun  1 14:50:44 2011, + 735 msec
argument,3,0x1a4,mode
argument,2,0x601,flags
path,/Users/patpro/Sites/testFile.txt
subject,_www,_www,_www,_www,_www,26694,100031,0,0.0.0.0
return,failure : Permission denied,4294967295
trailer,131</pre>
<p>La requête http s'est faite sur la machine locale (http://localhost/...) vers un fichier PHP dont le code exécute la commande <code>system("ls");</code>  puis tente d'écrire un fichier testFile.txt.<br />
Le premier évènement enregistré montre le lancement de la commande <code>ls</code>, avec succès. Le second évènement montre la tentative d'écriture du fichier testFile.txt qui échoue.<br />
Cet exemple montre donc clairement comment les logs d'audit peuvent permettre, par exemple, de remonter la trace d'une compromission d'un serveur web. Notez que si j'avais lancé le serveur web normalement, sans utiliser <code>setaudit</code>, la ligne <code>subject</code> aurait indiqué <code>subject,patpro,_www,_www,_www,_www...</code>, patpro étant l'UID suivi par auditd. Il aurait donc fallu que le fichier <code>audit_user</code> indique les flags <code>ex</code> et <code>fc</code> pour le login patpro, sans quoi les évènements pour le serveur web n'auraient pas été enregistrés.</p>
<p><code>auditreduce</code> permet de filtrer les évènements selon un critère beaucoup plus fin que le simple flag (<code>fc</code>, <code>fd</code>, <code>ex</code>, ...). Il vous autorise à différencier chaque évènement avec la granularité du fichier <code>audit_event</code>. Si vous avez eu la curiosité d'ouvrir ce fichier, vous savez qu'il contient plus de 600 lignes de ce genre&nbsp;:</p>
<pre>0:AUE_NULL:indir system call:no
1:AUE_EXIT:exit(2):pc
2:AUE_FORK:fork(2):pc
3:AUE_OPEN:open(2) - attr only:fa
4:AUE_CREAT:creat(2):fc
5:AUE_LINK:link(2):fc
6:AUE_UNLINK:unlink(2):fd
7:AUE_EXEC:exec(2):pc,ex
8:AUE_CHDIR:chdir(2):pc
9:AUE_MKNOD:mknod(2):fc</pre>
<p>La nomenclature est simple. Chaque colonne est séparée des autres par ":". La première donne le numéro de référence d'un événement, la seconde donne son nom, la troisième le nom de la fonction correspondante, avec éventuellement un complément d'information, et la dernière indique le ou les flags correspondants.<br />
Sur les 10 lignes citées au dessus, vous notez qu'il y a déjà 4 évènements correspondants au flag <code>pc</code>, et 3 au flag <code>fc</code>. Donc si on se contente de faire un filtrage sur <code>pc</code> ou <code>fc</code>, on peut remontrer beaucoup trop d'évènements par rapport à ce que l'on cherche vraiment. Par ailleurs, dans certains cas, un même évènement peut correspondre à plusieurs flags contradictoires. Par exemple&nbsp;:</p>
<pre>75:AUE_OPEN_RTC:open(2) - read,creat,trunc:fc,fd,fr,fa,fm</pre>
<p>Cet évènement peut être détecté si on souhaite suivre les flags fc, fd, fr, fa ou fm !<br />
C'est ici qu'intervient le contenu de la ligne header des logs d'audit. En effet, l'entête indique clairement l'évènement qui est capturé. Par exemple <code>open(2) - write,creat,trunc</code>. Il suffit alors de chercher son nom dans le fichier <code>audit_event</code> pour pouvoir s'en servir de clé de filtrage&nbsp;:</p>
<pre>grep 'open(2) - write,creat,trunc' /etc/security/audit_event
79:AUE_OPEN_WTC:open(2) - write,creat,trunc:fc,fd,fw,fa,fm</pre>
<p>Il est alors possible d'utiliser <code>AUE_OPEN_WTC</code> comme ceci pour obtenir en sortie une sélection parfaite des évènements qu'on recherche&nbsp;:</p>
<pre>auditreduce -m AUE_OPEN_WTC -r www -o file=".*/bd/.*" /var/audit/current | praudit</pre>
<p>Cette commande permet de trouver tous les évènements <code>AUE_OPEN_WTC</code> pour l'utilisateur www qui ont eu pour cible des fichiers dont le chemin contient la chaîne "/bd/" dans le fichier de log d'audit courant.<br />
Il ne vous reste plus qu'à essayer par vous même !</p>
<h4>Bibliographie sommaire</h4>
<p><a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/audit-config.html">http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/audit-config.html</a><br />
<a href="https://ssl.apple.com/support/security/commoncriteria/CommonCriteriaAdminGuide.pdf">https://ssl.apple.com/support/security/commoncriteria/CommonCriteriaAdminGuide.pdf</a><br />
<a href="x-man-page://auditreduce">man auditreduce</a><br />
<a href="x-man-page://auditd">man auditd</a><br />
<a href="x-man-page://audit_user">man audit_user</a><br />
<a href="x-man-page://audit_control">man audit_control</a><br />
<a href="x-man-page://audit_event">man audit_event</a><br />
<a href="x-man-page://audit.log">man audit.log</a><br />
<a href="http://forums.freebsd.org/showthread.php?t=23716">http://forums.freebsd.org/showthread.php?t=23716</a></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/06/05/1895-utiliser-auditd-sur-mac-os-x-et-freebsd-3/' addthis:title='Utiliser auditd sur Mac OS X et FreeBSD &#8211; 3 '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2011/06/05/1895-utiliser-auditd-sur-mac-os-x-et-freebsd-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser auditd sur Mac OS X et FreeBSD &#8211; 2</title>
		<link>http://www.patpro.net/blog/index.php/2011/06/01/1840-utiliser-auditd-sur-mac-os-x-et-freebsd-2/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/06/01/1840-utiliser-auditd-sur-mac-os-x-et-freebsd-2/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 13:45:02 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1840</guid>
		<description><![CDATA[Cet article est la suite de Utiliser auditd sur Mac OS X et FreeBSD - 1 Configuration : quid des utilisateurs comme www ? J'expliquais précédemment que le système d'audit ne peut suivre un utilisateur que si ce dernier se connecte à la machine (par ssh par exemple), et que quelques soient les ruses utilisées [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/06/01/1840-utiliser-auditd-sur-mac-os-x-et-freebsd-2/' addthis:title='Utiliser auditd sur Mac OS X et FreeBSD &#8211; 2 '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p>Cet article est la suite de <ins datetime="2011-06-01T13:55:03+00:00"><a href="/blog/index.php/2011/05/31/1822-utiliser-auditd-sur-mac-os-x-et-freebsd-1/">Utiliser auditd sur Mac OS X et FreeBSD - 1</a></ins> </p>
<h4>Configuration : quid des utilisateurs comme www ?</h4>
<p>J'expliquais précédemment que le système d'audit ne peut suivre un utilisateur que si ce dernier se connecte à la machine (par ssh par exemple), et que quelques soient les ruses utilisées (su, sudo...) c'est toujours l'UID réelle de l'utilisateur qui est suivie.</p>
<p>À cause de cela, il est totalement impossible de traquer des évènements appartenant à des utilisateurs qui ne peuvent pas se connecter au système. Ainsi, une ligne comme celle-ci dans <code>audit_user</code> ne permettra de traquer aucun évènement : </p>
<pre># pour freebsd remplacer _www par www
_www:fc,fd,ex:</pre>
<p>Il serait pourtant très intéressant de savoir ce que fait Apache dans votre dos, parfois sous la direction de méchants pirates.<br />
De nos jours, La plupart des serveurs utilisent des protocoles comme l'HTTP qui permettent aux utilisateurs d'accéder aux ressources sans être authentifiés au niveau du système. Les utilisateurs en question n'existent d'ailleurs pas au niveau du système. Néanmoins, les applications web permettent de faire énormément de choses via les langages comme le PHP, y compris d'interagir avec le système, en lançant des commandes, en créant des fichiers, etc.</p>
<p>Si on souhaite qu'auditd puisse contrôler les actions de www, il faut recourir à un artifice. Attention tout de même, ce qui suit est plus proche d'un hack que d'une méthode vraiment propre, et je ne peux pas garantir son fonctionnement correct dans un environnement de production.</p>
<p>En premier lieu il faut installer un programme spécifique, qui va permettre de forcer <code>auditd</code> à suivre les actions pour une UID donnée, sans que l'utilisateur correspondant ait besoin de se connecter à la machine.</p>
<pre>curl -LO http://www.freebsd.org/~csjp/setaudit.c
cc -o setaudit -lbsm setaudit.c </pre>
<p>Cela vous donne, si tout se passe bien, le binaire <code>setaudit</code>, que l'on va utiliser sous cette forme&nbsp;: </p>
<pre>setaudit -a UID_WWW -m FLAGS /programme/de/lancement/d/apache</pre>
<p>Pour suivre les évènements d'exécution de commande sous respectivement FreeBSD et Mac OS X, cela donnera :</p>
<pre>setaudit -a www -m ex /usr/local/etc/rc.d/apache22 restart
setaudit -a _www -m ex /usr/sbin/apachectl restart</pre>
<p>Ainsi, toutes les commandes lancées par Apache (donc sous l'UID www) sont enregistrées par <code>auditd</code>.<br />
Comme le masque des évènements (les flags de l'argument <code>-m</code>) décrit ce que l'on doit suivre, il est même inutile de renseigner le fichier <code>audit_user</code>.</p>
<p><strong>Pour résumer</strong> : </p>
<ul compact="" type="square">
<li>Si vous souhaitez que l'audit suive les utilisateurs qui se connectent à la machine, vous pouvez régler les classes d'évènements qui seront soumises à l'audit pour l'ensemble des utilisateurs dans le fichier <code>audit_control</code>, et gérer les cas particuliers dans <code>audit_user</code>.</li>
<li>Si vous souhaitez que l'audit suive des UID "interne", pour traquer tout signe de compromission sur un serveur web, un serveur de mail, etc. il faudra recourir à <code>setaudit</code> pour activer l'audit au moment du lancement du service correspondant.</li>
<li>Faites attention à la liste de flags que vous choisissez. Le volume des logs d'audit peut grossir très rapidement.</li>
</ul>
<p><a href="/blog/index.php/2011/06/05/1895-utiliser-auditd-sur-mac-os-x-et-freebsd-3/">Troisième partie de l'article -&gt;</a></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/06/01/1840-utiliser-auditd-sur-mac-os-x-et-freebsd-2/' addthis:title='Utiliser auditd sur Mac OS X et FreeBSD &#8211; 2 '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2011/06/01/1840-utiliser-auditd-sur-mac-os-x-et-freebsd-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser auditd sur Mac OS X et FreeBSD &#8211; 1</title>
		<link>http://www.patpro.net/blog/index.php/2011/05/31/1822-utiliser-auditd-sur-mac-os-x-et-freebsd-1/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/05/31/1822-utiliser-auditd-sur-mac-os-x-et-freebsd-1/#comments</comments>
		<pubDate>Tue, 31 May 2011 21:51:19 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1822</guid>
		<description><![CDATA[FreeBSD et les versions récentes de Mac OS X sont livrées avec un système d'audit intégré, dérivé du Basic Security Module de SUN, et disponible en logiciel libre sous le nom d'OpenBSM. Ce système d'audit se décompose en deux parties : un ensemble d'appels systèmes dédiés et de librairies d'un côté, et des logiciels "utilisateur" [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/05/31/1822-utiliser-auditd-sur-mac-os-x-et-freebsd-1/' addthis:title='Utiliser auditd sur Mac OS X et FreeBSD &#8211; 1 '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p><strong>FreeBSD</strong> et les versions récentes de <strong>Mac OS X</strong> sont livrées avec un système d'audit intégré, dérivé du Basic Security Module de SUN, et disponible en logiciel libre sous le nom d'<strong><a href="http://en.wikipedia.org/wiki/OpenBSM">OpenBSM</a></strong>. Ce système d'audit se décompose en deux parties : un ensemble d'appels systèmes dédiés et de librairies d'un côté, et des logiciels "utilisateur" de l'autre. Sauf précision contraire, les explications présentées ici sont valables à la fois pour FreeBSD 7 et 8, et Mac OS X 10.6. Dans cette série d'articles je ne vais aborder que l'aspect "utilisateur" du système d'audit : comment l'activer, comment le configurer, comment exploiter les résultats.<br />
Le système d'audit fourni par OpenBSM a pour but la surveillante des actions des utilisateurs. Un certain nombre d'évènements peuvent être mis sous surveillance, pour tout ou partie des utilisateurs. Quand le système d'exploitation détecte qu'un utilisateur sous surveillance génère un des évènements à surveiller, il averti le démon <code>auditd</code> qui se charge de reporter cet évènement dans un fichier de log.<span id="more-1822"></span><br />
On parle ici d'évènements de bas niveau, c'est à dire que le système d'audit ne peut pas dire que tel utilisateur à envoyé un email ou passé quinze minutes à coder en AppleScript. Par contre, il est capable de dire qu'un utilisateur à ouvert un fichier en écriture, ou juste en lecture, ou qu'il a exécuté un programme, etc.<br />
On parle donc d'un système d'audit de sécurité, totalement sans rapport avec des logiciels comme <a href="/blog/index.php/2008/10/19/541-slife-le-time-tracking-pour-tous/">SLife</a>. </p>
<p><a href="#activation">Activation du système d'audit</a><br />
<a href="#config">Configuration</a><br />
<a href="/blog/index.php/2011/06/01/1840-utiliser-auditd-sur-mac-os-x-et-freebsd-2/">Configuration : quid des utilisateurs comme www ?</a><br />
<a href="/blog/index.php/2011/06/05/1895-utiliser-auditd-sur-mac-os-x-et-freebsd-3/">Exploiter les résultats de l'audit</a></p>
<p><a id="activation"></a></p>
<h4>Activation du système d'audit</h4>
<p>Sous FreeBSD 7 et 8, le noyau est déjà compilé avec <code>options AUDIT</code>, il ne reste donc qu'à lancer le démon <code>auditd</code> en ajoutant la ligne suivante au fichier <code>/etc/rc.conf</code> :</p>
<pre>auditd_enable="YES"</pre>
<p>puis en lançant le démon à la main :</p>
<pre>sudo /etc/rc.d/auditd start</pre>
<p>Sous Mac OS X 10.6, <code>auditd</code> est lancé d'office par <code>launchd</code>, il n'y a rien à faire.<br />
<a id="config"></a></p>
<h4>Configuration</h4>
<p>Une fois lancé, le système d'audit va enregistrer très peu d'évènements par défaut. Il convient donc de faire quelques réglages en fonction de ce que l'on cherche à accomplir.<br />
Les fichiers de configuration d'<code>auditd</code> se trouvent dans le répertoire <code>/etc/security</code> où seul root peut écrire. </p>
<ul compact="" type="square">
<li><code>audit_class</code> : décrit les différentes classes d'évènements qu'il est possible de surveiller. Il est sage de ne pas éditer ce fichier.</li>
<li><code>audit_control</code> : lisible seulement par root, ce fichier défini la politique d'audit par défaut.</li>
<li><code>audit_event</code> : le grand frère de <code>audit_class</code>, on ne le modifie pas.</li>
<li><code>audit_user</code> : le fichier de réglages par utilisateur. Il complète <code>audit_control</code> et n'est lisible que par root.</li>
<li><code>audit_warn</code> : un fichier exécutable qui est lancé quand <code>auditd</code> manque de place sur le disque pour écrire les logs.</li>
</ul>
<p>Pour un usage courant, seuls les fichiers <a href="x-man-page://audit_control">audit_control</a> et <a href="x-man-page://audit_user">audit_user</a> sont intéressants. La première chose à faire est d'aller lire leur page man respective.</p>
<p>Par défaut, le contenu du fichier <code>audit_control</code> est le suivant : </p>
<pre>dir:/var/audit
flags:lo,aa
minfree:5
naflags:lo,aa
policy:cnt,argv
filesz:2M
expire-after:10M</pre>
<p>Avec ces valeurs, <code>auditd</code> ne va répertorier que les évènements des classes "<code>lo</code>" (login/logout) et "<code>aa</code>" (authentification/autorisation). Et il va le faire pour l'ensemble des utilisateurs.<br />
Attention : après avoir lu le <a href="x-man-page://audit_control">man audit_control</a>, vous serez peut être tenté d'ajouter le champs "host" pour compléter la configuration. N'en faites rien. Cela peut perturber les outils utilisateur et rendre l'exploitation des résultats hasardeuse, voire impossible.<br />
Le contenu de <code>audit_user</code> quant à lui nous permet de préciser des flags en se basant sur le login des utilisateurs. Par défaut, le fichier <code>audit_user</code> contient :</p>
<pre>root:lo:no
</pre>
<p>C'est à dire que, quelque soit la liste des flags <code>audit_control</code>, les évènements de la classe "<code>lo</code>" seront suivis pour l'utilisateur root, et les évènements de la classe "<code>no</code>" (invalides) ne seront jamais suivis.<br />
Vous pouvez immédiatement vérifier que votre système d'audit fonctionne en lisant en direct les évènements qu'il enregistre. Il suffit pour cela de taper la commande suivante en root (ou via <code>sudo</code>) :</p>
<pre># praudit /dev/auditpipe</pre>
<p>Utilisez alors une autre fenêtre de terminal pour gérer des traces. Sous Mac OS X vous pouvez faire un sudo, ou simplement fermer la fenêtre de terminal, par exemple. Vous pourrez alors lire des choses comme cela :</p>
<pre>header,104,11,user authentication,0,Wed Jun  1 14:53:39 2011, + 965 msec
subject,root,root,wheel,root,wheel,26712,0,0,0.0.0.0
text,Authentication for user &lt;patpro&gt;
return,success,0
trailer,104
header,68,11,logout - local,0,Wed Jun  1 15:36:12 2011, + 554 msec
subject,patpro,root,patpro,patpro,patpro,28079,28079,0,0.0.0.0
return,success,0
trailer,68</pre>
<p>Nous en reparlerons dans le dernier article de la série.</p>
<p>Faites bien attention aux flags que vous allez régler. Dans certains cas, le nombre d'évènements enregistrés par le système d'audit peut être extrêmement élevé. Par défaut peu de choses sont soumises à l'audit, si bien qu'en 18 mois sur une station de travail, le contenu de <code>/var/audit</code> représente moins de 10 Mo. A contrario, sur un serveur web assez actif, où les classes d'audit sont "<code>fd,^fc,ex:no,fc</code>", on dépasse les 43 Mo en a peine 4 heures d'audit. </p>
<p>Il faut bien comprendre que l'activation de l'audit pour un utilisateur ne se produit qu'au moment de la première connexion de l'utilisateur au système. Prenons un exemple. Le fichier <code>audit_user</code> contient :</p>
<pre>root:lo:no
patpro:fc,fd,ex:
</pre>
<p>Donc pour l'utilisateur patpro, les créations, ouvertures, suppression de fichier, ou exécutions de programmes doivent être suivis. Cet utilisateur a une crontab qui tourne toutes les nuits et télécharge un fichier. Pourtant, auditd ne capturera aucun de ces évènements tant que l'utilisateur patpro ne se sera pas connecté à la machine, alors même que de nombreux évènements correspondants aux critères de l'audit se produisent.<br />
Dès que l'utilisateur patpro se sera connecté à la machine, auditd se mettra à enregistrer toutes les actions correspondant aux classes <code>fc</code>, <code>fd</code> et <code>ex</code> exécutées sous l'UID patpro. Cet audit se poursuivra même après la déconnexion de l'utilisateur.<br />
Par ailleurs, l'UID qui est traquée par auditd n'est pas l'UID apparente, mais l'UID d'origine de l'utilisateur. Si je me connecte en tant que patpro, et que je fais un <code>su -</code> ou un <code>sudo -Es</code>, je deviens root dans le shell (UID apparente), mais je reste patpro aux yeux d'auditd.<br />
Nous verrons dans un second article pourquoi ces deux contraintes sont importantes. D'ici là, vous pouvez approfondir les aspects simples de la configuration en lisant ces différents documents : </p>
<p><a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/audit-config.html">http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/audit-config.html</a><br />
<a href="https://ssl.apple.com/support/security/commoncriteria/CommonCriteriaAdminGuide.pdf">https://ssl.apple.com/support/security/commoncriteria/CommonCriteriaAdminGuide.pdf</a></p>
<p><a href="/blog/index.php/2011/06/01/1840-utiliser-auditd-sur-mac-os-x-et-freebsd-2/">Deuxième partie -&gt;</a></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/05/31/1822-utiliser-auditd-sur-mac-os-x-et-freebsd-1/' addthis:title='Utiliser auditd sur Mac OS X et FreeBSD &#8211; 1 '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2011/05/31/1822-utiliser-auditd-sur-mac-os-x-et-freebsd-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rendre des logs anonymes</title>
		<link>http://www.patpro.net/blog/index.php/2011/05/26/1814-rendre-des-logs-anonymes/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/05/26/1814-rendre-des-logs-anonymes/#comments</comments>
		<pubDate>Thu, 26 May 2011 14:50:03 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1814</guid>
		<description><![CDATA[En tant qu'administrateur système, je gère un certains nombre de serveurs qui voient passer des données personnelles, soit en tant que simple intermédiaire (passerelle de messagerie) soit en tant que destination finale (connexion/authentification des utilisateurs). Ces serveurs stockent alors sous forme de fichier de log des quantités phénoménales de données nominatives comme des identifiants, des [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/05/26/1814-rendre-des-logs-anonymes/' addthis:title='Rendre des logs anonymes '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p>En tant qu'administrateur système, je gère un certains nombre de serveurs qui voient passer des données personnelles, soit en tant que simple intermédiaire (passerelle de messagerie) soit en tant que destination finale (connexion/authentification des utilisateurs). Ces serveurs stockent alors sous forme de fichier de log des quantités phénoménales de données nominatives comme des identifiants, des adresses email, des adresses IP. Ces données sont bien évidemment confidentielles, et seule une réquisition judiciaire peut m'autoriser à en divulguer tout ou partie. Je suis moi-même autorisé à les exploiter dans le cadre de mon travail, mais uniquement à des fins statistiques, ou pour vérifier le bon fonctionnement des systèmes.<br />
Il peut pourtant arriver qu'on soit tenté de fournir des extraits de log à certaines personnes. Un jour ce sera pour un prestataire ou un support technique, un autre jour ce sera pour alimenter des chercheurs universitaires qui ont besoin de données brutes. Il est alors impératif de faire disparaître toute trace de données personnelles et nominatives de ces fichiers, tout en s'assurant que le destinataire des fichiers sera en mesure de faire son travail.<br />
Les données doivent être anonymes, mais pour autant elles doivent rester intègres et cohérentes. Par exemple, il faut que l'on puisse suivre le trajet d'un message électronique entre le serveur d'entrée, l'antispam, la passerelle interne, et le serveur de stockage final, sans pour autant connaître ni l'adresse IP du serveur de provenance, ni les adresses email de l'expéditeur et des destinataires.<br />
Après quelques recherches infructueuses, j'ai décidé de créer moi-même le script dont j'ai besoin pour rendre des log de serveurs de mails anonymes.<br />
En Perl, le module <a href="http://search.cpan.org/dist/IP-Anonymous/">IP::Anonymous</a> fourni une méthode cryptographique puissante basée sur <a href="http://www.cc.gatech.edu/computing/Telecomm/projects/cryptopan/">Crypto-PAN</a>. Cette méthode permet de rendre les adresse IPv4 anonymes tout en préservant une très grande cohérence des données. Voyez cet exemple avec à gauche les IP réelles, et à droite les IP anonymes obtenues par chiffrement :</p>
<pre>192.168.0.15 -&gt; 54.42.0.48
192.168.0.20 -&gt; 54.42.0.43
192.168.1.15 -&gt; 54.42.1.56
192.168.1.20 -&gt; 54.42.1.43</pre>
<p>En me basant sur un exemple de script Perl utilisant <code>IP::Anonymous</code>, j'ai créé un script qui permet en plus de rendre anonyme les adresses email, les message-IDs, et les noms de machines. Ainsi, et à condition de rester en IPv4, le script final permet de rendre totalement anonyme des logs Postfix :</p>
<pre>   1: #!/usr/bin/perl -wT
   2:
   3: # script brodé à partir d'un exemple
   4: # trouvé en ligne sur le forum CPAN
   5: # http://cpanforum.com/posts/1304
   6:
   7: # à utiliser sous la forme :
   8: # logs_anonymes.pl fichier.log &gt; sortie_anonyme.log
   9:
  10: use strict;
  11: $|=1;
  12:
  13: use IP::Anonymous;
  14: use Digest::MD5;
  15:
  16: # 32 integers entre 0 et 255 (jot -r 32 0 255)
  17: my @key = (135,229,13,26,29,84,46,37,231,95,211,
  18:            196,243,11,87,5,23,217,173,214,66,241,
  19:            164,67,132,149,161,151,114,137,238,75);
  20:
  21: my $obj = new IP::Anonymous(@key);
  22: my $md5 = Digest::MD5-&gt;new;
  23:
  24: # seed pour le md5
  25: my $seed = '766326241f69b1244792587f556d02b8';
  26:
  27: while(defined(my $line=&lt;&gt;)) {
  28:     chomp $line;
  29:     # les IP
  30:     if($line =~ /\d{1,3}(?:\.\d{1,3}){3}/) {
  31:         $line =~
  32:             s/(\d{1,3}(?:\.\d{1,3}){3})/$obj-&gt;anonymize($1)/eg;
  33:     }
  34:     # les adresses email et messageID
  35:     if($line =~ /[=&lt; ][^@ ]*@/) {
  36:         $line =~
  37:             s/([=&lt; ])([^@=&lt; ]*@)/$1.$md5-&gt;add($seed)-&gt;add($2)-&gt;hexdigest."@"/eg;
  38:     }
  39:     # les hostnames
  40:     if($line =~ /([=&lt; @])(([a-zA-Z0-9]***TRONQUÉ***|ZW)/i ) {
  41:         $line =~
  42:             s/([=&lt; @])((?:(?:[a-zA-Z0-9]***TRONQUÉ***|ZW)/$1.$md5-&gt;add($seed)-&gt;add($2)-&gt;hexdigest.".".$3.".".$4/egi;
  43:     }
  44:     # suppression des HELO
  45:     if($line =~ /(helo=&lt;[^&gt;]*&gt;)/i ) {
  46:         $line =~
  47:             s/(helo=&lt;[^&gt;]*&gt;)//gi;
  48:     }
  49:
  50:     print $line."\n";
  51: }</pre>
<p>Attention : certaines lignes du script ci-dessus sont tronquées volontairement. Cliquez ici pour obtenir le code du script fonctionnel :<a href="http://www.patpro.net/images/logs_anonymes.pl"> logs_anonymes.pl</a>.</p>
<p>Pour utiliser ce script, il vous faudra installer <code>IP::Anonymous</code>, comme ceci par exemple :</p>
<pre>$ sudo cpan
cpan[1]&gt; install IP::Anonymous</pre>
<p>Il vous faudra aussi personnaliser le contenu de <code>@key</code> (lignes 17 à 19), en utilisant par exemple la commande jot pour générer une liste de 32 entiers aléatoires compris entre 0 et 255 :</p>
<pre>$ jot -r -s , 32 0 255</pre>
<p><code>@key</code> doit être gardée secrète, donc votre script devra être lisible seulement par vous.<br />
Pour finir il faudra personnaliser le contenu de <code>$seed</code> (ligne 25), en saisissant la chaîne de caractères qui vous plait.<br />
Aux lignes 40 et 42 figure une liste quasi complète des TLD, obtenue auprès de l'<a href="http://data.iana.org/TLD/tlds-alpha-by-domain.txt">IANA</a>.</p>
<p>Pour utiliser le script, que vous aurez rendu exécutable, il suffit de l'invoquer comme cela :</p>
<pre>$ /chemin/de/logs_anonymes.pl fichier.log &gt; sortie_anonyme.log</pre>
<p>Testé sous Mac OS X 10.6 et FreeBSD 8.</p>
<p>Enjoy.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/05/26/1814-rendre-des-logs-anonymes/' addthis:title='Rendre des logs anonymes '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2011/05/26/1814-rendre-des-logs-anonymes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Munin, carte RAID, et température des disques durs</title>
		<link>http://www.patpro.net/blog/index.php/2010/11/17/1702-munin-carte-raid-et-temperature-des-disques-durs/</link>
		<comments>http://www.patpro.net/blog/index.php/2010/11/17/1702-munin-carte-raid-et-temperature-des-disques-durs/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 23:23:13 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[matériel]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1702</guid>
		<description><![CDATA[Monitorer la température de ses disques durs n'est pas très compliqué. De base, Munin fait ça très bien avec un minimum de réglages. Il suffit d'installer smartmontools, Munin, et de régler ce dernier pour qu'il sache quels disques on veut surveiller. On obtient rapidement ce genre de graphique : Mais si les disques durs sont [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2010/11/17/1702-munin-carte-raid-et-temperature-des-disques-durs/' addthis:title='Munin, carte RAID, et température des disques durs '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p>Monitorer la température de ses disques durs n'est pas très compliqué. De base, Munin fait ça très bien avec un minimum de réglages. Il suffit d'installer smartmontools, Munin, et de régler ce dernier pour qu'il sache quels disques on veut surveiller.<br />
On obtient rapidement ce genre de graphique :</p>
<p><img src="/blog/wp-content/uploads/2010/11/hddtemp_smartctl-year.png" alt="" title="hddtemp_smartctl-year" width="497" height="292" class="aligncenter size-full wp-image-1703" /></p>
<p>Mais si les disques durs sont connectés non pas à la carte mère directement, mais à une carte RAID, la chose se complique. En effet, le système ne sait pas qui est <code>ad4</code> (ou <code>ad6</code>, ou toute autre appellation interne). Le système ne voit que la carte RAID.</p>
<p>Disons que nous sommes sur un bon système (FreeBSD), avec une bonne carte RAID (3Ware) utilisant le pilote <code>twa</code>. Cette carte sera donc vue du système sous le nom interne <code>/dev/twa0</code> (<code>0</code> car c'est la première carte de ce type dans la machine).<br />
L'outil <code>smartctl</code> permet d'accéder au S.M.A.R.T. des disques durs au travers de la carte RAID par des requêtes comme :</p>
<pre>smartctl -a /dev/twa0 -d 3ware,0  # 1er disque branché sur la carte
smartctl -a /dev/twa0 -d 3ware,1  # 2nd disque branché sur la carte
...</pre>
<p>Comme le plugin <code>hddtemp_smartctl</code> de Munin utilise <code>smartctl</code> aussi, il ne reste plus qu'à lui faire comprendre la syntaxe. On ne doit plus lire les données S.M.A.R.T. de <code>/dev/ad4</code>, <code>/dev/ad6</code>… mais celles de <code>/dev/twa0 -d 3ware,0</code>, <code>/dev/twa0 -d 3ware,1</code>…<br />
Il faut éditer le fichier <code>plugins.conf</code> de Munin, en créant une section <code>[hddtemp_smartctl]</code> dans la quelle :</p>
<ol type="1">
<li>on crée des disques durs "virtuels"</li>
<li>on rattache chacun de ces disques à notre carte <code>twa0</code></li>
<li>on précise le type de chaque disque dur (<code>3Ware,0</code>, <code>3Ware,1</code>…)</li>
</ol>
<p>Voici ce que cela donne pour une carte 3Ware <code>twa0</code>, à la quelle sont connectés quatre disques durs que l'on décide de nommer tout à fait arbitrairement <code>hd0</code> à <code>hd3</code> :</p>
<pre>[hddtemp_smartctl]
env.smartctl /usr/local/sbin/smartctl
env.drives hd0 hd1 hd2 hd3
env.dev_hd0 twa0
env.dev_hd1 twa0
env.dev_hd2 twa0
env.dev_hd3 twa0
env.type_hd0 3ware,0
env.type_hd1 3ware,1
env.type_hd2 3ware,2
env.type_hd3 3ware,3</pre>
<p>J'insiste bien sur le fait que les noms <code>hdx</code> sont des abstractions arbitraires, utilisées pour mettre en relation un "dev" et un "type". On pourrait mettre "toto", "titi"… cela marcherait de la même manière.<br />
Cela donne finalement quelque chose comme ça :<br />
<img src="/blog/wp-content/uploads/2010/11/hddtemp_smartctl-day.png" alt="" title="hddtemp_smartctl-day" width="497" height="316" class="aligncenter size-full wp-image-1707" /></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2010/11/17/1702-munin-carte-raid-et-temperature-des-disques-durs/' addthis:title='Munin, carte RAID, et température des disques durs '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2010/11/17/1702-munin-carte-raid-et-temperature-des-disques-durs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Juste des photographes…</title>
		<link>http://www.patpro.net/blog/index.php/2009/08/13/1017-juste-des-photographes%e2%80%a6/</link>
		<comments>http://www.patpro.net/blog/index.php/2009/08/13/1017-juste-des-photographes%e2%80%a6/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 12:18:36 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Photo]]></category>
		<category><![CDATA[Liberté]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1017</guid>
		<description><![CDATA[Il semble que les photographes d'outre-Manche en aient assez d'être traités comme des terroristes. Les campagnes d'incitation à la délation vigilance lancées par le gouvernement anglais ne font d'ailleurs pas dans la dentelle : toute personne qui prend des photographies est suspecte ! Les photographes Grand-Bretons viennent donc de monter une campagne pour manifester leur [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2009/08/13/1017-juste-des-photographes%e2%80%a6/' addthis:title='Juste des photographes… '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p><img src="/blog/wp-content/uploads/2009/08/phnat-logo-white-on-black-212x300.png" alt="I Am a Photographer Not a Terrorist" title="I Am a Photographer Not a Terrorist" width="212" height="300" class="alignleft size-full wp-image-1018" />Il semble que les photographes d'outre-Manche en aient assez d'être traités comme des terroristes. <a href="http://www.met.police.uk/campaigns/campaign_ct_2008.htm">Les campagnes d'incitation à la <del datetime="2009-08-13T11:41:03+00:00">délation</del> vigilance</a> lancées par le gouvernement anglais ne font d'ailleurs pas dans la dentelle : toute personne qui prend des photographies est suspecte !</p>
<p><img src="http://www.patpro.net/blog/wp-content/uploads/2009/08/photographe_suspect.jpg" alt="photographe_suspect" title="photographe_suspect" width="340" height="65" class="alignnone size-full wp-image-1023" /></p>
<p>Les photographes Grand-Bretons viennent donc de <a href="http://PhotographerNotaTerrorist.org">monter une campagne</a> pour manifester leur amour de la photographie, et leur volonté de ne pas se laisser faire par des comportements liberticides et souvent même illégaux de la police anglaise.</p>
<p>Pendant ce temps, les témoignages d'abus se multiplient :<br />
<a href="http://www.1854.eu/2008/12/heavyhanded_policing_against_p.html">Heavy-handed policing against photographers caught on video</a><br />
<a href="http://www.1854.eu/2008/12/another_press_photographer_sea.html">Another video journalist stopped at Greek protest</a><br />
<a href="http://nielsenhayden.com/makinglight/archives/010103.html">The photograph that terrorized London</a><br />
<a href="http://news.bbc.co.uk/2/hi/technology/7351252.stm">Innocent photographer or terrorist?</a><br />
<a href="http://current.com/items/88856223_you-cant-picture-this.htm">You Can't Picture This</a><br />
<a href="http://www.flickr.com/photos/happyaslarry/2420960125/">radio for back up</a><br />
<a href="http://curly15.wordpress.com/2008/03/24/sex-pictures-shock/">Sex pictures shock!</a></p>
<p>Et ça arrive en France :<br />
<a href="http://www.20minutes.fr/article/338980/France-Deux-photographes-et-une-quarantaine-de-clowns-au-poste-apres-le-defile-du-14-juillet.php">Deux photographes et une quarantaine de clowns au poste après le défilé du 14 juillet</a><br />
…</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2009/08/13/1017-juste-des-photographes%e2%80%a6/' addthis:title='Juste des photographes… '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2009/08/13/1017-juste-des-photographes%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Slife et la vie privée, un mois après</title>
		<link>http://www.patpro.net/blog/index.php/2008/11/20/621-slife-et-la-vie-privee-un-mois-apres/</link>
		<comments>http://www.patpro.net/blog/index.php/2008/11/20/621-slife-et-la-vie-privee-un-mois-apres/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 11:20:17 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=621</guid>
		<description><![CDATA[Il y a un mois, j'écrivais ici à propos de Slife, un outil de time tracking gratuit pour Mac OS X et Windows. Je m'en suis servi tout ce temps sur ma machine personnelle et sur ma machine professionnelle. Il est donc temps de revenir sur ce logiciel. À mon sens, le gros défaut de [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2008/11/20/621-slife-et-la-vie-privee-un-mois-apres/' addthis:title='Slife et la vie privée, un mois après '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.patpro.net/blog/wp-content/uploads/slife-icone.jpg" alt="icone Slife (c) SlifeLabs" title="icone Slife (c) SlifeLabs" class="alignright" />Il y a un mois, j'écrivais <a href="/blog/index.php/2008/10/19/541-slife-le-time-tracking-pour-tous/">ici</a> à propos de Slife, un outil de time tracking gratuit pour Mac OS X et Windows. Je m'en suis servi tout ce temps sur ma machine personnelle et sur ma machine professionnelle. Il est donc temps de revenir sur ce logiciel.<br />
À mon sens, le gros défaut de Slife (une fois qu'on a accepté ses limites fonctionnelles) c'est l'impossibilité d'accéder aux données enregistrées <em>a postériori</em>. Cela pose un vrai gros problème de respect de la vie privée. En effet, chaque document, chaque page web, chaque email ouvert va donner lieu à un enregistrement dans la base de données de Slife. Ce dernier pourra afficher sans état d'âme des événements comme ceux-ci dans votre tracking journalier et mensuel :</p>
<ul type="circle">
<li>aide mobilité site:SuperJob.fr - Google Search</li>
<li>Grosse Cochonne sans culotte - xXx</li>
</ul>
<p>Inutile de vous faire un dessin. Dans votre navigateur vous êtes libre à tout moment d'effacer votre historique. Dans Slife, vous ne pouvez pas le faire. Si vous avez oublié d'activer le mode "Privé" avant de chercher un nouveau job, ou d'aller mater quelques paires de fesses au nez et à la barbe de votre employeur, vous êtes cuits.<br />
Bien sûr, il y aura toujours un petit malin pour aller éditer la base de données de Slife à la main. Mais ce n'est pas le genre d'acrobatie à la portée du premier venu. Je vais néanmoins donner la marche à suivre. Notez bien : j'ai bien sûr testé cette manipulation, mais je ne peux pas garantir qu'elle est inoffensive sur le long terme. Il n'est pas complètement exclu que cela crée des problèmes de cohérence des données dans Slife.<br />
Comme on s'y serait attendu, Slife stocke ses données dans une base de données SQLite (en tout cas sous Mac OS X). SQLite est un moteur de bases de données SQL, léger et rapide. Contrairement à MySQL ou autre, vous n'avez pas besoin qu'un serveur tourne en permanence pour accéder aux données. C'est aussi ce moteur qui est utilisé par Spotlight.<br />
Il est possible de rentrer dans des bases de données SQLite directement avec les outils fournis dans Mac OS X. Il faut pour cela lancer l'application Terminal, et taper au prompt : </p>
<pre>sqlite3 "Library/Application Support/Slife/db20.slife"</pre>
<p>ce qui retourne :</p>
<pre>SQLite version 3.4.0
Enter ".help" for instructions
sqlite&gt;</pre>
<p>On peut ensuite taper :</p>
<pre>.databases</pre>
<p>ce qui doit donner quelque chose de ce genre, modulo votre nom d'utilisateur :</p>
<pre>seq  name             file
---  ---------------  ----------------------------------------------------------
0    main             /Users/patpro/Library/Application Support/Slife/db20.slife</pre>
<p>Posons maintenant que vous souhaitiez supprimer tous les événements enregistrés dont le titre contient SuperJob.fr, car vous ne voulez pas que votre patron soupçonne que vous préparez votre départ.<br />
La première étape pour ne pas faire de bêtise c'est de quitter Slife car être deux (Slife et vous) en train d'éditer la base de données au même instant pourrait être fâcheux. Après avoir quitté Slife, faites une copie de sauvegarde du fichier db20.slife.<br />
La seconde étape consiste à afficher sans les détruire les événements ciblés. On utilise pour cela l'instruction SQL <code>SELECT</code>. Au prompt <code>sqlite&gt;</code> tapez&nbsp;:</p>
<pre>SELECT * FROM ZITEMRECORDED WHERE ZNAME LIKE "%SuperJob.fr%";</pre>
<p>Après validation, vous allez obtenir un listing de tous les enregistrements qui contiennent "SuperJob.fr" dans le titre :</p>
<pre>10|2478|1|2008|7|10|30|34.0|Safari||aide mobilité site:SuperJob.fr - Google Search
10|2479|2|2008|7|10|30|8.0|Safari||SuperJob.fr, numéro 1 de l’emploi en ligne
10|2480|1|2008|7|10|30|9.0|Safari||Bulletin Officiel de SuperJob.fr n° 2002-2</pre>
<p>Lisez bien tous les titres pour vérifier que vous n'allez pas supprimer des événements qui ne devraient pas l'être.<br />
Si c'est bon, vous pouvez lancer le <code>DELETE</code> :</p>
<pre>DELETE FROM ZITEMRECORDED WHERE ZNAME LIKE "%SuperJob.fr%";</pre>
<p>Vous pouvez, à l'issue de ce <code>DELETE</code>, refaire le <code>SELECT</code> pour vérifier qu'il ne reste rien. Mais il n'y a aucune raison qu'un enregistrement ait échappé au <code>DELETE</code>.</p>
<p>Ensuite, vous quittez SQLite en tapant au prompt <code>.quit</code>, puis vous pouvez relancer Slife et vérifier que les enregistrements incriminants ont disparu.</p>
<p>Pour ceux qui sont désespérément allergiques au terminal, il existe une paire de clients graphiques pour accéder à des bases SQLite. J'ai testé rapidement <a href="http://sourceforge.net/project/showfiles.php?group_id=87946">SQLite Database Browser 1.3</a>, et <em>à première vue</em> il donne satisfaction. Néanmoins il est compilé pour PowerPC uniquement. Je ne saurai garantir son fonctionnement sur plateforme Intel.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2008/11/20/621-slife-et-la-vie-privee-un-mois-apres/' addthis:title='Slife et la vie privée, un mois après '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2008/11/20/621-slife-et-la-vie-privee-un-mois-apres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slife : le time tracking pour tous</title>
		<link>http://www.patpro.net/blog/index.php/2008/10/19/541-slife-le-time-tracking-pour-tous/</link>
		<comments>http://www.patpro.net/blog/index.php/2008/10/19/541-slife-le-time-tracking-pour-tous/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 19:55:08 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=541</guid>
		<description><![CDATA[Le "time tracking" informatique est une notion importante pour de nombreuses personnes. Que vous soyez graphiste en agence de com' ou que vous soyez développeur freelance, surveiller et comptabiliser la manière dont vous utilisez votre temps de travail est souvent la clé de voute de votre facturation ou de celle de votre employeur. Il n'est [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2008/10/19/541-slife-le-time-tracking-pour-tous/' addthis:title='Slife : le time tracking pour tous '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p><img src="/blog/wp-content/uploads/slife-icone.jpg" alt="slife-icone (c) slifelabs" title="slife-icone" width="128" height="128" class="alignleft" />Le "time tracking" informatique est une notion importante pour de nombreuses personnes. Que vous soyez graphiste en agence de com' ou que vous soyez développeur freelance, surveiller et comptabiliser la manière dont vous utilisez votre temps de travail est souvent la clé de voute de votre facturation ou de celle de votre employeur. Il n'est jamais aisé de savoir combien de temps on a passé réellement sur tel ou tel projet, dans telle ou telle application, ou quels documents nous ont demandés le plus long travail.<br />
Bien sûr, il existe des d'applications dédiées à ce genre de comptabilité. En voici une, gratuite et fonctionnant aussi bien sur Mac OS X que sur Windows : Slife 2.0.</p>
<p>Slife 2.0 est une application pleine de promesses, et d'une apparente simplicité. En réalité, elle est plus complexe à prendre en main que son interface pourrait le faire penser. Par ailleurs, il faut le souligner dès maintenant, il lui manque des fonctions importantes, voire essentielles, pour s'adapter à nos manières de travailler.</p>
<p><img src="/blog/wp-content/uploads/slife-application.jpg" alt="fenetre de slife : suivi des applications" title="slife-application" /></p>
<p>Slife vous permet de suivre l'utilisation de presque toutes vos applications, de vos documents, et votre utilisation d'internet. Par défaut, l'historique est conservé un an, et la mise à jour se fait toutes les cinq secondes. Slife permet en plus de suivre l'utilisation de votre machine sous la forme d'activités, définies par vous. Chaque activité que vous créez peut regrouper des applications, des documents, et des URL. Je peux, par exemple, définir une activité "Mail", pour la quelle je ne vais suivre que l'utilisation de l'application Mail. Je peux aussi créer une activité "Lecture des news", pour la quelle je vais suivre l'utilisation de mon agrégateur RSS, de mon lecteur de newsgroups, et de l'URL http://news.google.fr/.</p>
<p>C'est dès maintenant que les premières limitations de Slife se font sentir. Il est impossible de tracker l'utilisation d'une même application dans deux activités différentes. Par exemple, vous développez du code PHP dans BBEdit. Vous souhaitez savoir combien de temps au total vous passer à coder, et combien de temps en particulier vous passez sur un projet donné de développement. Il faudra malheureusement choisir l'un ou l'autre, car activer le suivi de BBEdit dans la seconde activité, le désactivera dans la première.</p>
<p>De même, il est possible de suivre votre temps de travail sur un document d'après son nom, mais pas d'après le nom du dossier parent. Donc malheureusement, si les documents de deux projets portent le même nom (flyer.psd, index.php, ...) il sera impossible de les distinguer. Il est par contre possible de suivre l'utilisation des documents en précisant seulement une partie du nom. Si vous avez l'habitude de nommer vos documents avec un identifiant de projet (flyer_8652.psd, template_8652.ai, bat_8652.pdf...), il est alors très simple de créer une activité qui va tracker votre travail sur ces documents. Il suffit de définir une activité pour ce projet numéro 8652, et d'y associer un document "8652". Slife va suivre tous les documents que vous éditez et dont le nom contient "8652", quelque soit l'application utilisée.<br />
<img src="/blog/wp-content/uploads/slife-activity-editor.jpg" alt="" title="slife-activity-editor" width="460" height="246" /></p>
<p>Le tracking des documents d'un même dossier dans le cadre d'une activité est une fonction à l'étude chez Slifelabs, car de nombreux utilisateurs la réclament. Néanmoins, aucune date de disponibilité n'est annoncée, et toutes les ressources de Slifelabs ont été dédiées au portage vers Windows de la version 2 du logiciel.</p>
<p>En terme d'ergonomie, Slife est capable du meilleur comme du pire, malheureusement. Le meilleur, c'est le menu qui permet à tout moment, et dans toutes les applications d'ajouter le document ou l'application de premier plan à une des activités existantes. Il est possible aussi d'entrer dans un mode "privé", qui interrompt le tracking. Le pire, ce sont les différentes fenêtres de l'application, qui ne supportent pas le glisser-déposer, qui manquent de menus contextuels, voire même de cohérence.<br />
<ins datetime="2008-10-20T07:34:55+00:00">Par ailleurs</ins>, notez bien que la fenêtre d'édition des activités est une fenêtre trompeuse. La liste des documents et URL est une liste globale. Si vous supprimez ou modifiez un document de cette liste, il sera supprimé ou modifié dans toutes les activités.</p>
<p>Slife propose en plus un mode connecté, Slife Teams, pour suivre le travail de plusieurs collaborateurs via une interface web. Cette option n'est actuellement accessible qu'après inscription auprès de <a href="http://www.slifeteams.com/">Slifelabs</a>. Si je suis retenu pour tester Slife Team, je ferais un second article.</p>
<p><strong>Pour conclure</strong>, Slife est une application pleine de potentiel, mais encore très immature. Elle mérite qu'on lui porte de l'intérêt et qu'on fasse des retours enthousiastes à ses développeurs, mais son déploiement dans un contexte où les workflows sont bien rodés ne sera pas toujours possible. J'espère que les principales limitations seront abolies par les versions suivantes. Néanmoins, si vous n'êtes pas intéressés par le tracking d'activités complexes, Slife vous suffira largement.</p>
<p><strong>Pour</strong> : </p>
<ul type="circle">
<li>gratuite</li>
<li>(très) faible consommation de resources</li>
<li>prise en main rapide</li>
<li>développeurs à l'écoute, via <a href="http://getsatisfaction.com/slifelabs">les forum de slifelabs</a></li>
</ul>
<p><strong>Contre</strong> : </p>
<ul type="circle">
<li>pas de tracking pour les dossiers</li>
<li>pas de tracking pour certaines applications (UT2004 par exemple)</li>
<li>interface vraiment perfectible</li>
</ul>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2008/10/19/541-slife-le-time-tracking-pour-tous/' addthis:title='Slife : le time tracking pour tous '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2008/10/19/541-slife-le-time-tracking-pour-tous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Piqûre de rappel</title>
		<link>http://www.patpro.net/blog/index.php/2008/10/10/526-piqure-de-rappel/</link>
		<comments>http://www.patpro.net/blog/index.php/2008/10/10/526-piqure-de-rappel/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 14:48:00 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Liberté]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=526</guid>
		<description><![CDATA[Tout le programme de la "Freedom not Fear Edition France" est sur le site de l'association humanrights21.org.<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2008/10/10/526-piqure-de-rappel/' addthis:title='Piqûre de rappel '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.humanrights21.org/?page_id=57"><img src="/blog/wp-content/uploads/fnfinternational468x60px.gif" alt="Freedom Not Fear" title="Freedom Not Fear" /></a></p>
<p>Tout le programme de la "<strong>Freedom not Fear Edition France</strong>" est sur le site de l'association <a href="http://www.humanrights21.org/?page_id=57">humanrights21.org</a>.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2008/10/10/526-piqure-de-rappel/' addthis:title='Piqûre de rappel '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2008/10/10/526-piqure-de-rappel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Une photo dans une meule de foin</title>
		<link>http://www.patpro.net/blog/index.php/2008/10/06/521-une-photo-dans-une-meule-de-foin/</link>
		<comments>http://www.patpro.net/blog/index.php/2008/10/06/521-une-photo-dans-une-meule-de-foin/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 16:20:48 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Photo]]></category>
		<category><![CDATA[Surveillance]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=521</guid>
		<description><![CDATA[Il y a une chose pour la quelle l'informatique est douée, c'est comparer des textes, des chaînes de caractères. Rien de plus facile, en théorie, que de trouver une aiguille dans une meule de foin. Pour peu que la meule soit correctement indexée, et que l'on connaisse l'orthographe même approximative de l'aiguille. Pour les images, [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2008/10/06/521-une-photo-dans-une-meule-de-foin/' addthis:title='Une photo dans une meule de foin '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p><img src="/blog/wp-content/uploads/idee_tineye_logo.jpg" alt="Logo de Tineye.com" title="idee_tineye_logo" width="47" height="244" class="alignleft" /> Il y a une chose pour la quelle l'informatique est douée, c'est comparer des textes, des chaînes de caractères. Rien de plus facile, en théorie, que de trouver une aiguille dans une meule de foin. Pour peu que la meule soit correctement indexée, et que l'on connaisse l'orthographe même approximative de l'aiguille.<br />
Pour les images, c'est une autre paire de manche. Imaginez-vous, devant un moteur de recherche classique, une photo à la main, essayant de trouver sur Internet des photos identiques ou similaires. Quiconque a déjà essayé, ou même s'est simplement posé la question, sait combien la tâche est impossible.<br />
Rassurons-nous (?), la motivation de l'argent est très forte en matière de propriété intellectuelle, et  permet en général de dépasser les obstacles bassement technologiques.<br />
Ainsi, l'entreprise Idée a mis au point un ensemble de technologies qui lui permettent de comparer très efficacement des images. Si efficacement qu'elle propose ses services à <a href="http://ideeinc.com/clients/">un paquet de gens</a> dans le milieu de la presse et de la photographie.<br />
La partie intéressante pour le vulgus, c'est le moteur de recherche qui pointe son nez. Imaginez un moteur de recherche dans le quel vous n'envoyez plus des mots clés, mais des images. Ce moteur cherche alors dans son index et vous retourne toutes les occurrences de ces images, ainsi que leurs déclinaisons, qu'il a pu rencontrer pendant son parcours sur Internet.<br />
C'est le défi que vient de relever Idée, avec son moteur de recherche <a href="http://www.tineye.com/">TinEye</a>. Encore en béta, le moteur n'a indéxé qu'un peu plus d'un milliard d'images pour le moment. C'est très peu en comparaison de ce qui est disponible sur Internet, néanmoins, c'est suffisant pour faire quelques tests prometteurs.</p>
<p>Les dérives commerciales sont bien sûres évidentes, la déclinaison du moteur sous la forme <a href="http://ideeinc.com/products/tineyemobile/">TinEye Music</a> en est un parfait exemple, mais ne boudons pas notre plaisir. Il n'y a pas de mauvaises technologies, il n'y a que de mauvais usages.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2008/10/06/521-une-photo-dans-une-meule-de-foin/' addthis:title='Une photo dans une meule de foin '><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></content:encoded>
			<wfw:commentRss>http://www.patpro.net/blog/index.php/2008/10/06/521-une-photo-dans-une-meule-de-foin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

