<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss1frenchfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://www.nyrodev.info/index.php/">
  <title>NyroBlog</title>
  <description />
  <link>http://www.nyrodev.info/index.php/</link>
  <dc:language>fr</dc:language>
  <dc:creator />
  <dc:rights />
  <dc:date>2009-06-24T18:46:31+02:00</dc:date>
  <admin:generatorAgent rdf:resource="http://www.dotclear.net/" />
  
  <sy:updatePeriod>daily</sy:updatePeriod>
  <sy:updateFrequency>1</sy:updateFrequency>
  <sy:updateBase>2009-06-24T18:46:31+02:00</sy:updateBase>
  
  <items>
  <rdf:Seq>
    <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/06/24/256-eurockeennes-arretez-de-bouger-vous-serez-filmes" />
  <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/05/19/255-cyclorpiste-initiative-bisontine-pour-l-environnement" />
  <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/04/10/253-playing-for-change-stand-by-me" />
  <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/04/03/251-reinventer-le-calendrier" />
  <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/04/02/250-bilan-serveur-web-sur-debian-lenny" />
  <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/03/30/249-autres-ntpdate-apticron-etc-serveur-web-sur-debian-lenny" />
  <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/03/28/248-monitoring-monit-munin-serveur-web-sur-debian-lenny" />
  <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/03/26/247-securite-du-serveur-fail2ban-serveur-web-sur-debian-lenny" />
  <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/03/24/246-serveur-de-mail-postfix-dovecot-dspam-clamav-serveur-web-sur-debian-lenny" />
  <rdf:li rdf:resource="http://www.nyrodev.info/index.php/2009/03/22/245-serveur-dns-powerdns-serveur-web-sur-debian-lenny" />
  </rdf:Seq>
  </items>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Nyroblog" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">Nyroblog</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/content?lg=fr&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/bn/intatm_fr_1.gif">Subscribe with Mon Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Nyroblog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FNyroblog" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /></channel>

<item rdf:about="http://www.nyrodev.info/index.php/2009/06/24/256-eurockeennes-arretez-de-bouger-vous-serez-filmes">
  <title>Eurockéennes : arrêtez de bouger, vous serez filmés !</title>
  <link>http://www.nyrodev.info/index.php/2009/06/24/256-eurockeennes-arretez-de-bouger-vous-serez-filmes</link>
  <dc:date>2009-06-24T18:46:31+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Ailleurs</dc:subject>
  <description>Ils s'appellent l'équipe des Foule Freeze.
Ce groupe a pour mission de Freezer la foule des Eurockéennes.
Bref, ils vont geler, figer la foule des Eurockéennes.


Composé d'étudiants et d'enseignants de l'IUT, ce groupe travaille à ce projet de communication web avec un sens de l'organisation...</description>
  <content:encoded><![CDATA[ <p>Ils s'appellent l'équipe des <strong>Foule Freeze</strong>.<br />
Ce groupe a pour mission de Freezer la foule des <a href="http://www.eurockeennes.fr/" target="_blank" hreflang="fr">Eurockéennes</a>.<br />
Bref, ils vont geler, figer la foule des Eurockéennes.</p>


<p>Composé d'étudiants et d'enseignants de l'IUT, ce groupe travaille à ce projet de communication web avec un sens de l'organisation indispensable pour mettre en place ce type d'événement.</p>


<p>Les Freeze sont en effet des rassemblements de personnes organisés au moyen d'Internet.
Le participants ne se connaissent pas. Ils se réunissent. Arrêtent de bouger. Se dispersent.
La vidéo tournée est ensuite diffusée sur les plateformes Web du monde entier.</p>


<p><strong>Rendez-vous le samedi 4 juillet</strong></p>


<p>Tous se sont donnés rendez-vous le samedi 4 juillet 2009 sur le site des Eurockéennes.
Festivaliers, soyez dans la grande montée du chapiteau vers la grande scène à 18h30 précise.
De 18h30 à 18h34&nbsp;: ne bougez plus, vous serez filmés&nbsp;!</p>


<p><a href="http://eurockeennesfoulefreeze.blogspot.com" target="_blank" hreflang="fr">Le blog pour des infos au jour le jour</a><br />
<a href="http://www.facebook.com/profile.php?id=536165763#/event.php?eid=201711380441&amp;ref=ts" target="_blank" hreflang="fr">L'événement Facebook pour vous inscrire</a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=BLYAdsh4Vds:fpMEioPZWr8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=BLYAdsh4Vds:fpMEioPZWr8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=BLYAdsh4Vds:fpMEioPZWr8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=BLYAdsh4Vds:fpMEioPZWr8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=BLYAdsh4Vds:fpMEioPZWr8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=BLYAdsh4Vds:fpMEioPZWr8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=BLYAdsh4Vds:fpMEioPZWr8:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/BLYAdsh4Vds" height="1" width="1"/>]]></content:encoded>
</item>
<item rdf:about="http://www.nyrodev.info/index.php/2009/05/19/255-cyclorpiste-initiative-bisontine-pour-l-environnement">
  <title>Cyclorpiste, initiative bisontine pour l'environnement</title>
  <link>http://www.nyrodev.info/index.php/2009/05/19/255-cyclorpiste-initiative-bisontine-pour-l-environnement</link>
  <dc:date>2009-05-19T00:08:39+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Environnement</dc:subject>
  <description>Deux jeunes bisontins ont décidés de partir pédaler aux Amériques, en tandem.





Plus qu'une envie d'évasion, il s'agit en fait d'une initiative pour sensibiliser les gens au réchauffement climatique.


Nous partons en octobre 2009 traverser les Amériques en tandem d'Argentine au Canada.
Le...</description>
  <content:encoded><![CDATA[ <p>Deux jeunes bisontins ont décidés de partir pédaler aux Amériques, en tandem.</p>


<p><a href="http://www.cyclorpiste.com" target="_blank" hreflang="fr"><img src="/images/cyclorpiste.jpg" alt="" /></a></p>


<p>Plus qu'une envie d'évasion, il s'agit en fait d'une initiative pour sensibiliser les gens au réchauffement climatique.</p>


<blockquote><p>Nous partons en octobre 2009 traverser les Amériques en tandem d'Argentine au Canada.
Le périple représente environ 17000 Km et aura pour but de passer par des lieux où les émissions de CO2 sont soit critiques, soit exemplaires.
Nous sommes en effet en partenariat avec Action Carbone (association présidée par Yann Arthus-Bertrand).
Notre association "<a href="http://www.cyclorpiste.com" target="_blank" hreflang="fr">Cyclorpiste</a>" a mis en place un système de parrainage de nos Km où 1 Km est égal à 1 € dont 30 % est reversé à Action Carbone afin de réaliser des projets de compensation de CO2 et d'alternative carbone dans le monde entier.</p></blockquote>


<p>On ne peut que les encourager et les soutenir. Moralement déjà, mais si vous voulez faire plus, vous pouvez leur faire un don, ou bien les aider à acquérir <a href="http://www.cyclorpiste.com/rubrique,-gt-materiel-manquant,384993.html" target="_blank" hreflang="fr">leur matériel manquant</a>.</p>


<p>N'hésitez surtout pas à bloguer, linker, twitter, facebooker, et tout ce que vous voulez&nbsp;!</p>


<p>Ce genre d'initiative n'est utile que s'il on en parle et si l'on s'y intéresse.</p>


<p>On espère qu'il y aura un blog pour suivre leur périple quand ils seront là-bas&nbsp;!</p>


<p>Bon courage à eux deux en tout cas&nbsp;!</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=waAsQUnGeVc:itFTuF8_JME:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=waAsQUnGeVc:itFTuF8_JME:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=waAsQUnGeVc:itFTuF8_JME:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=waAsQUnGeVc:itFTuF8_JME:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=waAsQUnGeVc:itFTuF8_JME:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=waAsQUnGeVc:itFTuF8_JME:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=waAsQUnGeVc:itFTuF8_JME:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/waAsQUnGeVc" height="1" width="1"/>]]></content:encoded>
</item>
<item rdf:about="http://www.nyrodev.info/index.php/2009/04/10/253-playing-for-change-stand-by-me">
  <title>Playing for Change - Stand By Me</title>
  <link>http://www.nyrodev.info/index.php/2009/04/10/253-playing-for-change-stand-by-me</link>
  <dc:date>2009-04-10T09:34:31+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Favoris</dc:subject>
  <description>Vous l'avez sûrement déjà vu, mais je la trouve tellement bien, que je la poste : 


  Playing for Change pour en voir d'autres et avoir d'autres infos sur le collectif...</description>
  <content:encoded><![CDATA[ Vous l'avez s&ucirc;rement d&eacute;j&agrave; vu, mais je la trouve tellement bien, que je la poste :<br /><br /> <object height="385" width="480">
<param value="http://www.youtube.com/v/Us-TVg40ExM&amp;hl=fr&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" name="movie" />
<param value="true" name="allowFullScreen" />
<param value="always" name="allowscriptaccess" /><embed height="385" width="480" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://www.youtube.com/v/Us-TVg40ExM&amp;hl=fr&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6"></embed></object><br /> <br /> <a href="http://playingforchange.com">Playing for Change</a> pour en voir d'autres et avoir d'autres infos sur le collectif<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=7jmNkA73Jic:zFYpaKG8YrI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=7jmNkA73Jic:zFYpaKG8YrI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=7jmNkA73Jic:zFYpaKG8YrI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=7jmNkA73Jic:zFYpaKG8YrI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=7jmNkA73Jic:zFYpaKG8YrI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=7jmNkA73Jic:zFYpaKG8YrI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=7jmNkA73Jic:zFYpaKG8YrI:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/7jmNkA73Jic" height="1" width="1"/>]]></content:encoded>
</item>
<item rdf:about="http://www.nyrodev.info/index.php/2009/04/03/251-reinventer-le-calendrier">
  <title>Réinventer le calendrier</title>
  <link>http://www.nyrodev.info/index.php/2009/04/03/251-reinventer-le-calendrier</link>
  <dc:date>2009-04-03T17:35:31+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Ailleurs</dc:subject>
  <description>Nous l'avons tous déjà remarqué : calculer des dates au fil des ans et difficile. Il faut jouer avec les années bisextiles, les semaines de 7 jours, les mois avec des nombres de jours différents, etc...


Partant de cette observation, j'ai commencé à me renseigné sur la notion de temps,...</description>
  <content:encoded><![CDATA[ <p>Nous l'avons tous déjà remarqué&nbsp;: calculer des dates au fil des ans et difficile. Il faut jouer avec les années bisextiles, les semaines de 7 jours, les mois avec des nombres de jours différents, etc...</p>


<p>Partant de cette observation, j'ai commencé à me renseigné sur la notion de temps, et plus précisément de la mesure qui en a été fait par les hommes.</p>


<p>Dans la majeure partie du monde, nous utilisons le <a href="http://fr.wikipedia.org/wiki/Calendrier_gr%C3%A9gorien" target="_blank" hreflang="fr">calendrier grégorien</a>&nbsp;: mis en place en 1582, il se base sur le Soleil et la rotation de la Terre autour de celui-ci pour définir l'année et le jour. Dès cette époque, ce calendrier incluait le 29 février une année sur 4 pour obtenir une année de 365,25 jours.</p>


<p>Or, la Terre tourne autour du soleil en 365,24219 jours. Il y a donc un léger décalage, qui se rattrape aux années millésimes en n'ajoutant pas le 29 février.
Et comme les jours de la semaine ne tombent jamais en même temps d'une année sur l'autre, cela devient compliqué pour savoir quel jour était le 2 mars 1954&nbsp;?
De plus, ce calendrier est très marqué par la culture chrétienne.</p>


<p>Et puis on doit aussi éditer de nouveaux calendriers chaque année, repensé les jours fériés et ponts chaque année, etc...</p>


<p>Voilà pour ce qui est des problèmes que l'ont peu évoqué de notre calendrier actuel. Étudions brièvement les autres calendriers qui ont existé ou existent encore.</p>


<p>Le premier et sans doute le plus important à noter ici est le <a href="http://fr.wikipedia.org/wiki/Calendrier_Maya" target="_blank" hreflang="fr">calendrier Maya</a>. Ce calendrier découpe le temps qui passe en tout un tas d'unités selon la longueur du temps. Chose étonnante pour ce calendrier, il s'arrête le 21 décembre 2012. Différentes explications ont été envisagés pour cela, mais je n'entrerai pas dans les détails ici.</p>


<p>Un autre calendrier que l'on peut indiquer est le <a href="http://fr.wikipedia.org/wiki/Calendrier_r%C3%A9publicain" target="_blank" hreflang="fr">calendrier républicain</a> qui a été crée pendant la révolution française. Dans la même idée de se séparer des références à la royauté comme le coude, le pied, etc..., il a été mis en place pour être une unité de temps à base 10, avec des semaines de 10 jours, des mois de 30 jours, etc... Il n'a été utilisé que quelques années après la révolution, puis passé aux oubliettes, sans doute à cause des semaines trop longues...</p>


<p>Enfin, le <a href="http://fr.wikipedia.org/wiki/Calendrier_musulman" target="_blank" hreflang="fr">calendrier musulman</a> est basé sur la Lune est ses phases. C'est pourquoi il y a un décalage avec le calendrier grégorien.</p>


<p><strong>Oui, et alors ?</strong></p>


<p>Alors un jour, je me suis demandé s'il ne serait pas possible de créer un nouveau calendrier que l'on pourrait utiliser et mettre en place simplement.
Le but de calendrier et de cette nouvelle échelle de temps serait de proposer des jours fixes au fil des ans sans avoir à recourir à un jour supplémentaire. Ceci implique donc que la notion de jour devra être modifié pour fonctionner. Donc la notion d'heure et de minutes aussi.</p>


<p>Mais comme la seconde est l'unité scientifique de temps actuel, ce calendrier gardera la correspondance avec les secondes actuelles. Ce qui simplifiera d'ailleurs les changements informatiques, puisque le temps est exprimé en secondes, avant d'être converti dans une date lisible par l'être humain.
L'année sera aussi conservé&nbsp;: elle est déterminé par le temps que met la Terre pour tourner autour du soleil.
Les semaines devront toujours être de 7 jours pour ne pas changer encore plus les habitudes.</p>


<p><strong>Passons à la construction de ce calendrier.</strong></p>


<p><a href="http://ntime.nyro.com" target="_blank" hreflang="fr"><img src="/images/ntime.gif" alt="nTime" /></a></p>


<p>Pour les unités, j'ai simplement décider de prendre le nom actuelles et d'y préfixer la lettre n.</p>


<p>Nous avons 365 nJours à placer. On peut remarquer que 365 = 52 * 7 + 1.
On peut donc partir du principe que nous aurons 52 nSemaines + 1 nJour.</p>


<p>52 = 4 * 13&nbsp;: mettons donc en place 13 nMois de 4nSemaines chacun, soit 28 nJours.</p>


<p>De cette façon, le calendrier alors obtenu est très strict, et chaque nème nJour du mème nMois tombera toujours le xème même jour de la semaine.</p>


<p>Pour ce qui est des unités dans la journée, pourquoi ne pas en profiter pour découper la journée en 10 nHeures, et chaque nHeure en 100 nMinutes&nbsp;?
Je n'ai pas encore fais les calculs de conversion, car j'aurai besoin pour ça de connaître le nombre de secondes très précis qu'il y a dans une année, année au sens astronomique du terme. N'oublions pas que 1 seconde = 1 nSeconde.</p>


<p>Il est à noté que ce changement d'échelle pour les heures et minutes impliquera un léger problème pour la conversion des dates grégoriennes vers une date de ce nouveau calendrier. En effet, les minutes aux alentours de minuit seront parfois le jour équivalent précédent, parfois pas. Et cela dépendra de l'écart avec le soleil, et donc des années bissextiles... Encore une fois, lorsque des calculs plus poussés seront effectués, les réponses seront claires et simples.</p>


<p>Reste encore à définir la correspondance de ce calendrier et sa mise en place.
Comme le <a href="http://www.google.fr/search?hl=fr&amp;q=21+d%C3%A9cembre+2012&amp;btnG=Recherche+Google&amp;meta=&amp;aq=f&amp;oq=" target="_blank" hreflang="fr">21 décembre 2012</a> semblre être une date charnière pour tout un tas de raison, je propose d'utiliser cette date comme étant le 1er jour de ce nouveau calendrier. Ce qui impliquera que le 1er nJour de l'année sera aussi le début de l'hiver, au plus scientifiquement parlant, le jour du solstice d'hiver, date à partir de laquelle les jours commencent à rallonger (dans l'hémisphère nord).</p>


<p>J'ai mis en place une page web représentant <a href="http://ntime.nyro.com/" target="_blank" hreflang="fr">ce calendrier</a>, avec la correspondance des dates.</p>


<p>Cela implique d'autres choses assez sympathique pour les autres saisons&nbsp;:</p>
<ul>
<li>Le printemps serait le 7ème nJour du 4ème nMois, qui serait alors l'équivalent du dimanche.</li>
<li>L'été serait le 14ème nJour du 7ème nMois, toujours un dimanche.</li>
<li>L'automne serait le 21ème nJour du 10ème nMois, encore une fois un dimanche.</li>
</ul>

<p>Et si on regarde sur <a href="http://ntime.nyro.com/" target="_blank" hreflang="fr">le calendrier</a>, ces dates sont alignés dans l'oblique du calendrier.</p>


<p>Voilà ce qu'il en est pour la partie théorique de ce calendrier.
Vous aurez sûrement pensez que je suis complètement fou d'avoir penser ne serait-ce qu'un instant à une telle folie, mais pourquoi pas&nbsp;?</p>


<p>Après tout, la plupart des inventeurs étaient pris pour des fous à leur époques car il ne pensait pas avec le même <a href="http://fr.wikipedia.org/wiki/Paradigme" target="_blank" hreflang="fr">paradigme</a> que leurs semblables.</p>


<p>Et vous, que pensez-vous de cette idée&nbsp;?</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=YCAPioVOiBQ:KoLSQgK3gjc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=YCAPioVOiBQ:KoLSQgK3gjc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=YCAPioVOiBQ:KoLSQgK3gjc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=YCAPioVOiBQ:KoLSQgK3gjc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=YCAPioVOiBQ:KoLSQgK3gjc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=YCAPioVOiBQ:KoLSQgK3gjc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=YCAPioVOiBQ:KoLSQgK3gjc:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/YCAPioVOiBQ" height="1" width="1"/>]]></content:encoded>
</item>
<item rdf:about="http://www.nyrodev.info/index.php/2009/04/02/250-bilan-serveur-web-sur-debian-lenny">
  <title>Bilan (Serveur Web sur Debian Lenny)</title>
  <link>http://www.nyrodev.info/index.php/2009/04/02/250-bilan-serveur-web-sur-debian-lenny</link>
  <dc:date>2009-04-02T00:29:09+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Serveur</dc:subject>
  <description>Voilà, notre serveur est maintenant opérationnel en tout point.Encore faut-il ajouter des sites internet dessus, transférer les fichiers, faire pointer les DNS dessus, etc...Voici donc la marche à suivre pour ajouter un nouveau site sur le site :
I : Ajouter un nouvel...</description>
  <content:encoded><![CDATA[ Voil&agrave;, notre serveur est maintenant op&eacute;rationnel en tout point.<br /><br />Encore faut-il ajouter des sites internet dessus, transf&eacute;rer les fichiers, faire pointer les DNS dessus, etc...<br /><br />Voici donc la marche &agrave; suivre pour ajouter un nouveau site sur le site :<br />
<h2>I : Ajouter un nouvel utilisateur avec la commande :</h2>
<pre>useradd -m -g www-data DOMUSER</pre>
Comme nous avons cr&eacute;er le dossier <span style="font-style: italic;">www</span> dans <span style="font-style: italic;">/etc/skel</span>, la cr&eacute;ation de l'utilisateur va directement cr&eacute;e le <span style="font-style: italic;">/home</span> de ce dernier avec le dossier pour contenir les fichiers du futur site web.<br />
<h2>II : Ajouter le virtualhost dans Apache</h2>
M&ecirc;me si les DNS pointent vers notre serveur, Il n'y a encore rien qui indique que le serveur doit r&eacute;pondre &agrave; cette requ&ecirc;te ; pire encore, on ne sait pas quels fichiers desservir... C'est pourquoi on ajoute dans <span style="font-style: italic;">/etc/apache2/sites-available/domain.dtd</span> :<br />
<pre>&lt;VirtualHost *:80&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerName domain.dtd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerAlias www.domain.dtd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DocumentRoot /home/DOMUSER/www/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Directory /home/DOMUSER/www/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options -Indexes FollowSymLinks MultiViews<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride All<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ErrorLog /var/log/apache2/DOMUSER_error.log<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CustomLog /var/log/apache2/DOMUSER_access.log combined<br />&lt;/VirtualHost&gt;</pre>
Puis on active le site et recharges la configuration d'apache :<br />
<pre>a2ensite domain.dtd<br />/etc/init.d/apache2 force-reload</pre>
<h2>III : Ajouter la base de donn&eacute;es</h2>
Vous voudrez probablement utilisez une base de donn&eacute;es avec votre site. Il suffit d'ex&eacute;cuter les commandes suivantes :<br />
<pre>mysql --user=root --password=PASSROOT --execute=&quot;CREATE DATABASE DOMUSER;&quot;<br />mysql --user=root --password=PASSROOT --execute=&quot;GRANT ALL PRIVILEGES ON DOMUSER.* TO 'DOMUSER'@'localhost' IDENTIFIED BY 'PASSDOMUSER';&quot;<br />mysql --user=root --password=PASSROOT --execute=&quot;FLUSH PRIVILEGES;&quot;</pre>
De cette fa&ccedil;on, on cr&eacute;e la base de donn&eacute;e MySQL <span style="font-style: italic;">DOMUSER</span> et l'utilisateur du m&ecirc;me nom, qui a des droits uniquement sur cette base de donn&eacute;es.<br />
<h2>IV : Param&eacute;trer les DNS</h2>
Pour que tout fonctionne bien, les DNS du serveur doivent &ecirc;tre param&eacute;trer pour r&eacute;pondre aux requ&ecirc;tes DNS. Pour ce faire, nous allons simplement ajouter des lignes dans notre base de donn&eacute;es serverconf cr&eacute;e plus t&ocirc;t :<br />
<pre>mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO domain (name) VALUES ('domain.dtd');&quot;<br /><br /># $IDDB = id du domaine dans la table domain<br /># $SERVERNAME = nom unique de votre serveur (ksNNNNN.kimsufi.com par exemple)<br /># $SECONDDNS = adresse unique du second DNS (ns6.gandi.net par exemple)<br /># SERVERIP = adresse IP de votre serveur<br /><br />mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO domainDNS (domain_id, master) VALUES ($IDDB, 'NATIVE');&quot;<br />mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO record (domain_id, name, type, content) VALUES ($IDDB, 'domain.dtd', 'SOA', '$SERVERNAME. postmaster.domain.dtd `date +%Y%m%d`01 21600 3600 604800 86400');&quot;<br />mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO record (domain_id, name, type, content) VALUES ($IDDB, 'domain.dtd', 'NS', '$SERVERNAME');&quot;<br />mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO record (domain_id, name, type, content) VALUES ($IDDB, 'domain.dtd', 'NS', '$SECONDDNS');&quot;<br />mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO record (domain_id, name, type, content, prio) VALUES ($IDDB, 'domain.dtd', 'MX', 'mail.domain.dtd', 25);&quot;<br />mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO record (domain_id, name, type, content) VALUES ($IDDB, 'domain.dtd', 'A', '$SERVERIP');&quot;<br />mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO record (domain_id, name, type, content) VALUES ($IDDB, 'www.domain.dtd', 'A', '$SERVERIP');&quot;<br />mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO record (domain_id, name, type, content) VALUES ($IDDB, '*.domain.dtd', 'A', '$SERVERIP');&quot;</pre>
La derni&egrave;re ligne, avec *.domain.dtd, permet de mettre en place catch-all, ce qui veut dire que n'importe quel sous-domaine de domain.dtd sera pris en compte et envoy&eacute; vers le serveur. Ceci permet la mise en place beaucoup plus simple et plus rapide pour de nouveaux sous-domaines : il n'y a pas besoin de modifier les DNS !<br /><br />Et voil&agrave;, vous pouvez maintenant envoyer vos fichiers par ftp en utilisant par exemple l'adresse <span style="font-style: italic;">ftp.domain.dtd</span>.<br />
<h2>V : Ajouter des adresses email</h2>
Avec votre sites, vous voudrez sans doute cr&eacute;er des adresses emails. Tout se fait l&agrave; aussi en ajoutant des lignes dans la base de donn&eacute;es serverconf :<br />
<pre>mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO user (domain_id, user, password) VALUES ($IDDB, 'USER', MD5('PASS'));&quot;</pre>
On cr&eacute;&eacute; ici l'adresse <span style="font-style: italic;">USER@domain.dtd</span> avec le mot de passe <span style="font-style: italic;">PASS</span>.<br />
<h2>VI : Ajouter des alias d'adresse email</h2>
Mais parfois, les utilisateurs pr&eacute;f&egrave;rent garder leurs adresses email avec un alias. Rien de plus simple :
<pre>mysql --user=serverconfuser --password=serverconfpass --database=serverconf --execute=&quot;INSERT INTO alias (domain_id, source, destination) VALUES ($IDDB, 'USER', 'redir@email.com');&quot;</pre>
Vous devriez donc maintenant &ecirc;tre capable les &eacute;l&eacute;ments de base de votre serveur. Si vous avez quelques questions, utilisez les commentaires !<br /><br />Pour ma part, mon serveur tourne depuis plus d'un mois maintenant sans aucun probl&egrave;me particulier...<br /><br /><a href="http://nyrodev.info/index.php/2009/03/18/240-serveur-web-sur-debian-lenny-tutorial-complet">Retour au sommaire</a>.<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=Jb3YXeJSPyw:OQI9mjUGo6w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=Jb3YXeJSPyw:OQI9mjUGo6w:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=Jb3YXeJSPyw:OQI9mjUGo6w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=Jb3YXeJSPyw:OQI9mjUGo6w:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=Jb3YXeJSPyw:OQI9mjUGo6w:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=Jb3YXeJSPyw:OQI9mjUGo6w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=Jb3YXeJSPyw:OQI9mjUGo6w:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/Jb3YXeJSPyw" height="1" width="1"/>]]></content:encoded>
</item>
<item rdf:about="http://www.nyrodev.info/index.php/2009/03/30/249-autres-ntpdate-apticron-etc-serveur-web-sur-debian-lenny">
  <title>Autres : ntpdate, apticron, etc... (Serveur Web sur Debian Lenny)</title>
  <link>http://www.nyrodev.info/index.php/2009/03/30/249-autres-ntpdate-apticron-etc-serveur-web-sur-debian-lenny</link>
  <dc:date>2009-03-30T14:22:38+02:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Serveur</dc:subject>
  <description>Dans ce dernier billet, je vais recensé tout un tas de petites choses qui améliore la vie du serveur et de l'administrateur.Tout d'abord, je vous conseille de modifier les heures d'exécution des tâches cron dans /etc/crontab pour mettre des heures de creux de votre serveur...</description>
  <content:encoded><![CDATA[ Dans ce dernier billet, je vais recens&eacute; tout un tas de petites choses qui am&eacute;liore la vie du serveur et de l'administrateur.<br /><br />Tout d'abord, je vous conseille de modifier les heures d'ex&eacute;cution des t&acirc;ches <span style="font-style: italic;">cron</span> dans <span style="font-style: italic;">/etc/crontab</span> pour mettre des heures de creux de votre serveur ; pensez aux graphes de <span style="font-style: italic;">munin</span> pour d&eacute;finir ces heures !<br /><br />Ensuite, installons de nouveaux paquets :<br />
<pre>apt-get install screen ncftp ntpdate apticron</pre>
<span style="font-style: italic;">Screen</span> permet de lancer un nouveau shell dans un shell courant. Si votre connexion coupe ou si vous quittez le shell, il continue &agrave; s'ex&eacute;cuter sur le serveur : vous pouvez ensuite le reprendre. Tr&egrave;s utile pour des t&acirc;ches qui prennent &eacute;norm&eacute;ment de temps.<br /><span style="font-style: italic;">Ncftp</span> vous permettra d'effectuer des &eacute;changes FTP directement en ligne de commande, pour des op&eacute;rations de sauvegardes par exemple.<br /><br />A vous de consulter les documentations de ces paquets pour comprendre comment ils fonctionnent.<br /><br /><span style="font-style: italic;">Ntpdate</span> permet de mettre &agrave; l'heure votre serveur gr&acirc;ce au <a target="_blank" href="http://fr.wikipedia.org/wiki/Network_Time_Protocol">protocole ntp</a>. Nous allons donc cr&eacute;er une t&acirc;che cron pour le faire chaque jour dans <span style="font-style: italic;">/etc/cron.daily/ntpdate</span> :<br />
<pre>#!/bin/sh<br />ntpdate cdns.ovh.net</pre>
Puis les droits d'&eacute;x&eacute;cution :<br />
<pre>chmod +x /etc/cron.daily/ntpdate</pre>
<span style="font-style: italic;">Apticron</span> va regarder les mises &agrave; jour disponible sur votre serveur avec apt, et envoyer un email de rapport si des nouvelles sont disponibles. Il suffit de param&eacute;trer l'email d'envoi dans <span style="font-style: italic;">/etc/apticron/apticron.conf</span> :<br />
<pre>EMAIL=&quot;server@domain.tld&quot;</pre>
Nous avons mis en place <a href="http://nyrodev.info/index.php/2009/03/24/246-serveur-de-mail-postfix-dovecot-dspam-clamav-serveur-web-sur-debian-lenny">un serveur de mail avec un antispam</a>. Comme la plupart des antispam, DSpam a besoin d'entr&acirc;inement pour &ecirc;tre efficace. il existe des corpus d'email pour r&eacute;aliser cet entr&acirc;inement. Comme cela peut prendre longtemps, nous utilisons <span style="font-style: italic;">screen</span> :<br /><br />
<pre>screen<br /><br />cd /tmp<br />wget http://spamassassin.apache.org/publiccorpus/20050311_spam_2.tar.bz2<br />wget http://spamassassin.apache.org/publiccorpus/20030228_easy_ham_2.tar.bz2<br />tar xvfj 20050311_spam_2.tar.bz2<br />tar xvfj 20030228_easy_ham_2.tar.bz2<br />dspam_train dspam@test.com spam_2/ easy_ham_2/<br />rm -r 20030228_easy_ham_2.tar.bz2&nbsp; 20050311_spam_2.tar.bz2 easy_ham_2&nbsp; spam_2 /home/var/vmail/test.com/ /var/spool/dspam/data/* /home/var/log/dovecot-deliver.log<br />touch /home/var/log/dovecot-deliver.log<br />chmod 777 /home/var/log/dovecot-deliver.log<br />exit</pre>
Enfin, lorsque nous allons ajouter un site, la 1&egrave;re &eacute;tape sera d'ajouter un utilisateur syst&egrave;me sur le serveur. Il est possible de g&eacute;rer les fichiers et dossier cr&eacute;er dans le <span style="font-style: italic;">/home</span> d'un nouvel utilisateur en les cr&eacute;ant dans <span style="font-style: italic;">/etc/skel</span>. Pour nous, supprimons tous les fichiers et dossiers qui y sont, puis ajoutons le dossier <span style="font-style: italic;">www</span> :<br />
<pre>rm /etc/skel/.* /etc/skel/*<br />mkdir /etc/skel/www</pre>
<br />Et voil&agrave; notre serveur totalement termin&eacute; et op&eacute;rationnel. Place maintenant &agrave; <a href="http://nyrodev.info/index.php/2009/04/02/250-bilan-serveur-web-sur-debian-lenny">un bilan de tout ce que nous avons</a>.<br /><br /><a href="http://nyrodev.info/index.php/2009/03/18/240-serveur-web-sur-debian-lenny-tutorial-complet">Retour au sommaire</a>.<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=6ma_IGafIQI:4G3cbgdJLNI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=6ma_IGafIQI:4G3cbgdJLNI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=6ma_IGafIQI:4G3cbgdJLNI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=6ma_IGafIQI:4G3cbgdJLNI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=6ma_IGafIQI:4G3cbgdJLNI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=6ma_IGafIQI:4G3cbgdJLNI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=6ma_IGafIQI:4G3cbgdJLNI:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/6ma_IGafIQI" height="1" width="1"/>]]></content:encoded>
</item>
<item rdf:about="http://www.nyrodev.info/index.php/2009/03/28/248-monitoring-monit-munin-serveur-web-sur-debian-lenny">
  <title>Monitoring : monit, munin (Serveur Web sur Debian Lenny)</title>
  <link>http://www.nyrodev.info/index.php/2009/03/28/248-monitoring-monit-munin-serveur-web-sur-debian-lenny</link>
  <dc:date>2009-03-28T14:14:38+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Serveur</dc:subject>
  <description>Notre serveur fonctionne bien, avec quelques bans pour différents services. Mais qu'arrive-t-il si un démon tombe en panne ? Et puis comment connait-on la charge du serveur ?Monit va répondre à la première question en vérifiant à intervalle...</description>
  <content:encoded><![CDATA[ Notre serveur fonctionne bien, avec quelques bans pour diff&eacute;rents services. Mais qu'arrive-t-il si un d&eacute;mon tombe en panne ? Et puis comment connait-on la charge du serveur ?<br /><span style="font-style: italic;">Monit</span> va r&eacute;pondre &agrave; la premi&egrave;re question en v&eacute;rifiant &agrave; intervalle r&eacute;gulier tous les services et les red&eacute;marrer si besoin.<br /><span style="font-style: italic;">Munin</span> quant &agrave; lui va cr&eacute;er de nombreux graphes sur le serveur pour que vous puissiez vous rendre compte de la charge qu'il encaisse.<br />
<h2>Munin</h2>
Commen&ccedil;ons par activer le server-status d'apache, quis era utilis&eacute; par munin pour calcul&eacute; des stats de processus et requ&ecirc;tes d'apache. Ajouter le fichier <span style="font-style: italic;">/etc/apache2/conf.d/server-status.conf</span> :<br />ExtendedStatus On<br />
<pre>&lt;Location /server-status&gt;<br />&nbsp;&nbsp;&nbsp; SetHandler server-status<br /><br />&nbsp;&nbsp;&nbsp; Order Deny,Allow<br />&nbsp;&nbsp;&nbsp; Deny from all<br />&nbsp;&nbsp;&nbsp; Allow from 127.0.0.1<br />&lt;/Location&gt;</pre>
Puis on peut pass&eacute; &agrave; l'installation (les diff&eacute;rents paquets perl sont utilis&eacute; par munin) :<br />
<pre>apt-get install munin munin-node libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl liburi-perl libwww-perl</pre>
On ajoute quelques plugins &agrave; munin qui ne le sont pas par d&eacute;faut, en appliquant les bons droits :<br />
<pre>ln -s /usr/share/munin/plugins/netstat /etc/munin/plugins/netstat<br />ln -s /usr/share/munin/plugins/postfix_mailstats /etc/munin/plugins/postfix_mailstats<br />ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses<br />ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes<br />ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume<br />ln -s /usr/share/munin/plugins/uptime /etc/munin/plugins/uptime<br />chown munin:munin /home/var/www/munin</pre>
Avec Lenny, le plugin netstat de munin &agrave; un probl&egrave;me de droit. Pour le r&eacute;soudre, on le param&egrave;tre pour qu'il s'&eacute;x&eacute;cute en root avec :<br />
<pre>echo &quot;[netstat]&quot; &gt; /etc/munin/plugin-conf.d/netstat<br />echo &quot;user root&quot; &gt;&gt; /etc/munin/plugin-conf.d/netstat</pre>
Avec la configuration actuelle, munin place ces fichiers dans <span style="font-style: italic;">/home/var/www/munin</span>. Avec notre configuration actuelle d'apache, on ne pourrait pas y acc&eacute;der.<br />Pour plus de simplicit&eacute;, on va cr&eacute;er un sous-domaine en acc&egrave;s s&eacute;curis&eacute; pour voir ses stats. On commence par cr&eacute;er le certificat :<br />
<pre>openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/munin.crt -keyout /etc/ssl/private/munin.key</pre>
On cr&eacute;e ensuite le .htpasswd pour le prot&eacute;ger :<br />
<pre>htpasswd -c /home/var/www/munin/.htpasswd user</pre>
Puis on configure apache pour ce sous-domaine dans <span style="font-style: italic;">/etc/apache/sites-available/munin.domain.tld</span> :<br />
<pre>&lt;VirtualHost *:443&gt;<br />&nbsp;&nbsp;&nbsp; ServerName munin.domain.tld<br /><br />&nbsp;&nbsp;&nbsp; # Activation du support SSL<br />&nbsp;&nbsp;&nbsp; GnuTLSEnable on<br />&nbsp;&nbsp;&nbsp; GnuTLSPriorities NORMAL<br />&nbsp;&nbsp;&nbsp; GnuTLSCertificateFile /etc/ssl/certs/munin.crt<br />&nbsp;&nbsp;&nbsp; GnuTLSKeyFile /etc/ssl/private/munin.key<br /><br />&nbsp;&nbsp;&nbsp; &lt;location /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AuthUserFile /home/var/www/munin/.htpasswd<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AuthGroupFile /dev/null<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AuthName &quot;Restricted Area&quot;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AuthType Basic<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;Limit GET POST&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; require valid-user<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/Limit&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/Location&gt;<br /><br />&nbsp;&nbsp;&nbsp; DocumentRoot /home/var/www/munin<br />&nbsp;&nbsp;&nbsp; ErrorLog /var/log/apache2/munin_error.log<br />&nbsp;&nbsp;&nbsp; CustomLog /var/log/apache2/munin_access.log combined<br />&lt;/VirtualHost&gt;</pre>
On active ce site pour apache, et on red&eacute;marre les services :<br />
<pre>a2ensite munin.domain.tld<br />/etc/init.d/munin-node force-reload<br />/etc/init.d/apache2 force-reload</pre>
<h2>Monit</h2>
Monit va nous permettre de v&eacute;rifier l'&eacute;tat des d&eacute;mons et d'effectuer les op&eacute;rations n&eacute;cessaires &agrave; son bon fonctionnement, tout en alertant l'administrateur. Dans la plupart des cas, un simple red&eacute;marrage sera effectu&eacute; et tout ira bien.<br /><br />On l'installe simplement :<br />
<pre>apt-get install monit</pre>
On conserve la configuration par d&eacute;faut :<br />
<pre>mv /etc/monit/monitrc /etc/monit/monitrc_default</pre>
Pui on configure dans <span style="font-style: italic;">/etc/monit/monitrc</span> :<br />
<pre>set daemon&nbsp; 600<br />set logfile syslog facility log_daemon<br />set mailserver localhost<br />set mail-format {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from: me@domain.tld<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subject: [monit] $SERVICE: $EVENT<br />}<br />set eventqueue basedir /home/var/monit slots 100<br />set alert server@domain.tld<br />set httpd port 9999 and<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow user:pass<br /><br />include /etc/monit/conf.d/*</pre>
On le configure avec une interface web accessible sur le port 9999 avec comme nom d'utilisateur <span style="font-style: italic;">user</span> et mot de passe <span style="font-style: italic;">pass</span>. S'il s'av&egrave;re que l'envoi de mail &eacute;choue, monit conservera les messages dans <span style="font-style: italic;">/home/var/monit</span> pour les renvoyer d&egrave;s que possible. La fr&eacute;quence des tests est toutes les 10 minutes.<br /><br />Puis, nous allons devoir configurer chacun des d&eacute;mons que l'on veut monitorer. La plupart du temps il s'agira d'un pid et des commandes de d&eacute;marrage et d'arr&ecirc;t du d&eacute;mon. Si le pid change entre 2 tests, monit enverra simplement un email. <br />
<pre>mkdir /etc/monit/conf.d</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/apache</span> :<br />
<pre>check process apache with pidfile /var/run/apache2.pid<br />&nbsp;&nbsp;&nbsp; group www<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/apache2 start&quot;<br />&nbsp;&nbsp;&nbsp; stop program&nbsp; = &quot;/etc/init.d/apache2 stop&quot;<br />&nbsp;&nbsp;&nbsp; if cpu &gt; 60% for 2 cycles then alert<br />&nbsp;&nbsp;&nbsp; if cpu &gt; 90% for 5 cycles then restart<br />&nbsp;&nbsp;&nbsp; if totalmem &gt; 500 MB for 5 cycles then restart<br />&nbsp;&nbsp;&nbsp; if children &gt; 250 then restart<br />&nbsp;&nbsp;&nbsp; if loadavg(5min) greater than 10 for 8 cycles then stop<br />&nbsp;&nbsp;&nbsp; if 3 restarts within 5 cycles then timeout<br /></pre>
Le fichier de config le plus compliqu&eacute;, il permet de red&eacute;marrer <span style="font-style: italic;">apache</span> s'il prend trop de place en m&eacute;moire ou s'il a trop de processus enfant.<br /><br />Dans <span style="font-style: italic;">/etc/monit/conf.d/clamav</span> :<br />
<pre>check process clamav with pidfile /var/run/clamav/clamd.pid<br />&nbsp;&nbsp;&nbsp; group virus<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/clamav-daemon start&quot;<br />&nbsp;&nbsp;&nbsp; stop&nbsp; program = &quot;/etc/init.d/clamav-daemon stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed host localhost port 3310 then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout<br /><br />check process freshclam with pidfile /var/run/clamav/freshclam.pid<br />&nbsp;&nbsp;&nbsp; group virus<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/clamav-freshclam start&quot;<br />&nbsp;&nbsp;&nbsp; stop&nbsp; program = &quot;/etc/init.d/clamav-freshclam stop&quot;<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout<br /></pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/cron</span> :<br />
<pre>check process cron with pidfile /var/run/crond.pid<br />&nbsp;&nbsp;&nbsp; group system<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/cron start&quot;<br />&nbsp;&nbsp;&nbsp; stop&nbsp; program = &quot;/etc/init.d/cron stop&quot;<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/dovecot</span> :<br />
<pre>check process dovecot with pidfile /var/run/dovecot/master.pid<br />&nbsp;&nbsp;&nbsp; group mail<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/dovecot start&quot;<br />&nbsp;&nbsp;&nbsp; stop&nbsp; program = &quot;/etc/init.d/dovecot stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed host localhost port 993 type tcpssl sslauto protocol imap then restart<br />&nbsp;&nbsp;&nbsp; if failed host localhost port 995 type tcpssl sslauto protocol pop then restart<br />&nbsp;&nbsp;&nbsp; if failed host localhost port 143 protocol imap then restart<br />&nbsp;&nbsp;&nbsp; if failed host localhost port 110 protocol pop then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/dspam</span> : <br />
<pre>check process dspam with pidfile /var/run/dspam/dspam.pid<br />&nbsp;&nbsp;&nbsp; group mail<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/dspam start&quot;<br />&nbsp;&nbsp;&nbsp; stop program = &quot;/etc/init.d/dspam stop&quot;<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/fail2ban</span> : <br />
<pre>check process fail2ban with pidfile /var/run/fail2ban/fail2ban.pid<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/fail2ban start&quot;<br />&nbsp;&nbsp;&nbsp; stop&nbsp; program = &quot;/etc/init.d/fail2ban stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed unixsocket /var/run/fail2ban/fail2ban.sock then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/munin</span> : <br />
<pre>check process munin-node with pidfile /var/run/munin/munin-node.pid<br />&nbsp;&nbsp;&nbsp; group system<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/munin-node start&quot;<br />&nbsp;&nbsp;&nbsp; stop program&nbsp; = &quot;/etc/init.d/munin-node stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed host localhost port 4949 then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/mysql</span> : <br />
<pre>check process mysql with pidfile /var/run/mysqld/mysqld.pid<br />&nbsp;&nbsp;&nbsp; group database<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/mysql start&quot;<br />&nbsp;&nbsp;&nbsp; stop program = &quot;/etc/init.d/mysql stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed unix &quot;/var/run/mysqld/mysqld.sock&quot; then restart<br />&nbsp;&nbsp;&nbsp; if failed host 127.0.0.1 port 3306 then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/postfix</span> : <br />
<pre>check process postfix with pidfile /var/spool/postfix/pid/master.pid<br />&nbsp;&nbsp;&nbsp; group mail<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/postfix start&quot;<br />&nbsp;&nbsp;&nbsp; stop&nbsp; program = &quot;/etc/init.d/postfix stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed port 25 protocol smtp for 2 times within 2 cycles then restart<br />&nbsp;&nbsp;&nbsp; if failed port 465 protocol smtp for 2 times within 2 cycles then restart<br />&nbsp;&nbsp;&nbsp; if failed port 10026 protocol smtp for 2 times within 2 cycles then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/powerdns</span> :<br />
<pre>check process powerdns with pidfile /var/run/pdns.pid<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/pdns start&quot;<br />&nbsp;&nbsp;&nbsp; stop program = &quot;/etc/init.d/pdns stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed host localhost port 53 then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout<br /><br />check process powerdns-recursor with pidfile /var/run/pdns_recursor.pid<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/pdns-recursor start&quot;<br />&nbsp;&nbsp;&nbsp; stop program = &quot;/etc/init.d/pdns-recursor stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed host localhost port 54 then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout<br /></pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/rsyslog</span> : <br />
<pre>check process rsyslogd with pidfile /var/run/rsyslogd.pid<br />&nbsp;&nbsp;&nbsp; group system<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/rsyslog start&quot;<br />&nbsp;&nbsp;&nbsp; stop&nbsp; program = &quot;/etc/init.d/rsyslog stop&quot;<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/sshd</span> : <br />
<pre>check process sshd with pidfile /var/run/sshd.pid<br />&nbsp;&nbsp;&nbsp; start program&nbsp; &quot;/etc/init.d/ssh start&quot;<br />&nbsp;&nbsp;&nbsp; stop program&nbsp; &quot;/etc/init.d/ssh stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed port 22 protocol ssh then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Dans <span style="font-style: italic;">/etc/monit/conf.d/vsftpd</span> : <br />
<pre>check process vsftpd with pidfile /var/run/vsftpd/vsftpd.pid<br />&nbsp;&nbsp;&nbsp; start program = &quot;/etc/init.d/vsftpd start&quot;<br />&nbsp;&nbsp;&nbsp; stop program&nbsp; = &quot;/etc/init.d/vsftpd stop&quot;<br />&nbsp;&nbsp;&nbsp; if failed port 21 protocol ftp then restart<br />&nbsp;&nbsp;&nbsp; if 5 restarts within 5 cycles then timeout</pre>
Enfin, nous devons activ&eacute; monit dans <span style="font-style: italic;">/etc/default/monit</span> :<br />
<pre>startup=1<br />CHECK_INTERVALS=600</pre>
Et on red&eacute;marre le d&eacute;mon pour que le monitoring d&eacute;marre :<br />
<pre>/etc/init.d/monit force-reload</pre>
Le serveur est tout &agrave; fait op&eacute;rationnel maintenant ! Il ne reste plus qu'un <a href="http://nyrodev.info/index.php/2009/03/30/249-autres-ntpdate-apticron-etc-serveur-web-sur-debian-lenny">tout petit peu d'&eacute;l&eacute;ments</a> &agrave; mettre en place.<br /><br /><a href="http://nyrodev.info/index.php/2009/03/18/240-serveur-web-sur-debian-lenny-tutorial-complet">Retour au sommaire</a>.<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=EwHa_GBPZRI:HgoOUXMTKG0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=EwHa_GBPZRI:HgoOUXMTKG0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=EwHa_GBPZRI:HgoOUXMTKG0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=EwHa_GBPZRI:HgoOUXMTKG0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=EwHa_GBPZRI:HgoOUXMTKG0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=EwHa_GBPZRI:HgoOUXMTKG0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=EwHa_GBPZRI:HgoOUXMTKG0:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/EwHa_GBPZRI" height="1" width="1"/>]]></content:encoded>
</item>
<item rdf:about="http://www.nyrodev.info/index.php/2009/03/26/247-securite-du-serveur-fail2ban-serveur-web-sur-debian-lenny">
  <title>Sécurité du serveur : fail2ban (Serveur Web sur Debian Lenny)</title>
  <link>http://www.nyrodev.info/index.php/2009/03/26/247-securite-du-serveur-fail2ban-serveur-web-sur-debian-lenny</link>
  <dc:date>2009-03-26T14:00:42+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Serveur</dc:subject>
  <description>fail2ban est utilisé pour lire les log de tous les autres démons et bannir des adresses IP s'ils ont échoués à plusieurs reprises de se connecter.On installe simplement par apt :
apt-get install fail2ban
Puis on configure fail2ban dans /etc/fail2ban/jail.conf...</description>
  <content:encoded><![CDATA[ <span style="font-style: italic;">fail2ban</span> est utilis&eacute; pour lire les log de tous les autres d&eacute;mons et bannir des adresses IP s'ils ont &eacute;chou&eacute;s &agrave; plusieurs reprises de se connecter.<br />On installe simplement par apt :<br />
<pre>apt-get install fail2ban</pre>
Puis on configure fail2ban dans /etc/fail2ban/jail.conf<br />
<pre>bantime&nbsp; = 600<br />destemail = server@domain.tld<br />action = %(action_mwl)s<br /><br />[postfix]<br />action&nbsp;&nbsp; = %(action_)s<br />bantime&nbsp; = 3600</pre>
Ensuite, activez les d&eacute;mons que vous d&eacute;sirez. Dans notre installation, il s'agit de pam-generic, vsftpd, postfix, apache, apache-noscripts, apache-overflows et sasl : il suffit de mettre <span style="font-style: italic;">enabled</span> &agrave; <span style="font-style: italic;">true</span> dans les sections concern&eacute;s.<br /><br />De cette fa&ccedil;on, on recevra un email lorsque fail2ban fera une action quelconque. Il a &eacute;t&eacute; d&eacute;sactiv&eacute; pour postfix car les emails &eacute;taient tr&egrave;s tr&egrave;s nombreux !!!<br />En plus, je me suis aper&ccedil;u que de nombreux spammeurs essayaient d'envoyer des emails &agrave; des adresses inexistantes. Par d&eacute;faut, le filtre de fail2ban ne banni que les emails rejet&eacute; par le serveur (erreur 554) et pas les emails rejet&eacute; pour une adresse inexistante. c'est pour cela qu'on &eacute;dite le fichier <span style="font-style: italic;">/etc/fail2ban/filter.d/postfix.conf</span> pour simplement supprim&eacute; le 4 de <span style="font-weight: bold;">failregex = reject: RCPT from (.*)\[&lt;HOST&gt;\]: 55</span> pour bannir n'importe quelle erreur. Enfin, on red&eacute;marre le service.<br /><br />Et pour finir, on recharge le d&eacute;mons pour prendre en compte nos changements :<br />
<pre>/etc/init.d/fail2ban force-reload</pre>
Maintenant que notre serveur fonctionne avec les d&eacute;mons que l'on veut, si <a href="http://nyrodev.info/index.php/2009/03/28/248-monitoring-monit-munin-serveur-web-sur-debian-lenny">on monitorait pour avoir quelques stats et outils</a> ?<br /><br /><a href="http://nyrodev.info/index.php/2009/03/18/240-serveur-web-sur-debian-lenny-tutorial-complet">Retour au sommaire</a>.<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=d5Ybz3tIVDQ:hgyiwWrAO0k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=d5Ybz3tIVDQ:hgyiwWrAO0k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=d5Ybz3tIVDQ:hgyiwWrAO0k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=d5Ybz3tIVDQ:hgyiwWrAO0k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=d5Ybz3tIVDQ:hgyiwWrAO0k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=d5Ybz3tIVDQ:hgyiwWrAO0k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=d5Ybz3tIVDQ:hgyiwWrAO0k:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/d5Ybz3tIVDQ" height="1" width="1"/>]]></content:encoded>
</item>
<item rdf:about="http://www.nyrodev.info/index.php/2009/03/24/246-serveur-de-mail-postfix-dovecot-dspam-clamav-serveur-web-sur-debian-lenny">
  <title>Serveur de mail : postfix, dovecot, dspam, clamav (Serveur Web sur Debian Lenny)</title>
  <link>http://www.nyrodev.info/index.php/2009/03/24/246-serveur-de-mail-postfix-dovecot-dspam-clamav-serveur-web-sur-debian-lenny</link>
  <dc:date>2009-03-24T16:48:06+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Serveur</dc:subject>
  <description>Cette partie sera la plus grande car la plus complexe. Et on ne se facilite pas la tâche puisque le serveur de mail incluras un antispam avec vérifications des éventuels virus contenu dans les emails. L'antispam pourra aussi apprendre de ses erreurs lorsque l'utilisateur final...</description>
  <content:encoded><![CDATA[ Cette partie sera la plus grande car la plus complexe. Et on ne se facilite pas la t&acirc;che puisque le serveur de mail incluras un antispam avec v&eacute;rifications des &eacute;ventuels virus contenu dans les emails. L'antispam pourra aussi apprendre de ses erreurs lorsque l'utilisateur final d&eacute;placera simplement ses emails dans les dossiers IMAP.<br /><br />Bref, commen&ccedil;ons par supprimer l'&eacute;ventuel <span style="font-style: italic;">Exim 4</span> qui serait pr&eacute;sent sur le serveur :<br />
<pre>apt-get remove exim4 exim4-base exim4-config exim4-daemon-light</pre>
Puis on installe tous les paquets d'un coup :<br />
<pre>apt-get install mysql-server postfix postfix-mysql dovecot-imapd dovecot-pop3d dspam dspam-doc libdspam7-drv-mysql bzip2 clamav-daemon make</pre>
Durant l'installation, <span style="font-style: italic;">Postfix</span> demande le type de configuration, qui sera naturellement &quot;Sites Internet&quot;. Puis le nom du serveur ; entrez simplement le nom de domaine principal de votre serveur comme <span style="font-style: italic;">domain.tld</span>.<br /><br />Puis <span style="font-style: italic;">libdspam7-drv-mysql</span> (le driver de stockage des informations de DSpam sur MySQL) vous demandera s'il faut cr&eacute;er la base de donn&eacute;es. R&eacute;pondez simplement oui. Le mot de passe MySQL root est demand&eacute; ensuite. Enfin, un mot de passe pour cette base de donn&eacute;e est demand&eacute;. Laissez simplement le champ vide pour qu'il en choisisse un pour vous.<br /><br />Commen&ccedil;ons par cr&eacute;er les tables contenant les informations des emails et alias des sites web avec <a href="http://nyrodev.info/dl/postfix.sql">le fichier de cr&eacute;ation</a>. Ces tables sont naturellement dans la m&ecirc;me base de donn&eacute;e que <a href="http://nyrodev.info/index.php/2009/03/22/245-serveur-dns-powerdns-serveur-web-sur-debian-lenny">powerdns</a>, puisqu'un email devra forc&eacute;ment &ecirc;tre rattach&eacute; &agrave; un nom de domaine g&eacute;r&eacute; par le serveur DNS.<br />
<pre>mysql -h localhost -u root --password=MySQL serverconf &lt; /PATH/TO/postfix.sql</pre>
Postfix a besoin de savoir comment s'adresser &agrave; MySQL pour v&eacute;rifier les mots de passe ou trouver les alias. Ces fichiers seront cr&eacute;&eacute; dans <span style="font-style: italic;">/etc/postfix/mysql</span> :<br />
<pre>mkdir&nbsp; /etc/postfix/mysql</pre>
Puis on cr&eacute;&eacute; les fichiers :<br /><span style="font-style: italic;">/etc/postfix/mysql/email2email.cf</span> est utilis&eacute; pour conna&icirc;tre les adresse email existantes :<br />
<pre>hosts = 127.0.0.1<br />dbname = serverconf<br />user = serverconfuser<br />password = serverconfpass<br />query = SELECT CONCAT(user.user, '@', domain.name) AS email FROM domain,user WHERE user.domain_id=domain.id AND CONCAT(user.user, '@', domain.name)='%s'</pre>
<span style="font-style: italic;">/etc/postfix/mysql/virtual-alias-maps.cf</span> est utilis&eacute; pour conna&icirc;tre les alias (les redirection d'emails) :<br />
<pre>hosts = 127.0.0.1<br />dbname = serverconf<br />user = serverconfuser<br />password = serverconfpass<br />query = SELECT destination FROM alias, domain WHERE alias.domain_id=domain.id AND CONCAT(alias.source, '@', domain.name)='%s'</pre>
<span style="font-style: italic;">/etc/postfix/mysql/virtual-mailbox-domains.cf </span>est utilis&eacute; pour conna&icirc;tre les domaines g&eacute;r&eacute;s :<br />
<pre>hosts = 127.0.0.1<br />dbname = serverconf<br />user = serverconfuser<br />password = serverconfpass<br />query = SELECT 1 FROM domain WHERE name='%s'</pre>
Enfin <span style="font-style: italic;">/etc/postfix/mysql/virtual-mailbox-maps.cf</span> est utilis&eacute; pour v&eacute;rifier si une adresse email est bien g&eacute;r&eacute; par le serveur :<br />
<pre>hosts = 127.0.0.1<br />dbname = serverconf<br />user = serverconfuser<br />password = serverconfpass<br />query = SELECT 1 FROM user,domain WHERE user.domain_id=domain.id AND CONCAT(user.user, '@', domain.name)='%s'</pre>
<br />Enfin, il faut param&eacute;trer postfix pour r&eacute;agir sur diff&eacute;rents ports dans le fichier <span style="font-style: italic;">/etc/postfix/master.cf</span> :<br />Supprimer la ligne commen&ccedil;ant par smtp et remplacer l&agrave; par :<br />
<pre>smtp inet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smtpd -o content_filter=lmtp:unix:/var/spool/postfix/var/run/dspam.sock<br />smtps inet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smtpd -o content_filter=lmtp:unix:/var/spool/postfix/var/run/dspam.sock</pre>
Afin que les courriers arrivant par smtp ou smtps soit filtrer par l'antispam.<br /><br />Remplacer la ligne commen&ccedil;ant par ltmp par<br />
<pre>lmtp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unix&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lmtp</pre>
Pour qu'il ne soit pas chroot&eacute;.<br /><br />Enfin ajouter :<br />
<pre>127.0.0.1:10026 inet&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smtpd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o content_filter=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o smtpd_helo_restrictions=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o smtpd_client_restrictions=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o smtpd_sender_restrictions=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o smtpd_recipient_restrictions=permit_mynetworks,reject<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o mynetworks=127.0.0.0/8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o smtpd_authorized_xforward_hosts=127.0.0.0/8<br /><br />dovecot&nbsp;&nbsp; unix&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pipe<br />&nbsp;&nbsp;&nbsp; flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}</pre>
Le port 10026 est ici ouvert uniquement en local pour permettre &agrave; DSpam de renvoyer les emails non v&eacute;rol&eacute;s. Enfin la ligne avec dovecot permet d'utiliser ce dernier pour remettre l'email &agrave; l'utilisateur.<br /><br />Tous nos emails vont &ecirc;tre cr&eacute;e par un m&ecirc;me utilisateur serveur, nomm&eacute; vmail. Il faut donc le cr&eacute;er :<br />
<pre>groupadd -g 5000 vmail<br />useradd -g vmail -u 5000 vmail -d /home/var/vmail -m<br />rm -rf /home/var/vmail/* /home/var/vmail/.*</pre>
Passons &agrave; la configuration de postfix :<br />
<pre>postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql/virtual-mailbox-domains.cf<br />postconf -e virtual_uid_maps=static:5000<br />postconf -e virtual_gid_maps=static:5000<br />postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql/virtual-mailbox-maps.cf<br />postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql/virtual-alias-maps.cf,mysql:/etc/postfix/mysql/email2email.cf<br />postconf -e virtual_transport=dovecot<br />postconf -e dovecot_destination_recipient_limit=1<br />postconf -e smtpd_sasl_type=dovecot<br />postconf -e smtpd_sasl_path=private/auth<br />postconf -e smtpd_sasl_auth_enable=yes<br />postconf -e smtpd_use_tls=yes<br />postconf -e mydestination=localhost<br />postconf -e smtpd_tls_auth_only=yes<br />postconf -e maximal_queue_lifetime=3d<br />postconf -e smtpd_recipient_restrictions=permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject_unauth_destination</pre>
Avec <span style="font-style: italic;">smtpd_use_tls</span>, seules les connexions s&eacute;curis&eacute;s seront autoris&eacute; pour smtp. La derni&egrave;re ligne est sans doute la plus important et la plus difficile &agrave; comprendre.<br />Elle permet de d&eacute;finir qui a le droit d'envoyer des emails. Param&egrave;tre tr&egrave;s important pour que son serveur ne soit pas utilisable comme open relay et utilis&eacute; par les spammeurs...<br />On autorise les envoies du r&eacute;seau (donc le serveur lui m&ecirc;me), vers les adresses locales existantes (indispensable pour que les FAI puissent vous envoyer des emails par exemple), avec une connexion authentifi&eacute; (donc les utilisateurs de votre serveur qui ont une adresse email sur votre serveur), et on rejette le reste.<br /><br />Un petit peu d'autorisations sur ces fichiers est n&eacute;cessaire pour vmail :<br />
<pre>chgrp postfix /etc/postfix/mysql/*.cf<br />chmod u=rw,g=r,o= /etc/postfix/mysql/*.cf</pre>
<br />Comme indiqu&eacute; en haut de page, les utilsateurs vont pouvoir entrain&eacute; DSpam par de simples d&eacute;placement de mails en IMAP. Dovecot ne permet pas de mettre en place ceci directement, mais <a href="http://johannes.sipsolutions.net/Projects/dovecot-antispam">ce plugin</a> le permet. T&eacute;l&eacute;charger le &agrave; <a href="http://git.sipsolutions.net/?p=dovecot-antispam.git;a=snapshot;h=HEAD;sf=tgz">cette adresse</a> et envoyer le sur votre serveur (vous avez un serveur FTP maintenant, non ?) et placer le dans <span style="font-style: italic;">/usr/src</span>. Puis d&eacute;gzippage :<br />
<pre>cd /usr/src<br />gzip -d dovecot-antispam-HEAD.tar.gz<br />tar xvf dovecot-antispam-HEAD.tar<br />cd dovecot-antispam</pre>
Pour pouvoir compiler, ce plugin a besoin des sources de dovecot :<br />
<pre>apt-get source dovecot<br />tar xfv dovecot_1.0.15.orig.tar.gz</pre>
<br />Puis on param&egrave;tre ce plugin :<br />
<pre>cp defconfig .config</pre>
Et on &eacute;dite <span style="font-style: italic;">.config</span><br />
<pre>BACKEND=dspam-exec<br />DOVECOT=./dovecot-1.0.15</pre>
Le backend sp&eacute;cifie de quelle fa&ccedil;on le plugin va r&eacute;apprendre &agrave; DSpam les emails d&eacute;plac&eacute;s. Apr&egrave;s quelques tests, l'appel direct &agrave; DSpam s'est av&eacute;r&eacute; le plus efficace. On peut donc compiler :<br />
<pre>make install</pre>
Le fichier <span style="font-style: italic;">/usr/lib/dovecot/modules/imap/lib90_antispam_plugin.so</span> devrait &ecirc;tre cr&eacute;&eacute;.<br /><br />Et on peut passer &agrave; la configuration de dovecot dans <span style="font-style: italic;">/etc/dovecot/dovecot.conf</span> :<br />
<pre>protocols = imap imaps pop3 pop3s managesieve<br />mail_location = maildir:/home/var/vmail/%d/%n/Maildir:INBOX=/home/var/vmail/%d/%n/Maildir/:INDEX=/home/var/vmail/%d/%n/Maildir/tmp/index</pre>
Dans la partie <span style="font-style: italic;">protocol imap</span> :<br />
<pre>&nbsp; mail_plugins = antispam<br />&nbsp; imap_client_workarounds = outlook-idle delay-newmail</pre>
Dans la partie <span style="font-style: italic;">protocol pop3</span> :<br />
<pre>&nbsp; pop3_client_workarounds = outlook-no-nuls</pre>
Dans la partie <span style="font-style: italic;">protocol lda</span> :<br style="font-style: italic;" />
<pre>&nbsp;&nbsp; postmaster_address = postmaster@domain.tld<br />&nbsp;&nbsp; auth_socket_path = /var/run/dovecot/auth-master<br />&nbsp;&nbsp; mail_plugins = cmusieve<br />&nbsp;&nbsp; log_path = /home/var/log/dovecot-deliver.log<br />&nbsp;&nbsp; global_script_path = /home/var/vmail/globalsieverc</pre>
Dans la partie <span style="font-style: italic;">auth default</span> :<br />
<pre>&nbsp;mechanisms = plain login<br />&nbsp;# Commenter la partie <span style="font-style: italic;">passdb pam<br /></span>&nbsp;# D&eacute;commenter la partie <span style="font-style: italic;">passdb sql</span> avec comme param&egrave;tres :<br />&nbsp;&nbsp;&nbsp; args = /etc/dovecot/dovecot-sql.conf<br />&nbsp;Dans la partie <span style="font-style: italic;">userdb static</span> :<br />&nbsp;&nbsp;&nbsp; args = uid=5000 gid=5000 home=/home/var/vmail/%d/%n allow_all_users=yes<br />&nbsp;Dans la partie <span style="font-style: italic;">socket listen</span> :<br />&nbsp;&nbsp;&nbsp; master {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = /var/run/dovecot/auth-master<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode = 0600<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user = vmail<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; client {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = /var/spool/postfix/private/auth<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode = 0660<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user = postfix<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; group = postfix<br />&nbsp;&nbsp;&nbsp; }</pre>
<br />Dans la partie <span style="font-style: italic;">plugin</span>, nous allons param&egrave;trer le plugin pr&eacute;c&eacute;demment compil&eacute; :
<pre> &nbsp;##################################<br />&nbsp; # Antispam plugin<br /><br />&nbsp; # mail signature (used with any backend requiring a signature)<br />&nbsp; antispam_signature = X-DSPAM-Signature<br /><br />&nbsp; # semicolon-separated list of Trash folders (default unset i.e. none)<br />&nbsp; # antispam_trash =<br />&nbsp; antispam_trash = trash;Trash;Deleted Items;&amp;AMk-l&amp;AOk-ments supprim&amp;AOk-s<br /><br />&nbsp; # semicolon-separated list of spam folders<br />&nbsp; antispam_spam = Spam;spam;Junk;junk;Courrier ind&amp;AOk-sirable<br /><br />&nbsp; # semicolon-separated list of unsure folders (default unset i.e. none)<br />&nbsp; # antispam_unsure =</pre>
<pre>&nbsp; # Whether to allow APPENDing to SPAM folders or not. Must be set to<br />&nbsp; # &quot;yes&quot; (case insensitive) to be activated. Before activating, please<br />&nbsp; # read the discussion below.<br />&nbsp; # antispam_allow_append_to_spam = no<br /><br />&nbsp; antispam_dspam_binary = /usr/bin/dspam<br />&nbsp; antispam_dspam_args = --user;root;--source=error<br /></pre>
Le protocole managesieve permettra &agrave; l'utilsateur de cr&eacute;er des filtres c&ocirc;t&eacute;s serveur, pour par exemple pour cr&eacute;er une r&eacute;ponse automatique.<br /><br />Il faut cr&eacute;er le fichier de log :<br />
<pre>touch /home/var/log/dovecot-deliver.log<br />chmod 777 /home/var/log/dovecot-deliver.log</pre>
Donner les droits &agrave; vmail sur la config de dovecot :<br />
<pre>chown vmail:vmail /etc/dovecot/dovecot.conf<br />chmod g+r /etc/dovecot/dovecot.conf</pre>
Enfin, il faut param&eacute;trer dovecot pour se connecter &agrave; MySQL et v&eacute;rifier les mot de passes dans <span style="font-style: italic;">/etc/dovecot/dovecot-sql.conf</span> :<br />
<pre>driver = mysql<br />connect = host=127.0.0.1 dbname=serverconf user=serverconfuser password=serverconfpass<br />default_pass_scheme = PLAIN-MD5<br />password_query = SELECT CONCAT(user.user, '@', domain.name) AS user,user.password FROM user,domain WHERE user.domain_id=domain.id AND CONCAT(user.user, '@', domain.name)='%u'</pre>
Comme le serveur utilise des protocoles s&eacute;curis&eacute;s, nous devons cr&eacute;&eacute;s des certificats :<br />
<pre>openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem<br /># Country Name (2 letter code) [AU]:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; FR<br /># State or Province Name (full name) [Some-State]:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; France<br /># Locality Name (eg, city) []:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Besancon<br /># Organization Name (eg, company) [Internet Widgits Pty Ltd]:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Company Name<br /># Organizational Unit Name (eg, section) []:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; .<br /># Common Name (eg, YOUR name) []:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; domain.tld<br /># Email Address []:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; certs@domain.tld<br />openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem</pre>
Et de donner les droits n&eacute;cessaires :<br />
<pre>chmod o= /etc/ssl/private/dovecot.pem<br />chmod o= /etc/ssl/private/postfix.pem</pre>
Pour enfin les utilis&eacute; dans postfix :<br />
<pre>postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem<br />postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem</pre>
S'en est termin&eacute; avec postfix et dovecot, passons &agrave; l'antispam :<br />Il faut d'abord cr&eacute;er son dossier et donner les droits n&eacute;cessaires dans le pool de postfix :<br />
<pre>mkdir -p /var/spool/postfix/var/run/<br />chown dspam:dspam /var/spool/postfix/var/run/</pre>
Et le param&eacute;trer dans <span style="font-style: italic;">/etc/dspam/dspam.conf</span> :<br />
<pre>StorageDriver /usr/lib/dspam/libmysql_drv.so<br />#TrustedDeliveryAgent &quot;/usr/lib/dovecot/deliver -d %u&quot;<br />DeliveryHost 127.0.0.1<br />DeliveryPort 10026<br />DeliveryIdent localhost<br />DeliveryProto SMTP<br />QuarantineAgent &quot;/usr/lib/dovecot/deliver -d %u -m Spam&quot;<br />Trust vmail<br />SupressWebStats on<br />Preference &quot;spamAction=quarantine&quot;<br />Preference &quot;signatureLocation=headers&quot;&nbsp; # 'message' or 'headers'<br />#Preference &quot;showFactors=on&quot;<br />Opt out<br />TrackSources spam virus<br />ClamAVPort&nbsp;&nbsp;&nbsp;&nbsp; 3310<br />ClamAVHost&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1<br />ClamAVResponse reject<br />ServerPID /var/run/dspam/dspam.pid<br />ServerMode auto<br />ServerPass.Relay1 &quot;secret&quot;<br />ServerParameters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;--deliver=innocent -d %u&quot;<br />ServerIdent &quot;localhost.localdomain&quot;<br />ServerDomainSocketPath &quot;/var/spool/postfix/var/run/dspam.sock&quot;<br />ClientHost /var/spool/postfix/var/run/dspam.sock<br />ClientIdent &quot;secret@Relay1&quot;</pre>
Lorsque des spams seront d&eacute;tect&eacute;s, ils seront directement envoyer dans le dossier Spam de l'utilsataeur. Si un virus est d&eacute;tect&eacute;, on rejette l'email.<br /><br />Dans <span style="font-style: italic;">/etc/dspam/dspam.d/mysql.conf</span> :<br />
<pre>MySQLUIDInSignature&nbsp;&nbsp;&nbsp; on</pre>
<pre>chown -R dspam:dspam /etc/dspam/*<br />echo &quot;dspam:shared:*&quot; &gt; /var/spool/dspam/group</pre>
Dans <span style="font-style: italic;">/etc/default/dspam</span> :<br />
<pre>Start=yes</pre>
Enfin, nous devons autoris&eacute; DSpam &agrave; d&eacute;livrer les messages directement via deliver de dovecot. Mais il doit avoir le bon userid lorsqu'il ex&eacute;cute ce programme. C'est pourquoi nous utilisons et setuid sur ce dernier :<br />
<pre>chmod +s /usr/lib/dovecot/deliver</pre>
<br />Il ne reste plus qu'&agrave; configurer l'antivirus, ClamAv. tr&egrave;s rapidement, on &eacute;dite <span style="font-style: italic;">/etc/clamav/clamd.conf</span><br />
<pre>#Comment localSocket and Add<br />TCPAddr 127.0.0.1<br />TCPSocket 3310</pre>
Enfin, on red&eacute;marre tous les services param&eacute;tr&eacute;s : <br />
<pre>/etc/init.d/clamav-daemon force-reload<br />/etc/init.d/dspam force-reload<br />/etc/init.d/dovecot force-reload<br />/etc/init.d/postfix force-reload<br /></pre>
Notre serveur de mail complet est maintenant termin&eacute;. Ouf, c'&eacute;tait le plus gros point de notre serveur. Il est d'ailleurs maintenant tout &agrave; fait op&eacute;rationnel, mais on va encore y ajouter quelques &eacute;l&eacute;ments pour <a href="http://nyrodev.info/index.php/2009/03/26/247-securite-du-serveur-fail2ban-serveur-web-sur-debian-lenny">la s&eacute;curit&eacute;</a> et <a href="http://nyrodev.info/index.php/2009/03/28/248-monitoring-monit-munin-serveur-web-sur-debian-lenny">le monitoring</a>.<br /><br /><a href="http://nyrodev.info/index.php/2009/03/18/240-serveur-web-sur-debian-lenny-tutorial-complet">Retour au sommaire</a>.<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=KIFEy2HsF3Q:CS22WPv4gwQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=KIFEy2HsF3Q:CS22WPv4gwQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=KIFEy2HsF3Q:CS22WPv4gwQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=KIFEy2HsF3Q:CS22WPv4gwQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=KIFEy2HsF3Q:CS22WPv4gwQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=KIFEy2HsF3Q:CS22WPv4gwQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=KIFEy2HsF3Q:CS22WPv4gwQ:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/KIFEy2HsF3Q" height="1" width="1"/>]]></content:encoded>
</item>
<item rdf:about="http://www.nyrodev.info/index.php/2009/03/22/245-serveur-dns-powerdns-serveur-web-sur-debian-lenny">
  <title>Serveur DNS : PowerDNS (Serveur Web sur Debian Lenny)</title>
  <link>http://www.nyrodev.info/index.php/2009/03/22/245-serveur-dns-powerdns-serveur-web-sur-debian-lenny</link>
  <dc:date>2009-03-22T16:30:13+01:00</dc:date>
  <dc:language>fr</dc:language>
  <dc:creator>Nyro</dc:creator>
  <dc:subject>Serveur</dc:subject>
  <description>J'ai choisi PowerDNS plutôt que Bind parce que sa configuration peut se faire de différentes façons. J'ai choisi d'utiliser MySQL. On désinstalle donc bind avant d'installer PowerDNS :
apt-get remove bind9apt-get install pdns-server pdns-backend-mysql pdns-recursor...</description>
  <content:encoded><![CDATA[ J'ai choisi PowerDNS plut&ocirc;t que Bind parce que sa configuration peut se faire de diff&eacute;rentes fa&ccedil;ons. J'ai choisi d'utiliser MySQL. On d&eacute;sinstalle donc <span style="font-style: italic;">bind</span> avant d'installer PowerDNS :<br />
<pre>apt-get remove bind9<br />apt-get install pdns-server pdns-backend-mysql pdns-recursor</pre>
PowerDNS est d&eacute;coup&eacute; de deux fa&ccedil;on diff&eacute;rentes et ind&eacute;pendantes : le serveur qui permet de d&eacute;finir vos zones (vos sites, sous-domaines, etc...) et le recursor qui permet d'effectuer des requ&ecirc;tes DNS vers l'ext&eacute;rieur.<br /><br />Configurons d'abord le serveur DNS dans <span style="font-style: italic;">/etc/powerdns/pdns.conf</span> :<br />
<pre>allow-axfr-ips=217.70.177.40<br />allow-recursion=127.0.0.1<br />disable-axfr=no<br />cache-ttl=300<br />launch=gmysql<br />logging-facility=0<br />out-of-zone-additional-processing=yes<br />query-cache-ttl=300<br />recursive-cache-ttl=150<br />recursor=127.0.0.1:54</pre>
Les param&egrave;tres avec axfr sont utilis&eacute; pour autoriser les transfert de zones vers l'IP 217.70.177.40, qui n'est autre que ns6.gandi.net, le DNS secondaire des domaines que j'utilise. De cette fa&ccedil;on, lorsque je fait une mise &agrave; jour de mes DNS sur mon serveur, Gandi v&eacute;rifie r&eacute;guli&egrave;re la version de mon param&egrave;trage et met &agrave; jour ses DNS si besoin.<br />On param&egrave;tre bien s&ucirc;r du cache pour ne pas rappeler tout le temps les m&ecirc;mes requ&ecirc;tes MySQL. On s&eacute;lectionne le <span style="font-style: italic;">backend</span> mysql avec le param&egrave;tre <span style="font-style: italic;">launch</span>, active les log en pr&eacute;cisant le <span style="font-style: italic;">logging-facility</span> &agrave; 0 (cf plus bas) et en indiquant l'adresse du <span style="font-style: italic;">recursor</span>. <span style="font-style: italic;">Recursor</span> que l'on configure tout de suite dans <span style="font-style: italic;">/etc/powerdns/recursor.conf</span> :<br />
<pre>allow-from=127.0.0.1<br />local-address=127.0.0.1<br />local-port=54<br />logging-facility=1</pre>
On le lance sur le port 54, en n'autorisant les requ&ecirc;tes que locales et en logant les fichiers via <span style="font-style: italic;">logging-facility</span> 1.<br /><br />Mais qu'est ce que ces <span style="font-style: italic;">logging-facility</span> ? Il s'agit en fait d'utiliser le d&eacute;mon <span style="font-style: italic;">rsyslog</span> fourni avec Debian pour logg&eacute; les fichiers. Les logs seront en fait cr&eacute;e sous le nom <span style="font-style: italic;">localN</span>, o&ugrave; N est le num&eacute;ro que nous avons indiqu&eacute;s. Il faut donc param&eacute;trer <span style="font-style: italic;">rsyslog</span> pour g&eacute;rer ces fichiers :<br />
<pre>echo &quot;local0.*&nbsp; /var/log/pdns.log&quot; &gt; /etc/rsyslog.d/pdns.conf<br />echo &quot;local1.*&nbsp; /var/log/pdns-recursor.log&quot; &gt;&gt; /etc/rsyslog.d/pdns.conf</pre>
Dans le m&ecirc;me temps, param&eacute;trons ces log pour ne pas qu'ils fassent une taille &eacute;norme via le proccessus des logrotate. Pour ce fait, ajouter simplement dans <span style="font-style: italic;">/etc/logrotate.d/rsyslog</span> les lignes suivantes, juste apr&egrave;s <span style="font-style: italic;">/var/log/messages</span><br />
<pre>/var/log/pdns.log<br />/var/log/pdns-recursor.log</pre>
On recharge <span style="font-style: italic;">rsyslog</span> pour &ecirc;tre tranquil avec les logs :<br />
<pre>/etc/init.d/rsyslog force-reload</pre>
Mais maintenant, il reste encore &agrave; param&eacute;trer le backend MySQL pour ex&eacute;cuter les requ&ecirc;tes correctes sur le serveur. Et pour faire &ccedil;a, il faut qu'une base de donn&eacute;es soit pr&ecirc;te pour contenir toutes les informations n&eacute;cessaires. Appelons (et cr&eacute;ons) cette base serverconf :<br />
<pre>mysqladmin -p create serverconf</pre>
Comme le sch&eacute;ma de la base est assez simple, je ne vais pas le d&eacute;crire ici. Vous pouvez simplement t&eacute;l&eacute;charger <a href="http://nyrodev.info/dl/powerdns.sql">le fichier de cr&eacute;ation</a>.<br />Ce fichier cr&eacute;&eacute; aussi l'utilisateur associ&eacute; et son mot de passe. A vous de modifier... Ex&eacute;cutons simplement ce script :<br />
<pre>mysql -h localhost -u root --password=MySQL serverconf &lt; /PATH/TO/powerdns.sql</pre>
Enfin, &eacute;ditons le fichier <span style="font-style: italic;">/etc/powerdns/pdns.d/pdns.local</span> pour param&eacute;trer la connexion et toutes les requ&ecirc;tes du serveur DNS :<br />
<pre>gmysql-socket=/var/run/mysqld/mysqld.sock<br />gmysql-dbname=serverconf<br />gmysql-user=serverconfuser<br />gmysql-password=serverconfpass<br /><br />gmysql-basic-query=select content,ttl,prio,type,domain_id,name from record where type='%s' and name='%s'<br />gmysql-id-query=select content,ttl,prio,type,domain_id,name from record where type='%s' and name='%s' and domain_id=%d<br />gmysql-any-query=select content,ttl,prio,type,domain_id,name from record where name='%s'<br />gmysql-any-id-query=select content,ttl,prio,type,domain_id,name from record where name='%s' and domain_id=%d<br />gmysql-list-query=select content,ttl,prio,type,domain_id,name from record where domain_id=%d<br />gmysql-master-zone-query=select master from domainDNS where name='%s' and type='SLAVE'<br />gmysql-info-zone-query=select domain_id AS id,name,master,last_check,notified_serial,type from domainDNS where name='%s'<br />gmysql-info-all-slaves-query=select domain_id AS id,name,master,last_check,type from domainDNS where type='SLAVE'<br />gmysql-supermaster-query=select account from supermaster where ip='%s' and nameserver='%s'<br />gmysql-insert-slave-query=insert into domainDNS (type,name,master,account) values('SLAVE','%s','%s','%s')<br />gmysql-insert-record-query=insert into record (content,ttl,prio,type,domain_id,name) values ('%s',%d,%d,'%s',%d,'%s')<br />gmysql-update-serial-query=update domainDNS set notified_serial=%d where id=%d<br />gmysql-update-lastcheck-query=update domainDNS set notified_serial=%d where id=%d<br />gmysql-info-all-master-query=select domain_id,name,master,last_check,notified_serial,type from domainDNS where type='MASTER'<br />gmysql-delete-zone-query=delete from record where domain_id=%d<br />gmysql-wildcard-query=select content,ttl,prio,type,domain_id,name from record where type='%s' and name like '%s'<br />gmysql-wildcard-id-query=select content,ttl,prio,type,domain_id,name from record where type='%s' and name like '%s' and domain_id=%d<br />gmysql-wildcard-any-query=select content,ttl,prio,type,domain_id,name from record where name like '%s'<br />gmysql-wildcard-any-id-query=select content,ttl,prio,type,domain_id,name from record where name like '%s' and domain_id=%d</pre>
Et on finit par recharger les deux d&eacute;mons :<br />
<pre>/etc/init.d/pdns-recursor force-reload<br />/etc/init.d/pdns force-reload</pre>
<br />Pr&ecirc;t pour passer au plus gros, <a href="http://nyrodev.info/index.php/2009/03/24/246-serveur-de-mail-postfix-dovecot-dspam-clamav-serveur-web-sur-debian-lenny">le serveur de mail</a> ?<br /><br /><a href="http://nyrodev.info/index.php/2009/03/18/240-serveur-web-sur-debian-lenny-tutorial-complet">Retour au sommaire</a>.<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Nyroblog?a=pw3Xuz0eHYg:eM_duFJYrls:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=pw3Xuz0eHYg:eM_duFJYrls:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=pw3Xuz0eHYg:eM_duFJYrls:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=pw3Xuz0eHYg:eM_duFJYrls:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=pw3Xuz0eHYg:eM_duFJYrls:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Nyroblog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Nyroblog?a=pw3Xuz0eHYg:eM_duFJYrls:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Nyroblog?i=pw3Xuz0eHYg:eM_duFJYrls:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Nyroblog/~4/pw3Xuz0eHYg" height="1" width="1"/>]]></content:encoded>
</item>

</rdf:RDF>
