Christophe Le Bot

  • Navigation rapide
Pratique de la conception numérique

Derniers commentaires

  • Test d’interface : paiement d’amendes en ligne
    • julienne | J’ai payé ce une contravention sur le cite dédié à cela ,je n’ai pas eu mon justificatif d paiement je suis inquiète car la semaine prochaine je serai dans la semaine ou je...
    • loren | L’algorithme surpuissant imaginé par les grands cerveaux de cette administration élimine la 5eme case lorsque les 3 premiers chiffres entrés par le citoyen verbalisé sont égaux. Pour...
  • Ajouter un disque à un serveur Linux Debian
    • nicolasg | Bonjour, Je réponds un peu tard à bosco Il est possible d’ajouter le deuxième disque comme un disque normal, et de faire un montage LVM (LVM : logic volume manaaer) avec les deux...
  • Récupérer le dernier auto-incrément MySQL avec PHP
    • chanteur06 | salut , une question : comment je remplace ça svp? >> $id_resto_tmp = mysql_insert_id(); mysql_query(‘INSERT INTO users_restos SET id_user=\ ».$_SE...
    • franky | Je pense que c’est ton commit qui n’est pas bon… relis le code de la fin de l’article… A+ utile plus de 5 ans après…
 

Archives de la catégorie
Exploiter

L’État français crée sa propre autorité de certification racine

Voilà une nouvelle que j’attendais depuis 6 ans ! Avant d’expliquer pourquoi, voici la définition d’une autorité de certification (selon le site de sécurité de Teamlog) :

Une Autorité de Certification appelée aussi AC ou CA (Certificate Authority) est chargée d’émettre et de gérer des certificats numériques.

Elle est responsable de l’ensemble du processus de certification et de la validité des certificats émis. Une Autorité de Certification doit définir une Politique de certification qui va établir l’ensemble des règles de vérification, de stockage et de confidentialité des données appartenant à un certificat ainsi que la sécurité de stockage de sa propre clef privée nécessaire à la signature des certificats.

Les certificats émis par ces autorités permettent d’accéder à des services web sécurisés (paiement en ligne, consultation de comptes bancaires, services administratifs), mais aussi de signer des documents numériques pour en certifier l’origine et le contenu (e-mails, contrats, certificats de déclaration). Ils garantissent donc l’authenticité, la sécurité et la confidentialité des informations.

Le problème, c’est que les autorités de certification racine (celles qui certifient les autorités de certification, dites « autorités de certification déléguées ») sont toutes des sociétés de droit privé étrangères (pour ne pas dire américaines…). Dès lors, comment garantir le contrôle, la confidentialité et la fiabilité des échanges sécurisés de l’État français ? Pourquoi dépenser des sommes importantes dans la sécurisation des échanges, si la base est faillible ? J’ai souvent été confronté à ce dilemne lors de mes interventions dans des institutions publiques… sans avoir d’autre choix que d’installer des certificats américains sur des serveurs de l’administration française !

En devenant lui-même autorité de certification racine (grâce au RGS, Référentiel Général de Sécurité, qu’il vient de créer), l’État français gagne enfin son indépendance. Dorénavant, les services administratifs pourront obtenir des certificats du RGS pour permettre aux agents et aux administrés d’échanger des données en toute confiance.

Cependant, il reste deux zones d’ombre :

  • Les navigateurs web vont devoir intégrer la reconnaissance du certificat racine du RGS (pour Firefox, ce sera vite fait, pour Internet Explorer, je suis beaucoup moins sûr…).
  • Les entreprises privées et les particuliers doivent toujours assurer la sécurité de leurs informations sur des certificats racine délivrés par des sociétés américaines.

Source : linuxfr.org

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…

Un pirate prend la main sur la dernière version de WordPress

Rares sont les applications exemptes de failles de sécurité. On s’habitue aux bulletins de sécurité qui nous invitent à les mettre à jour dans les meilleurs délais, ce que nous ne faisons pas forcément toute affaire cessante…

Sauf que là, l’affaire est grave. Un pirate a réussi à pénétrer un des serveurs de WordPress pour modifier le pack d’installation de sa dernière version (v. 2.1.1). Tous les blogs qui utilisent cette version sont donc menacés.

La mise à jour vers la version 2.1.2 est donc à faire au plus vite !

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).

Google, Yahoo et Microsoft à l’unisson autour de Sitemap

Sitemap

Google, Yahoo et Microsoft, frères ennemis ? Pas toujours ! Ils savent aussi travailler ensemble quand cela favorise leurs intérêts respectifs. Un exemple : le protocole Sitemap, initié par Google, fait maintenant l’objet d’un site dédié (sitemaps.org) et d’une licence Creative Commons pour favoriser son adoption. Autant dire de suite que Sitemap sera LE standard d’indexation du contenu des sites web.

Avec Sitemap, le webmaster reprend la main sur l’indexation de son site : il peut en décrire la hiérarchie, favoriser l’importance d’une page ou indiquer la régularité des mises à jour. Ces données sont stockées dans un ou plusieurs fichiers XML soumis directement aux moteurs d’indexation.

C’est toujours mieux que le simple fichier robots.txt, mais ce n’est pas encore la panacée. Sitemap est parfait quand la structure du site évolue peu. Par contre, lorsqu’à l’occasion d’une refonte, des contenus changent de rubriques, sont fusionnés ou éclatés, changent de domaine, Sitemap ne sait pas décrire ces changements. Certes, les codes de statut HTTP peuvent y remédier, notamment les 301, 302, 303 et 307, mais ils sont souvent mal exploités (quand ils le sont…) par les systèmes de gestion de contenu et sont plutôt destinés aux navigateurs web qu’aux moteurs d’indexation.

La bonne idée serait donc d’ajouter quelques balises dans les fichiers XML Sitemap pour indiquer les changements de structuration du contenu (suppression, déplacement, fusion, éclatement, pages liées, etc.). On pourrait alors se passer du fichiers robots.txt et de quelques balises META dans le code HTML de chaque page. On pourrait même imaginer se passer des codes de statut HTTP si le navigateur web savait exploiter les fichiers XML Sitemap. Il me reste à contacter les frères ennemis pour mettre tout cela en place !

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à…