Christophe Le Bot

  • Navigation rapide
Pratique de la conception numérique

Derniers commentaires

  • Test d’interface : paiement d’amendes en ligne
    • Herbaux Jean-Marie | J’ai été coupé a 15h56. Je ne parviens pas confirmer mon payement par C B via le payement.en ligne par Internet. J’entre bien les quatre groupes de chiffres et les deux...
    • Rovellotti Olivier | Ce site est un véritable cauchemar UX Excellent article http://www.natural-solutions.e u/
    • Julien | Pour info, mon e-numero etait sur le cote gauche, ecrit verticalement, sans aucun label.
  • Agence web ou SSII : que choisir ?
    • Rovellotti Olivier | La limite n’est plus aussi claire qu’avant effectivement et les différence de prix sont du l’ordre du *10. Généralement les équipes dans les agences sont plus...
  • Une excellente thèse sur Simile Exhibit
    • Olivier Rossel | Bonjour. Malgre les annees, avez vous toujours en memoire vos usages d’Exhibit? Je serais ravi d’en discuter avec vous. Cordialement, Olivier Rossel.
 

Archives de la catégorie
Serveurs

Google is watching your server

Dans son blog Actulligence, Frédéric Martinet nous donne un excellent exemple de la puissance de Google. Son article Trouver des fichiers multimédias avec Google contient une requête permettant de trouver tous les fichiers sonores (MP3 et WMA) contenant le terme nirvana. Résultat fort démonstratif qui peut être appliqué dans un contexte de veille active (par exemple, recherche de documents sensibles ou de copies illicites).

J’aime bien cet exemple parce qu’il exploite un défaut de configuration des serveurs web. En effet, si on effectue une requête sur un dossier qui ne contient pas de page index, le serveur web va (trop souvent) nous en montrer le contenu. C’est le cas pour toutes les pages trouvées par la requête de Frédéric Martinet. « Et alors, quel est le problème ? C’est un site web public ! » Oui, sauf que je connais beaucoup de gens pressés qui placent des contenus privés dans des dossiers publics en se disant : « qui va deviner que je place ce fichier à cet endroit ? »

Google le saura.

Vous me prenez pour un parano, hein ? Alors voici un exemple. WordPress, le moteur de blog que j’utilise, place tous les fichiers que je lui envoie, dans le dossier wp-content/uploads/. Celui-ci n’étant pas interdit d’accès (configuration par défaut de la majorité des serveurs mutualisés), on peut obtenir la liste de tous les médias de mon blog. A priori, ce sont les médias qui illustrent mes articles, donc pas de soucis. Et pourtant, il y en a un énorme : les fichiers des articles privés ou en cours de rédaction sont visibles par n’importe qui ! Si vous placez des rapports, documents, images et autres fichiers rien que pour vous ou vos proches, tout le monde en profitera, sachez-le !

On peut appeler ça une faille de sécurité, non ? Et comme je suis très joueur, un fichier appartenant à un article privé est placé dans mes médias. Je donne 72h à Google pour le trouver. Vous pouvez essayer aussi.

Mise à jour : Je suis parano ! Google n’a pas trouvé mon fichier. Son robot d’indexation est pourtant passé à plusieurs reprises, sans prendre en compte le dossier wp-content/uploads/. Vu le nombre de blogs tournant sous WordPress, Google a peut-être pris l’initiative de ne jamais indexer ce dossier-là. Par contre, d’autres « visiteurs » moins sympathiques m’obligent à protéger mon dossier wp-content/ : visiblement la liste de extensions installées (wp-content/plugins/) semblaient beaucoup leur plaire… La récréation est finie !

Et vous ? Avez-vous constaté des comportements étranges ou des attaques directes sur votre blog ? Comment le protégez-vous ?

Comment faire tourner Ubuntu Server sur un (très) vieux serveur

Depuis toujours, Linux est réputé pour sa stabilité et son efficacité, même sur des petites configurations. Alors plutôt que de jeter votre PC de 10 ans d’âge (une vraie guimbarde !), pourquoi ne pas le transformer en serveur de test sous Linux ?

C’est ce que j’ai entrepris hier avec la distribution Ubuntu Server. Je récupère donc la version en cours (la 6.10) en faisant bien attention de prendre l’image ISO qui correspond à ma vieille guimbarde (ubuntu-6.10-server-i386.iso). Je grave le cédérom, j’installe le système sans problème et je redémarre.

Ah, tiens ! Il ne redémarre pas. Linux me ferait-il des misères ? Ce n’est pas son genre… Et pourtant, le BIOS et GRUB (le système d’amorçage) se chargent bien, mais au moment du chargement du système, la machine redémarre toute seule. Evidemment, sans message d’erreur…

Une petite recherche et j’obtiens un début de réponse : le noyau d’Ubuntu Server est compilé pour les machines i686. Il faut donc au moins un processeur Intel Pentium Pro pour le faire tourner. Exit donc les Pentium I… et mon valeureux AMD K6/II 400MHz !

Sauf qu’il y a toujours moyen de ruser. Il suffit de changer de noyau, ce qui reste très abordable sans refaire l’installation :

  • Redémarrer la machine sur le cédérom d’installation.
  • Choisir le mode Rescue.
    Un système se charge en mémoire.
  • Choisir les options proposées par défaut (notamment le montage du disque racine et la console).
  • Une fois la console active, installer le noyau adéquat :
    apt-get install linux-386
  • Supprimer le noyau par défaut :
    apt-get remove linux-server
  • Retirer le cédérom et redémarrer la machine

Ouf, ça marche ! Dommage que le nom de l’ISO (ubuntu-6.10-server-i386.iso) ne soit pas en conformité avec son contenu. Cela m’aurait évité de perdre une bonne heure…

Comment éviter un double référencement

Un internaute est un être précieux… mais volatile. Il suffit d’un détail pour que votre site passe aux oubliettes.

Dans la « top list » des petits trucs qui agacent : l’obligation d’entrer « www. » dans la barre d’adresse du navigateur pour accéder à un site. Quatre caractères qui n’apportent aucune information particulière, sauf celle de définir un site web (ce que l’on sait déjà puisqu’on utilise le protocole HTTP). Heureusement, la plupart des sites propose un accès via leur domaine seul (exemple.com) ou avec l’adresse complète (www.exemple.com).

Cependant, aux yeux des moteurs d’indexation, il s’agit de deux sites différents. Votre contenu sera donc diluer dans les index des moteurs de recherche. De même, les liens vers votre site ou son clone diminueront le « poids » de vos pages web (le fameux « page rank » de Google, par exemple).

Pour conserver l’avantage d’une adresse courte et éviter le double référencement, il suffit de placer ces lignes dans le fichier .htaccess situé à la racine du site :

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.exemple\.com [NC]
RewriteRule (.*) http://www.exemple.com/$1 [QSA,R=301,L]

Cette règle de réécriture permettra au serveur de rediriger les visiteurs (et les moteurs d’indexation) vers l’adresse complète (www.exemple.com).

Pourquoi ne pas en profiter pour faire l’inverse, à savoir simplifier l’adresse en redirigeant vers le domaine seul ? Parce que la norme impose de garder « www » comme adresse principale d’un site web. Internet et les noms de domaines existaient bien avant le web (les premiers domaines en « .com » ont été achetés en 1985, cinq ans avant la naissance du web) et servent à d’autres services internet (messagerie, transferts de fichiers, surveillance réseau).

Tutoriel sur les serveurs

Avec le projet « Tutoriel sur les serveurs » du site Linux-France, vous avez de quoi attraper une indigestion de lecture : c’est long, avec le look « geek Linux », mais quelle richesse !

Même si j’ai beaucoup de mal à lire cette prose dégoulinante à l’écran, j’y trouve souvent les petits détails qui règlent mes gros soucis !

L’internet rapide et permanent

L’internet rapide et permanent

A l’occasion d’un petit nettoyage salutaire de mes archives, j’ai retrouvé une adresse un peu vite oubliée. Il s’agit du site « L’internet rapide et permanent » de Christian Caleca.

Au sommaire, des dossiers complets sur les réseaux, leur sécurité, les protocoles, les services les plus courants, les technologies de transmission, etc. La richesse et la clarté du contenu sont exemplaires.

Ce site est à classer dans les indispensables. Un grand merci à Christian Caleca pour cet excellent travail de pédagogie et de vulgarisation.

Régler l’heure de serveurs virtuels sous Debian

Quand des serveurs ont besoin de communiquer entre eux, il devient vite indispensable d’utiliser la même référence de temps. Cela semble évident mais, en pratique, ce petit détail est souvent négligé. Résultat : synchronisation de données défectueuses, résultats incohérents, documents écrasés par d’anciennes versions, fichiers de log illisibles… Que du bonheur !

Pourtant, mettre à l’heure un serveur est simple. Et quand le serveur accueille des serveurs virtuels ? Comme nous allons le voir, cela reste toujours simple !

Lire l’heure

L’heure d’un serveur sous Debian (comme sur d’autres distributions Linux) est gérée par la commande date. Sans paramètre, elle retourne la date et l’heure du système :

# date
mar avr 18 12:47:53 CEST 2006

On remarque au passage que le résultat est formaté selon les paramètres de localisation du système (ici en français pour l’heure locale de Paris).

Pour obtenir l’heure UTC, c’est-à-dire l’heure universelle ou heure de Greenwich, on ajoute le paramètre -u :

# date -u
mar avr 18 10:47:53 UTC 2006

On obtient bien un décalage de 2 heures par rapport à l’heure de Paris.

Modifier l’heure

Pour modifier l’heure, on utilise le paramètre --set :

# date --set 12:53:20

Et si la date n’est pas bonne, même remède :

# date --set 2006-05-18

Configuration du fuseau horaire

Si le fuseau horaire ne convient pas, inutile de réinstaller le système ! On utilise simplement la commande tzconfig et on répond aux questions :

# tzconfig
Your current time zone is set to Europe/Paris
Do you want to change that? [n]: y

Please enter the number of the geographic area in which you live:
[...]
Number: 8

[...]

Please enter the name of one of these cities or zones
[...]
Name: Paris
Your default time zone is set to 'Europe/Paris'.
Local time is now: mar avr 18 13:07:02 CEST 2006.
Universal Time is now: mar avr 18 11:07:02 UTC 2006.

Facile ! Pour information, la configuration du fuseau horaire est stockée dans le fichier /etc/timezone.

Temps système et temps BIOS

Tout semble parfait mais il y a un détail sournois : votre serveur gère deux références de temps, celle du système et celle de la carte-mère (horloge BIOS) ! Et elles peuvent très bien ne pas indiquer la même heure ! Dans certains cas, cette subtile différence peut avoir des conséquences agaçantes lors du redémarrage du serveur (par exemple, perte de l’heure système). Comme dit le proverbe, « l’homme qui a une montre sait l’heure qu’il est, celui qui en a deux n’est jamais sûr. »

Donc, autant régler une bonne fois pour toute l’heure matérielle avec la commande hwclock. Comme nous avons déjà réglé l’heure système, on utilise l’option --systohc pour la récupérer et --utc pour la définir en heure UTC :

# hwclock --systohc --utc

Synchronisation avec un serveur de temps

« Bon, tout est à l’heure, je passe à autre chose. »

Pas encore ! Car le quartz qui pilote l’oscillation de l’horloge de la carte-mère n’est jamais parfait. L’heure va donc se décaler petit à petit (parfois de plusieurs secondes par jour !). Heureusement, le protocole NTP (Network Time Protocol) vient à notre secours et offre la possibilité de synchroniser l’horloge du serveur avec un serveur de temps qui fait référence. Là encore, rien de bien méchant.

Il faut d’abord installer les paquets qui permettront d’utiliser NTP :

# apt-get install ntp-simple ntpdate

Puis, on configure NTP :

# vi /etc/ntp.conf

Concernant les serveurs NTP, choisissez sans hésiter ceux du projet pool.ntp.org qui optimisent les requêtes NTP par l’utilisation de clusters répartis dans le monde entier. Une rapide visite de ce site vous indiquera les serveurs NTP à utiliser dans votre zone géographique. Si votre serveur est en France, on ajoute donc les lignes suivantes dans ntp.conf :

server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org

Avant de mettre en place le démon qui synchronisera l’heure automatiquement, il faut le faire manuellement (ici, avec le serveur principal de pool.ntp.org) :

# ntpdate pool.ntp.org

Maintenant que l’heure système est bonne, reste à mettre à jour celle de l’horloge BIOS :

# hwclock --systohc --utc

Pourquoi choisir l’heure UTC ? Pour éviter de perdre l’heure si les serveurs NTP ne sont pas accessibles au redémarrage de votre serveur.

Il reste à charger nos modifications et la synchronisation automatique est en place :

# /etc/init.d/ntp-server restart

On termine par le redémarrage du serveur qui est obligatoire pour éviter quelques mauvaises surprises (par exemple, les tâches cron qui se déclenchent à l’heure UTC ou les fonctions de temps de PHP qui perdent deux heures…). Si le redémarrage n’est pas possible, il faut relancer tous les services actifs.

Si vous souhaitez mettre à jour l’heure manuellement, le paquet ntp-server n’est pas utile. Gardez simplement le paquet ntpdate et utilisez directement la commande ntpdate. Vous pouvez aussi désactiver le chargement du démon NTP au démarrage :

# update-rc.d ntp remove

Et pour le remettre en place :

# update-rc.d ntp defaults

Régler l’heure d’un serveur virtuel (vserver)

« Et les serveurs virtuels dans tout ça ? Faut-il faire toutes ces opérations pour chacun des 100 vservers installés sur ma machine ? »

Non, heureusement ! Pour que le système de fichiers fonctionne correctement, tous les vservers utilisent la même référence de temps, celle du serveur principal. On ne peut donc pas modifier l’heure d’un vserver. Par contre, un vserver peut avoir sa propre configuration de fuseau horaire, très utile pour proposer des services à des utilisateurs de zones géographiques différentes.

Comme nous l’avons vu plus haut, la commande tzconfig permet de définir le fuseau horaire pour calculer le décalage horaire entre l’heure UTC du serveur principal et celle du vserver. On remarque au passage la nécessité d’utiliser l’heure UTC comme référence de temps sur un serveur.

Les puristes (ou plutôt les administrateurs qui ont la responsabilité d’exploiter des serveurs de production en toute sécurité) se pencheront sur les nombreuses options de configuration de NTP : installation d’un serveur NTP local, filtrage des adresses IP, portée des requêtes, périodicité de la synchronisation, etc. A chacun sa cuisine !

Tester le serveur DNS d’un domaine

Gérer des noms de domaines est une activité à hauts risques car il s’agit du point d’entrée de n’importe quel service internet. Comment être certain d’avoir des zones bien configurées ? La première chose, c’est bien sûr de vérifier votre serveur DNS et l’ensemble de ces enregistrements.

Mais en cas de mauvais foctionnement, un test à distance du domaine est une vraie bouée de secours. Voici deux outils très utiles :

Finalement, le plus gros risque reste d’oublier de renouveler le domaine. Et croyez-moi, quand on en gère beaucoup, ça arrive plus souvent qu’on ne le croit. Même Microsoft s’y est laissé prendre avec le domaine microsoft.com ! Inutile de vous précipiter, c’était il y a quelques années déjà…

Ajouter un disque à un serveur Linux Debian

Votre petit serveur Debian fonctionne toujours à merveille (comment pourrait-il en être autrement ?). Mais un matin, tout se bloque. Un rapide tour de la machine, un petit df -h en ligne de commande et le constat est sans appel : plus de place sur le disque ! Il faut en ajouter un second.

Voici brièvement comment monter un disque ATA :

  1. Installer le disque (alimentation, connexion IDE sur le bon port, en maître ou en esclave, avec une nappe de 80 fils)
  2. Partionner le disque (bien vérifier le nom du nouveau disque pour ne pas partitionner le premier !) :
    cfdisk /dev/hdb
  3. Formater chaque partition :
    mke2fs -j /dev/hdb1
  4. Tester chaque partition :
    cd /mnt
    mkdir disque2
    chmod 777 disque2
    mount -t ext3 /dev/hdb1 /mnt/disque2
    cd /mnt/disque2
  5. Monter le disque au démarrage du système :
    cd /etc
    vi fstab

    Ajouter la ligne :

    /dev/hdb1 /mnt/disque2 ext3 defaults 1 1

    (options selon l’utilisation que vous en ferez)

Finalement, c’est plus simple qu’on ne l’imagine !