<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>e-grisel.net</title>
	<atom:link href="http://www.e-grisel.net/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.e-grisel.net/wp</link>
	<description>Photographies, informatique et bien d&#039;autres choses...</description>
	<lastBuildDate>Thu, 19 Jan 2012 21:31:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>10 ans du HOG Geneva Chapter West Switzerland</title>
		<link>http://www.e-grisel.net/wp/2011/09/08/10-ans-du-hog-geneva-chapter-west-switzerland/</link>
		<comments>http://www.e-grisel.net/wp/2011/09/08/10-ans-du-hog-geneva-chapter-west-switzerland/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 18:15:22 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Photographie]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=230</guid>
		<description><![CDATA[Cette année, le HOG (Harley Owner Group) Geneva Chapter West Switzerland fêtait ses 10 ans d&#8217;existence !! De magnifiques Harleys, une bonne ambiance et un temps agréable, il n&#8217;en fallait pas plus pour que la journée soit exceptionnelle Retrouvez toutes mes photos sur GaleriesPhotos.ch.]]></description>
			<content:encoded><![CDATA[<p>Cette année, le HOG (Harley Owner Group) Geneva Chapter West Switzerland fêtait ses 10 ans d&#8217;existence !!</p>
<p>De magnifiques Harleys, une bonne ambiance et un temps agréable, il n&#8217;en fallait pas plus pour que la journée soit exceptionnelle <img src='http://www.e-grisel.net/wp/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a href="http://www.e-grisel.net/wp/wp-content/Harley_1.jpg"><img class="alignnone size-medium wp-image-237" title="Harley" src="http://www.e-grisel.net/wp/wp-content/Harley_1-300x152.jpg" alt="" width="300" height="152" /></a></p>
<p><a href="http://www.e-grisel.net/wp/wp-content/Harley_2.jpg"><img class="alignnone size-medium wp-image-235" title="Harley" src="http://www.e-grisel.net/wp/wp-content/Harley_2-300x118.jpg" alt="" width="300" height="118" /></a></p>
<p>Retrouvez toutes mes photos sur <a title="GaleriesPhotos.ch - 10 ans du HOG Geneva Chapter West Switzerland" href="http://www.galeriesphotos.ch/galeries/31-1-10_ans_du_hog_geneva_chapter_west_switzerland" target="_blank">GaleriesPhotos.ch</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2011/09/08/10-ans-du-hog-geneva-chapter-west-switzerland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autocross de Novalles 2011</title>
		<link>http://www.e-grisel.net/wp/2011/08/23/autocross-de-novalles-2011/</link>
		<comments>http://www.e-grisel.net/wp/2011/08/23/autocross-de-novalles-2011/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 18:48:33 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Photographie]]></category>
		<category><![CDATA[autocross]]></category>
		<category><![CDATA[novalles]]></category>
		<category><![CDATA[photographies]]></category>
		<category><![CDATA[photos]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=225</guid>
		<description><![CDATA[Ça y est, pour la 13ème année consécutive l&#8217;autocross de Novalles s&#8217;est déroulé ce samedi 20 août 2011 entre Novalles et Fontaines. Encore une fois le succès fut au rendez-vous, avec une grande quantité de véhicules de tous genres pour un spectacle magnifique, aussi bien pour les petits que pour les grands ! Si vous [...]]]></description>
			<content:encoded><![CDATA[<p>Ça y est, pour la 13ème année consécutive l&#8217;autocross de Novalles s&#8217;est déroulé ce samedi 20 août 2011 entre Novalles et Fontaines. Encore une fois le succès fut au rendez-vous, avec une grande quantité de véhicules de tous genres pour un spectacle magnifique, aussi bien pour les petits que pour les grands !<span id="more-225"></span></p>
<p>Si vous n&#8217;avez pas eu la chance de pouvoir assister ou participer à cette magnifique journée ou si vous y étiez et que vous voulez revivre les meilleurs moments de la journée, les photos officielles sont déjà disponibles sur <a title="GaleriesPhotos.ch - Autocross de Novalles 2011" href="http://www.galeriesphotos.ch/galeries/30-1-autocross_de_novalles_2011" target="_blank">GaleriesPhotos.ch</a> !</p>
<p>Et pour la première année, un DVD de ces mêmes photos est aussi disponible ! Pour le commander, rendez-vous sur mon site : <a title="Etienne Grisel, photographe - DVD des photos de l'Autocross de Novalles, édition 2011" href="http://www.etiennegrisel.ch/2011/08/21/autocross-de-novalles-2011/" target="_blank">Etienne Grisel, photographe</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2011/08/23/autocross-de-novalles-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serveur dédié &#8211; Apache, PHP, MySQL et phpMyAdmin</title>
		<link>http://www.e-grisel.net/wp/2010/10/26/serveur-dedie-apache-php-mysql-et-phpmyadmin-3/</link>
		<comments>http://www.e-grisel.net/wp/2010/10/26/serveur-dedie-apache-php-mysql-et-phpmyadmin-3/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 15:30:04 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Serveur dédié]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=162</guid>
		<description><![CDATA[Maintenant que la base de notre serveur est en place, nous allons nous atteler à la mise en place des outils nécessaire au bon fonctionnement de nos sites web. Pour ce faire, nous allons utiliser les programmes suivants : le serveur web Apache le serveur de bases de données MySQL le moteur de scripts PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Maintenant que la base de notre serveur est en place, nous allons  nous atteler à la mise en place des outils nécessaire au bon  fonctionnement de nos sites web.</p>
<p>Pour ce faire, nous allons utiliser les programmes suivants :</p>
<ul>
<li>le serveur web Apache</li>
<li>le serveur de bases de données MySQL</li>
<li>le moteur de scripts PHP</li>
<li>et le gestionnaire de bases de données MySQL, phpMyAdmin</li>
</ul>
<p>L&#8217;installation des 3 premiers programmes peut se faire en une seule ligne de commande :<br />
<code>[root@serveur:~]# apt-get install apache2 mysql-server libapache2-mod-php5 php5-curl php5-gd php5-mysql</code></p>
<p>Il ne nous reste plus qu&#8217;à configurer ces programmes.</p>
<p><span id="more-162"></span></p>
<h2>Configuration d&#8217;Apache</h2>
<p>La configuration par défaut proposée par Debian est presque parfaite  et il n&#8217;y a à mon avis qu&#8217;une seule modification à effectuer dans le  fichier <em>/etc/apache2/conf.d/security</em> :<br />
<code>ServerSignature Off</code>afin d&#8217;éviter que les versions d&#8217;Apache, de PHP et de Linux ne soient affichées sur les pages d&#8217;erreurs de nos sites.</p>
<p>Avant de nous attaquer à la configuration des hôtes virtuels pour  chaque site que nous hébergerons, modifions légèrement la page d&#8217;accueil  de l&#8217;hôte par défaut, qui sera affichée pour chaque site redirigé sur  notre serveur dont nous n&#8217;aurons pas encore défini l&#8217;hôte virtuel. Ainsi  nous pourrons avoir un message d&#8217;erreur personnalisé au lieu du simple  &laquo;&nbsp;It works!&nbsp;&raquo; affiché par défaut.</p>
<p>Commençons par renommer le fichier <em>/var/www/index.html</em> en <em>/var/www/index.<strong>php</strong></em> :<br />
<code>[root@serveur:~]# mv /var/www/index.html /var/www/index.php</code> puis on l&#8217;édite :<br />
<code>[root@serveur:~]# vim /var/www/index.php</code> et on remplace le contenu actuel par le suivant :<br />
<code>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;&lt;?php echo $_SERVER['HTTP_HOST']; ?&gt;&lt;/title&gt;<br />
&lt;style&gt;<br />
body {text-align: center;}<br />
h1 {margin-top: 20%;}<br />
&lt;/style&gt;<br />
&lt;/head/&gt;<br />
&lt;body&gt;<br />
&lt;h1&gt;&lt;?php echo $_SERVER['HTTP_HOST']; ?&gt;&lt;/h1&gt;<br />
&lt;p&gt;est actuellement en cours de construction.&lt;/p&gt;<br />
&lt;p&gt;Merci de revenir plus tard.&lt;/p&gt;<br />
&lt;/body&gt;&lt;/html&gt;</code> Ainsi la page par défaut d&#8217;un site pas encore configuré affichera un message du type <em>&laquo;&nbsp;www.mondomaine.ch est actuellement en cours de construction. Merci de revenir plus tard.&nbsp;&raquo;</em> où <em>www.mondomaine.ch</em> est automatiquement remplacé par le nom du site demandé.</p>
<p>Ceci étant fait, passons à la configuration des hôtes virtuels de  chacun des sites que nous hébergeons. Créons tout d&#8217;abord le répertoire  qui contiendra tous nos sites ainsi qu&#8217;un sous-répertoire par site :<br />
<code>[root@serveur:~]# mkdir /home/www<br />
[root@serveur:~]# mkdir /home/www/mondomaine.ch<br />
[root@serveur:~]# mkdir /home/www/monautresite.ch<br />
[root@serveur:~]# chown -R www-data:www-data /home/www/</code> La dernière commande permet de définir le propriétaire de tous ces dossiers à <em>www-data</em>, qui est l&#8217;utilisateur Apache, afin qu&#8217;il puisse accéder sans problème à nos dossiers.</p>
<p>Comme vous pouvez le voir, j&#8217;ai créé ces dossiers dans le répertoire <em>/home</em>, car comme le montre la commande <em>df -h</em>, le répertoire <em>/home</em> est sur une partition séparée et bien plus grande que le reste, ainsi  nous ne risquons pas de surcharger notre partition de base avec nos  sites :<br />
<code>[root@serveur:~]# df -h<br />
/dev/sda1             5.0G  826M  4.0G  18% /<br />
tmpfs                 984M     0  984M   0% /lib/init/rw<br />
udev                   10M  2.7M  7.4M  27% /dev<br />
tmpfs                 984M     0  984M   0% /dev/shm<br />
/dev/sda2             226G  209M  215G   1% /home</code></p>
<p>Dirigeons-nous maintenant dans le répertoire <em>/etc/apache2/sites-available/</em> pour y configurer notre premier hôte virtuel. Nous créons le fichier de configuration au nom de notre site :<br />
<code>[root@serveur:/etc/apache2/sites-available]# vim mondomaine.ch</code> et ajoutons-y les instructions suivantes :<br />
<code>&lt;VirtualHost *:80&gt;<br />
ServerName www.mondomaine.ch<br />
ServerAlias mondomaine.ch *.mondomaine.ch<br />
ServerAdmin hostmaster@mondomaine.ch<br />
DocumentRoot /home/www/mondomaine.ch<br />
&lt;Directory /&gt;<br />
Options FollowSymLinks<br />
AllowOverride None<br />
&lt;/Directory&gt;<br />
&lt;Directory /home/www/mondomaine.ch&gt;<br />
Options -Indexes FollowSymLinks MultiViews<br />
AllowOverride All<br />
Order allow,deny<br />
allow from all<br />
&lt;/Directory&gt;<br />
ErrorLog /var/log/apache2/mondomaine.ch.error.log<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
CustomLog /var/log/apache2/mondomaine.ch.access.log combined<br />
&lt;/VirtualHost&gt;</code> sans oublier de rendre disponible le site et de recharger Apache pour qu&#8217;il prenne en compte notre configuration :<br />
<code>[root@serveur:/etc/apache2/sites-available]# a2ensite mondomaine.ch<br />
[root@serveur:~]# /etc/init.d/apache2 reload</code> et le tour est joué, il ne nous reste plus qu&#8217;à mettre les fichiers de notre site dans son répertoire <em>/home/www/mondomaine.ch</em> et notre site sera disponible pour toute la planète !</p>
<h2>Configuration de MySQL</h2>
<p>La configuration par défaut de MySQL est très bien, si ce n&#8217;est que nos bases de données sont sauvegardées dans le répertoire <em>/var/lib/mysql/</em> et comme nous l&#8217;avons vu plus tôt, la partition racine n&#8217;est pas bien  grande, aussi si nous ne voulons pas nous retrouver coincé par manque de  place et avoir un message du style <em>&laquo;&nbsp;/etc/init.d/mysql: ERROR: The partition with /var/lib/mysql is too full!&nbsp;&raquo;</em> lors d&#8217;un redémarrage de MySQL, nous avons intérêts à déplacer nos bases de données sur la partition <em>/home</em>.</p>
<p>On arrête le serveur MySQL :<br />
<code>[root@serveur:~]# /etc/init.d/mysql stop</code> Déplacement des bases :<br />
<code>[root@serveur:~]# mv /var/lib/mysql/ /home/</code> Modification de la configuration de MySQL (fichier <em>/etc/mysql/my.cnf</em>) :<br />
<code>datadir = /home/mysql</code> Redémarrage du serveur MySQL :<br />
<code>[root@serveur:~]# /etc/init.d/mysql start</code></p>
<p>Et le tour est joué ! Il ne nous reste plus qu&#8217;à créer notre première base de données pour notre premier site.</p>
<p>Connexion à MySQL en temps que <em>root</em> :<br />
<code>[etienne@serveur:~]$ mysql -u root -p<br />
Enter password:</code> Créons la base de données pour notre premier site :<br />
<code>mysql&gt; create database mondomaine;</code> Créons un nouvel utilisateur :<br />
<code>mysql&gt; create user "mondomaine"@"localhost";</code> Et attribuons lui un mot de passe :<br />
<code>mysql&gt; set password for "mondomaine"@"localhost" = password("mot_de_passe");</code> Pour finir, donnons tous les droits à cet utilisateur sur la base de données que nous venons de créer :<br />
<code>mysql&gt; grant all on mondomaine.* to "mondomaine"@"localhost";</code> Et nous indiquons à MySQL de prendre en compte la modification des autorisations :<br />
<code>mysql&gt; flush privileges;</code></p>
<p>Vous pouvez maintenant vous déconnecter de MySQL (<em>mysql&gt; exit;</em>), vous y reconnecter avec votre nouvel utilisateur (<em>mysql -u mondomaine -p</em>) et visualiser les bases de données auxquels il a accès (<em>mysql&gt; show databases;</em>).</p>
<h2>Configuration de PHP</h2>
<p>La configuration de PHP se passe elle dans le fichier <em>/etc/php5/apache2/php.ini</em>. Afin d&#8217;assurer une sécurité optimale, les options suivantes sont à vérifier/modifier :<br />
<code>short_open_tag = Off<br />
asp_tags = Off<em><br />
</em>safe_mode = Off<br />
expose_php = Off<br />
display_errors = Off ; empêche l'affichage des erreurs, très important sur un serveur en production<br />
log_errors = On ; unique moyen de voir les erreurs sur un serveur en production si vous avez défini l'option <em>display_errors</em> à <em>Off</em>.<br />
register_globals = Off</code><br />
Si vous avez effectué des modifications dans ce fichier, n&#8217;oubliez pas de relancer Apache afin qu&#8217;il en tienne compte :<br />
<code>[root@serveur:~]# /etc/init.d/apache2 restart</code></p>
<h2>Installation et configuration de phpMyAdmin</h2>
<p>Pour ceux qui ne le savent pas encore, phpMyAdmin est un fabuleux  programme développé en PHP qui nous permet d&#8217;agir directement en ligne  sur nos bases de données MySQL.</p>
<p>Afin d&#8217;avoir une version toujours à jour, nous allons télécharger la dernière version depuis le <a href="http://www.phpmyadmin.net/" target="_blank">site officiel de phpMyAdmin</a> et créer un hôte virtuel du type <em>sql.mondomaine.ch</em> afin d&#8217;y accéder directement.</p>
<p>Commençons par créer le répertoire qui va accueillir le programme :<br />
<code>[root@serveur:~]# mkdir /home/phpmyadmin</code> puis récupérons l&#8217;archive de la dernière version du logiciel, la version 3.3.8 dans mon cas :<br />
<code>[root@serveur:~]# cd /home/phpmyadmin<br />
[root@serveur:/home/phpmyadmin]# wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.8/phpMyAdmin-3.3.8-all-languages.tar.gz</code> décompressons l&#8217;archive :<br />
<code>[root@serveur:/home/phpmyadmin]# tar -zxvf phpMyAdmin-3.3.8-all-languages.tar.gz</code> renommons le dossier nouvellement créé afin de simplifier la suite :<br />
<code>[root@serveur:/home/phpmyadmin]# mv phpMyAdmin-3.3.8-all-languages stable</code> supprimons l&#8217;archive qui ne nous est plus utile :<br />
<code>[root@serveur:/home/phpmyadmin]# rm phpMyAdmin.3.3.8-all-languages.tar.gz</code> et changeons le propriétaire du dossier <em>/home/phpmyadmin</em> afin qu&#8217;Apache puisse y accéder sans problème :<br />
<code>[root@serveur:~]# chown -R www-data:www-data /home/phpmyadmin</code></p>
<p>Ensuite nous copions le fichier <em>config.sample.inc.php</em> en <em>config.inc.php</em> et nous l&#8217;éditons afin d&#8217;y ajouter un mot de passe permettant de crypter les données :<br />
<code>[root@serveur: ~]# cd /home/phpmyadmin/stable<br />
[root@serveur: ~]# cp config.sample.inc.php config.inc.php<br />
[root@serveur: ~]# vim config.inc.php</code> et nous éditions la ligne suivante :<br />
<code>$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */</code> où nous ajoutons le mot de passe de notre choix entre les guillemets simples :<br />
<code>$cfg['blowfish_secret'] = 'un3suite2caractères'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */</code></p>
<p>Passons maintenant à la configuration de notre sous-domaine <em>sql.mondomaine.ch</em>. Si vous avez suivi mon précédent article <a href="http://www.e-grisel.net/wp/2010/09/09/serveur-dedie-ip-failover-dns-et-reverse-ip/">Serveur dédié – IP Failover, DNS et Reverse IP</a>, vous devez commencez par ajouter le sous-domaine à la configuration du DNS. Éditons le fichier <em>/etc/bind/db.mondomaine.ch</em> et ajoutez-y le sous-domaine comme suit :<br />
<code>sql 10800 IN A 188.165.37.xx</code> en indiquant bien entendu l&#8217;adresse IP de votre serveur et sans oublier de modifier le <em>serial</em> en début de page, puis redémarrons le serveur DNS :<br />
<code>[root@serveur:~]# /etc/init.d/bind9 restart</code></p>
<p>Créons maintenant le fichier de configuration de notre hôte virtuel. Tout se passe dans le répertoire <em>/etc/apache2/sites-available</em> :<br />
<code>[root@serveur:/etc/apache2/sites-available]# vim sql.mondomaine.ch</code><br />
et ajoutons-y la configuration suivante :<br />
<code>&lt;VirtualHost *:80&gt;<br />
ServerName sql.mondomaine.ch<br />
ServerAdmin hotmaster@mondomaine.ch<br />
DocumentRoot /home/phpmyadmin/stable<br />
&lt;Directory /&gt;<br />
Options FollowSymLinks<br />
AllowOverride None<br />
&lt;/Directory&gt;<br />
&lt;Directory /home/phpmyadmin/stable&gt;<br />
Options -Indexes FollowSymLinks MultiViews<br />
AllowOverride All<br />
Order allow,deny<br />
allow from all<br />
&lt;/Directory&gt;<br />
ErrorLog /var/log/apache2/sql.gwap.ch_error.log<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
CustomLog /var/log/apache2/sql.gwap.ch_access.log combined<br />
&lt;/VirtualHost&gt;</code></p>
<p>Ajoutons le site à la liste des sites actifs :<br />
<code>[root@serveur:/etc/apache2/sites-available]# a2ensite sql.mondomaine.ch</code><br />
et rechargeons Apache :<br />
<code>[root@serveur:/etc/apache2/sites-available]# /etc/init.d/apache2 reload</code></p>
<p>Nous pouvons maintenant tester PhpMyAdmin en allant dans notre navigateur sur l&#8217;adresse <em>sql.mondomaine.ch</em>. Si vous avez un message vous informant que l&#8217;extension <em>mcrypt</em> ne peut être chargée par PHP, exécutez les lignes suivantes :<br />
<code>[root@serveur:~]# apt-get install php5-mcrypt<br />
[root@serveur:~]# /etc/init.d/apache2 reload</code><br />
et rechargez votre page en vidant le cache (<em>Ctrl-F5</em> sur Firefox), le message devrait avoir disparu. Nous pouvons maintenant nous connecter à la base de données créée précédemment.</p>
<h2>Connexion sécurisée à phpMyAdmin</h2>
<p>Tout ceci est bien beau et bien utile, mais nos identifiants à MySQL transitent en clair entre notre domicile et notre serveur, ce qui n&#8217;est pas vraiment sécurisé. Aussi allons-nous créer un certificat SSL pour chiffrer toutes les données transitant entre notre domicile et l&#8217;hôte virtuel <em>sql.mondomaine.ch</em>.</p>
<p>On commence par créer une arborescence qui permettra le bon fonctionnement de nos commandes :<br />
<code>[etienne@serveur:~]$ mkdir ssl &amp;&amp; cd ssl<br />
[etienne@serveur:~/ssl]$ mkdir certs crl newcerts private<br />
[etienne@serveur:~/ssl]$ echo "01" &gt; serial<br />
[etienne@serveur:~/ssl]$ touch index.txt<br />
[etienne@serveur:~/ssl]$ cp /usr/lib/ssl/openssl.cnf .</code><br />
et on édite le fichier <em>openssl.cnf</em> que l&#8217;on vient de copier afin de modifier la ligne <em>dir =</em> de la section <em>[ CA_default ]</em> afin de la faire correspondre à notre répertoire :<br />
<code>dir = /home/etienne/ssl</code></p>
<p>On crée notre clé privée :<br />
<code>openssl genrsa -des3 -out private/cakey.pem 4096</code></p>
<p>Puis on crée notre certificat auto-signé :<br />
<code>openssl req -new -x509 -nodes -sha1 -days 1825 -key private/cakey.pem -out cacert.pem</code> et on répond aux quelques questions posées.</p>
<p>On continue avec la clé privée de notre domaine :<br />
<code>openssl genrsa -des3 -out mondomaine.key.pem 4096</code></p>
<p>Et on génère la demande de certificat :<br />
<code>openssl req -new -key mondomaine.key.pem -out mondomaine.csr.pem</code><br />
et on répond aux questions, en faisant bien attention à mentionner <em>*.mondomaine.ch</em> à la question <em>&laquo;&nbsp;Common Name (eg, YOUR name) []:&nbsp;&raquo;</em>.</p>
<p>Ensuite nous signons la demande et produisons le certificat final :<br />
<code>openssl ca -config ./openssl.cnf -policy policy_anything -out mondomaine.cert.pem -infiles mondomaine.csr.pem</code></p>
<p>Afin d&#8217;éviter de devoir saisir le mot de passe de la clé privée de notre domaine à chaque redémarrage d&#8217;Apache, on va retirer la protection par mot de passe triple DES :<br />
<code>openssl rsa -in mondomaine.key.pem -out mondomaine.key.np.pem</code></p>
<p>On copie la clé privée ainsi obtenue ainsi que son certificat dans le dossier <em>/etc/apache2/ssl</em> et nous activons le module <em>mod_ssl</em> :<br />
<code>[root@serveur:~]# a2enmod ssl</code><br />
sans oublier d&#8217;ajouter la ligne suivante dans le fichier <em>/etc/apache2/ports.conf </em>:<br />
<code>NameVirtualHost *:443</code> juste au dessus de la ligne <em>Listen 443</em>.</p>
<p>Passons maintenant à la modification de la configuration de notre hôte virtuel. Nous modifions le fichier <em>/etc/apache2/sites-available/sql.mondomaine.ch</em> comme suit (les changements sont en gras) :<br />
<code>&lt;VirtualHost *:<strong>443</strong>&gt;<br />
ServerName sql.mondomaine.ch<br />
ServerAdmin hotmaster@mondomaine.ch<br />
DocumentRoot /home/phpmyadmin/stable</code><code><br />
<strong>SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/mondomaine.cert.pem<br />
SSLCertificateKeyFile /etc/apache2/ssl/mondomaine.key.np.pem<br />
SSLOptions StrictRequire<br />
SSLProtocol all -SSLv2</strong><br />
&lt;Directory /&gt;<br />
Options FollowSymLinks<br />
AllowOverride None<br />
&lt;/Directory&gt;<br />
&lt;Directory /home/phpmyadmin/stable&gt;<br />
<strong>SSLRequireSSL</strong><br />
Options -Indexes FollowSymLinks MultiViews<br />
AllowOverride All<br />
Order allow,deny<br />
allow from all<br />
&lt;/Directory&gt;<br />
ErrorLog /var/log/apache2/sql.gwap.ch_error.log<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
CustomLog /var/log/apache2/sql.gwap.ch_access.log combined<br />
&lt;/VirtualHost&gt;</code></p>
<p>Pour terminer, nous devons encore indiquer à Apache qu&#8217;il doit aussi lire les certificats <em>.pem</em> et pas uniquement les certificats <em>.crt</em>. Ajoutons la ligne suivante au fichier <em>/etc/apache2/mods-available/ssl.conf</em> :<br />
<code>AddType application/x-x509-ca-cert .pem</code></p>
<p>et redémarrons le serveur Apache :<br />
<code>[root@serveur:~]# /etc/init.d/apache2 restart</code></p>
<p>Si nous testons en allant avec notre navigateur sur la page <em>http<strong>s</strong>://sql.mondomaine.ch</em>, nous devons accepter le certificat inconnu (normal, nous l&#8217;avons signé nous-même) et nous arrivons sur la version sécurisée de phpMyAdmin. Mais que ce passe-t-il si nous oublions de passer en mode sécurisé (sans le <strong>s</strong> de http<strong>s</strong>://) ? Hé bien nous arrivons sur notre page d&#8217;accueil qui indique que le site est en cours de construction, ce que nous ne voulons pas, nous voulons être redirigé automatiquement sur la version sécurisée.</p>
<p>On commence par activer le module <em>rewrite</em> :<br />
<code>[root@serveur:~]# a2enmod rewrite</code></p>
<p>Puis nous reprenons notre hôte virtuel (<em>/etc/apache2/sites-available</em>) et ajoutons-y une petite instruction comme suit en tout début de fichier :<br />
<code>&lt;VirtualHost *:80&gt;<br />
ServerName sql.mondomaine.ch<br />
RewriteEngine on<br />
RewriteCond %{SERVER_PORT} !^443$<br />
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]<br />
&lt;/VirtualHost&gt;</code></p>
<p>Ce qui redirigera toute requête entrant sur le port 80 (non sécurisé) de notre site <em>sql.mondomaine.ch</em> sur le port 443 (sécurisé).</p>
<p>Prochaine étape : MySecureShell pour un SFTP sécurisé et personnalisé<br />
Etape précédente : <a href="http://www.e-grisel.net/wp/2010/09/09/serveur-dedie-ip-failover-dns-et-reverse-ip/">IP Failover, DNS et Reverse IP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2010/10/26/serveur-dedie-apache-php-mysql-et-phpmyadmin-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serveur dédié &#8211; IP Failover, DNS et Reverse IP</title>
		<link>http://www.e-grisel.net/wp/2010/09/09/serveur-dedie-ip-failover-dns-et-reverse-ip/</link>
		<comments>http://www.e-grisel.net/wp/2010/09/09/serveur-dedie-ip-failover-dns-et-reverse-ip/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 13:34:33 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Serveur dédié]]></category>
		<category><![CDATA[BIND9]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[IP failover]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[reverse IP]]></category>
		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=130</guid>
		<description><![CDATA[Aujourd&#8217;hui nous allons nous attaquer à une étape qui demande de la patience, beaucoup de patience. Il s&#8217;agit de la configuration des DNS sur une adresse IP FailOver et de son Reverse IP. Vous avez l&#8217;impression que je parle chinois ? Alors voici quelques explications : Les serveurs DNS (Domain Name System) sont des serveurs [...]]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui nous allons nous attaquer à une étape qui demande de la patience, beaucoup de patience. Il s&#8217;agit de la configuration des DNS sur une adresse IP FailOver et de son Reverse IP.</p>
<p>Vous avez l&#8217;impression que je parle chinois ? Alors voici quelques explications :</p>
<p>Les serveurs DNS (Domain Name System) sont des serveurs capables de gérer un ou plusieurs niveaux de domaines, ce sont eux qui indiquent à votre navigateur sur quel serveur (ou plutôt sur quelle adresse IP) se trouve le site web que vous recherchez. C&#8217;est pourquoi lorsque vous commandez un nouveau nom de domaine, vous devez indiquer au moins deux serveurs DNS configurés correctement afin que ceux-ci puissent rediriger les visiteurs de votre site web vers le bon serveur. Et pourquoi deux me direz-vous ? Tout simplement pour palier à une éventuelle panne de l&#8217;un d&#8217;entre eux. Pour celles et ceux qui aimeraient plus d&#8217;information sur ce sujet, le <a title="Gérer son nom de domaine" href="http://www.siteduzero.com/tutoriel-3-272111-gerer-son-nom-de-domaine.html" target="_blank">site du zéro</a> fourni une explication claire et détaillée.</p>
<p>Le problème avec les serveurs DNS, c&#8217;est qu&#8217;ils ne sont pas mis à jour en permanence, mais seulement à intervalles plus ou moins régulières, c&#8217;est pourquoi on dit qu&#8217;il faut compter entre 10 minutes et 48 heures pour la propagation des DNS et pour que votre serveur puisse être atteint via son nom de domaine.</p>
<p>Venons-en maintenant à l&#8217;IP FailOver. Tout serveur dédié se voit attribuer une adresse IP fixe, laquelle vous permet de vous connecter directement à votre serveur. Nous pourrions configurer les DNS et tous nos sites directement dessus, mais que se passerait-il si notre serveur devenait trop faible et que nous devions en prendre un plus performant ? Nous devrions tout configurer avec la nouvelle adresse IP du nouveau serveur et attendre à nouveau quelques heures voire quelques jours que la propagation des DNS se fasse, ce qui risquerait de provoquer des problèmes d&#8217;accès à tous nos sites web, et ce ne serait pas professionnel du tout ! Et c&#8217;est là qu&#8217;intervient l&#8217;IP FailOver.</p>
<p><span id="more-130"></span><br />
Une IP FailOver est une adresse IP fixe supplémentaire que nous pouvons attribuer à n&#8217;importe lequel de nos serveurs. Nous pouvons même en avoir plusieurs pour un seul et même serveur. Ainsi, si votre serveur commence à atteindre ses limites, vous pouvez en commander un nouveau, vous y connecter via son adresse IP fixe, le configurer entièrement, copier les données de votre premier serveur puis, via le Manager d&#8217;OVH, rediriger l&#8217;IP FailOver sur le nouveau serveur et toutes les requêtes seront directement transmises au nouveau serveur, sans avoir à changer quoi que ce soit auprès de notre registrar.</p>
<p>Et le <em>Reverse IP</em> alors, qu&#8217;est-ce que c&#8217;est ? Et bien tout simplement, il s&#8217;agit de faire l&#8217;inverse de ce que fait normalement un serveur DNS. Lorsque vous demandez à un serveur DNS ou se trouve le site <em>monsiteweb.ch</em>, celui-ci va vous donner en retour l&#8217;adresse IP du serveur où se trouve le site en question. Le <em>Reverse IP</em> permet tout simplement de connaître le nom du serveur correspondant à une adresse IP donnée. Mais un exemple sera sans doute plus clair :</p>
<p>Quand vous essayez de vous connecter à un site web, votre navigateur va demander à ses serveurs DNS quelle est ou quelles sont les adresses IP du serveur :<br />
<code>[moi@chez-moi:~]$ nslookup e-grisel.net<br />
Server:        192.168.1.1<br />
Address:    192.168.1.1#53<br />
Non-authoritative answer:<br />
Name:    e-grisel.net<br />
Address: 80.74.157.22</code></p>
<p>Nous voyons ainsi que l&#8217;adresse IP de mon site est <em>80.74.157.22</em>, et si nous effectuons l&#8217;inverse :<br />
<code>[moi@chez-moi:~]$ </code><code>nslookup 80.74.157.22<br />
Server:        192.168.1.1<br />
Address:    192.168.1.1#53<br />
Non-authoritative answer:<br />
22.157.74.80.in-addr.arpa    name = sinope.kreativmedia.ch.<br />
Authoritative answers can be found from:</code></p>
<p>Comme vous le voyez, une recherche sur l&#8217;adresse IP de mon site web nous redirige vers <em>sinope.kreativmedia.ch</em>, le serveur qui héberge ce site. Cette fonction est souvent utilisée par les serveurs de mail pour vérifier que le serveur envoyer l&#8217;e-mail est bien un serveur et non pas un ordinateur personnel piraté qui essaie d&#8217;envoyer du spam. Aussi, si vous ne voulez pas que tous les mails que vous envoyez soient directement marqués comme spam, configurez bien votre <em>Reverse IP</em>.</p>
<p>Bien, maintenant que la théorie est faite, passons à la pratique.</p>
<h2>Obtenir une IP FailOver</h2>
<p>Pour cela rendez-vous dans votre manager, dans la rubrique <em>Services</em> puis dans la section <em>Gestion IP</em> et sélectionnez <em>IP FailOver</em>. Ensuite, cliquez sur <em>Ajouter une IP Fail-Over</em>, sélectionnez le pays correspondant à votre site web et choisissez le réseau que vous désirez. Il ne reste plus qu&#8217;à indiquer à quoi va vous servir cette IP FailOver et sur quelle IP fixe la router.</p>
<h2>Configuration des DNS</h2>
<p>La configuration des DNS se passe dans le dossier <em>/etc/bind/</em>. Les fichiers que nous allons modifier sont <em>named.conf.local</em> dans lequel nous allons enregistrer chacun des sites web que nous hébergerons, <em>named.conf.options</em> dans lequel nous configurerons les options nécessaires à la communication avec le serveur DNS secondaire d&#8217;OVH et nous allons aussi créer un fichier de type <em>db.mondomaine.ch</em> pour chaque domaine qui contiendra la configuration personnalisée du domaine.</p>
<p><strong>named.conf.local</strong></p>
<p>Dans ce fichier nous allons enregistrer une <em>zone</em> pour chacun de nos domaines comme suit :</p>
<pre class="code">zone "<strong>mondomaine.ch</strong>" {
    type master;
    file "<strong>/etc/bind/db.mondomaine.ch</strong>";
    allow-transfer {<strong>213.186.33.199</strong>; };
};</pre>
<p>Dans la zone, indiquez votre nom de domaine entre guillemets, sans le <em>www</em>. Le <em>type master</em> indique que nous sommes en train de configurer le serveur DNS primaire. La ligne <em>file &laquo;&nbsp;/etc/bind/db.mondomaine.ch&nbsp;&raquo;;</em> indique où se situe le fichier de configuration de ce domaine, et la directive <em>allow-transfer</em> indique l&#8217;adresse IP du serveur DNS secondaire (dans mon cas, il s&#8217;agit de l&#8217;adresse IP de <em>ns.kimsufi.com</em>) afin que celui-ci soit autorisé à récupérer les informations de notre serveur DNS.</p>
<p><strong>db.mondomaine.ch</strong></p>
<p>Il s&#8217;agit ici du fichier indiqué précédemment dans la <em>zone</em> de notre domaine. C&#8217;est le fichier le plus important, car c&#8217;est ici que nous indiquons l&#8217;adresse IP du serveur hébergeant notre domaine.</p>
<pre class="code">$TTL    3H

@       IN      SOA     ns.mondomaine.ch.     postmaster.mondomaine.ch. (
                                              2010090805
                                              8H
                                              2H
                                              1W
                                              1D )

@       10800   IN      NS      ns.mondomaine.ch.
@       10800   IN      NS      ns.kimsufi.com.

@       10800   IN      A       188.165.37.xx
www     10800   IN      A       188.165.37.xx
ns      10800   IN      A       188.165.37.xx</pre>
<p>La valeur de <em>$TTL</em> donne la durée de vie en secondes de l&#8217;enregistrement dans les caches. Le caractère <em>@</em> remplace le nom de notre <em>zone</em> (dans notre exemple, <em>mondomaine.ch</em>, si vous préférez indiquer directement votre nom de domaine, n&#8217;oubliez pas d&#8217;ajouter un &laquo;&nbsp;.&nbsp;&raquo; à la fin). Après le SOA (Start Of Authority), nous devons indiquer notre serveur DNS primaire (<em>ns.mondomaine.ch</em>), suivi d&#8217;un &laquo;&nbsp;.&nbsp;&raquo; puis d&#8217;une adresse e-mail valide suivie directement d&#8217;un &laquo;&nbsp;.&nbsp;&raquo;. Remarquez que le @ est remplacé par un point. Si votre adresse e-mail contient un &laquo;&nbsp;.&nbsp;&raquo;, vous devez l&#8217;échapper avec un &laquo;&nbsp;\&nbsp;&raquo; (par exemple : <em>etienne\.grisel.mondomaine.ch.</em>). S&#8217;ensuit entre parenthèses les données suivantes :<strong></strong></p>
<p><strong>serial</strong> : 2010090805 ; il s&#8217;agit d&#8217;un numéro de série composée de l&#8217;année, du mois, du jour et d&#8217;un numéro incrémenté à chaque modification (YYYYMMDD01)<strong></strong></p>
<p><strong>refresh</strong> : 8H ; Ce paramètre donne l&#8217;intervalle de temps en secondes (ou abrégée en heures ou en jours) entre deux vérifications du numéro de série (<em>serial</em>) par le serveur DNS. La valeur recommandée est de 24 heures (<em>1D</em> ou <em>24H</em> ou <em>86400</em>) et devra être réduite si les modifications sont fréquentes pour cette zone.<strong></strong></p>
<p><strong>retry</strong> : 2H ; La vérification du numéro de série par un serveur secondaire peut se solder par un échec dû par exemple à des problèmes de connexion. Dans ce cas la valeur du <em>retry</em> donne l&#8217;intervalle en secondes entre deux tentatives de lecture du <em>serial</em> du fichier de zone. La valeur recommandée est <em>21400</em>, soit 6 heures. Elle devra être ajustée en fonction de la connectivité entre les serveurs autoritaires de la zone.</p>
<p><strong>expire</strong> : 1W ; Un serveur peut ne pas réussir à vérifier le <em>serial</em> ou à transférer le fichier de zone. Le paramètre <em>expire</em> donne le temps maximum pendant lequel les données du serveur secondaire peuvent être diffusées avant d&#8217;être considérées comme <em>périmées</em>, si aucune vérification ni transfert de zone n&#8217;ont pu être effectuées depuis leur téléchargement. La valeur recommandée est de <em>3600000</em>, soit 41 jours. Cette valeur doit être au minimum 7 fois plus importante que la valeur du <em>refresh</em>, sinon le registrar de votre nom de domaine risque de refuser l&#8217;inscription de notre serveur comme DNS.<strong></strong></p>
<p><strong>ttl</strong> : 1D ; Défini la durée de vie pour le <em>negative caching</em>, c&#8217;est-à-dire le temps qu&#8217;une réponse négative doit rester dans les caches.</p>
<p>Ensuite les deux lignes contenant l&#8217;enregistrement <em>NS</em>, soit les serveurs DNS qui gèrent notre nom de domaine. Le <em>@</em> reprend notre nom de zone, le chiffre représente la TTL (Time To Live) spécifique à cette ligne, le <em>IN</em> indique que nous sommes dans une classe <em>internet</em> (la seule encore vraiment utilisée de nos jours), le <em>NS</em> indique que nous parlons des serveurs de noms (DNS) et pour finir nous indiquons le nom de notre serveur. N&#8217;oubliez pas d&#8217;indiquer le &laquo;&nbsp;.&nbsp;&raquo; à la fin des noms des serveurs DNS, sinon le programme croira qu&#8217;il doit encore ajouter notre <em>zone</em> à la fin de la ligne (ce qui nous donnerait <em>ns.mondomaine.ch.mondomaine.ch</em> et <em>ns.kimsufi.com.mondomaine.ch</em>) et rendrait notre configuration inutilisable.</p>
<p>Pour finir nous mettons en correspondance notre adresse IP FailOver et les noms de machines. Encore une fois, le <em>@</em> remplace notre <em>zone</em> (<em>mondomaine.ch</em>), le <em>www</em> indique notre sous-domaine principal (comme il n&#8217;y a pas de &laquo;&nbsp;.&nbsp;&raquo; après <em>www</em>, le programme l&#8217;interprète comme étant <em>www.mondomaine.ch.</em>) et le <em>ns</em> indique le sous-domaine correspondant à notre serveur DNS.</p>
<p>Je reviendrai sur ce fichier lors de la configuration du serveur de mail, car nous devrons y ajouter une ligne pour indiquer au serveur DNS où il se situe.</p>
<p>Vous trouverez plus d&#8217;information sur les différentes options de ce fichier sur le site de l&#8217;<a href="http://www.afnic.fr/ext/dns/html/cours244.html" target="_blank">afnic</a>.</p>
<p><strong>named.conf.options</strong></p>
<p>Dans ce fichier, nous allons uniquement commenter deux lignes avec un double &laquo;&nbsp;//&nbsp;&raquo; et ajouter la ligne <em>allow-transfer</em> pour permettre au serveur secondaire d&#8217;accéder à notre serveur DNS. Modifiez le fichier pour qu&#8217;il ressemble à ça :</p>
<pre class="code">options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        // forwarders {
        //      0.0.0.0;
        // };

        auth-nxdomain no;    # conform to RFC1035
<strong>//      listen-on-v6 { ::1; };
//      listen-on { 127.0.0.1; };</strong>
        allow-recursion { 127.0.0.1; };
<strong>        allow-transfer { 213.186.33.199; };</strong>
};</pre>
<p>Les lignes modifiées sont indiquées en <strong>gras</strong>.</p>
<h2>Reverse IP</h2>
<p>Comme indiqué précédemment, la <em>reverse IP</em> permet de mettre en correspondance notre adresse IP FailOver (dans mon cas <em>188.165.37.xx</em>) avec le nom de notre serveur (<em>ns.mondomaine.ch</em>).</p>
<p>Pour commencer, nous allons reprendre notre fichier <em>named.conf.local</em> et nous allons y ajouter la <em>zone</em> suivante :</p>
<pre class="code">zone "37.165.188.in-addr.arpa" {
    type master;
    file "/etc/bind/db.mondomaine.ch.rev";
};</pre>
<p>Le nom de la <em>zone</em> est composé de notre adresse IP FailOver inversée, sans le dernier chiffre et suivie de <em>.in-addr.arpa</em> (dans mon cas, l&#8217;adresse IP <em>188.165.37.xx</em> devient <em>37.165.188</em> suivie de <em>.in-addr.arpa</em>). Le nom du fichier utilisé est identique au précédant, sauf que nous y avons ajouté <em>.rev</em> pour éviter d&#8217;écraser le fichier configuré précédemment. Vous pouvez mettre n&#8217;importe quel nom de fichier, du moment que vous créer bien un fichier de ce nom contenant la configuration que nous allons voir maintenant.</p>
<p><strong>/etc/bind/db.mondomaine.ch.rev<br />
</strong>Ce fichier est très semblable au précédent, mais il y a quand même quelques petites différences à ne pas louper :</p>
<pre class="code">$TTL    3H

@       IN      SOA     ns.mondomaine.ch.     postmaster.mondomaine.ch (
                        2010090805
                        8H
                        2H
                        1W
                        1D )

@       10800   IN      NS      ns.mondomaine.ch.
@       10800   IN      NS      ns.kimsufi.com.

xx       IN      PTR     ns.mondomaine.ch.</pre>
<p>Les premières lignes sont identiques au fichier précédent, nous avons uniquement supprimé la correspondance entre notre <em>zone</em> et notre adresse IP FailOver, que nous remplaçons par la dernière ligne indiquée ci-dessus. Elle commence par le dernier chiffre de notre adresse IP FailOver (indiqué par <em>xx</em> dans mon exemple), suivi de la classe <em>IN</em>, du <em>record type PTR</em> et du nom que nous voulons donner à notre serveur. Dans mon cas je veux qu&#8217;il indique la même chose que le nom de mon serveur DNS, mais nous aurions tout aussi bien pu mettre <em>bidule.mondomaine.ch.</em> ou <em>machin.mondomaine.ch.</em>, du moment que le nom de notre domaine est indiqué et que nous n&#8217;oublions pas le &laquo;&nbsp;.&nbsp;&raquo; à la fin du nom de notre serveur.</p>
<p>Enfin, nous devons rajouter une interface réseau pour notre nouvelle adresse IP, sinon le serveur ne reconnaîtra pas l&#8217;IP FailOver. Pour cela nous éditons le fichier <em>/etc/network/interfaces</em> et nous y ajoutons les lignes suivantes :</p>
<pre class="code">auto eth0<strong>:0
</strong>iface eth0<strong>:0</strong> inet static
        address notre.adresse.ip.failover
        netmask 255.255.255.255
        broadcast notre.adresse.ip.failover</pre>
<p>et pour finir nous redémarrons l&#8217;interface réseau :</p>
<pre class="code">[root@serveur:~]# /etc/init.d/networking restart</pre>
<p>Nous pouvons vérifier le résultat en effectuant un ping sur notre nouvelle adresse IP.</p>
<h2>Pour terminer</h2>
<p>Pour vérifier que notre configuration est correcte, nous pouvons utiliser la commande <em>named-checkconf -z</em> directement depuis notre serveur pour vérifier qu&#8217;il n&#8217;y a pas d&#8217;erreur :</p>
<pre class="code">[root@serveur:~]# named-checkconf -z
zone localhost/IN: loaded serial 2
zone 127.in-addr.arpa/IN: loaded serial 1
zone 0.in-addr.arpa/IN: loaded serial 1
zone 255.in-addr.arpa/IN: loaded serial 1
zone mondomaine.ch/IN: loaded serial 2010090805
zone 37.165.188.in-addr.arpa/IN: loaded serial 2010090805</pre>
<p>Si cette commande n&#8217;affiche aucune erreur, nous rechargeons BIND pour qu&#8217;il prenne en charge nos modifications et qu&#8217;il lance la propagation :</p>
<pre class="code">[root@serveur:~]# /etc/init.d/bind9 reload</pre>
<p>Vous pouvez préférer relancer le programme avec la commande suivante :</p>
<pre class="code">[root@serveur:~]# /etc/init.d/bind9 restart</pre>
<p>Un autre utilitaire lui aussi très utile pour vérifier votre configuration est<em> nslookup</em> (<em>nslookup.exe</em> sous Windows) :</p>
<pre class="code">[root@serveur:~]# nslookup
&gt; mondomaine.ch
Server:		127.0.0.1
Address:	127.0.0.1#53

Name:	mondomaine.ch
Address: 188.165.37.xx
&gt;</pre>
<p>Si vous ne voyez aucune erreur c&#8217;est que votre configuration est correcte. Pour en avoir le cœur net, nous pouvons encore tester (sous Linux uniquement) la commande <em>dig</em> :</p>
<pre class="code"># dig mondomaine.ch

; &lt;&lt;&gt;&gt; DiG 9.6-ESV-R1 &lt;&lt;&gt;&gt; mondomaine.ch
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 43215
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;mondomaine.ch.			IN	A

;; ANSWER SECTION:
mondomaine.ch.		10800	IN	A	188.165.37.xx

;; AUTHORITY SECTION:
mondomaine.ch.		10800	IN	NS	ns.kimsufi.com.
mondomaine.ch.		10800	IN	NS	ns.mondomaine.ch.

;; ADDITIONAL SECTION:
ns.mondomaine.ch.		10800	IN	A	188.165.37.xx
ns.kimsufi.com.		23649	IN	A	213.186.33.199

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Sep  9 15:11:36 2010
;; MSG SIZE  rcvd: 118</pre>
<p>Nous retrouvons en effet toutes les informations que nous avons enregistré précédemment.</p>
<p>Nous sommes presque au bout de nos efforts, mais avant que nous puissions passer à la suite, il faut encore que nous indiquions à notre serveur secondaire de venir prendre en charge notre configuration. Cela se passe dans le manager d&#8217;OVH, dans la rubrique <em>Services</em>, section <em>Gestion DNS</em>, option <em>DNS secondaire</em>. Nous cliquons sur <em>Nouveau domaine</em>, nous indiquons le nom du domaine que nous voulons ajouter, sans le <em>www</em> et nous sélectionnons l&#8217;adresse IP FailOver que nous avons utilisée un peu plus haut. Et c&#8217;est maintenant qu&#8217;il va nous falloir être patient ; en effet, il faut compter entre 10 minutes et 48 heures pour que notre configuration soit propagée sur le serveur secondaire. Pour vérifier que tout soit en ordre, nous pouvons utiliser les sites <a href="http://www.zonecheck.fr/demo/" target="_blank">ZoneCheck</a> et <a href="http://demo.dnsdoctor.org/" target="_blank">DNSdoctor</a> pour tester la propagation et d&#8217;éventuelles erreurs résiduelles.</p>
<p>Une fois que la propagation est effective et que les sites mentionnés précédemment n&#8217;indiquent plus d&#8217;erreur fatale, nous pouvons enregistrer nos DNS auprès de notre registrar. Dans mon cas il s&#8217;agit du site de la société <a href="https://www.nic.ch" target="_blank">Switch SA</a>, qui gère les noms de domaine en <em>.ch</em> et <em>.li</em>. Commençons par enregistrer notre nouveau serveur de nom : dans le menu de gauche, rubrique <em>Serveur de noms</em> -&gt; <em>Enregistrer</em>, indiquez votre serveur de nom (<em>ns.mondomaine.ch</em>) et l&#8217;adresse IP FailOver (<em>188.165.37.xx</em>). Une fois ceci fait, rendez-vous dans la rubrique <em>Noms de domaine</em> -&gt; <em>Gestion</em>, cochez le domaine à modifier et cliquez sur <em>Traiter ceux qui sont marqués</em>. Dans la section <em>Serveur de noms</em>, cliquez sur <em>autre</em> pour ajouter le serveur primaire (<em>ns.mondomaine.ch</em>) et le serveur secondaire (<em>ns.kimsufi.com</em>) puis <em>continuer</em>. Si tout se passe bien et que les données ont bien été propagées, la rubrique <em>Serveur de nom</em> de la page récapitulative devrait vous afficher un joli <em>vu</em> vert ou orange. Sinon allez voir les détails et corrigez les erreurs indiquées.</p>
<p>Pour finir, nous allons enregistrer notre <em>Reverse IP</em> dans le manager d&#8217;OVH, rubrique <em>Services</em>, section <em>Reverse IPv4</em>, nous cliquons sur l&#8217;icône à droite de la ligne correspondant à notre adresse IP FailOver et nous indiquons le <em>reverse</em> que nous venons de configurer (<em>ns.mondomaine.ch</em>). Si tout se passe bien, vous aurez un message indiquant que tout s&#8217;est bien déroulé, sinon vous devrez patienter encore un peu que la propagation de votre configuration arrive au serveur d&#8217;OVH gérant les <em>reverse IP</em>.</p>
<p>Pour information, j&#8217;ai dû attendre une dizaine d&#8217;heures pour que la propagation soit effective sur le serveur secondaire (<em>ns.kimsufi.com</em>) et deux heures supplémentaires pour que ma demande de <em>Reverse IP</em> soit prise en compte, mais d&#8217;après ce que j&#8217;ai lu sur internet, cela peut prendre bien plus de temps dans certains cas. Et si après 3-4 jours vous n&#8217;y arrivez toujours pas, c&#8217;est peut-être qu&#8217;il y a quelque-chose qui cloche dans votre configuration, il ne vous restera alors plus qu&#8217;à tout revérifier <img src='http://www.e-grisel.net/wp/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Prochaine étape : <a href="http://www.e-grisel.net/wp/2010/10/26/serveur-dedie-apache-php-mysql-et-phpmyadmin-3/">Apache, PHP, MySQL et PHPmyAdmin</a><br />
Étape précédente : <a href="../2010/08/05/serveur-dedie-un-peu-de-securite-supplementaire-avec-fail2ban/" target="_self">Un peu de sécurité supplémentaire avec Fail2ban</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2010/09/09/serveur-dedie-ip-failover-dns-et-reverse-ip/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Serveur dédié &#8211; Un peu de sécurité supplémentaire avec Fail2ban</title>
		<link>http://www.e-grisel.net/wp/2010/08/05/serveur-dedie-un-peu-de-securite-supplementaire-avec-fail2ban/</link>
		<comments>http://www.e-grisel.net/wp/2010/08/05/serveur-dedie-un-peu-de-securite-supplementaire-avec-fail2ban/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 14:07:59 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Serveur dédié]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=107</guid>
		<description><![CDATA[Bon, maintenant que notre firewall est en place nous devons aussi pensez à surveiller l&#8217;activité qui se passe sur les ports que nous avons laissé ouverts, et pour cela il existe un programme spécifique intitulé Fail2ban qui va analyser les logs de notre serveur et bloquer les indésirables (tentatives d&#8217;intrusion) pendant un temps défini. Le [...]]]></description>
			<content:encoded><![CDATA[<p>Bon, maintenant que notre firewall est en place nous devons aussi pensez à surveiller l&#8217;activité qui se passe sur les ports que nous avons laissé ouverts, et pour cela il existe un programme spécifique intitulé Fail2ban qui va analyser les logs de notre serveur et bloquer les indésirables (tentatives d&#8217;intrusion) pendant un temps défini.</p>
<p>Le principe de fail2ban est simple, nous allons lui configurer des filtres et des règles, et d&#8217;après cela il va analyser les logs de nos serveurs, et s&#8217;il décèle une tentative d&#8217;intrusion, il va ajouter une règle à Iptables pendant un certain temps afin de bloquer l&#8217;IP de l&#8217;indésirable</p>
<p><span id="more-107"></span></p>
<h2>Analyse des logs</h2>
<p>Avant de commencer l&#8217;installation et la configuration de fail2ban, attardons-nous un instant sur les logs de notre serveur.</p>
<p>Les logs se trouvent dans le répertoire /var/log/. La seule exception que je connaisse concerne les logs des sites web que nous allons installer plus tard et qui se trouvent dans leur dossier respectif, mais nous reviendrons plus tard quand nous configurerons nos VirtualHosts pour Apache. Les logs étant de simples fichiers texte, nous pouvons utiliser différentes commandes pour les afficher :<br />
<code>[root@serveur:~]# cat /var/log/auth.log</code> va afficher la totalité du contenu de ce log. Une autre solution pour n&#8217;avoir que les 10 dernières lignes ajoutées est d&#8217;utiliser la commande suivante :<br />
<code>[root@serveur:~]# tail /var/log/auth.log</code> Si vous désirez voir plus de lignes, par exemples les 20 dernières, nous ajoutons l&#8217;option <em>-n</em> suivie du nombre de lignes :<br />
<code>[root@serveur:~]# tail -n 20 /var/log/auth.log</code> et la dernière option de la mort qui tue, l&#8217;option <em>-f</em> qui affiche les données au fur et à mesure:<br />
<code>[root@serveur:~]# tail -n 20 -f /var/log/auth.log</code> vous pourrez peut-être ainsi visualiser une tentative d&#8217;intrusion en live.</p>
<h2>Installation et configuration de Fail2ban</h2>
<p>Bon, passons maintenant aux choses sérieuses. Tout d&#8217;abord l&#8217;installation :<br />
<code>[root@serveur:~]# apt-get install fail2ban</code> Sur un serveur OVH, et si vous avez configuré le firewall comme expliqué dans mon article précédent, il faut d&#8217;abord modifier notre firewall pour accepter les connexions FTP en sortie. Pour ce faire, éditer le fichier <em>/etc/init.d/firewall</em> et dé-commenter (enlever le <em>#</em>) de la ligne correspondant au <em>FTP Out</em>.</p>
<h3>Configuration</h3>
<p><strong> </strong>La configuration se passe dans le répertoire <em>/etc/fail2ban/</em> ou vous trouverez 2 dossiers (action.d et filter.d) et deux fichiers (fail2ban.conf et jail.conf). Nous allons copier les deux fichiers et les renommer en <em>fail2ban.local</em> et <em>jail.local</em>.<br />
<code>[root@serveur:~]# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local<br />
[root@serveur:~]# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local</code> Cette opération n&#8217;est pas obligatoire, mais il se peut que les fichiers d&#8217;origine soient remplacés lors d&#8217;une mise à jour du programme, et si nous y effectuons des modifications elles seront supprimées, alors que les nouveaux fichiers (<em>fail2ban.local</em> et <em>jail.local</em>) ne seront jamais remplacés lors d&#8217;une mise à jour, ils sont lus par le programme après les fichiers en <em>.conf</em> et leurs instructions supplantent celles inscrites dans les fichiers en <em>.conf</em>.</p>
<p>La partie la plus importante de la configuration se passe dans le fichier nouvellement créé <em>jail.local</em>. Par défaut, quelques sections sont insérées comme templates. Nous devons activer les sections qui nous intéressent et les adapter à notre configuration. Voici un exemple de section :<br />
<code>[ssh-iptables]<br />
enabled = true<br />
filter = sshd<br />
action = iptables [name=SSH, port=ssh, protocol=tcp]<br />
logpath = /var/log/auth.log<br />
maxretry = 5</code></p>
<p>Avec ces quelques réglages voici ce qui va se passer :</p>
<ol>
<li>la section ssh-iptables est activée (<em>enabled = true)</em></li>
<li>le filtre <em>sshd</em>.conf du sous-répertoire <em>filter.d</em> sera utilisé</li>
<li>les actions décrites dans <em>iptables</em>.conf (sous-répertoire <em>action.d</em>) seront exécutées si la sortie du filtre est positive.</li>
<li>le fichier de log analysé par le filtre est <em>/var/log/auth.log</em></li>
</ol>
<p>Nous allons effectuer quelques modifications que je commenterai (seules les modifications sont affichées).</p>
<ul>
<li>Section <em>[DEFAULT]</em><br />
ignoreip = 127.0.0.1 <em>(nous ignorons les tentatives de cette IP, nous n&#8217;allons quand même pas nous auto-bloquer <img src='http://www.e-grisel.net/wp/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )<br />
</em>bantime = 600 <em>(temps de bannissement en secondes)<br />
</em>maxretry = 3 <em>(nombre de tentatives possibles avant blocage)<br />
</em></p>
<div><strong>Toutes les options définies dans la section [DEFAULT] peuvent être outrepassées par chaque prison.<br />
</strong></div>
</li>
<li>Section <em>[ssh]</em> :<br />
enabled = true <em>(nous activons la prison)<br />
</em>maxretry = 3 <em>(nombre de tentatives avant blocage)</em></li>
<li>Section <em>[ssh-ddos]</em> :<br />
enabled = true <em>(nous activons la prison)<br />
</em>maxretry = 3 <em>(nombre de tentatives avant blocage)</em></li>
<li>Section <em>[apache]</em> :<br />
enabled = true <em>(nous activons la prison)<br />
</em>maxretry = 6 <em>(nombre de tentatives avant blocage)</em></li>
<li>Section <em>[apache-noscript]</em> :<br />
enabled = true <em>(nous activons la prison)<br />
</em>maxretry = 6 <em>(nombre de tentatives avant blocage)</em></li>
<li>Section <em>[apache-overflows]</em> :<br />
enabled = true <em>(nous activons la prison)<br />
</em>maxretry = 2 <em>(nombre de tentatives avant blocage)</em></li>
</ul>
<p>Et nous laissons le reste tel quel pour l&#8217;instant. Nous y reviendrons éventuellement plus tard lorsque nous installerons notre serveur mail.</p>
<p>Configurons maintenant les filtres pour les prisons que nous avons activées.</p>
<p><strong>ssh</strong><br />
Le filtre de cette prison se trouve dans le fichier <em>sshd.conf</em> du sous-répertoire <em>filter.d</em>. Quelques expressions régulières sont déjà existantes, nous allons les compléter avec les nôtres :<br />
<code>failregex = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from &lt;HOST&gt;\s*$<br />
^%(__prefix_line)s(?:error: PAM: )?User not known to the underlying authentication module for .* from &lt;HOST&gt;\s*$<br />
^%(__prefix_line)sFailed (?:password|publickey) for .* from &lt;HOST&gt;(?: port \d*)?(?: ssh\d*)?$<br />
^%(__prefix_line)sROOT LOGIN REFUSED.* FROM &lt;HOST&gt;\s*$<br />
^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from &lt;HOST&gt;\s*$<br />
^%(__prefix_line)sUser .+ from &lt;HOST&gt; not allowed because not listed in AllowUsers$<br />
^%(__prefix_line)sUser .+ from &lt;HOST&gt; not allowed because none of user's groups are listed in AllowGroups\s*$<br />
^%(__prefix_line)sauthentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S* rhost=&lt;HOST&gt;(?:\s+user=.*)?\s*$<br />
^%(__prefix_line)srefused connect from \S+ \(&lt;HOST&gt;\)\s*$<br />
^%(__prefix_line)sAddress &lt;HOST&gt; .* POSSIBLE BREAK-IN ATTEMPT\s*$<br />
<em>Authentication failure for .* from &lt;HOST&gt;</em><br />
<em>Failed [-/\w]+ for .* from &lt;HOST&gt;<br />
ROOT LOGIN REFUSED .* FROM &lt;HOST&gt;<br />
[iI](?:llegal|nvalid) user .* from &lt;HOST&gt;</em></code> Les lignes que j&#8217;ai ajoutées sont indiquées en <em>italique</em>.</p>
<p><strong>ssh-ddos<br />
</strong>Fichier : <em>/etc/fail2ban/filter.d/ssh-ddos.conf</em><br />
Rien à modifier ici.</p>
<p><strong>apache<br />
</strong>Fichier : <em>/etc/fail2ban/filter.d/apache-auth.conf</em><br />
Rien à modifier ici.</p>
<p><strong>apache-noscript<br />
</strong>Fichier : <em>/etc/fail2ban/filter.d/apache-noscript.conf</em><br />
Rien à modifier ici.</p>
<p><strong>apache-overflows<br />
</strong>Fichier : <em>/etc/fail2ban/filter.d/apache-overflows.conf</em><br />
Rien à modifier ici.</p>
<h2>Test de notre configuration</h2>
<p>Si vous créez vos propres expressions régulières (<em>regex</em>), vous voudrez sans doute pouvoir tester leur exactitude et leur fonctionnement. Pour tester une seule expression régulière nous utiliserons la syntaxe suivante :<br />
<code>[root@serveur:~]# fail2ban-regex "ligne" "failregex"</code> <em>&laquo;&nbsp;ligne&nbsp;&raquo;</em> étant un copier-coller d&#8217;une ligne complète d&#8217;un log posant quelques soucis et <em>&laquo;&nbsp;failregex&nbsp;&raquo;</em> représente votre expression régulière, il nous faut donc remplacer ces deux termes (<em>ligne</em> et <em>failregex</em>) par nos propres données. N&#8217;oubliez pas d&#8217;entourer la ligne ainsi que l&#8217;expression régulière par des guillemets doubles.</p>
<p><em>fail2ban-regex</em> accepte aussi des fichiers. Il est ainsi plus facile de tester et débugger nos expressions régulières :<br />
<code>[root@serveur:~]# fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf</code> ou utiliser une combinaison des deux :<br />
<code>[root@serveur:~]# fail2ban-regex /var/log/auth.log "Failed [-/\w]+ for .* from &lt;HOST&gt;"</code></p>
<h2>Limitations</h2>
<p>C&#8217;est assez difficile d&#8217;évaluer le temps de réaction de <em>Fail2ban</em>. Il attend 1 seconde avant de vérifier s&#8217;il y a de nouveaux logs à scanner. Dans la plupart des cas ça ne pose aucun problème, mais parfois il est possible qu&#8217;il y ait plus de tentatives d&#8217;intrusions que spécifié par <em>maxretry</em>.</p>
<h2>Conclusion</h2>
<p>Il ne nous reste plus qu&#8217;à redémarrer <em>fail2ban</em> pour qu&#8217;il prenne en charge nos modifications :<br />
<code>[root@serveur:~]# /etc/init.d/fail2ban restart</code> Et vous pourrez ensuite aller voir dans les logs (<em>/var/log/fail2ban.log</em>) que nos modifications sont bien prises en compte.</p>
<p>Prochaine étape : <a title="IP Faileover, DNS et Reverse IP" href="http://www.e-grisel.net/wp/2010/09/09/serveur-dedie-ip-failover-dns-et-reverse-ip/" target="_self">IP Failover, DNS et Reverse IP</a><br />
Etape précédente : <a href="http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-mise-en-place-du-firewall/" target="_self">Mise en place du firewall</a></p>
<p>Pour plus d&#8217;informations sur la configuration de ce programme, n&#8217;hésitez pas à vous rendre sur le site officiel : <a href="http://www.fail2ban.org/wiki/index.php/Main_Page" target="_blank">www.fail2ban.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2010/08/05/serveur-dedie-un-peu-de-securite-supplementaire-avec-fail2ban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serveur dédié &#8211; Mise en place du firewall</title>
		<link>http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-mise-en-place-du-firewall/</link>
		<comments>http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-mise-en-place-du-firewall/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:36:38 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Serveur dédié]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=94</guid>
		<description><![CDATA[Maintenant que notre connexion SSH est parfaitement configurée, attelons-nous à mettre en place un bon firewall. Le noyau Linux contient de base le programme Iptables qui officie comme firewall, mais de base celui-ci est vide et n&#8217;empêche aucune tentative de connexion sur quelque port que ce soit, c&#8217;est pourquoi nous allons mettre en place un [...]]]></description>
			<content:encoded><![CDATA[<p>Maintenant que notre connexion SSH est parfaitement configurée, attelons-nous à mettre en place un bon firewall.</p>
<p>Le noyau Linux contient de base le programme Iptables qui officie comme firewall, mais de base celui-ci est vide et n&#8217;empêche aucune tentative de connexion sur quelque port que ce soit, c&#8217;est pourquoi nous allons mettre en place un script bash que j&#8217;ai réécrit sur la base de plusieurs sources diverses et variées.</p>
<p>Nous allons ouvrir 3 terminaux chacun connecté à notre serveur via SSH. Dans le premier nous vérifierons la bonne mise en place du firewall, dans le deuxième nous lancerons le script qui renseignera le firewall, et dans le troisième nous exécuterons une petite ligne de commande qui remettra automatiquement le firewall à zéro si nous nous retrouvons bloqué.</p>
<p><span id="more-94"></span><strong>Premier terminal</strong><br />
Vérification des règles du firewall :<br />
<code>[root@serveur:~]# iptables -L<br />
Chain INPUT (policy ACCEPT)<br />
target     prot opt source               destination<br />
&nbsp;<br />
Chain FORWARD (policy DROP)<br />
target     prot opt source               destination<br />
&nbsp;<br />
Chain OUTPUT (policy ACCEPT)<br />
target     prot opt source               destination<br />
&nbsp;<br />
Chain LOG_REJECT_SMTP (0 references)<br />
target     prot opt source               destination</code> Vous devriez avoir le même type d&#8217;affichage, à savoir aucune ligne n&#8217;apparaissant sous les lignes commençant par <em>target</em>. Nous reviendrons plus tard sur ce terminal.</p>
<p><strong>Deuxième terminal</strong><br />
Nous créons un fichier intitulé <em>firewall</em> dans le dossier /etc/init.d/ :<br />
<code>[root@serveur:~]# vim /etc/init.d/firewall</code> et nous y ajoutons le code suivant :<br />
<code>#!/bin/bash<br />
IPT=/sbin/iptables<br />
function start {<br />
# Vider les tables actuelles<br />
$IPT -t filter -F<br />
# Vider les règles personnelles<br />
$IPT -t filter -X<br />
# Interdire toute connexion entrante et sortante<br />
$IPT -t filter -P INPUT DROP<br />
$IPT -t filter -P FORWARD DROP<br />
$IPT -t filter -P OUTPUT DROP<br />
# ---<br />
# Ne pas casser les connexions etablies<br />
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
# Autoriser loopback<br />
$IPT -t filter -A INPUT -i lo -j ACCEPT<br />
$IPT -t filter -A OUTPUT -o lo -j ACCEPT<br />
# ICMP (Ping)<br />
$IPT -t filter -A INPUT -p icmp -j ACCEPT<br />
$IPT -t filter -A OUTPUT -p icmp -j ACCEPT<br />
# RTM (Real Time Monitoring) pour OVH<br />
$IPT -A INPUT -p udp --dport 6100:6200 -j ACCEPT<br />
$IPT -A OUTPUT -p udp --dport 6100:6200 -j ACCEPT<br />
# ---<br />
# SSH In<br />
$IPT -t filter -A INPUT -p tcp --dport 22 -j ACCEPT<br />
# SSH Out<br />
$IPT -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT<br />
# DNS In/Out / Nécessaire pour Bind9 et pour Inadyn<br />
$IPT -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT<br />
$IPT -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT<br />
$IPT -t filter -A INPUT -p tcp --dport 53 -j ACCEPT<br />
$IPT -t filter -A INPUT -p udp --dport 53 -j ACCEPT<br />
# NTP Out<br />
$IPT -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT<br />
# HTTP + HTTPS Out<br />
#$IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT<br />
#$IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT<br />
# HTTP + HTTPS In<br />
#$IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT<br />
#$IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT<br />
#$IPT -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT<br />
# Mail SMTP:25<br />
#$IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT<br />
#$IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT<br />
# Mail POP3:110<br />
#$IPT -t filter -A INPUT -p tcp --dport 110 -j ACCEPT<br />
#$IPT -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT<br />
# Mail IMAP:143<br />
#$IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT<br />
#$IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT<br />
# Mail POP3S:995<br />
#$IPT -t filter -A INPUT -p tcp --dport 995 -j ACCEPT<br />
#$IPT -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT<br />
# FTP Out<br />
#$IPT -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT<br />
# FTP In<br />
#modprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH<br />
#$IPT -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT<br />
#$IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
# Webmin:10000<br />
#$IPT -t filter -A INPUT -p tcp --dport 10000 -j ACCEPT<br />
#$IPT -t filter -A OUTPUT -p tcp --dport 10000 -j ACCEPT<br />
# Anti flood ou déni de service<br />
$IPT -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT<br />
$IPT -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT<br />
# Limitation des scans de ports à 1 scan par seconde<br />
$IPT -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT<br />
# Anti relais SMTP<br />
$IPT -N LOG_REJECT_SMTP<br />
$IPT -A LOG_REJECT_SMTP -j LOG --log-prefix ' SMTP REJECT PAQUET : '<br />
$IPT -A LOG_REJECT_SMTP -j DROP<br />
}<br />
function stop {<br />
$IPT -P INPUT ACCEPT<br />
$IPT -P OUTPUT ACCEPT<br />
$IPT -t filter -F<br />
}<br />
case "$1" in<br />
start|restart)<br />
echo -n "Démarrage du firewall..."<br />
stop<br />
start<br />
echo "OK."<br />
;;<br />
stop)<br />
echo -n "Arrêt du firewall..."<br />
stop<br />
echo "OK."<br />
;;<br />
*)<br />
echo "Utilisation : $0 {start|stop|restart}";<br />
exit 1<br />
;;<br />
esac<br />
exit 0</code> Nous enregistrons le fichier et lui donnons les droits en exécution :<br />
<code>[root@serveur:~]# chmod +x /etc/init.d/firewall</code> Comme vous pouvez le constater, j&#8217;ai commenté une bonne partie des commandes, ce qui fait qu&#8217;elles ne seront pas enregistrées dans Iptables. Nous les modifierons au fur et à mesure de l&#8217;installation des programmes qui auront besoin de ces accès.</p>
<p><strong>Troisième terminal</strong><br />
Ici nous allons préparer une ligne de commande qui va arrêter automatiquement notre firewall après avoir pressé une touche quelconque ou au plus tard 20 secondes après son lancement, ainsi nous pouvons tester sans risque notre script. Voici la ligne à préparer :<br />
<code>[root@serveur:~]# while true; do test=""; read -t 20 -p "OK? " test ; [ -z "$test" ] &amp;&amp; /etc/init.d/firewall stop ; done</code> Si vous n&#8217;avez pas suffisamment de temps pour effectuer vos tests, vous pouvez modifier le chiffre après le <em>-t</em>.</p>
<p><strong>Testons notre firewall</strong><br />
Allez dans le 3e terminal et lancer la ligne de commande. Passez rapidement dans le 2e terminal et lancez le firewall :<br />
<code>[root@serveur:~]# /etc/init.d/firewall start</code> Dirigez-vous ensuite directement dans le 1er terminal et vérifiez si vos nouvelles règles ont été enregistrées :<br />
<code>[root@serveur:~]# iptables -L<br />
Chain INPUT (policy DROP)<br />
target     prot opt source               destination<br />
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED<br />
ACCEPT     all  --  anywhere             anywhere<br />
ACCEPT     icmp --  anywhere             anywhere<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:domain<br />
ACCEPT     udp  --  anywhere             anywhere            udp dpt:domain<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:8443<br />
&nbsp;<br />
Chain FORWARD (policy DROP)<br />
target     prot opt source               destination<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,ACK/SYN limit: avg 1/sec burst 5<br />
ACCEPT     udp  --  anywhere             anywhere            limit: avg 1/sec burst 5<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5<br />
&nbsp;<br />
Chain OUTPUT (policy DROP)<br />
target     prot opt source               destination<br />
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED<br />
ACCEPT     all  --  anywhere             anywhere<br />
ACCEPT     icmp --  anywhere             anywhere<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:domain<br />
ACCEPT     udp  --  anywhere             anywhere            udp dpt:domain<br />
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ntp<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www<br />
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https<br />
&nbsp;<br />
Chain LOG_REJECT_SMTP (0 references)<br />
target     prot opt source               destination<br />
LOG        all  --  anywhere             anywhere            LOG level warning prefix ` SMTP REJECT PAQUET : '<br />
DROP       all  --  anywhere             anywhere</code> Vous voyez que nos différentes instructions ont bien été enregistrée.</p>
<p><strong>Mise en place du firewall</strong><br />
Maintenant que nous avons testé notre firewall, nous pouvons le lancer pour de bon :<br />
<code>[root@serveur:~]# /etc/init.d/firewall start</code> Il faut aussi que nous enregistrions notre firewall pour qu&#8217;il se lance automatiquement au démarrage du serveur et qu&#8217;il s&#8217;arrête automatiquement à l&#8217;arrêt du serveur (ben oui, ici on fait bien les choses <img src='http://www.e-grisel.net/wp/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) :<br />
<code>[root@serveur:~]# update-rc.d firewall start 40 S . stop 89 0 6 .<br />
Adding system startup for /etc/init.d/firewall ...<br />
/etc/rc0.d/K89firewall -&gt; ../init.d/firewall<br />
/etc/rc6.d/K89firewall -&gt; ../init.d/firewall<br />
/etc/rcS.d/S40firewall -&gt; ../init.d/firewall</code></p>
<p>Et voilà, le tour est joué !</p>
<p>Prochaine étape : <a href="http://www.e-grisel.net/wp/2010/08/05/serveur-dedie-un-peu-de-securite-supplementaire-avec-fail2ban/" target="_self">Un peu de sécurité supplémentaire avec Fail2ban</a><br />
Etape précédente : <a href="Configuration de SSH" target="_self">Configuration de SSH</a></p>
<p>Dernières modifications :<br />
16.08.2010 Ouverture des ports 6100 à 6200 en UDP pour autoriser le RTM (Real Time Monitoring) d&#8217;OVH</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-mise-en-place-du-firewall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serveur dédié &#8211; Configuration de SSH</title>
		<link>http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-configuration-de-ssh/</link>
		<comments>http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-configuration-de-ssh/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 09:24:34 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Serveur dédié]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[openSSH]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=77</guid>
		<description><![CDATA[Après avoir commandé le serveur dédié et reçu les codes d&#8217;accès, il y a plusieurs étapes à effectuer lors de la première connexion au serveur : Modifier le mot de passe root Créer un nouvel utilisateur Sécuriser SSH Faire une mise à jour du serveur Modifier les locales Modifier le mot de passe root La [...]]]></description>
			<content:encoded><![CDATA[<p>Après avoir commandé le serveur dédié et reçu les codes d&#8217;accès, il y a plusieurs étapes à effectuer lors de la première connexion au serveur :</p>
<ul>
<li>Modifier le mot de passe <em>root</em></li>
<li>Créer un nouvel utilisateur</li>
<li>Sécuriser SSH</li>
<li>Faire une mise à jour du serveur</li>
<li>Modifier les locales</li>
</ul>
<p><span id="more-77"></span></p>
<h2>Modifier le mot de passe <em>root</em></h2>
<p>La modification du mot de passe <em>root</em> s&#8217;effectue très simplement avec la ligne de code suivante :</p>
<p><code>[root@serveur:~]# passwd<br />
Entrez le nouveau mot de passe UNIX :<br />
Retapez le nouveau mot de passe UNIX :<br />
passwd: le mot de passe a été mis à jour avec succès</code></p>
<p>La commande est identique pour chaque utilisateur qui désire changer son mot de passe. Pour changer le mot de passe d&#8217;un utilisateur lorsqu&#8217;on est <em>root</em>, la commande est la suivante :</p>
<p><code>[root@serveur:~]# passwd user</code></p>
<p>ou <em>user</em> représente le login de l&#8217;utilisateur</p>
<h2>Créer un nouvel utilisateur</h2>
<p>Afin d&#8217;éviter d&#8217;avoir à se connecter au serveur en utilisant <em>root</em>, nous allons créer un nouvel utilisateur :</p>
<p><code>[root@serveur:~]# adduser --home /home/etienne etienne<br />
Ajout de l'utilisateur "etienne"...<br />
Ajout du nouveau groupe "etienne" (1000)...<br />
Ajout du nouvel utilisateur "etienne" (1000) avec le groupe "etienne"...<br />
Création du répertoire personnel "/home/etienne"...<br />
Copie des fichiers depuis "/etc/skel"...<br />
Entrez le nouveau mot de passe UNIX :<br />
Retapez le nouveau mot de passe UNIX :<br />
passwd : le mot de passe a été mis à jour avec succès<br />
Modification des informations relatives à l'utilisateur etienne<br />
Entrez la nouvelle valeur ou "Entrée" pour conserver la valeur proposée<br />
Nom complet []: Etienne Grisel<br />
N° de bureau []:<br />
Téléphone professionnel []:<br />
Téléphone personnel []:<br />
Autre []:<br />
Ces informations sont-elles correctes ? [O/n] O</code></p>
<p>Et voilà, c&#8217;est aussi simple que cela, nous pouvons passer à la suite.</p>
<h2>Sécuriser SSH</h2>
<p>Il faut savoir que lorsque vous vous connecter à votre serveur via SSH comme cela :<br />
<code>[etienne@home:~]$ ssh root@ip.de.mon.serveur</code> vos données circulent en clair sur internet jusqu&#8217;à ce que vous ayez saisi votre mot de passe, ce qui n&#8217;est pas très sécurisé, c&#8217;est pourquoi nous allons utiliser le système des clés publiques afin que tout soit crypté dès le début. Et petit avantage supplémentaire, vous n&#8217;aurez plus à saisir votre mot de passe à chaque connexion.</p>
<p>Commençons par générer une clef locale sur votre ordinateur personnel (Linux) :<br />
<code>[etienne@home:~]$ ssh-keygen -t dsa</code> et accepter la localisation proposée. Ensuite saisir une « passphrase »,  sorte de mot de passe sous forme de phrase. Vous aurez ainsi 2 fichiers  créés, l’un contenant votre clef privée (/home/etienne/.ssh/id_dsa) et  l’autre contenant votre clef publique (/home/etienne/.ssh/id_dsa.pub).</p>
<p>Il faut ensuite enregistrer votre clef publique sur le serveur afin qu’il puisse vous identifier<br />
<code>[etienne@home:~]$ scp ~/.ssh/id_dsa.pub etienne@ip.de.mon.serveur:~/</code> puis sur le serveur (copie la clé sur le serveur)<br />
<code>[etienne@serveur:~]$ cat id_dsa.pub &gt;&gt; ~/.ssh/authorized_keys <em>(enregistre la clé)</em><br />
</code><code>[etienne@serveur:~]</code><code>$ rm ~/id_dsa.pub</code> (supprime le fichier que nous venons de transférer) et le tour est joué.</p>
<p>Pour éviter de devoir à chaque fois taper la totalité de votre adresse IP ou du nom de domaine, vous pouvez créer un <strong>alias</strong>. Pour ce faire créer un fichier « config » dans le dossier ~/.ssh/ de votre ordinateur local et ajoutez-y les données suivantes:<br />
<code>Host mon_alias<br />
User votre_user_sur_le_serveur<br />
HostName adresse_ip_du_serveur_ou_nom_du_serveur</code> puis pour vous connecter<br />
<code>ssh mon_alias</code></p>
<p>Nous allons maintenant vérifier que le fichier de configuration de SSH (/etc/ssh/sshd_config) est configuré de manière sûre. Voici les données que nous devons, à mon humble avis, vérifier et éventuellement modifier :</p>
<p><strong>Port 22</strong><br />
Il s&#8217;agit du port sur lequel nous nous connectons via SSH (par défaut <em>22</em>). La logique voudrait qu&#8217;on le modifie afin d&#8217;éviter les attaques de force brute, mais en faisant ainsi nous ôtons toute possibilité à notre prestataire (OVH dans mon cas) de pouvoir nous dépanner en cas de besoin, je vous propose donc de le laisser tel quel.</p>
<p><strong>Protocol 2</strong><br />
Il s&#8217;agit de la version du protocole SSH utilisée. Le protocole 1 ayant quelques failles de sécurité, il faut impérativement utiliser la version 2.</p>
<p><strong>PermitRootLogin yes</strong><br />
Autorisons-nous <em>root</em> à se connecter directement en SSH ? En théorie non, car un pirate pourrait utiliser une attaque par dictionnaire pour tenter de se connecter en <em>root</em> sur notre serveur, mais pour les mêmes raisons que pour le choix du port, nous allons laisser l&#8217;accès à <em>root</em>. Une bonne utilisation du firewall (via Iptables) et de Fail2ban nous permettrons de limiter au maximum les risques.</p>
<p><strong>RSAAuthentication yes<br />
PubkeyAuthentication yes</strong><br />
Ces options nous permettent de nous connecter à l&#8217;aide d&#8217;une clef publique, comme nous l&#8217;avons vu précédemment. Je vous recommande chaudement de mettre ces options à <em>yes</em>.</p>
<p><strong>PermitEmptyPasswords no</strong><br />
Voulons-nous autoriser l&#8217;accès à notre serveur SSH sans mot de passe ? Bien sûr que non, cela serait une énorme faille dans la sécurité de notre serveur ! Nous laissons donc la valeur à <em>no</em>.</p>
<p><strong>PasswordAuthentication yes</strong><br />
Voulons-nous pouvoir nous connecter en utilisant un mot de passe (comme nous le faisions avant d&#8217;utiliser le système des clefs publiques) ? Normalement ce n&#8217;est plus nécessaire, à moins de devoir se connecter au serveur depuis un autre ordinateur que celui sur lequel vous avez généré la clef. Si ce n&#8217;est pas le cas, nous pouvons passer cette option à <em>no</em> (n&#8217;oubliez pas d&#8217;enlever le # au début de la ligne, sinon elle restera en commentaire et vos modifications ne seront pas prisent en compte). Nous reviendrons sur cette option dans un prochain article sur MySecureShell, mais pour l&#8217;instant mieux vaut rester prudent et empêcher qu&#8217;un pirate tente une attaque par dictionnaire.</p>
<p>Nous avons fait le tour des options qui me semblent importantes. Pour que le serveur SSH les prenne en compte, n&#8217;oublions pas de le redémarrer<br />
<code>[root@serveur:~]# /etc/init.d/ssh restart</code> et de tester une connexion via un autre terminal que celui avec lequel nous sommes connectés afin de s&#8217;assurer que nous ne nous sommes pas auto-exclu de notre serveur.</p>
<h2>Faire une mise à jour du serveur</h2>
<p>Une chose très importante sur un serveur internet, tout comme sur chaque ordinateur, c&#8217;est de s&#8217;assurer que les logiciels que nous utilisons sont toujours à jour. Pour cela, sur Debian GNU/Linux ou toute autre distribution linux dérivée de Debian, on exécute la ligne de code suivante :<br />
<code>[root@serveur:~]# apt-get update &amp;&amp; apt-get upgrade</code><br />
Si des logiciels doivent être mis à jour, une liste vous sera proposée et vous n&#8217;aurez plus qu&#8217;à valider par une pression sur la touche [Enter] de votre clavier. N&#8217;oubliez pas d&#8217;effectuer cette opération régulièrement si vous ne voulez pas risquer une intrusion sur votre serveur.</p>
<h2>Modifier les locales</h2>
<p>Un problème que j&#8217;ai eu lors de mes premières connexions, c&#8217;est que tous les accents et caractères spéciaux étaient remplacés par un losange noir avec un point d&#8217;interrogation. Pour éviter cela, une petite commande toute simple et le tour est joué :<br />
[root@serveur:~]# dpkg-reconfigure locales et dans la deuxième page on sélectionne par défaut l&#8217;option <em>fr_FR.UTF-8</em> ou n&#8217;importe quelle option qui fini par <em>UTF-8</em>. Ensuite il ne nous reste plus qu&#8217;à nous déconnecter et nous reconnecter et le problème a disparu ! Magique n&#8217;est-ce pas ? <img src='http://www.e-grisel.net/wp/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Prochaine étape : <a href="http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-mise-en-place-du-firewall/" target="_self">Mise en place du firewall</a><br />
Etape précédente : <a href="http://www.e-grisel.net/wp/2010/08/04/1-serveur-dedie-introduction/" target="_self">Introduction</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-configuration-de-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serveur dédié &#8211; Introduction</title>
		<link>http://www.e-grisel.net/wp/2010/08/04/1-serveur-dedie-introduction/</link>
		<comments>http://www.e-grisel.net/wp/2010/08/04/1-serveur-dedie-introduction/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:25:06 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Serveur dédié]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[BIND9]]></category>
		<category><![CDATA[Courier]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[IP failover]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[MySecureShell]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHPmyAdmin]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[reverse proxy]]></category>
		<category><![CDATA[RoundCube]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webmail]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=58</guid>
		<description><![CDATA[Comme certains d&#8217;entre vous le savent, je crée et je gère depuis une dizaine d&#8217;années quelques sites web pour moi ou pour des proches. Au fur et à mesure mon expérience a grandi, mes sites sont devenus plus sophistiqués techniquement et mes besoins au niveau de l&#8217;hébergement sont devenus plus pointus, à tel point que [...]]]></description>
			<content:encoded><![CDATA[<p>Comme certains d&#8217;entre vous le savent, je crée et je gère depuis une dizaine d&#8217;années quelques sites web pour moi ou pour des proches. Au fur et à mesure mon expérience a grandi, mes sites sont devenus plus sophistiqués techniquement et mes besoins au niveau de l&#8217;hébergement sont devenus plus pointus, à tel point que je me suis décidé aujourd&#8217;hui à prendre un serveur dédié.</p>
<p>Après avoir effectué de longues et studieuses recherches sur internet, j&#8217;ai trouvé beaucoup de sites qui parlent d&#8217;une partie de l&#8217;installation et/ou de la configuration d&#8217;un site web ou d&#8217;un serveur dédié, mais je n&#8217;en ai pas trouvé un seul qui regroupe toutes les informations utiles. Aussi ai-je décidé de prendre mon courage à deux mains et d&#8217;écrire au fur et à mesure tout ce que je fais sur mon serveur afin de pouvoir &laquo;&nbsp;facilement&nbsp;&raquo; en configurer un nouveau quand j&#8217;en aurai besoin, mais aussi afin que vous puissiez vous épargner les heures de recherche que j&#8217;ai déjà effectuées. N&#8217;étant moi-même qu&#8217;un amateur dans ce domaine, je ne suis pas à l&#8217;abri de l&#8217;erreur et accepterai de ce fait avec grand plaisir vos commentaires et remarques qui me permettront de corriger et améliorer mes articles.</p>
<p><span id="more-58"></span>Concernant le serveur dédié, mon choix s&#8217;est porté sur l&#8217;offre de base de <a href="http://www.kimsufi.com/ks/" target="_blank">Kimsufi.com</a> qui me permet d&#8217;avoir un vrai serveur dédié à moindre frais et dont les capacités devraient être largement suffisantes pour tenir la charge de quelques petits sites personnels. Le choix du système d&#8217;exploitation (Debian GNU/Linux) s&#8217;est fait naturellement car j&#8217;utilise Ubuntu (dérivé de Debian) depuis ses débuts sur mon PC personnel et Debian sur mon petit serveur de test à domicile, aussi suis-je déjà en terrain relativement connu.</p>
<p>L&#8217;installation et la configuration d&#8217;un serveur dédié ne se faisant pas à la hâte, j&#8217;ai décidé de procéder par étapes :</p>
<ol>
<li><a href="http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-configuration-de-ssh/" target="_self">Configuration de SSH</a></li>
<li><a href="http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-mise-en-place-du-firewall/" target="_self">Mise en place du firewall</a></li>
<li><a href="http://www.e-grisel.net/wp/2010/08/05/serveur-dedie-un-peu-de-securite-supplementaire-avec-fail2ban/" target="_self">Un peu de sécurité supplémentaire avec Fail2ban</a></li>
<li><a href="http://www.e-grisel.net/wp/2010/09/09/serveur-dedie-ip-failover-dns-et-reverse-ip/" target="_self">IP Failover, DNS et Reverse IP</a></li>
<li><a href="http://www.e-grisel.net/wp/2010/10/26/serveur-dedie-apache-php-mysql-et-phpmyadmin-3/">Apache, PHP, MySQL et phpMyAdmin</a></li>
<li>MySecureShell pour un SFTP sécurisé et personnalisé</li>
<li>Nginx comme reverse proxy pour le contenu statique</li>
<li>Un serveur mail avec Postfix et Courier</li>
<li>RoundCube, un webmail léger</li>
<li>Backup FTP</li>
</ol>
<p>En voilà un sacré programme ! et il s&#8217;étoffera sans doute au fur et à mesure de mes expériences et de vos commentaires. En maintenant assez de blabla, passons à la première étape : la <a href="http://www.e-grisel.net/wp/2010/08/04/serveur-dedie-configuration-de-ssh/" target="_self">configuration de SSH</a>.</p>
<p>Dernières modifications :<br />
05.08.2010 Modification de l&#8217;intitulé de certaines étapes<br />
16.10.2010 Modification de l&#8217;ordre des étapes</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2010/08/04/1-serveur-dedie-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novalles Auto Cross 2009</title>
		<link>http://www.e-grisel.net/wp/2009/09/02/novalles-auto-cross-2009/</link>
		<comments>http://www.e-grisel.net/wp/2009/09/02/novalles-auto-cross-2009/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 12:57:39 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Photographie]]></category>
		<category><![CDATA[autocross]]></category>
		<category><![CDATA[novalles]]></category>
		<category><![CDATA[photos]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=47</guid>
		<description><![CDATA[Cette année avait lieu la 11e édition de l&#8217;Auto Cross de Novalles. Le soleil, la bise, des quads, un hélicoptère et pas moins de 64 voitures préparées pour l&#8217;occasion s&#8217;étaient donnés rendez-vous près du petit village de Novalles. Une fois encore, le spectacle fut au rendez-vous, avec quelques belles figures de style telles que des [...]]]></description>
			<content:encoded><![CDATA[<p>Cette année avait lieu la 11e édition de l&#8217;Auto Cross de Novalles. Le soleil, la bise, des quads, un hélicoptère et pas moins de 64 voitures préparées pour l&#8217;occasion s&#8217;étaient donnés rendez-vous près du petit village de Novalles.</p>
<p>Une fois encore, le spectacle fut au rendez-vous, avec quelques belles figures de style telles que des tonneaux, des roues baladeuses et des demonstrations de véhicules téléguidés.</p>
<p>Si vous n&#8217;avez pas eu la chance d&#8217;assister à ce superbe spectacle, ou si vous désirez vous replonger dans l&#8217;ambiance de cette belle journée, les photos du <a title="GaleriesPhotos.ch - Autocross de Novalles 2009" href="http://www.galeriesphotos.ch/galeries/5-1-autocross_de_novalles_2009">Novalles Auto Cross 2009</a> sont disponibles sur mon autre site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2009/09/02/novalles-auto-cross-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Photos de judo</title>
		<link>http://www.e-grisel.net/wp/2009/03/28/photos-de-judo/</link>
		<comments>http://www.e-grisel.net/wp/2009/03/28/photos-de-judo/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 21:14:53 +0000</pubDate>
		<dc:creator>etienne</dc:creator>
				<category><![CDATA[Photographie]]></category>
		<category><![CDATA[judo]]></category>
		<category><![CDATA[photos]]></category>

		<guid isPermaLink="false">http://www.e-grisel.net/wp/?p=46</guid>
		<description><![CDATA[Ce samedi à eu lieu à Yverdon le deuxième tour de la ligue A Suisse de Judo, entre les équipes féminines et masculines de l&#8217;école Dégallier et leurs adversaires de Suisse Alémanique (désolé, je n&#8217;ai pas retenu leur provenance) et de Genève. Retrouvez toutes les photos sur mon site dédié: galeriesphotos.ch]]></description>
			<content:encoded><![CDATA[<p>Ce samedi à eu lieu à Yverdon le deuxième tour de la ligue A Suisse de Judo, entre les équipes féminines et masculines de l&#8217;<a title="Ecole de Judo Dégallier" href="http://www.judodegallier.ch/" target="_blank">école Dégallier</a> et leurs adversaires de Suisse Alémanique (désolé, je n&#8217;ai pas retenu leur provenance) et de Genève.</p>
<p>Retrouvez toutes les photos sur mon site dédié: <a title="GaleriesPhotos.ch - Les photos de vos événements - Compétition de judo à Yverdon" href="http://www.galeriesphotos.ch/fr/galeries/3-1-competition_de_judo_a_yverdon">galeriesphotos.ch</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-grisel.net/wp/2009/03/28/photos-de-judo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

