<?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; Unix</title>
	<atom:link href="http://www.patpro.net/blog/index.php/category/unix/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>Installation de Nuxeo DM sur FreeBSD, épisode 3</title>
		<link>http://www.patpro.net/blog/index.php/2011/12/12/1979-installation-de-nuxeo-dm-sur-freebsd-episode-3/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/12/12/1979-installation-de-nuxeo-dm-sur-freebsd-episode-3/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 11:00:20 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[Logiciel]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1979</guid>
		<description><![CDATA[Avec un peu de travail, Nuxeo DM peut être abrité en HTTPS derrière un serveur Apache. Je fais l'impasse sur la configuration interne à Nuxeo, elle se fait très simplement à la première connexion via l'assistant fourni. Si vous êtes arrivés jusque là, il ne manque plus qu'un script de démarrage pour que tout fonctionne [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/12/1979-installation-de-nuxeo-dm-sur-freebsd-episode-3/' addthis:title='Installation de Nuxeo DM sur FreeBSD, épisode 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>Avec <a href="http://www.patpro.net/blog/index.php/2011/12/09/1969-installation-de-nuxeo-dm-sur-freebsd-episode-2/" title="Installation de Nuxeo DM sur FreeBSD, épisode 2">un peu de travail</a>, Nuxeo DM peut être abrité en HTTPS derrière un serveur Apache. Je fais l'impasse sur la configuration interne à Nuxeo, elle se fait très simplement à la première connexion via l'assistant fourni. Si vous êtes arrivés jusque là, il ne manque plus qu'un script de démarrage pour que tout fonctionne de manière transparente sur votre serveur.<br />
Voici le contenu du script de lancement/arrêt pour une instance de Nuxeo DM, <code>/usr/local/etc/rc.d/nuxeo</code>. N'oubliez pas de remplacer la valeur de <code>nuxeo_home</code> par le chemin de votre répertoire nuxeo :</p>
<pre>#!/bin/sh

# PROVIDE: nuxeo
# REQUIRE: DAEMON
# BEFORE: LOGIN

# Define these nuxeo_* variables in one of these files:
#       /etc/rc.conf
#       /etc/rc.conf.local
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
#
nuxeo_enable="${nuxeo_enable-NO}"
nuxeo_user="${nuxeo_user-nuxeo}"
nuxeo_home="/CHEMIN/DE/nuxeo"

. /etc/rc.subr

name="nuxeo"
rcvar=`set_rcvar`
start_cmd=${name}_start
stop_cmd=${name}_stop

nuxeo_start()
{
cd $nuxeo_home
$nuxeo_auditflags sudo -u $nuxeo_user ./bin/nuxeoctl startbg
}

nuxeo_stop()
{
cd $nuxeo_home
sudo -u $nuxeo_user ./bin/nuxeoctl stop
}

load_rc_config $name

run_rc_command "$1"</pre>
<p>Une fois le fichier créé, rempli, et rendu exécutable, il faut ajouter ces quelques lignes à votre fichier <code>/etc/rc.conf</code> :</p>
<pre>nuxeo_enable="YES"
nuxeo_user="NUXEO_USER"</pre>
<p>Vous remplacerez bien sûr <code>NUXEO_USER</code> par le nom du compte utilisateur qui fera tourner l'application Nuxeo DM. Après cela, les commandes <code>/usr/local/etc/rc.d/nuxeo restart</code>, <code>/usr/local/etc/rc.d/nuxeo stop</code> et <code>/usr/local/etc/rc.d/nuxeo start</code> doivent fonctionner.<br />
Attention, suivant la puissance de votre machine, et l'état de remplissage de Nuxeo, le temps de lancement peut varier énormément.</p>
<p>Côté mise à jour, vous pouvez accéder aux "hotfix" officiels, gratuitement pendant 30 jours, moyennant une inscription sur le site web de Nuxeo. L'inscription se passe facilement, par contre les mise à jour sont délicates et nécessitent de suivre scrupuleusement <a href="https://connect.nuxeo.com/nuxeo/site/marketplace/hotfixes">les instructions du support Nuxeo</a>. Notamment, relancez bien l'application entre chaque mise à jour.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/12/1979-installation-de-nuxeo-dm-sur-freebsd-episode-3/' addthis:title='Installation de Nuxeo DM sur FreeBSD, épisode 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/12/12/1979-installation-de-nuxeo-dm-sur-freebsd-episode-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation de Nuxeo DM sur FreeBSD, épisode 2</title>
		<link>http://www.patpro.net/blog/index.php/2011/12/09/1969-installation-de-nuxeo-dm-sur-freebsd-episode-2/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/12/09/1969-installation-de-nuxeo-dm-sur-freebsd-episode-2/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 20:04:59 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[Logiciel]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1969</guid>
		<description><![CDATA[Une application Tomcat ne devrait pas se trouver nue sur internet. J'ai pour habitude de toujours placer un frontal Apache devant. Cela autorise divers améliorations du service. Apache peut par exemple gérer l'authentification des utilisateurs, faire une balance de charge entre plusieurs instances de l'application, etc. Il permet aussi à votre application d'être joignable sur [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/09/1969-installation-de-nuxeo-dm-sur-freebsd-episode-2/' addthis:title='Installation de Nuxeo DM sur FreeBSD, épisode 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>Une application Tomcat ne devrait pas se trouver nue sur internet. J'ai pour habitude de toujours placer un frontal Apache devant. Cela autorise divers améliorations du service. Apache peut par exemple gérer l'authentification des utilisateurs, faire une balance de charge entre plusieurs instances de l'application, etc. Il permet aussi à votre application d'être joignable sur les port HTTP(S) standard (80 et 443) sans que l'application doive être lancée en root (et sans recourir à une redirection dans votre firewall).</p>
<p>Il existe <a href="http://doc.nuxeo.com/display/NXDOC54/HTTP+and+HTTPS+reverse-proxy+configuration">plusieurs moyens</a> de présenter Nuxeo DM au travers d'un proxy Apache. J'ai choisi d'utiliser mod_proxy. Avec mod_proxy, la configuration est assez standard. Tout, ou presque, est réglé en 3 lignes si on se contente de l'HTTP. Mais pour sécuriser mes connexions à Nuxeo, qui contiendra mes documents personnels et confidentiels, j'ai décidé d'utiliser HTTPS.<br />
J'ai donc un virtual host Apache, et un certificat SSL associé, dans le quel j'inclue les directives de mod_proxy.</p>
<pre>&lt;VirtualHost IP.DU.SER.VEUR:443&gt;
   ServerName DOMAINE.TLD:443
   UseCanonicalName On
   DocumentRoot "/chemin/de/nuxeo/"

   SSLEngine on
   #... config SSL ...

   RequestHeader append nuxeo-virtual-host "https://DOMAINE.TLD/"
   &lt;IfModule proxy_module&gt;
     ProxyRequests Off
     &lt;Proxy *&gt;
        Order deny,allow
        Allow from all
     &lt;/Proxy&gt;
     ProxyPass /nuxeo/ http://localhost:8080/nuxeo/
     ProxyPassReverse /nuxeo/ http://localhost:8080/nuxeo/
     ProxyPreserveHost On
   &lt;/IfModule&gt;

&lt;/VirtualHost&gt;</pre>
<p>Ça c'est d'après la documentation. En réalité, ce n'est pas suffisant. Tout d'abord, il faut bien placer la directive <code>RequestHeader</code> à l'extérieur du bloc <code>proxy_module</code>, sinon elle est juste ignorée par le serveur. Il ne m'a pas fallu moins qu'un tcpdump pour localiser le problème.<br />
J'ai aussi constaté qu'avec ces directives, la première connexion à l'application se fait bien, puis on est immédiatement redirigé vers le même virtual host mais sur le port 80. Je règle le problème avec une directive de redirection dans le vhost http :</p>
<pre>&lt;VirtualHost *&gt;
    ServerName DOMAINE.TLD
    DocumentRoot /chemin/de/nuxeo
    Redirect / https://DOMAINE.TLD/
&lt;/VirtualHost&gt;</pre>
<p>Ce n'est pas totalement satisfaisant, mais faute de mieux, cela fonctionne parfaitement.<br />
En relançant Apache à ce stade, on obtient un proxy fonctionnel et sécurisé par SSL pour Nuxeo.</p>
<p>Avant d'aller plus loin, on peut prendre quelques minutes pour créer une base de données MySQL (ou autre) et un utilisateur MySQL associé à cette base. C'est ce compte de base de données qu'il faudra fournir au moment de la configuration de Nuxeo.</p>
<p>Je fais totalement l'impasse sur la configuration de Nuxeo DM dans le "wizard", elle est bien documentée, et plutôt simple. Il suffit de lancer l'application par la commande ad-hoc si ce n'est pas déjà fait :</p>
<pre># cd /chemin/du/répertoire/nuxeo
# sudo -u nuxeo_user ./bin/nuxeoctl startbg</pre>
<p>Ensuite on se connecte à l'adresse <code>https://DOMAINE.TLD/nuxeo</code> et on peut entamer la configuration.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/09/1969-installation-de-nuxeo-dm-sur-freebsd-episode-2/' addthis:title='Installation de Nuxeo DM sur FreeBSD, épisode 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/12/09/1969-installation-de-nuxeo-dm-sur-freebsd-episode-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation de Nuxeo DM sur FreeBSD, épisode 1</title>
		<link>http://www.patpro.net/blog/index.php/2011/12/08/1956-installation-de-nuxeo-dm-sur-freebsd-episode-1/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/12/08/1956-installation-de-nuxeo-dm-sur-freebsd-episode-1/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 19:27:55 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[Logiciel]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1956</guid>
		<description><![CDATA[J'ai récemment choisi Nuxeo DM comme application de GED. C'est une application en JAVA, tournant dans un serveur d'application Tomcat. Nuxeo est packagé sous différentes formes, une seule est utilisable sur FreeBSD : Nuxeo DM Tomcat bundle. L'installation de Nuxeo sur FreeBSD nécessite trois choses : installer les pré-requis logiciels, configurer l'environnement pour sécuriser l'application, [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/08/1956-installation-de-nuxeo-dm-sur-freebsd-episode-1/' addthis:title='Installation de Nuxeo DM sur FreeBSD, épisode 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>J'ai récemment choisi <strong>Nuxeo DM</strong> comme <a href="http://www.patpro.net/blog/index.php/2011/12/03/1940-la-gestion-electronique-de-documents-episode-1/" title="La gestion électronique de documents, épisode 1">application de GED</a>. C'est une application en JAVA, tournant dans un serveur d'application Tomcat. Nuxeo est packagé sous différentes formes, une seule est utilisable sur FreeBSD : Nuxeo DM Tomcat bundle.<br />
L'installation de Nuxeo sur FreeBSD nécessite trois choses : installer les pré-requis logiciels, configurer l'environnement pour sécuriser l'application, et configurer l'application elle-même.</p>
<p>Côté pré-requis, il faut tout d'abord installer le Java Runtime Environment, et le Java Development Kit. Sous FreeBSD, il faut donc installer les ports <strong>java/diablo-jdk16</strong> et <strong>java/diablo-jre16</strong>. Pour une question de licence, il faut télécharger à la main les packages nécessaires chez Oracle. Il suffit simplement de suivre les instructions obtenues pour chaque port au moment du make. Par exemple :</p>
<pre>$ cd /usr/ports/java/diablo-jdk16/
$ make
===>  License check disabled, port has not defined LICENSE
===>  Found saved configuration for diablo-jdk-1.6.0.07.02_12

 Because of licensing restrictions, you must fetch the distribution
 manually.

 Please open http://www.oracle.com/technetwork/java/javase/downloads/index.html
 in a web browser and follow the "Download" link for
 "JDK DST Timezone Update Tool - 1_3_42" to obtain the
 time zone update file, tzupdater-1_3_42-2011k.zip.

 Please place the downloaded file(s) in /usr/ports/distfiles.
 ...
</pre>
<p>Une fois les ports java/diablo-jdk16 et java/diablo-jre16 installés, il faut installer un serveur web comme Apache 2.2, un serveur de bases de données (MySQL ou PostgreSQL par exemple), et à minima pdftohtml. Il est aussi possible d'installer OpenOffice, mais comme il n'existe pas de version "headless" dans les ports de FreeBSD, cela vous embarque dans l'installation complète avec gestionnaire de fenêtre et tutti quanti. Une calamité.<br />
Pour utiliser l'application sur une connexion sécurisée (HTTPS), il faut qu'Apache dispose d'un certificat SSL adéquat.</p>
<p>Quand tout ceci est installé et configuré, il faut encore ajouter un compte utilisateur pour l'application Nuxeo. Les paresseux pourront la faire tourner sous le compte www. J'ai préféré un utilisateur indépendant, plus facile à tracer via auditd et l'accounting.</p>
<p>On peut alors télécharger et décompresser le package multiplateforme à partir du <a href="http://www.nuxeo.com/en/downloads/download-dm-form">site internet de Nuxeo</a>. On obtient un répertoire nommé <code>nuxeo-dm-5.4.2-tomcat</code>. J'ai pour habitude d'exploiter une application à partir d'un répertoire ne portant pas de numéro de version. On aura intérêt à renommer ce répertoire en <code>nuxeo</code>, car ici, faire un lien symbolique de nuxeo-dm-5.4.2-tomcat vers nuxeo ne donne pas vraiment satisfaction.<br />
Pour en finir avec les fichiers, il faut faire un <code>chown -R</code> sur le répertoire nuxeo pour que les fichiers appartiennent tous à l'utilisateur non privilégié que l'on a créé plus haut.</p>
<p>Ensuite, comme nous sommes sur FreeBSD et pas Linux, il faut revoir certains scripts shell. Ces derniers ont un <a href="http://fr.wikipedia.org/wiki/Shebang">shebang</a> qui pointe vers <code>/bin/bash</code> alors que notre bash est dans <code>/usr/local/bin/</code>. Les scripts à modifier sont les suivants : <code>bin/monitorctl.sh</code>, <code>bin/nuxeoctl</code>, <code>bin/pack</code>.</p>
<p>Arrivé là, il est intéressant de lancer l'application via la ligne de commande pour tester qu'au moins elle se lance et répond sur le port 8080 :</p>
<pre># cd nuxeo
# sudo -u nuxeo_user ./bin/nuxeoctl startbg
...
No current configuration, generating files...
Configuration files generated.
Server started with process ID 1438.</pre>
<p>Le serveur est lancé, et il écoute bien sur le port 8080 :</p>
<pre># netstat -alnf inet | grep 8080
tcp4       0      0  *.8080                 *.*                    LISTEN</pre>
<p>Ce que l'on peut aisément vérifier avec un client HTTP en ligne de commande, ou un coup de telnet :</p>
<pre>$ curl http://127.0.0.1:8080
&lt;META HTTP-EQUIV="refresh" CONTENT="0;URL=/nuxeo"&gt;</pre>
<p>On a maintenant une application Tomcat/Java qui tourne sur notre serveur FreeBSD, sous un compte utilisateur dédié. Il reste à brancher devant un proxy Apache HTTPS, créer un script de démarrage automatique pour l'application, et configurer cette dernière.</p>
<p>La suite au prochain épisode :)</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/08/1956-installation-de-nuxeo-dm-sur-freebsd-episode-1/' addthis:title='Installation de Nuxeo DM sur FreeBSD, épisode 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/12/08/1956-installation-de-nuxeo-dm-sur-freebsd-episode-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La gestion électronique de documents, épisode 2</title>
		<link>http://www.patpro.net/blog/index.php/2011/12/06/1947-la-gestion-electronique-de-documents-episode-2/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/12/06/1947-la-gestion-electronique-de-documents-episode-2/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 15:58:47 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Logiciel]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1947</guid>
		<description><![CDATA[Suite de l'épisode 1 Et donc j'ai choisi Nuxeo. Dans les grandes lignes, voici quelques raisons objectives : accès au support facilité de tester l'application choix du moteur de bases de données interface et fonctionnalités Nuxeo est livrée clé en main, sous la forme d'une archive à décompresser. L'archive utilisable sur FreeBSD est celle qui [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/06/1947-la-gestion-electronique-de-documents-episode-2/' addthis:title='La gestion électronique de documents, épisode 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>Suite de l'<a href="/blog/index.php/2011/12/03/1940-la-gestion-electronique-de-documents-episode-1/" title="La gestion électronique de documents, épisode 1">épisode 1</a></p>
<p>Et donc j'ai choisi Nuxeo. Dans les grandes lignes, voici quelques raisons objectives :</p>
<ul>
<li>accès au support</li>
<li>facilité de tester l'application</li>
<li>choix du moteur de bases de données</li>
<li>interface et fonctionnalités</li>
</ul>
<p>Nuxeo est livrée clé en main, sous la forme d'une archive à décompresser. L'archive utilisable sur FreeBSD est celle qui est destinée à Linux, mais elle nécessite quelques modifications. Notamment les scripts de lancement de l'application devront être révisés (chemin du shell, entre autre).<br />
Quoi qu'il en soit, il y a beaucoup de travail entre le moment où l'application est fonctionnelle et le moment où elle est vraiment utilisable (sécurisée, servie dans les règles de l'art).<br />
Rien n'est précisé par exemple en terme de bonnes pratiques. L'utilisateur béotien risque de se retrouver avec une application fonctionnelle mais peu sécurisée. Avant même de lancer l'application pour s'y connecter, il est souhaitable d'utiliser un compte utilisateur non privilégié pour faire tourner ce serveur. Il est aussi fortement recommandé de mettre un serveur web en frontal qui redirigera les requêtes du port standard vers le port 8080. De même, il ne faut pas lancer l'application sur toutes les IP, mais la restreindre à 127.0.0.1.<br />
L'utilisation d'un serveur web comme Apache se fait très simplement si on se contente du protocole HTTP, mais configurer un frontal HTTPS (donc avec chiffrement des transactions) est une autre paire de manches. Ici, même la documentation officielle n'est pas suffisante, et j'ai du utiliser tcpdump pour venir à bout des problèmes de configuration. </p>
<p>Et ça, c'était la partie drôle. Ça se gâte vraiment quand on souhaite mettre à jour l'application. Tout d'abord, il faut enregistrer l'instance de Nuxeo chez l'éditeur, une fois que c'est fait, le système de mise à jour interne devient accessible. Ce système de mise à jour est une énorme calamité. Une bouse monumentale. C'est un concentré des sept plaies de l'Égypte.<br />
Après installation, j'avais une bonne quinzaine de mises à jour à installer. Mes 5 ou 6 premières tentatives se sont soldées par des échecs, nécessitant une réinstallation complète de l'application (ou une restauration à partir d'un snapshot, dans mon cas). En fait, la clé du succès est sur le <a href="https://connect.nuxeo.com/nuxeo/site/marketplace/hotfixes">site de support de Nuxeo</a>. Il y a bien sûr un ordre pour appliquer les mises à jour, mais il faut surtout redémarrer l'application après chaque patch et suivre les recommandations spécifiques à la lettre.</p>
<p>Finalement, cette application si simple à installer au premier abord m'aura fait perdre de longues heures avant même que j'ai l'occasion de m'en servir pour archiver mes documents. </p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/06/1947-la-gestion-electronique-de-documents-episode-2/' addthis:title='La gestion électronique de documents, épisode 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/12/06/1947-la-gestion-electronique-de-documents-episode-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La gestion électronique de documents, épisode 1</title>
		<link>http://www.patpro.net/blog/index.php/2011/12/03/1940-la-gestion-electronique-de-documents-episode-1/</link>
		<comments>http://www.patpro.net/blog/index.php/2011/12/03/1940-la-gestion-electronique-de-documents-episode-1/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 22:28:25 +0000</pubDate>
		<dc:creator>patpro</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Logiciel]]></category>

		<guid isPermaLink="false">http://www.patpro.net/blog/?p=1940</guid>
		<description><![CDATA[La gestion électronique de documents, GED, est un concept d'actualité ("so 2010" dirait probablement Myriam). Globalement, cela consiste à se débarrasser autant que possible de sa paperasse au profit de documents électroniques manipulés via un logiciel spécialisé. L'avantage premier est la dématérialisation des documents : convertir des années d'archives en documents électroniques permet de gagner [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/03/1940-la-gestion-electronique-de-documents-episode-1/' addthis:title='La gestion électronique de documents, épisode 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>La gestion électronique de documents, <a href="http://fr.wikipedia.org/wiki/Gestion_électronique_des_documents">GED</a>, est un concept d'actualité ("so 2010" dirait probablement <a href="http://rhumandsoda.wordpress.com">Myriam</a>). Globalement, cela consiste à se débarrasser autant que possible de sa paperasse au profit de documents électroniques manipulés via un logiciel spécialisé. L'avantage premier est la dématérialisation des documents : convertir des années d'archives en documents électroniques permet de gagner de la place, et du temps. Le second avantage est l'enrichissement des documents par des méta-données, soit par l'ajout d'informations spécifiques (auteur, date...) soit par l'ajout d'étiquettes permettant de classer ces documents de multiples manières.<br />
Cherchant pour mes besoins personnels une solution robuste et ergonomique de GED, j'ai recensé quelques logiciels bien propres sur eux qui pourraient me convenir. Parmi eux, on pourra citer <a href="http://www.quotero.com">Quotero</a>, <a href="http://www.alfresco.com/">Alfresco</a>, <a href="http://www.nuxeo.com">Nuxeo</a> (sur le quel j'ai jeté mon dévolu) et quelques autres…<br />
Les trois solutions sus-mentionnées fonctionnent sur un serveur, et on y accède par un client web classique comme Safari. Elles sont robustes, éprouvées, libres (opensource), gratuites, et deux d'entres-elles sont mêmes françaises. Sous le capot, les similitudes sont nombreuses. Toutes ces applications sont des serveurs codés en JAVA, et utilisent un moteur de base de données tiers. Mes critères de choix ont été les suivants :</p>
<ul>
<li>- facilité d'accès à l'application sur le site du vendeur (démonstration en ligne, vidéo d'introduction, téléchargement, etc.)</li>
<li>- fonctionnalités de l'application (ni trop, ni trop peu)</li>
<li>- pré-requis logiciels (choix du moteur de base de données, par exemple)</li>
</ul>
<p>J'ai écarté <strong>Quotero</strong> assez vite, car je n'ai pas trouvé que l'application est assez complète. Je pense qu'elle ne propose pas de gestion poussée des métadonnées. Ça ressemble finalement trop à un explorateur de fichier classique, et pas assez à quelque chose sur le quel je peux me reposer entièrement pour gérer des années de paperasse.<br />
Et après quelques péripéties j'ai choisi <strong>Nuxeo</strong> car ils proposent une démonstration sous la forme d'une machine virtuelle pour VMWare Fusion. J'ai donc pu tester chez moi l'application complète avant de décider ou pas de la déployer sur mon serveur.</p>
<p>Finalement, c'est après que ça se gâte. <em>Suite au prochain épisode</em>.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.patpro.net/blog/index.php/2011/12/03/1940-la-gestion-electronique-de-documents-episode-1/' addthis:title='La gestion électronique de documents, épisode 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/12/03/1940-la-gestion-electronique-de-documents-episode-1/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>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>
	</channel>
</rss>

