<?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; MacOSX</title>
	<atom:link href="http://www.patpro.net/blog/index.php/tag/macosx/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>Welcome to our Z410 Storage Beta program</title>
		<link>http://www.patpro.net/blog/index.php/2012/01/04/2015-welcome-to-our-z410-storage-beta-program/</link>
		<comments>http://www.patpro.net/blog/index.php/2012/01/04/2015-welcome-to-our-z410-storage-beta-program/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 11:00:23 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[ZFS]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=2015</guid>
		<description><![CDATA[C'est Noël ! Dommage que mes congés soient terminés...<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2012/01/04/2015-welcome-to-our-z410-storage-beta-program/' addthis:title='Welcome to our Z410 Storage Beta program '><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://tenscomplement.com/"><img src="/blog/wp-content/uploads/2012/01/zfs-sur-mac.jpg" alt="rahhh lovely" title="zfs-sur-mac" width="580" height="482" class="aligncenter size-full wp-image-2016" /></a></p>
<p>C'est Noël ! Dommage que mes congés soient terminés...</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2012/01/04/2015-welcome-to-our-z410-storage-beta-program/' addthis:title='Welcome to our Z410 Storage Beta program '><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/2012/01/04/2015-welcome-to-our-z410-storage-beta-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>Mon ami grep</title>
		<link>http://www.patpro.net/blog/index.php/2011/05/13/1801-mon-ami-grep/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/05/13/1801-mon-ami-grep/#comments</comments>
		<pubDate>Fri, 13 May 2011 06:04:28 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[MacOSX]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1801</guid>
		<description><![CDATA[grep, c'est mon ami. C'est d'ailleurs probablement l'ami de pas mal d'administrateurs système (enfin, les vrais quoi*). De temps en temps, il faut quand même bien vérifier que son ami est au mieux de sa forme, s'enquérir de ses performances, évaluer d'un œil critique si son environnement lui convient bien. Quand vous avez un millier [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/05/13/1801-mon-ami-grep/' addthis:title='Mon ami grep '><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="x-man-page://grep">grep</a>, c'est mon ami. C'est d'ailleurs probablement l'ami de pas mal d'<a href="http://www.patpro.net/cv">administrateurs système</a> (enfin, les vrais quoi*). De temps en temps, il faut quand même bien vérifier que son ami est au mieux de sa forme, s'enquérir de ses performances, évaluer d'un œil critique si son environnement lui convient bien.</p>
<p>Quand vous avez un millier de chaînes de caractères, dont vous souhaitez retrouver toutes les occurrences dans un gros fichier de 685000 lignes, vous pouvez utiliser <code>grep</code> de deux manières :</p>
<ol type="1">
<li>vous dites à votre ami <code>grep</code> de chercher toutes les chaînes en même temps dans le gros fichier,</li>
<li>vous utilisez une boucle pour dire à <code>grep</code> de chercher une chaîne dans le fichier, puis de passer à la chaîne suivante, …</li>
</ol>
<p>La solution 1 semble la plus intéressante. Une seule commande, pas de boucle, on se dit naturellement que c'est plus économique, et donc plus rapide. La solution 2, on se dit qu'elle est moche, complexe, et que les performances vont être mauvaises.</p>
<p>Petit test grandeur nature sur un serveur FreeBSD 7.x virtualisé, 2 CPU, 2Go de RAM :</p>
<p>Méthode 1 :<br />
<code>grep -i -f liste_emails maillog</code><br />
opération terminée en 370 min environ.<br />
Méthode 2 :<br />
<code>while read email; do grep -i $email maillog ; done&lt;liste_emails</code><br />
opération terminée en 1 min 32 s.</p>
<p>Bien sûr, le résultat est le même en terme de contenu, la seule différence est l'ordre des lignes. La méthode moche et supposée lente est juste 240 fois plus rapide que la méthode académique. Shame on you <code>grep</code>. Shame on you.</p>
<p>L'environnement est aussi important. On pourrait se dire qu'avec plus de CPU (en puissance, pas en nombre), plus de RAM, tout irait tellement plus vite. Essayons la même chose sur un Mac Pro Xeon quad-core, avec 12 Go de RAM, sous Mac OS X 10.6.</p>
<p>Méthode 1 : 223 min.<br />
Méthode 2 : 35 min 45 s.</p>
<p>Ce qui prouve une fois de plus que Mac OS X est un gros tromblon quand il s'agit de fork. Comprendre que le coût du lancement d'un programme, en terme de ressources système, est beaucoup plus fort que sur d'autres OS, comme FreeBSD par exemple. Ce qui fait de Mac OS X un très mauvais candidat pour les scripts shell utilisant des boucles de manière très intensive.<br />
On voit aussi que la vitesse d'exécution de la méthode 1 est essentiellement liée à la puissance de calcul du CPU, alors que la vitesse de la méthode 2 est essentiellement liée à la capacité du système d'exploitation de créer des process rapidement.</p>
<p>Pour conclure, j'ai fait un petit test avec <a href="x-man-page://awk">awk</a>, sur les mêmes fichiers. Moyennant quelques aménagements triviaux pour transformer le fichier liste_emails en programme <code>awk</code>, j'ai pu lancer la commande <code>awk -f liste_emails maillog</code> qui est l'équivalent de la méthode 1 pour <code>grep</code>. Le temps d'exécution est tombé à moins de 15 minutes sur Mac OS X, et moins de 30 minutes sur le FreeBSD.</p>
<p>* ceux qui ont fait 5 ans d'études dans une autre branche, avant de passer à l'informatique, par exemple.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/05/13/1801-mon-ami-grep/' addthis:title='Mon ami grep '><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/13/1801-mon-ami-grep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Noter ses photos, de Bridge à Spotlight</title>
		<link>http://www.patpro.net/blog/index.php/2011/03/16/1773-notation-des-photos-de-bridge-a-spotlight/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/03/16/1773-notation-des-photos-de-bridge-a-spotlight/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 14:42:48 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Photo]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1773</guid>
		<description><![CDATA[De nombreux photographes utilisent à un moment donné de leur flux de traitement un outil de notation pour trier leurs photos. En général, c'est au moment de l'editing que l'on donne une note à ses dernières photos : on rejette les ratées, on note de 0 à 5 les autres pour ne garder que les [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/03/16/1773-notation-des-photos-de-bridge-a-spotlight/' addthis:title='Noter ses photos, de Bridge à Spotlight '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p>De nombreux photographes utilisent à un moment donné de leur flux de traitement un outil de notation pour trier leurs photos. En général, c'est au moment de l'editing que l'on donne une note à ses dernières photos : on rejette les ratées, on note de 0 à 5 les autres pour ne garder que les meilleurs clichés. Avec un logiciel comme Bridge (ou Photoshop LightRoom), c'est très facile. Néanmoins, la note ainsi attribuée ne remonte pas dans les métadonnées Spotlight (Mac OS X). Il est par exemple impossible dans le Finder de créer un dossier intelligent qui regrouperait toutes les photos notées avec 4 ou 5 étoiles.<br />
Pour remédier à cela on peut utiliser un script shell qui recopie la note assignée par Bridge dans les métadonnées du fichier photographique. En partant du principe que Bridge stocke ses propres métadonnées dans un fichier XMP à côté du fichier RAW, voici un exemple de script qui fait ce travail pour vous&nbsp;:</p>
<pre> 1: #!/bin/bash
 2: case $1 in
 3: 	[1-9])
 4: 		find_args="-mtime -$1"
 5: 		;;
 6: 	*)
 7: 		find_args=""
 8: 		;;
 9: esac
10:
11: for XML in $(find . $find_args -name "IMG_*xmp"); do
12: 	rating=$(awk '/xap:Rating/ {gsub(/ *&lt;[^&gt;]*&gt;/,"",$0); print $0}' "$XML")
13: 	[ -f "${XML/xmp/CR2}" ] &#038;& \
14: 	xattr -w "com.apple.metadata:kMDItemStarRating" $rating "${XML/xmp/CR2}"
15: done</pre>
<p><a href="http://www.patpro.net/images/push_img_ratings.sh.zip">Téléchargez le script push_img_ratings.sh</a> (Mac OS X uniquement).</p>
<p><strong>Lignes 2 à 9</strong>, on teste le premier argument du script, si c'est un chiffre entre 1 et 9 il sera utilisé pour limiter la plage de recherche. Le seul but de cette première partie, est de pouvoir limiter l'impact du script aux photos récemment notées. Cela permet de ne pas re-noter l'intégralité de sa collection de photos, ce qui peut être assez long si vous avez des disques durs lents et de très nombreux fichiers.<br />
À la <strong>ligne 11</strong>, on crée une boucle qui utilisera comme argument la liste des fichiers retournée par la commande find. Il s'agit ici de trouver tous les fichiers du répertoire courant et des répertoires inclus, dont le nom commence par "IMG_" et termine par "xmp", et dont la date de modification est dans les $1 dernières 24 heures si $1 est entre 1 et 9.<br />
Pour chaque fichier trouvé, on extrait la note de la photo (<strong>ligne 12</strong>), et si le fichier RAW correspondant au fichier XMP existe, alors on écrit dans ses métadonnées la note extraite (<strong>lignes 13 et 14</strong>).<br />
Ce script est aisément modifiable pour fonctionner avec des fichiers RAW d'autres appareils (NEF pour Nikon par exemple). Il nécessite par contre que Bridge soit configuré pour stocker les métadonnées dans un fichier indépendant, et non dans le fichier RAW lui-même.</p>
<p>Il vous suffit ensuite de lancer ce script sur l'ensemble de votre photothèque pour propager votre notation "Bridge" dans les métadonnées Spotlight. Si vous souhaitez recopier les notes attribuées dans les dernières 24h uniquement, lancez le script avec comme seul argument le chiffre 1&nbsp;:</p>
<pre>$ cd Pictures/2011_03_16
$ push_img_rating.sh 1</pre>
<p>Vous pouvez aussi bien lancer <code>push_img_rating.sh 1</code> tous les jours automatiquement grâce à <a href="/blog/index.php/2008/01/03/131-passer-de-cron-a-launchd/">launchd</a>, sous réserve de préciser le chemin de recherche pour la commande find (ligne 11).</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/03/16/1773-notation-des-photos-de-bridge-a-spotlight/' addthis:title='Noter ses photos, de Bridge à Spotlight '><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/03/16/1773-notation-des-photos-de-bridge-a-spotlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Activer le partage d&#8217;écran sur un Mac, à distance</title>
		<link>http://www.patpro.net/blog/index.php/2011/01/31/1756-activer-le-partage-decran-sur-un-mac-a-distance/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/01/31/1756-activer-le-partage-decran-sur-un-mac-a-distance/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 11:00:39 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[MacOSX]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1756</guid>
		<description><![CDATA[Parfois, on est bêtement coincé par un tout petit problème. Mon dernier problème en date était de pouvoir interagir avec une application graphique, sur un Mac à plusieurs kilomètres de distance. Et bien sûr, je n'avais pas activé au préalable le partage d'écran sur cette machine. Rassurez-vous, ça se fini bien, et ça se règle [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/01/31/1756-activer-le-partage-decran-sur-un-mac-a-distance/' addthis:title='Activer le partage d&#8217;écran sur un Mac, à distance '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p>Parfois, on est bêtement coincé par un tout petit problème. Mon dernier problème en date était de pouvoir interagir avec une application graphique, sur un Mac à plusieurs kilomètres de distance. Et bien sûr, je n'avais pas activé au préalable le partage d'écran sur cette machine. Rassurez-vous, ça se fini bien, et ça se règle en quelques secondes. Voici comment faire pour un Mac en 10.5 ou 10.6 : </p>
<ol type="1">
<li>Connectez-vous à la machine en SSH, via un compte admin (ben oui, il y a quand même quelques pré-requis)</li>
<li>Tapez les commandes suivantes : <code>sudo -s</code> puis <code>echo "enabled"&gt;/etc/ScreenSharing.launchd</code></li>
</ol>
<p>C'est fini. Le partage d'écran est activé sur ce Mac.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/01/31/1756-activer-le-partage-decran-sur-un-mac-a-distance/' addthis:title='Activer le partage d&#8217;écran sur un Mac, à distance '><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/01/31/1756-activer-le-partage-decran-sur-un-mac-a-distance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benchmark Left 4 Dead 2, sur Mac Pro</title>
		<link>http://www.patpro.net/blog/index.php/2011/01/30/1749-benchmark-left-4-dead-2-sur-mac-pro/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/01/30/1749-benchmark-left-4-dead-2-sur-mac-pro/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 12:54:33 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[MacOSX]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1749</guid>
		<description><![CDATA[La plupart des "gamers" vous le diront, la bonne machine pour les jeux, c'est celle qui fait tourner Windows. Si on met de coté les consoles de jeux dédiées, ils n'ont pas tort. Comparés à ceux de Mac OS X, les pilotes vidéo Windows sont plus performants, voire dans certains cas vraiment beaucoup plus performants. [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/01/30/1749-benchmark-left-4-dead-2-sur-mac-pro/' addthis:title='Benchmark Left 4 Dead 2, sur Mac Pro '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p>La plupart des "gamers" vous le diront, la bonne machine pour les jeux, c'est celle qui fait tourner Windows. Si on met de coté les consoles de jeux dédiées, ils n'ont pas tort. Comparés à ceux de Mac OS X, les pilotes vidéo Windows sont plus performants, voire dans certains cas vraiment beaucoup plus performants. Les cartes vidéo disponibles sont aussi plus récentes, et les jeux programmés en DirectX sont bien sûr nativement privilégiés, puisque DirectX n'est pas disponible sur Mac OS X.<br />
Ceci posé, j'ai décidé de faire des tests pour déterminer quels réglages vidéo sont les meilleurs pour jouer confortablement à Left 4 Dead 2 sur (mon) Mac. À titre indicatif, il s'agit d'un Mac Pro mono Xeon quad-core 2,8GHz, 3Go de RAM (DDR3), ATI Radeon HD 5770, sous Mac OS X 10.6.6.</p>
<p>Pour faire un benchmark L4D2 sur PC ou Mac, il faut procéder à plusieurs manipulations que je ne vais pas détailler. Sachez juste qu'il faut activer la console développeur dans les préférences du jeu. Grace à cette console, vous allez pouvoir enregistrer une "demo", c'est à dire le script d'une partie. Ensuite il faut rejouer ce script avec différents réglages vidéo, et enregistrer le nombre d'images par seconde que votre machine génère pendant le rendu vidéo de cette "demo". C'est long et fastidieux, et il est impossible (et stupide) de tester tous les réglages vidéo. Si j'avais voulu faire une mesure pour chaque combinaison de réglages, sans changer la résolution, il aurait fallu que je fasse 2700 rendus de ma partie enregistrée. </p>
<p>J'ai donc pris le parti de lancer 5 fois la partie enregistrée, toujours dans la même résolution (1920x1200), et toujours avec les paramètres "effects" et "model" au maximum.</p>
<p>Voici le résultat sous la forme d'un graphique :<br />
<img src="/blog/wp-content/uploads/2011/01/bench_l4d2_macpro.png" alt="bench_l4d2_macpro PNG 24bit" title="bench_l4d2_macpro" width="580" height="464" class="aligncenter size-full wp-image-1750" /></p>
<p>En rouge, est représenté le pourcentage d'images qui sont calculées à la vitesse de 60 images par seconde ou plus. Donc plus la proportion de rouge est grande, plus la carte video calcule vite le rendu de la partie. Et plus la proportion de vert et de bleu est faible, moins vous avez de ralentissements perceptibles dans le rafraîchissement de l'image. Ici le bleu (moins de 20 fps) est totalement absent.<br />
Le jeu est capable d'afficher des chiffres de FPS ("frame per second") supérieurs à 60, mais le système intégré qui enregistre la répartition des FPS considère qu'à partir de 60 images par seconde il n'est plus utile de donner la répartition des FPS.<br />
Ce n'est pas gênant, car in fine, les écrans actuels sont assez limités en terme de rafraîchissement, et que 60 images par seconde, c'est suffisant pour un affichage stéréoscopique à 30 images par seconde pour chaque œil. Donc à partir de 60 FPS, même un joueur exigeant pourrait jouer avec des lunettes 3D confortablement.</p>
<p>On voit sur ce graphique qu'un réglage a énormément d'impact sur le nombre de FPS : la synchronisation verticale. Si la synchronisation verticale est activée, le jeu ne peut pas dépasser 60 images par secondes, et le nombre global de FPS est sensiblement réduit. Mais ce réglage garanti une certaine cohérence de l'affichage et prévient l'apparition d'artefacts graphiques qui peuvent dénaturer l'expérience du joueur. Si votre machine le permet, laissez la synchronisation verticale activée. Les réglages 3 et 4 montrent l'impact de la désactivation de cette synchronisation sur la répartition des FPS.</p>
<p>Je ne vais pas plus loin dans l'analyse, il est aisé de comparer chaque jeu de réglages en utilisant le graphique. Si vous souhaitez faire le même benchmark que moi exactement, il vous faut le <a href="/blog/wp-content/uploads/demo_bench_l4d2.zip">script de la partie que j'ai enregistré (ZIP 3,6Mo)</a>. La partie dure environ 10 minutes. L'archive contient un fichier <code>parish000.dem</code> qui est le script de la partie, et un fichier <code>parish000.vdm</code> qui est un fichier texte contenant les commandes qui lancent l'enregistrement des FPS au début du rendu, et qui arrêtent l'enregistrement à la fin du rendu. Il faut placer ces deux fichiers dans <code>/left 4 dead 2/left4dead2</code> (je ne donne pas le chemin complet il est différent sur Mac OS X et Windows).<br />
Après avoir joué la partie sur votre machine, vous obtiendrez un fichier <code>prof_c5m4_quarter.csv</code> situé dans <code>/left 4 dead 2/update/</code>. Attention, ce fichier est écrasé à chaque lancement de la "demo".<br />
Je vous renvoie vers les forums et les aides en ligne pour tous les détails techniques (comment lancer une "demo", etc.).</p>
<p><strong>Addendum</strong></p>
<p>À titre de comparaison, voici le même benchmark effectué sur un MacBook Pro (un portable donc), doté d'un Core Duo 2,8 GHz, de 8 Go de RAM DDR3, et d'une carte vidéo GeForce 9600M GT. La résolution est native : 1440x900. J'ai tenté de faire le test avec les réglages vidéo "recommandés" par le jeu, l'écriture du fichier de log des FPS a échoué, mais les résultats étaient de toute manière catastrophiques.<br />
<img src="/blog/wp-content/uploads/2011/01/bench_l4d2_macbookpro.png" alt="bench_l4d2_macbookpro PNG 24bit" title="bench_l4d2_macbookpro" width="533" height="375" class="aligncenter size-full wp-image-1759" /><br />
À gauche, un jeu de réglages "tout medium" avec antialiasing et filtering au minimum. Au centre, les mêmes réglages mais avec la synchronisation verticale désactivée. Enfin à droite le jeu de réglages "recommandés" par L4D2, mais avec la synchronisation verticale désactivée. Le résultat reste injouable, avec presque 75% des frames générées à moins de 20 fps.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/01/30/1749-benchmark-left-4-dead-2-sur-mac-pro/' addthis:title='Benchmark Left 4 Dead 2, sur Mac Pro '><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/01/30/1749-benchmark-left-4-dead-2-sur-mac-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bien migrer son PowerMac G5 vers un Mac Pro</title>
		<link>http://www.patpro.net/blog/index.php/2011/01/24/1744-bien-migrer-son-powermac-g5-vers-un-mac-pro/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/01/24/1744-bien-migrer-son-powermac-g5-vers-un-mac-pro/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 11:25:20 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[matériel]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1744</guid>
		<description><![CDATA[L'achat d'une nouvelle machine nécessite dans la majorité des cas de pouvoir migrer ses données de l'ancien système vers le nouveau. Apple met des outils à disposition des utilisateurs pour remplir cette mission, et globalement ça marche plutôt bien. Cependant, quand l'ancienne machine et la nouvelle n'ont ni la même version du système, ni la [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/01/24/1744-bien-migrer-son-powermac-g5-vers-un-mac-pro/' addthis:title='Bien migrer son PowerMac G5 vers un Mac Pro '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p>L'achat d'une nouvelle machine nécessite dans la majorité des cas de pouvoir migrer ses données de l'ancien système vers le nouveau. Apple met des outils à disposition des utilisateurs pour remplir cette mission, et globalement ça marche plutôt bien. Cependant, quand l'ancienne machine et la nouvelle n'ont ni la même version du système, ni la même architecture processeur, et qu'on parle de plusieurs centaines de Go de données, tout devient un peu plus compliqué.</p>
<p>Dans mon PowerMac G5, j'ai deux disques durs de 640 Go. Un pour travailler, et un pour les sauvegardes. Dans mon Mac Pro, j'ai un disque dur de 1 To, et trois emplacements libres.</p>
<p>J'ai décidé de : </p>
<ul compact="" type="square">
<li>réinstaller un système personnalisé sur le Mac Pro (donc de reformater le disque fourni)</li>
<li>monter les deux disques du G5 dans le Mac Pro, pour en récupérer les données</li>
<li>poursuivre les sauvegardes Time Machine sur le Mac Pro, sans perdre l'historique du G5 (c'est le point le plus délicat)</li>
</ul>
<p><span id="more-1744"></span><br />
Au cours de ce processus, l'ancien disque système du G5 va devenir le nouveau disque Time Machine du Mac Pro, et l'ancien disque Time Machine du G5 va devenir un disque de stockage de l'ancien système, le temps de terminer la migration.<br />
Attention, si comme moi vous possédez une licence Adobe (genre CS3/4/5) n'oubliez pas au préalable de la désactiver sur votre ancienne machine, avant de démarrer votre migration. </p>
<p>Voici comment j'ai procédé :</p>
<ol compact="" type="1">
<li>Démontage des disques du G5, et remontage dans le Mac Pro</li>
<li>Démarrage du Mac Pro sur le DVD d'installation, formatage du disque système, installation personnalisée du système</li>
<li>Récupération des données de mon compte utilisateur (et uniquement celles là) via l'assistant de migration. Ici, il est très important de savoir que les dossiers que vous aviez exclus de la sauvegarde Time Machine ne sont pas récupérés par l'assistant de migration, alors même qu'on les récupère à partir de l'ancien disque système, et pas de l'ancien disque Time Machine !</li>
<li>À ce stade, vous pouvez lancer les mises à jour de votre système, et désactiver Spotlight pour les deux disques provenant du G5</li>
<li>Création d'une image disque compressée de mon ancien disque système (prévoir plus d'une heure), montage de l'image disque pour vérifier qu'elle est utilisable (la première que j'ai faite n'était pas fonctionnelle)</li>
<li>Formatage de ce disque avec une table de partition GUID</li>
<li>Restauration de l'ancien disque Time Machine, vers le disque fraîchement formaté (compter aussi plus d'une heure) en utilisant l'utilitaire de disque</li>
<li>Formatage de l'ancien disque Time Machine avec une table de partition GUID</li>
<li>Comme l'adresse MAC de la machine a changé, il faut bricoler un peu la sauvegarde Time Machine pour pouvoir continuer à utiliser l'ancien historique. Cela nécessite d'utiliser une commande UNIX qui était fournie avec <code>Mac OS X 10.5</code>, mais qui n'est plus fournie avec <code>Mac OS X 10.6</code>. Cela tombe bien, car nous avons toujours l'ancien disque système (sous forme d'image disque)</li>
<li>Montage de l'image de l'ancien disque système</li>
<li>Lancement de l'utilitaire Terminal, et application de la <a href="http://hints.macworld.com/article.php?story=20080128003716101">méthode suivante</a> ; Attention, <code>fsaclctl</code> n'existe pas en 10.6, il faut indiquer le chemin dans votre image disque (par exemple <code>/Volumes/image_ancien_os/usr/sbin/fsaclctl</code> )</li>
<li>Restauration de l'image disque de l'ancien système vers l'ancien disque Time Machine</li>
<li>À ce stade, j'ai un disque système à jour dans mon Mac Pro, un disque Time Machine opérationnel, formaté en GUID, et contenant l'historique du G5 et dans la continuité, l'historique du Mac Pro. J'ai un troisième disque dur, contenant mon ancien système, pour récupérer des documents et applications manuellement en cas de besoin</li>
<li>Édition des options de Time Machine, pour ne pas sauvegarder n'importe quoi</li>
<li>Réinstallation des applications tierces </li>
</ol>
<p>Si vous suivez cette méthode, il vous appartient ensuite de faire le ménage dans votre ancien système pour gagner un peu de place, d'y récupérer ce que vous souhaitez et qui n'aurait pas été restauré, etc. Gardez à l'esprit que ce n'est pas une méthode universelle. C'est plus un canevas sur le quel vous pouvez broder votre propre migration, en retenant ce qui vous intéresse, en écartant ce qui ne vous convient pas, et en découvrant des choses aux quelles vous n'aviez pas pensé !</p>
<p>Notez que les manipulations interactives ne sont pas longues, mais des volumes importants de données peuvent amener l'ensemble de l'opération à durer une bonne demi-journée.<br />
La méthode de récupération de l'ancienne sauvegarde Time Machine pour ne pas perdre l'historique peut sembler absconse, mais en réalité elle est logique et simple.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/01/24/1744-bien-migrer-son-powermac-g5-vers-un-mac-pro/' addthis:title='Bien migrer son PowerMac G5 vers un Mac Pro '><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/01/24/1744-bien-migrer-son-powermac-g5-vers-un-mac-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sauvegarde : ceinture et bretelles</title>
		<link>http://www.patpro.net/blog/index.php/2011/01/07/1740-sauvegarde-ceinture-et-bretelles/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/01/07/1740-sauvegarde-ceinture-et-bretelles/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 10:17:25 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Sécurité]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1740</guid>
		<description><![CDATA[Les recommandations sur le thème des sauvegardes foisonnent sur internet et dans la presse informatique. Chacun y vante sa méthode, ses logiciels, etc. Pour ne pas être en reste, et parce que je pense que la manière dont je procède à mes sauvegardes personnelles est intéressante, je vais présenter ci-dessous les quelques principes sur les [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/01/07/1740-sauvegarde-ceinture-et-bretelles/' addthis:title='Sauvegarde : ceinture et bretelles '><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47f81ddfbdce" class="addthis_button_compact">Share</a></div>]]></description>
			<content:encoded><![CDATA[<p>Les recommandations sur le thème des sauvegardes foisonnent sur internet et dans la presse informatique. Chacun y vante sa méthode, ses logiciels, etc. Pour ne pas être en reste, et parce que je pense que la manière dont je procède à mes sauvegardes personnelles est intéressante, je vais présenter ci-dessous les quelques principes sur les quels je m'appuie.<span id="more-1740"></span></p>
<p>La sauvegarde est une des briques de la sécurité informatique. En tant que telle, elle en hérite deux caractéristiques élémentaires : c'est un compromis, et c'est indispensable.</p>
<p>Les seules variables réelles pour l'utilisateur se trouvent donc au niveau de ce compromis. Sauvegarder des données, cela prend du temps, de la place, éventuellement de la bande passante, c'est contraignant, cela requière de l'attention. Il faut donc faire un compromis entre ce que l'on veut sauvegarder et les moyens qu'on est prêt à mettre en œuvre.</p>
<p>Par exemple, il est très facile de faire une sauvegarde de toutes ses données, mise à jour toutes les heures, avec possibilité de remonter dans le temps sur un an d'historique ou plus. Vous branchez un disque dur sur votre machine, et vous configurez Time Machine (si vous êtes sur Mac, pour les autres plateformes charge à vous de trouver le logiciel équivalent). Les sauvegardes sont alors totalement automatiques.<br />
L'accès aux données est rapide, et très simple. Mais si votre logement est cambriolé, incendié, innondé, ou que votre machine est victime d'un pirate ou d'un gros virus, vous avez toutes les chances de perdre à la fois les données de votre machine et leurs sauvegardes.<br />
Il faut donc éloigner la sauvegarde de l'ordinateur pour assurer la sécurité de vos données. Cela se complique. On peut mettre le disque externe en lieu sûr, mais alors cela oblige à des manipulations entre chaque sauvegarde : sortir le disque de sa cachette, le brancher, sauvegarder, le débrancher, le remettre en lieu sûr... Pénible !<br />
La solution simple est alors de passer par internet, mais c'est lent. Allez donc sauvegarder 200 Go de données via votre ligne ADSL. Et puis d'abord, où allez vous trouver autant de place ? Il faut payer un hébergement spécialisé. On en trouve des pas trop chers, mais contrairement à un disque dur, la dépense est mensuelle.<br />
Tel que je vois les choses, il faut utiliser la sauvegarde locale cumulée à la sauvegarde distante. Plus la sauvegarde est éloignée (et donc pénible d'accès), moins je sauvegarde de données. C'est aussi simple que ça.<br />
La seule réflexion que doit mener l'utilisateur dans ce cas de figure, est la hiérarchisation de ses données. Il doit décider parmi ses données les quelles il est inutile de sauvegarder, les quelles il est utile de sauvegarder, les quelles il est important de sauvegarder, etc.<br />
Pour la sauvegarde locale, on est sur du disque dur. L'accès est performant, c'est de la sauvegarde de confort. On peut y placer toutes les données, même les données peu importantes.<br />
Pour une sauvegarde intermédiaire (sur une autre machine du réseau par exemple), on est en accès relativement rapide, mais moins que le disque local, et on a aussi sans doute un peu moins de place. On va donc omettre les données peu importantes (les gros logiciels installés dont on a le CDROM dans l'étagère, les fichiers volumineux qu'on peut retrouver facilement ailleurs...).<br />
Pour la sauvegarde hors-site (sur un serveur accessible via internet), on sait que l'accès est lent, que l'espace est compté et facturé, on doit donc se limiter à l'essentiel (emails, documents personnels, photos de famille irremplaçables, factures électroniques...).</p>
<p>C'est un fonctionnement en entonoir. Plus la sauvegarde est contraignante (distance, temps d'accès, coût), plus vous la limitez en volume.</p>
<p>À titre d'illustration, voici comment mes sauvegardes "ceinture et bretelles" fonctionnent :</p>
<p>- Dans mon Mac, j'ai un second disque dur qui sert pour Time Machine, j'ai donc une sauvegarde incrémentale sur plus de 2 ans de toutes mes données. Toutes les heures, Time Machine fait une sauvegarde sur ce disque. L'accès est rapide, mais le disque de sauvegarde est dans la même machine que le disque sauvegardé. Le risque de perdre les deux en même temps est maximal.</p>
<p>- Sur mon réseau local, j'ai une seconde machine, avec un disque dur dédié aux sauvegardes. J'ai sur le Mac un script qui se lance tous les deux jours, et qui envoie sur cette seconde machine une partie de ma dernière sauvegarde Time Machine. Cette machine a peu à craindre d'un cambrioleur ou d'un pirate, rien à craindre des virus, mais un sinistre pourrait lui être fatal. L'accès est plus lent qu'un disque local, mais plus rapide que via internet.</p>
<p>- Ensuite, le même script envoie sur un serveur distant, au travers de ma liaison ADSL, un sous-ensemble encore plus petit de ces données. Et ce serveur distant garde l'historique des données une fois par semaine pendant 20 semaines. Je peux donc revenir en arrière de 5 mois sur les données sauvegardées.<br />
Ce serveur est à 400 km, dans un datacenter sécurisé. La probabilité pour que mes deux sauvegardes "maison" et cette sauvegarde distante disparaissent en même temps est nulle.</p>
<p>L'intégralité des trois étapes est bien sûr entièrement automatisée, et tout fonctionne sans intervention humaine. C'est primordial. Si vous utilisez un système de sauvegarde manuelle, vous pouvez être sûr qu'un jour vous oublierez, ou vous vous lasserez.</p>
<p>Pour résumer tout ceci en une ligne : ayez toujours une sauvegarde locale pour votre confort, et une sauvegarde distante pour les données vraiment importantes. Si vous réfléchissez à cela sérieusement, cela vous forcera aussi à considérer l'ensemble de vos habitudes de stockage : qu'est ce que je stocke sur ma machine ? Est-ce vraiment utile de garder tout ça ? Qu'est ce que je peux supprimer ou perdre sans états d'âme ? etc.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/01/07/1740-sauvegarde-ceinture-et-bretelles/' addthis:title='Sauvegarde : ceinture et bretelles '><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/01/07/1740-sauvegarde-ceinture-et-bretelles/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

