<?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>Emile "iMil" Heitor 's home &#187; FreeBSD</title>
	<atom:link href="http://imil.net/wp/tag/freebsd/feed/" rel="self" type="application/rss+xml" />
	<link>http://imil.net/wp</link>
	<description>life, unix and stuff</description>
	<lastBuildDate>Sun, 13 May 2012 10:43:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Un peu de réseau&#8230; ou presque</title>
		<link>http://imil.net/wp/2010/10/09/un-peu-de-reseau-ou-presque/</link>
		<comments>http://imil.net/wp/2010/10/09/un-peu-de-reseau-ou-presque/#comments</comments>
		<pubDate>Sat, 09 Oct 2010 08:58:31 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Ma vie, mon oeuvre]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Juniper]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[taf]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=547</guid>
		<description><![CDATA[Au boulot, ce sont des routeurs Juniper J2350 qui se chargent d&#8217;acheminer les lutins de l&#8217;internet vers nos équipements. Depuis quelques temps, les routeurs en question s&#8217;occuppent entre autres d&#8217;annoncer nos plages d&#8217;IPs grâce au protocole BGP.
Si l&#8217;établissement des sessions eBGP avec nos fournisseurs d&#8217;accès n&#8217;a posé aucun problème, l&#8217;établissement de la session iBGP entre [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nbs-system.com/">Au boulot</a>, ce sont des routeurs <a href="http://www.juniper.net/customers/support/products/j2350.jsp">Juniper J2350</a> qui se chargent d&#8217;acheminer les lutins de l&#8217;internet vers <a href="http://www.nbs-system.com/non-classe/architecture-hebergement-nbs-system/">nos équipements</a>. Depuis quelques temps, les routeurs en question s&#8217;occuppent entre autres d&#8217;annoncer nos plages d&#8217;IPs grâce au protocole <a href="http://fr.wikipedia.org/wiki/Border_Gateway_Protocol">BGP</a>.</p>
<p>Si l&#8217;établissement des sessions eBGP avec nos fournisseurs d&#8217;accès n&#8217;a posé aucun problème, l&#8217;établissement de la session iBGP entre nos differents routeurs montrait une charge CPU, mais surtout une consommation mémoire anormales, jusqu&#8217;à provoquer recemment le crash de l&#8217;un d&#8217;entre eux.</p>
<p>J&#8217;ai toujours été fasciné par l&#8217;inutilité des services support des constructeurs ou autres grosses structures, et Juniper ne déroge pas à la règle. De fait, je décide donc d&#8217;exposer mon problème non pas au support officiel, qui mettra déjà une bonne 15aine de jours à comprendre ce que je veux bien dire par &#8220;iBGP&#8221;, mais plutot <a href="http://forums.juniper.net/t5/Routing/J2350-crash-after-starting-iBGP-session/m-p/54690">aux forums communautaires</a> du fabriquant. Bien evidemment, comme dans tous les forums de la terre, on obtient en premier lieu quelques réponses des &#8220;know-it-all&#8221; qui vous ressortent le contenu d&#8217;une plaquette marketing: &#8220;I would agree, a J2320 is not designed to take a full set of routes.&#8221;, mais avec un minimum de patience, on finit par tomber sur quelqun qui sait de quoi il parle.</p>
<p>Un utilisateur catégorisé &#8220;Recognized Expert&#8221; me dit la chose suivante : &#8220;I have used also J2320 routers with 2x full feed on them. Works good. But I downgraded to the last JUNOS 9.3 that runs only in packet mode. That saves a couple of RAM.&#8221;</p>
<p>Et c&#8217;est là le tournant de l&#8217;histoire. En effet, lorsque je reçus mes jouets, je m&#8217;aperçus qu&#8217;ils tournaient sur une version bien ancienne de JunOS (le système d&#8217;exploitation dérivé de FreeBSD qui fait fonctionner ces routeurs), et comme tout bon administrateur impatient, je me jette sur les mises à jours. Grossière erreur. Ce que m&#8217;explique le monsieur du forum, c&#8217;est que depuis les releases 9.3R4 de JunOS, le démon en charge du forwarding de paquets n&#8217;est plus <code>fwdd</code> mais <code>flowd_hm</code>, une nouvelle mouture qui ne fonctionne plus en simple &#8220;mode paquet&#8221;, mais établit des sessions (stateful) afin d&#8217;inspecter le traffic (<a href="http://www.juniper.net/techpubs/software/junos-security/junos-security10.0/junos-security-admin-guide/packet-flow-based-fwd-section.html">l&#8217;explication ici</a>).</p>
<p>Le downgrade m&#8217;effrayant un peu, je tente 1001 méthodes pour alléger ce démon, mais rien n&#8217;y fait, ses 481M de taille font toujours souffrir mes routeurs. La seule solution: <i>downgrader</i>.</p>
<p>Bien évidemment, cette opération s&#8217;est réalisée dans la douleur; en effet, ce fameux mode <i>flow based</i> a impliqué des entrées dans la configuration du routeur qui ne sont pas <i>backward compatibles</i>. En particulier, une section <code>zones</code> qui définit des zones de sécurité, et plus précisemment, qui a le droit de &#8220;sortir&#8221; ou pas, et dans les versions supérieures à 9.3R3, sans cette section, le routeur est aveugle et ne peut pas récupérer sa mise à jour. L&#8217;espace du disque flash équipant le J2350 étant limité, il n&#8217;était pas possible de télécharger la mise à jour pour l&#8217;appliquer localement, j&#8217;étais donc obligé d&#8217;effectuer l&#8217;<i>upgrade</i> à travers le réseau, mais cette opération était vouée à l&#8217;échec puisque la mise à jour échouait en raison de l&#8217;incompatibilité de la configuration en place avec les versions antérieures. Quadrature du cercle.</p>
<p>Mais voila: JunOS est un UNIX, et Juniper a eu la bonne idée de laisser l&#8217;accès à cet UNIX (FreeBSD, donc) par le biais de la commande <code>start shell</code>.</p>
<p>Ainsi, tout en gardant la configuration <i>running</i> activée, je m&#8217;en vais modifier le fichier <code>/config/juniper.conf.gz</code> pour en retirer la section <i>security</i>, incompatible avec le <i>downgrade</i>. Un <code>gunzip -c, vi, gzip</code> plus tard, je peux tranquillement invoquer la commande CLI:</p>
<pre>
foo> request system software add validate no-copy unlink ftp://serveur/junos-jseries-9.3R3.8-domestic.tgz
</pre>
<p>Et constater que la &#8220;mise à jour&#8221; s&#8217;effectue parfaitement.</p>
<p>Notez qu&#8217;afin de ne pas générer de la charge inutile, j&#8217;ai au préalable désactivé les annonces vers mes voisins BGP grâce à la commande :</p>
<pre>
foo# deactivate protocol bgp group ma-session neighbor ip.de.mon.voisin
foo# commit
</pre>
<p>Un <code>foo> request system reboot</code> plus tard, j&#8217;admire :</p>
<pre>
--- JUNOS 9.3R3.8 built 2009-05-12 22:33:43 UTC
</pre>
<p>Et constate que cette pourriture de démon <code>flowd_hm</code> a disparu, avantageusement remplacé par <code>fwdd</code>, et que le routeur répond désormais au quart de tour, même avec toutes ses sessions BGP chargées.</p>
<p>Morale de l&#8217;histoire: avant de te jeter sur la dernière version d&#8217;un soft, vérifie que t&#8217;en as bien besoin&#8230; (version longue de &#8220;if it works, don&#8217;t fix it&#8221;).</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2010/10/09/un-peu-de-reseau-ou-presque/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Migration dspam/sqlite vers dspam/mysql</title>
		<link>http://imil.net/wp/2008/06/01/migration-dspamsqlite-vers-dspammysql/</link>
		<comments>http://imil.net/wp/2008/06/01/migration-dspamsqlite-vers-dspammysql/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 10:56:15 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[dspam]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=200</guid>
		<description><![CDATA[L&#8217;année dernière, je mettais en place dspam, sur mon serveur dédié. Naïf, je me disais que pour gerer mes propres mails, le backend sqlite serait amplement suffisant, et finalement tout ce petit monde a parfaitement fonctionné pendant quelques mois. Et puis la database a grossi, grossi, grossi au point d&#8217;etre lente à crever et provoquer [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://imil.net/wp/?p=123">L&#8217;année dernière</a>, je mettais en place <code>dspam</code>, sur mon serveur dédié. Naïf, je me disais que pour gerer mes propres mails, le backend <code>sqlite</code> serait amplement suffisant, et finalement tout ce petit monde a parfaitement fonctionné pendant quelques mois. Et puis la database a grossi, grossi, grossi au point d&#8217;etre lente à crever et provoquer ce type de réaction :</p>
<pre>
pid 71865 (dspam), uid 0: exited on signal 6 (core dumped)
pid 72017 (dspam), uid 0: exited on signal 6 (core dumped)
pid 72289 (dspam), uid 0: exited on signal 6 (core dumped)
</pre>
<p>Après que 2 attaques massives de spams aient écroulé la machine, je me suis enfin décidé à changer de backend&#8230; et la différence est simplement indescriptible.</p>
<p>L&#8217;opération s&#8217;est avérée plus simple que je ne l&#8217;imaginais. Tout d&#8217;abord, il est nécessaire de re-installer le <code>port dspam</code> en y ajoutant le support <code>MySQL</code> à l&#8217;aide de la commane <code>make config</code></p>
<p><img src="/gfx/dspam-make.png"/></p>
<p>Un <code>make deinstall reinstall</code> plus loin, le binaire supporte les deux backends (sqlite et MySQL), et avant d&#8217;apporter les modifications à la configuration de dspam, nous nous assurons de créer une database <code>dspam</code> et de peupler cette dernière avec les commandes SQL fournies dans le package dspam :</p>
<pre>
$ mysql -u dspam -p dspam < /usr/local/share/examples/dspam/mysql/mysql_objects-4.1.sql
</pre>
<p>Nous pouvons alors modifier le fichier <code>dspam.conf</code> :
</pre>
<pre>
StorageDriver /usr/local/lib/libmysql_drv.so
# [...]
MySQLServer     /path/vers/mysql.sock
MySQLUser               dspam
MySQLPass               mangeducacaspammer
MySQLDb                 dspam
MySQLConnectionCache    10
MySQLUIDInSignature    on
</pre>
<p>Et redémarrer le serveur :</p>
<pre>
# /usr/local/etc/rc.d/dspam restart
</pre>
<p>Reste à nourrir notre nouvelle database à l&#8217;aide de deux corpus spam et ham d&#8217;environ 1000 mails chacun (voir <a href="http://imil.net/wp/?p=123">le post de l&#8217;année dernière</a>).</p>
<p>Pour finir, j&#8217;ajoute un cron-job qui nettoie la base de données tous les soirs, à l&#8217;aide d&#8217;un jeu de commandes SQL fourni par le package dspam :</p>
<pre>
30 01 * * * /usr/local/bin/mysql -u dspam --password=mangeducacaspammer dspam < /usr/local/share/examples/dspam/mysql/purge-4.1.sql
</pre>
<p>Et mon gentil dédié ne souffre plus.</p>
<p>Notez par ailleurs que devant une telle recrudescence, j'avais fini par réinstaller l'excellent <a href="http://hcpnet.free.fr/milter-greylist/">milter-greylist</a> du sieur Emmanuel Dreyfus, et que le résultat est sans appel: si certains MTAs tolèrent mal les codes <code>4xx</code> et ne renvoient le mail que plusieurs heures plus tard, mon ratio de spams, lui, est passé de 800 / jour en moyenne à 30 / jour en moyenne. Le choix est vite fait...<br />
</pre>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2008/06/01/migration-dspamsqlite-vers-dspammysql/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Voodoo</title>
		<link>http://imil.net/wp/2008/02/17/voodoo/</link>
		<comments>http://imil.net/wp/2008/02/17/voodoo/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 17:21:31 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=182</guid>
		<description><![CDATA[J&#8217;ai topé ça dans une boutique à Montréal :

Vraiment pas mal. Si l&#8217;on possede quelques notions de C et de système, l&#8217;auteur nous fait manipuler du module kernel FreeBSD dès la 10eme page, et nous apprend à ruser dès la vingtieme. Je regrette qu&#8217;il soit si petit (à peine 130 pages), j&#8217;en aurait bien avalé [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai topé ça dans une boutique à Montréal :</p>
<p><a href="http://www.oreilly.com/catalog/1593271425/"><img src="/gfx/dbr.jpg"/></a></p>
<p>Vraiment pas mal. Si l&#8217;on possede quelques notions de C et de système, l&#8217;auteur nous fait manipuler du module kernel FreeBSD dès la 10eme page, et nous apprend à ruser dès la vingtieme. Je regrette qu&#8217;il soit si petit (à peine 130 pages), j&#8217;en aurait bien avalé le triple.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2008/02/17/voodoo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ce ne sont pas ces dro&#xEF;des que vous recherchez.</title>
		<link>http://imil.net/wp/2007/05/26/ce-ne-sont-pas-ces-drodes-que-vous-recherchez/</link>
		<comments>http://imil.net/wp/2007/05/26/ce-ne-sont-pas-ces-drodes-que-vous-recherchez/#comments</comments>
		<pubDate>Sat, 26 May 2007 19:35:15 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[lighttp]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=133</guid>
		<description><![CDATA[Sur mon serveur perso, par d&#xE9;finition, y&#8217;a des trucs perso. De plus, &#xE0; l&#8217;approche d&#8217;une soci&#xE9;t&#xE9; nouvelle, il n&#8217;est pas superflu de prendre quelques mesures afin de pr&#xE9;server un semblant d&#8217;intimit&#xE9;.
Pour cela, les bons g&#xE9;nies de l&#8217;Internet on cr&#xE9;&#xE9;, il y a bien longtemps, SSL.
Mais voila, il y a d&#8217;autres trucs et bidules que je [...]]]></description>
			<content:encoded><![CDATA[<p>Sur mon serveur perso, par d&#xE9;finition, y&#8217;a des trucs perso. De plus, <a href="http://www.lemonde.fr/web/article/0,1-0@2-651865,36-915090@51-886229,0.html">&#xE0; l&#8217;approche d&#8217;une soci&#xE9;t&#xE9; nouvelle</a>, il n&#8217;est pas superflu de prendre quelques mesures afin de pr&#xE9;server un semblant d&#8217;intimit&#xE9;.<br />
Pour cela, les <a href="http://wp.netscape.com/eng/security/SSL_2.html">bons g&#xE9;nies de l&#8217;Internet</a> on cr&#xE9;&#xE9;, il y a bien longtemps, <a href="http://fr.wikipedia.org/wiki/SSL">SSL</a>.<br />
Mais voila, il y a d&#8217;autres trucs et bidules que je souhaite pouvoir exposer en place publique. J&#8217;entreprend donc de jouer avec les directives de <a href="http://trac.lighttpd.net/trac/wiki/Docs%3AConfigurationOptions">lighttpd</a> pour cr&#xE9;er des exclusions et autres redirections.<br />
Le lien qui eclaire tout, c&#8217;est <a href="http://trac.lighttpd.net/trac/wiki/HowToRedirectHttpToHttps">celui l&#xE0;</a>. En substance, nous allons rediriger tout ce qui matche <i>mon.host.magique</i> et faire passer ce traffic en SSL.<br />
Voici la conf :</p>
<p>On d&#xE9;clare le serveur TLS :</p>
<pre>
$SERVER["socket"] == "mon.host.magique:443" {
  ssl.engine = "enable"
  ssl.pemfile = "/etc/ssl/certs/lighttpd.pem"
  server.document-root = "/vers/www/magique"
  server.name = "mon.host.magique"
  auth.backend.htpasswd.userfile = "/path/vers/lighttpd-htpasswd.user"
  auth.require = ( "/" =>
    (
       "method" => "basic",
       "realm" => "ce ne sont pas ces dro&#xEF;des que vous recherchez.",
       "require" => "valid-user"
    )
  )
}
</pre>
<p>Puis la redirection, tout ce qui arrive sur le port 80 du host &#8220;mon.host.magique&#8221; sera redirig&#xE9; vers son &#xE9;quivalent en HTTPS. On note les regexps compatibles Perl qui nous permettent de r&#xE9;cup&#xE9;rer l&#8217;URL compl&#xE8;te.</p>
<pre>
$SERVER["socket"] == "mon.host.magique:80" {
  $HTTP["host"] == "mon.host.magique" {
    url.redirect = ( "^/(.*)" => "https://mon.host.magique/$1" )
    server.name = "mon.host.magique"
  }
}
</pre>
<p>Et enfin les restrictions gentilles, on n&#8217;applique pas de restrictions &#xE0; host1.host.magique, unautre.host.magique et blip.host.magique car ils ont leur propre d&#xE9;claration dans le fichier <code>lighttpd.conf</code>. Pour le reste, seuls la racine, le repertoire <code>public</code> ainsi que les fichiers .php et .jpg sont autoris&#xE9;s.</p>
<pre>
$HTTP["host"] !~ "(host1|unautre|blip).host.magique" {
  server.document-root = "/var/ou/c/est/mignon"
  $HTTP["url"] !~ "(^/$|^/public|php$|jpg$)" { url.access-deny = ( "" ) }
}
</pre>
<p>C&#8217;est quand m&#xEA;me un peu bien.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2007/05/26/ce-ne-sont-pas-ces-drodes-que-vous-recherchez/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>kimloli, la conf</title>
		<link>http://imil.net/wp/2007/05/21/kimloli-la-conf/</link>
		<comments>http://imil.net/wp/2007/05/21/kimloli-la-conf/#comments</comments>
		<pubDate>Mon, 21 May 2007 10:26:14 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[jail]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=132</guid>
		<description><![CDATA[
y&#8217;a mon bouquetin et 2/3 autres qui me demandent la conf du kimloli, et plus particulièrement la conf des jails. Voici en quelques mots les divers points clé du bestiau. Rien de super novateur, mais ça me servira aussi de pense bête.
Tout d&#8217;abord, les jails. Ayant fait crouter la machine en utilisant les scripts rc.d [...]]]></description>
			<content:encoded><![CDATA[<p><br />
y&#8217;a mon bouquetin et 2/3 autres qui me demandent la conf du kimloli, et plus particulièrement la conf des jails. Voici en quelques mots les divers points clé du bestiau. Rien de super novateur, mais ça me servira aussi de pense bête.</p>
<p>Tout d&#8217;abord, les jails. Ayant fait crouter la machine en utilisant les scripts rc.d fournis, et même si le bug a été corrigé recemment dans la branche FreeBSD 6.2, ça m&#8217;a refroidi d&#8217;utiliser les scripts officiels. Sur les conseils du sieur ic, je me suis donc rabattu sur <i>jailctl</i>, qui permet moult opérations sur les jails. Mon jails.conf ressemble à ceci :</p>
<pre>
IF="lo0"
JAIL_HOME="/home/jails/"
ROOT_PW='$1$blablapwetpwettoussa'
PROCFS="FALSE"
LINPROCFS="FALSE"
BACKUPDIR=$JAIL_HOME
BACKUP_EXCLUDE="--exclude ./usr/ports/* --exclude ./tmp/* --exclude ./var/tmp/* --exclude ./usr/src/*"
JAILS="web1:192.168.0.1"
INSTALLWORLD_FLAGS=""
RC_CONF='sendmail_enable="NONE" sshd_enable="YES" portmap_enable="NO" network_interfaces="" tcp_keepalive="NO" inetd_enable="YES"'
NAMESERVER="ip.du.kimloli"
BEFORESTATUS_HOOKS="/usr/bin/true"
AFTERSTATUS_HOOKS="/usr/bin/true"
BEFORESTART_HOOKS="/usr/bin/true"
AFTERSTART_HOOKS="/usr/bin/true"
BEFORESTOP_HOOKS="/usr/bin/true"
AFTERSTOP_HOOKS="/usr/bin/true"
</pre>
<p>Après avoir préparé un <i>world</i> dans le host en suivant <a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html">cette documentation</a> (et sans passer par la case <code>make install*</code>), on installe son environnement jailé via <code>jailctl create nomdujail</code>. Il sera de bon ton de manger <a href="http://wiki.gcu.info/doku.php?id=freebsd:jailctl">cette doc</a> avant de se lancer.<br />
J&#8217;ai choisi d&#8217;&#8221;aliaser&#8221; mes interfaces jail sur le loopback plutot que sur l&#8217;interface NIC elle même simplement parce que j&#8217;ai été refroidi par la déconvenue sus-citée lors de l&#8217;utilisation d&#8217;<code>/etc/rc.d/jail</code>.</p>
<p>On appréciera la possibilité de fine-tuner la post-installation en utilisant les scripts et templates situés dans <i>/home/jails/addons</i>.</p>
<p>Comme il est assez probable qu&#8217;on voudra que notre jail puisse &#8220;sortir&#8221; sur Internet, nous devons mener deux opérations :</p>
<p>1. s&#8217;assurer que le host peut forwarder<br />
2. lui faire faire du NAT des adresses jailées</p>
<p>Ce qui se traduit par :</p>
<pre>
$ grep forw /etc/sysctl.conf
net.inet.ip.forwarding=1
</pre>
<p>et</p>
<pre>
# /etc/pf.conf

int="vr0"
# NAT
# jails
nat pass on $int from 192.168.0.0/24 to any -> $int
</pre>
<p>De plus, la finalité étant de faire en sorte que ce soient nos jails qui répondent, par exemple, aux requetes HTTP, nous plaçons la redirection suivante :</p>
<pre>
# /etc/pf.conf

rdr pass on $int proto tcp from any to any port 80 -> 192.168.0.1 port 80
</pre>
<p>Reste maintenant à démarrer notre jail via la commande <code>jailctl start nomdujail</code>, puis à l&#8217;administrer comme un environnement classique. Dans la variable RC_CONF du fichier <i>jails.conf</i>, nous avons signifié qu&#8217;il fallait démarrer <i>sshd</i>, nous pouvons donc nous connecter à notre environnement restreint par ce biais. Pensez tout de même à désactiver le <code>PermitRootLogin</code>.</p>
<p>Afin de ne pas me trimballer deux arbres de ports, je <i>mount</i> <code>/usr/ports</code> via nullfs en read-only :</p>
<pre>
/usr/ports on /home/jails/web1/usr/ports (nullfs, local, read-only)
</pre>
<p>Puis dans le jail je configure ces quelques variables dans le <i>make.conf</i></p>
<pre>
WRKDIRPREFIX=/var/ports/obj
PACKAGES=/var/ports/packages
</pre>
<p>Afin de me laisser la possibilité de compiler un port si besoin.<br />
En fait, dans le jail, j&#8217;utilise simplement <code>pkg_add</code> et peuple donc l&#8217;environnement de packages binaires. Je spécifie ces variables dans mon <i>~/.cshrc</i> :</p>
<pre>
setenv PACKAGEROOT ftp://ftp.fr.freebsd.org
setenv PACKAGES /var/ports/packages
</pre>
<p>afin de :</p>
<p>. récupérer des packages distants sur un miroir proche (<code>pkg_add -vr</code>)<br />
. ajouter des packages locaux depuis un repertoire ad&#8217;hoc (<code>pkg_create -b</code> sur le host puis <code>pkg_add -v</code> dans le jail)</p>
<p>J&#8217;imagine actuellement un processus simple, basé sur un bête script shell, qui me permettra de tenir à jour les packages binaires du jail par rapport aux ports compilés sur le host. Si quelqun connait un projet similaire, qu&#8217;il me fasse signe ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2007/05/21/kimloli-la-conf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wanna fayne ? yeah i wanna fayne</title>
		<link>http://imil.net/wp/2005/12/28/wanna-fayne-yeah-i-wanna-fayne/</link>
		<comments>http://imil.net/wp/2005/12/28/wanna-fayne-yeah-i-wanna-fayne/#comments</comments>
		<pubDate>Wed, 28 Dec 2005 13:29:25 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=67</guid>
		<description><![CDATA[c&#8217;est du vil propriétaire, donc je posterai pas ca dans le jardin magique, mais comme je sais que vous etes nombreux à utiliser skype malgré tout, voici un petit howto-skype-on-FreeBSD
Pour FreeBSD 5 / 6
Pour FreeBSD 4
Et si tu te demandes quel peut bien etre l&#8217;interet de la manip étant donné qu&#8217;il existe déjà un port, [...]]]></description>
			<content:encoded><![CDATA[<p>c&#8217;est du vil propriétaire, donc je posterai pas ca dans le jardin magique, mais comme je sais que vous etes nombreux à utiliser skype malgré tout, voici un petit howto-skype-on-FreeBSD</p>
<p><a href="http://wreak.lynx.ee/skypefreebsd5.html">Pour FreeBSD 5 / 6</a><br />
<a href="http://wreak.lynx.ee/skypefreebsd.html">Pour FreeBSD 4</a></p>
<p>Et si tu te demandes quel peut bien etre l&#8217;interet de la manip étant donné qu&#8217;il existe déjà un port, regarde un peu la gueule des fontes par defaut&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2005/12/28/wanna-fayne-yeah-i-wanna-fayne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ldap un jour&#8230;</title>
		<link>http://imil.net/wp/2005/10/22/ldap-un-jour/</link>
		<comments>http://imil.net/wp/2005/10/22/ldap-un-jour/#comments</comments>
		<pubDate>Sat, 22 Oct 2005 11:10:09 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[LDAP]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=57</guid>
		<description><![CDATA[Et c&#8217;est au tour d&#8217;apache. Très très simple :

cd /usr/ports/www/mod_vhost_ldap/
make install clean

Si votre apache n&#8217;est pas compilé avec le support LDAP vous vous ferez insulter.
À noter que, contrairement à ce que dit le port :

##      WITH_LDAP:               [...]]]></description>
			<content:encoded><![CDATA[<p>Et c&#8217;est au tour d&#8217;apache. Très très simple :<br />
<code><br />
cd /usr/ports/www/mod_vhost_ldap/<br />
make install clean<br />
</code><br />
Si votre apache n&#8217;est pas compilé avec le support LDAP vous vous ferez insulter.<br />
À noter que, contrairement à ce que dit le port :<br />
<code><br />
##      WITH_LDAP:                Enable LDAP support (mod_auth_ldap) (implies WITH_LDAP_MODULES)<br />
</code><br />
Si je ne place pas explicitement WITH_LDAP=yes <b>et</b> WITH_LDAP_MODULES=yes, je me prend un unresolved symbol au démarrage d&#8217;apache.</p>
<p>Ajoutez maintenant dans votre httpd.conf (dans cet ordre) :<br />
<code><br />
LoadModule ldap_module  libexec/apache2/mod_ldap.so<br />
LoadModule vhost_ldap_module  libexec/apache2/mod_vhost_ldap.so<br />
</code><br />
puis<br />
<code><br />
VhostLDAPEnabled on<br />
VhostLDAPUrl "ldap://127.0.0.1/ou=votre,dc=basedn"<br />
VhostLdapBindDN "cn=utilisateur,ou=qui,dc=binde"<br />
VhostLDAPBindPassword "mot de passe convivial"<br />
</code></p>
<p>Copiez le schéma fourni /usr/local/share/doc/mod_vhost_ldap/mod_vhost_ldap.schema dans /usr/local/etc/openldap/schema/ et ajoutez<br />
<code><br />
include         /usr/local/etc/openldap/schema/mod_vhost_ldap.schema<br />
</code><br />
dans votre slapd.conf</p>
<p>Evidemment, redémarrez slapd et httpd.</p>
<p>Il ne vous reste plus qu&#8217;à provisionner avec votre editeur LDAP favori. Les attributs sont triviaux, par exemple :<br />
<code><br />
# jard.in, apache, jardin<br />
dn: apacheServerName=jard.in,ou=apache,dc=jardin<br />
objectClass: top<br />
objectClass: apacheConfig<br />
apacheServerName: jard.in<br />
apacheDocumentRoot: /home/www<br />
</code><br />
Je regrette toutefois que l&#8217;auteur n&#8217;ait pas prévu des champs relatifs aux logfiles, j&#8217;ai du utiliser une vieille bidouille à base de LogFormat :<br />
<code><br />
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined<br />
CustomLog /var/log/httpd-access-vhosts.log combined<br />
</code><br />
Pour faire passer sur le fichier httpd-access-vhosts.log le script split-logfile fourni avec apache2 qui sépare ce type de log fonction du vhost. Par très classe.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2005/10/22/ldap-un-jour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Henri, sale con</title>
		<link>http://imil.net/wp/2005/10/17/henri-sale-con/</link>
		<comments>http://imil.net/wp/2005/10/17/henri-sale-con/#comments</comments>
		<pubDate>Mon, 17 Oct 2005 13:27:49 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=56</guid>
		<description><![CDATA[Y&#8217;a un truc qui m&#8217;a toujours bien fait chier: l&#8217;impression. Chaipa pourquoi, c&#8217;est inexpliquable, ca marche juste jamais. Alors comme d&#8217;hab aujourd&#8217;hui je me suis pris la tête 2h avant de constater que :
. le backend /usr/local/libexec/cups/backend/parallel faisait locker cupsd au démarrage
. il faut parfois installer /usr/ports/print/foomatic-filters/, et notamment quand ton PPD fait appel à [...]]]></description>
			<content:encoded><![CDATA[<p>Y&#8217;a un truc qui m&#8217;a toujours bien fait chier: l&#8217;impression. Chaipa pourquoi, c&#8217;est inexpliquable, ca marche juste jamais. Alors comme d&#8217;hab aujourd&#8217;hui je me suis pris la tête 2h avant de constater que :</p>
<p>. le backend /usr/local/libexec/cups/backend/parallel faisait locker cupsd au démarrage<br />
. il faut parfois installer /usr/ports/print/foomatic-filters/, et notamment quand ton PPD fait appel à foomatic-rip et fait cracher a ton CUPS des messages aussi explicites que &#8220;Print file was not accepted (client-error-bad-request)!&#8221;</p>
<p>C&#8217;est ainsi, avant de pouvoir imprimer, il faut que j&#8217;en bave, c&#8217;est écrit, c&#8217;est inéluctable.</p>
<p>Bon sinon, cette impression avait pour but de sortir la demande d&#8217;inscription pour toper un stand au pavillon des associations de Solutions Linux 2006. On verra ce qu&#8217;ils en disent.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2005/10/17/henri-sale-con/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>chula, chupala</title>
		<link>http://imil.net/wp/2005/09/18/chula-chupala/</link>
		<comments>http://imil.net/wp/2005/09/18/chula-chupala/#comments</comments>
		<pubDate>Sun, 18 Sep 2005 10:14:54 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Ma vie, mon oeuvre]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[Ma vie. mon oeuvre]]></category>
		<category><![CDATA[OpenLDAP]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://imil.net/wp/archives/51</guid>
		<description><![CDATA[note: cette nouvelle est sujette à modifications en fonction de mon avancement dans la mise en place et la configuration de ma plateforme
Quelques liens glânés de-ci de-la pour monter une plate-forme mail couillue :
. SMTP Auth avec sendmail et FreeBSD
. SMTP Auth, la doc officielle de sendmail.org
. Un overview de l&#8217;integration SASL par l&#8217;ami asyd
. [...]]]></description>
			<content:encoded><![CDATA[<p><em>note: cette nouvelle est sujette à modifications en fonction de mon avancement dans la mise en place et la configuration de ma plateforme</em></p>
<p>Quelques liens glânés de-ci de-la pour monter une plate-forme mail couillue :</p>
<p>. <a href="http://docs.snake.de/smtp-auth.html">SMTP Auth avec sendmail et FreeBSD</a><br />
. <a href="http://www.sendmail.org/~ca/email/auth.html">SMTP Auth, la doc officielle de sendmail.org</a><br />
. <a href="http://www.asyd.net/docs/sasl.html">Un overview de l&#8217;integration SASL par l&#8217;ami asyd</a><br />
. <a href="http://www.minivisp.org/docs/install_minivisp_freeebsd_5.html">l&#8217;excellent projet MiniVisp de l&#8217;ami Hug</a><br />
. <a href="http://www.onlamp.com/pub/a/onlamp/excerpt/sendmailckbk_chap01/">FABULEUSE doc sur l&#8217;interfacage sendmail / LDAP</a><br />
. <a href="http://www.falkotimme.com/howtos/sendmail_smtp_auth_tls/">Sendmail + Auth + TLS</a><br />
. <a href="http://www.sendmail.org/m4/starttls.html">Utilisation de STARTTLS avec sendmail et l&#8217;accessdb</a><br />
. <a href="http://www.sendmail.org/~gshapiro/8.10.Training/LDAPConfig.html">la liste des parametres compris par confLDAP_DEFAULT_SPEC (binddn, password&#8230;)</a><br />
. <a href="http://netfrag.org/docs/topics/caesar/howto-sendmail_tls-imap_sasl-ldap-kerberosV.html">à la fin de ce tuto vous trouverez de bons exemples de virtuser LDAP</a><br />
. <a href="http://www.puresimplicity.net/~hemi/freebsd/sendmail.html">FreeBSD fast and secure mail server using sendmail and imap-uw (eeeet si)<br />
. </a><a href="http://www.doorbot.com/guides/sendmail/securemail/">Secure Email Using Cyrus IMAP, Sendmail, and SASLv2</a><br />
. <a href="http://www.openldap.org/doc/admin23/quickstart.html">Le classique mais toujours efficace OpenLDAP QuickStart Guide</a><br />
. <a href="http://www.cultdeadsheep.org/FreeBSD/docs/Quick_and_dirty_FreeBSD_5_x_and_nss_ldap_mini-HOWTO.html">Le NSS / PAM LDAP HOWTO pour FreeBSD 5.x</a><br />
. <a href="http://wiki.bsd-crew.de/index.php/Cyrus-saslauthd_LDAP-Konfiguration">saslauthd + LDAP</a><br />
. <a href="http://www.acme.com/mail_filtering/sendmail_config_frameset.html">Des astuces pour rendre sendmail plus agressif</a><br />
. <a href="http://www.padl.com/OSS/MigrationTools.html">les migration tools de padl.com</a><br />
. <a href="http://www.openldap.org/pub/ksoper/OpenLDAP_TLS_howto.html">OpenLDAP TLS HOWTO</a><br />
. <a href="http://www.technoids.org/dk-milter.html">Installer le milter DomainKey</a><br />
. <a href="http://www.elandsys.com/resources/sendmail/domainkeys.html">Encore une doc sur domainkey</a></p>
<p>Voici la partie relative de mon /etc/make.conf<br />
<code><br />
SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2 -DLDAPMAP -DSTARTTLS<br />
SENDMAIL_LDFLAGS=-L/usr/local/lib<br />
SENDMAIL_LDADD=-lsasl2 -lldap -llber<br />
</code><br />
Et les parties reliées de mon sendmail.mc<br />
<code><br />
define(`confLDAP_DEFAULT_SPEC', ` -h localhost -b dc=imil,dc=net')<br />
FEATURE(ldap_routing)<br />
LDAPROUTE_DOMAIN(`mail.imil.net')<br />
</code><br />
[...]<br />
<code><br />
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 LOGIN')<br />
define(`confDEF_AUTH_INFO',   `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')<br />
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 LOGIN')<br />
dnl p: uniquement TLS pour l'authentification type Login<br />
dnl A: Use the AUTH= parameter for the MAIL FROM command only when authentication succeeded.<br />
define(`confAUTH_OPTIONS', `A p')<br />
</code><br />
[...]<br />
<code><br />
define(`confCACERT_PATH', `/etc/mail/ssl')dnl<br />
define(`confCACERT', `/etc/mail/ssl/cacert.pem')dnl<br />
define(`confSERVER_CERT', `/etc/mail/ssl/sendmail.pem')dnl<br />
define(`confSERVER_KEY', `/etc/mail/ssl/sendmail.pem')dnl<br />
define(`confCLIENT_CERT', `/etc/mail/ssl/sendmail.pem')dnl<br />
define(`confCLIENT_KEY', `/etc/mail/ssl/sendmail.pem')dnl<br />
</code></p>
<p>Quelques trucs :</p>
<p>Dans le saslauthd.conf, ne pas oublier :<br />
<code><br />
ldap_search_base: dc=domaine,dc=com<br />
ldap_filter: uid=%u<br />
# pour activer TLS<br />
ldap_start_tls: yes<br />
</code></p>
<p>Pour bénéficier de toutes les propriétés nécessaires, s&#8217;assurer d&#8217;avoir les includes suivants dans son slapd.conf :<br />
<code><br />
include         /usr/local/etc/openldap/schema/core.schema<br />
include         /usr/local/etc/openldap/schema/cosine.schema<br />
include         /usr/local/etc/openldap/schema/inetorgperson.schema<br />
include         /usr/local/etc/openldap/schema/nis.schema<br />
include         /usr/local/etc/openldap/schema/misc.schema<br />
</code></p>
<p>Le module ldap_routing de sendmail communique par defaut en LDAPv2, il faut ajouter l&#8217;option &#8220;-w 3&#8243; à votre confLDAP_DEFAULT_SPEC pour le faire communiquer en LDAPv3.</p>
<p>Mon /etc/ldap.conf, linké à /usr/local/etc/ldap.conf et à /usr/local/etc/nss_ldap.conf<br />
<code><br />
host 127.0.0.1<br />
base dc=imil,dc=net<br />
uri ldap://127.0.0.1/<br />
ldap_version 3<br />
binddn cn=user,dc=imil,dc=net<br />
bindpw unpass<br />
port 389<br />
pam_password clear<br />
# activer le TLS<br />
ssl start_tls<br />
</code></p>
<p>J&#8217;utilise dovecot pour l&#8217;acces pop / imap, j&#8217;ai eu l&#8217;agréable surprise de voir qu&#8217;il créait seul les mailboxes des utilisateurs à leur premier login, de fait, en settant &#8220;/repertoire_en_777/utilisateur&#8221; comme homedir dans l&#8217;entrée LDAP de l&#8217;utilisateur, on se retrouve avec un systeme de provisionning automatique du meilleur gout.</p>
<p><strong>Addon</strong></p>
<p>Après avoir migré l&#8217;ensemble des services en TLS, j&#8217;ai constaté que dovecot ne permettait malheureusement pas de réaliser l&#8217;authentification LDAP sur TLS. Sur les conseils de mon ami Eric, j&#8217;ai pondu un <a href="http://imil.net/stuff/dovecot-tls-ldap.patch">rapide patch</a> qui rend ce fonctionnement possible après avoir ajouté :</p>
<p><code>start_tls = 1</code></p>
<p>dans le dovecot-ldap.conf</p>
<p><strong>Add-on</strong></p>
<p>Au sujet de domainkey et DKIM, ne pas oublier d&#8217;ajouter l&#8217;option -i /path/vers/les/hosts/locaux (man dkim-milter), le cas échéant seuls les les mails en provenance de 127.0.0.1 seront signés.</p>
<p>Pour finir, la seule application &#8220;standalone&#8221; (comprendre, qui n&#8217;a pas besoin d&#8217;apache / php et tous leurs amis) convenable pour manipuler une database LDAP reste &#8220;gq&#8221;. J&#8217;aurais imaginé que les choses avaient un peu évolué depuis 5 ans mais finalement non.</p>
<p><strong>Add-on</strong></p>
<p><strong>N&#8217;oubliez pas de placer la directive :</strong><br />
<code><br />
define(`confLDAP_CLUSTER', `nom-convivial')<br />
</code><br />
Et de renseigner le champs &#8220;sendmailMTACluster&#8221; dans toutes vos entrées LDAP.</p>
<p>le cas échéant les queries LDAP sont tout simplement ignorées.</p>
<p>De plus, il est inutile de protéger l&#8217;accès au subtree ou=sendmail, la doc OpenLDAP nous montre comment libérer ce scope :<br />
<code><br />
access to dn.subtree="ou=sendmail,dc=dotpure,dc=net" by * read<br />
</code><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2005/09/18/chula-chupala/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: imil.net @ 2012-05-22 22:47:55 by W3 Total Cache -->
