Ma première expérience de connexion sous Unix s’est conclue par un vol de mot de passe … c’était en 1989 !

J’ai découvert Unix (pas Linux) à l’IUT d’informatique de Bordeaux, en 1989. Après un premier cours sur Unix et ses concepts, notre professeur nous a donné notre utilisateur et notre mot de passe pour pouvoir nous connecter sur le système Unix de l’école.

L’ordinateur était un HP 9000 server tournant sous Unix. La salle machine était en fait séparée en deux pièces. La première était la « salle blanche », une zone à accès restreint contenant seulement la « grosse boite » càd le serveur principal d’1,5m de haut et de plusieurs mètres de long. La seconde pièce était la salle dédiée à la vingtaine de terminaux passifs (émulation VT100 me semble-t-il) utilisés pour se connecter au système Unix.

Donc, doté de mon compte et de mon mot de passe, je m’assois de vant un de ces terminaux. Je saisis mon compte utilisateur et mon mot de passe. Failed. J’ai juste pensé que j’avais commis une faute de frappe, je réessaie et j’arrive à me connecter. Le reste de la session s’est bien déroulé : j’ai pu saisir quelques commandes que j’avais apprise lors de mon premier cours.

Mais. Le lendemain, je ne pouvais plus me connecter du tout. Des étudiants de 2ième année rigolaient dans la salle des terminaux. Je leur ai demandé pourquoi. Ils arrêtèrent de rire, prirent un terminal et m’expliquèrent la fonctionnalité .logout. C’est utilisé pour exécuter un ensemble de commandes quand on quitte sa session. Ils avaient modifié leur script .logout en vue d’afficher un écran presque identique à un écran de connexion normal.

Oui, vous voyez où je veux en venir ? Mon premier essai, la veille, pour saisir mes données avait fait sur un faux écran de connexion 😉 Après avoir récupéré mes données de connexion, le script .logout de l’étudiant termine la session normalement. Donc, lors de ma seconde tentative de saisie de mes données de connexion s’est faite sur l’écran de connexion légitime.

Tout ceci s’est passé en 1989. Sur un système UNIX. Connecté à … rien : aucun réseau disponible en ce temps là sur ce serveur. Et le vol de mot de passe était déjà un jeu 🙂

Image publiée sous license CC by : https://www.flickr.com/photos/ajmexico/2478197231/

Samsung NC10 : changement du disque dur par un SSD

J’ai un netbook Samsung NC10 depuis maintenant 3 ans, quasiment toujours utilisé sous Ubuntu. Le lancement de l’engin, son arrêt et le démarrage des applications est long. Le passage de 1 Go à 2 Go de RAM n’y a rien changé et c’est normal. Il respire juste un peu mieux quand quelques applications s’exécutent en parallèle.

J’ai donc choisi de faire la seule chose que je pouvais faire sans le changer complètement : mettre un SSD.

Le modèle choisi a été un SSD Crucial M4 128Go. Pour cela, j’ai suivi 1 tutotiel et une vidéo :

Les résultats :

  • temps de démarrage sous Ubuntu 11.10 avec le disque dur classique :
    • du choix de l’OS à l’écran de choix de l’utilisateur : 42 secondes
    • du choix de l’utilisateur au bureau complètement opérationnel : 25 secondes
    • total : 1 minute 7 secondes*
  • temps de démarrage sous Ubuntu 11.10 avec le SSD :
    • du choix de l’OS à l’écran de choix de l’utilisateur : 12 secondes
    • du choix de l’utilisateur au bureau complètement opérationnel : 15 secondes
    • total : 27 secondes

Toujours sous Ubuntu 11.10, le lancement de LibreOffice Writer dure : 6,5 secondes.

Par contre, Firefox avec Sync activé met toujours autant de temps à se lancer qu’avant (15 secondes environ). La dépendance au processeur et au réseau lisse je pense pas mal les choses.

Conclusion : le samsung NC10 ne devient pas un foudre de guerre d’un coup de baguette magique. C’est toujours un Intel Atom N270 1,6 GHz qui l’anime (ou pas 😉 ) et pas un Core i5 par exemple. Mais les chiffres prouvent que mettre un SSD apporte un coup de fouet à la réactivité de l’engin.

Transition from 1024 bits DSA key to 3072 bits RSA key

I’ve created a new 3072/RSA key and it’s time to replace my old weak 1024/DSA key.

The old key ID is 237E9DB2, the new key ID is 0661CBBA.

It’s available from the keyservers.

I’ve published a (joined) transition document signed with both keys. christophe-brocas-gpg-3072R-transition.txt

If you’ve signed my old key, download the document, verify it and if it fits you, please sign the new key.

To do it, follow these instructions (also described in the transition document) :

  • To fetch my new key from a public key server, you can simply do: gpg –keyserver pgp.mit.edu -recv-key 0661CBBA
  • If you already know my old key, you can now verify that the new key is signed by the old one: gpg –check-sigs 0661CBBA
  • If you don’t already know my old key, or you just want to be double extra paranoid, you can check the fingerprint against the one above:  gpg –fingerprint 0661CBBA
  • If you are satisfied that you’ve got the right key, and the UIDs match what you expect, I’d appreciate it if you would sign my key: gpg –sign-key 0661CBBA

Lastly, if you could upload these signatures, i would appreciate it.

You can either send me an e-mail with the new signatures (if you have a functional MTA on your system):  gpg –armor -export 0661CBBA | mail -s ‘Sig’ christophe@brocas.org

You have a last question ? « Why not a RSA 4096 bits length key as almost everybody ? »

Hmm … well … because of the OpenGPG Smartcard v2 and GPG2 limits on key length and I want to be able to use my new key with this Crypto USB token (OpenGPG smartcard v2 inside).

Del.icio.us > backup automatique

En passant de liens en liens sur la blogosphère, je suis tombé sur un billet de Karl Dubost (jeune retraité du W3C) parlant des données personnelles et des services en ligne (ou Cloud computing comme disent certains).

Et ce billet pose les vrais questions dont celle-ci : jusqu’où est-on conscient des risques que l’on prend en déposant ses données numériques sur un service en ligne ?

La question Et là une question surgit dans mon ch’tit cerveau : et tes données à toi, Christophe, es-tu en capacité de remettre la main dessus quand tu veux ?

Mon problème Le service en ligne que j’utilise le plus est le stockage de mes marques-pages/favoris/bookmarks chez Del.icio.us . Et aucune sauvegarde de ces données que j’enrichis quotidiennement.

Contrairement à mes photos sur Flickr qui ne sont qu’un sous-ensemble des photos que j’ai sur mon ordinateur personnel. Photos qui sont dupliqués sur un disque externe de surcroit.

La solution J’ai un accès SSH sur une machine en ligne sur Internet. Cela permet donc de se projeter vers une solution à base de script shell, automatisation via Crontab et accès à l’API de Del.icio.us. L’idée est de déclencher via la ligne de commandes l’URL de l’API qui génère l’export de tous mes tags. La méthode de cette API qui permet cet export est la méthode :

posts/all|http://delicious.com/help/api#posts_all

La commande shell à lancer est la suivante :

wget --user  --password  https://api.del.icio.us/v1/posts/all --no-check-certificate

Le fichier all contient tous vos bookmarks au format XML.

Point sur la sécurité : Le paramètre –no-check-certificate permet de passer outre l’échec de connexion engendré par wget qui vérifie le certificat retourné par le serveur HTTPS (comportement par défaut depuis la version 1.10 de wget).

Si vous souhaitez travailler dans les règles et ne pas être susceptible de subir d’attaques MITM, cette page résume la situation.

Le principe :

  • récupérer le fichier contenant la liste des certificats racines présents sur le site de la commande curl ou convertir celui de Firefox par exemple,
  • utiliser cette liste en passant le fichier en paramètre de wget via le paramètre -ca-certificate.

Enjoy Christophe

Gandi Hébergement — part 3: préparer son serveur Ubuntu – ntp, mail, sec updates

Quelques préparations sont à effectuer afin d’avoir un serveur prêt à accueillir des services évoluées comme HTTP ou DNS.

Au menu donc :

  • synchronisation horaire
  • envoi de mails
  • mises à jour de sécurité Rien de compliqué mais il faut le faire dès le début.

1. Synchronisation horaire :

Cela peut sembler superflu ou trivial mais, par exemple, la moindre opération de corrélation de logs ne peut être efficiente sans cela.

apt-get install ntp 

Cette commande va installer un serveur NTP qui va veiller à garder en permanence votre serveur à l’heure.

Extrait de mon fichier /etc/ntp.conf :

 /// # You do need to talk to an NTP server or two (or three). 
server 0.fr.pool.ntp.org 
server 1.fr.pool.ntp.org 
server 2.fr.pool.ntp.org 
server 3.fr.pool.ntp.org

Quelques extraits de mes logs pour voir si cela est utile :

 
Feb 19 10:28:06 happyhacking ntpd[2415]: synchronized to 91.121.10.82, stratum 3 
Feb 19 10:28:43 happyhacking ntpd[2415]: synchronized to 88.191.14.223, stratum 2 
Feb 19 10:35:03 happyhacking ntpd[2415]: synchronized to 91.121.22.48, stratum 2 
Feb 19 10:39:24 happyhacking ntpd[2415]: time reset -2.447818 s 
Feb 19 10:44:33 happyhacking ntpd[2415]: synchronized to 88.191.14.223, stratum 2 
Feb 19 10:55:13 happyhacking ntpd[2415]: time reset -2.447043 s 

Visiblement oui 😉

2. l’envoi de mail

Le besoin d’envoi de mails depuis le serveur va très vite se faire sentir et je ne parle pas du besoin émis par tout botnet issu d’un hack de votre serveur ! 😉

En effet, il y a de grandes chances que vous vouliez lancer via Cron un certain nombre de tâches dont vous voudrez récupérer la sortie. Le mail sera alors le moyen naturel de communication.

Pour cela, installons la commande mailx et le serveur SMTP Exim, et via la commande dpkg reconfigurons Exim.

 apt-get install mailx exim4-daemon-light dpkg-reconfigure exim4-config 

2 écrans utiles sinon vous pouvez choisir les choix par défaut :

Là il vous demande de choisir le mode d’envoi de votre serveur. J’ai choisi Internet car le support Gandi m’a précisé qu’il ne mettait pas un relais SMTP Gandi à disposition des serveurs de l’hébergement. Si vous aviez ce type de serveur à disposition, vous valideriez le mode SmartHost.

Choisir 127.0.0.1 pour ne pas mettre votre serveur de mail Exim à disposition de tout l’internet. Là, uniquement les process locaux pourront envoyer des mails.Votre machine a vous envoyer plein de jolis mails 🙂

3. Automatiser les MAJ de sécurité

Alors là, on va faire hérisser les cheveux de tout sysadmin un brin chevronné MAIS tant pis !

On va mettre en place une application automatique des MAJ de sécurité. Oui car entre lire le avis de sécurité et répondre OUI 99,99% du temps et le faire en automatique, je ne vois que des avantages à le faire en automatique : rapidité, pas d’oubli, fait tout le temps (WE, nuit, vacances, maladie etc).

Le logiciel qui va la faire pour vous est cron-apt. Le tuto est déjà écrit ici.

NB : la seule variation est au point 3. où il faut garder que le dépôt Ubuntu security :

deb http://ubuntu.mirror.gandi.net/mirror/ubuntu/ubuntu gutsy-security main universe multiverse

Exemple d’utilisation :

  • Annonce d’une vulnérabilité sur la librairie PCRE le 22/02/2008 00:58.
  • Même jour, 4 heures plus tard (dépend de la fréquence de la vérification que vous avez positionné), réception d’un mail (grâce à la manipulation décrite plus haut 😉 ) m’indiquant que la MAJ de sécurité a été appliquée :
Date: Fri, 22 Feb 2008 04:59:39 +0100 [22.02.2008 04:59:39 CET]
De: MA MACHINE
À: MOI
Sujet: CRON-APT completed on MA MACHINE
[/etc/cron-apt/config] CRON-APT RUN [/etc/cron-apt/config]: Fri Feb 22 04:00:01 CET 2008 CRON-APT SLEEP: 3553, Fri Feb 22 04:59:14 CET 2008 CRON-APT ACTION: 3-download CRON-APT LINE: /usr/bin/apt-get upgrade -u -y -o APT::Get::Show-Upgraded=true Reading package lists... Building dependency tree... Reading state information...
The following packages will be upgraded: libpcre3
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 204kB of archives. After unpacking 0B of additional disk space will be used.
Get:1 http://ubuntu.mirror.gandi.net gutsy-security/main libpcre3 7.4-0ubuntu0.7.10.2 [204kB] Fetched 204kB in 0s (892kB/s) (Reading database ... 18463 files and directories currently installed.)
Preparing to replace libpcre3 7.4-0ubuntu0.7.10.1 (using .../libpcre3_7.4-0ubuntu0.7.10.2_i386.deb) ...
Unpacking replacement libpcre3 ...
Setting up libpcre3 (7.4-0ubuntu0.7.10.2) ...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place

Je trouve cela plutôt utile surtout pour des serveurs combinant les 2 caractéristiques suivantes :

  • exposition maximale sur Internet,
  • suivi de sécurité le plus souvent assez approximatif : comment cela je ne parle que de mon cas ? J’ai comme un doute tout à coup 😉

Enjoy !

Gandi Hébergement — part 2: sécuriser le SSH de son serveur Ubuntu

Une fois acquis, votre hébergement est accessible en mode expert via ssh : ssh @

1. Le problème

Mais dès que vous dites cela, vous vous rendez compte que tous les robots et autres botnets peuvent en faire autant. Vous ne me croyez pas ?

Lancez donc cette commande comme moi au bout de seulement 2 jours :

root@XXX:/home/user1# cat /var/log/auth.log* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort | uniq -c 690 Jan 10 58 Jan 11

Le résultat exprime le nombre d’échecs de connexion SSH par jour (sic !).

En gros, presque 700 échecs de connexion pour une machine venant d’être mise en ligne. CQFD.

Quelques faits :

  • SSH est configuré par défaut chez Gandi pour ne pas autoriser les logins root,
  • vous devez renforcer absolument le password de votre user de connexion,
  • vous devez vous prémunir des attaques de force brute.

2. La solution

Un moyen tout simple est d’utiliser le logiciel Fail2ban.

Principe : Analyser les échecs de connexion consignés dans le fichier /var/log/auth.log et mettre à jour le firewall en bannissant pour un temps donné les adresses IP apparaissant plus de tant de fois en échec dans le fichier en question.

Prérequis : Installer un firewall. Iptables dans notre cas.

Installation :

apt-get install iptables apt-get install fail2ban

Configuration : La configuration s’effectue dans le répertoire /etc/fail2ban. La configuration par défaut est dans le jail.conf que l’on peut altérer en créant le fichier jail.local. Comme cela, lors d’une update, pas d’écrasement de configuration.

Mon fichier jail.local :

 [DEFAULT] ignoreip = @IP1 @IP2 @IP3 [ssh] maxretry = 3 

Où @IPx sont les adresses sur lesquelles vous ne souhaitez pas de mise en liste noire. Cela peut être utile d’y mettre l’IP fixe de votre box domestique ou celle de votre sortie internet d’entreprise au cas où cela soit VOUS qui ayez oublié votre password 😉

Résultat :

 root@XXX:/home/user1# cat /var/log/auth.log* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort | uniq -c
690 Jan 10
58 Jan 11
11 Jan 12
14 Jan 13
7 Jan 14
2 Jan 15

Liste du nombre d’échecs de connexions sur SSH avec une installation de fail2ban le 11 Janvier. Spectaculaire hein ?

Gandi Hébergement — part 1: pourquoi faire le saut

Et oui, ils l’ont fait : de l’hébergement sur du matériel neuf et pointu en mode virtualisé (utilisation de Xen donc très peu d’overhead).

On achète des « parts » de serveur (64 parts par serveur physique) sans aucun engagement de durée : souplesse garantie.

Une part :

  • 1/64° d’un quadri Dual Core AMD
  • 256 Mo RAM + 512 de swap
  • 5 Go de disque RAID 6
  • adresse IP incluse
  • traffic illimité
  • et 1/64° de capacité réseau du serveur (2x1Gbps)

Le tout en choisissant dans un panel de distribution Linux important dont Ubuntu 7.10.

Les *BSD sont dans la wishlist(et oui 🙂 …).

Du coup, j’ai fait le saut et je migre de mon hébergement virtualisé précédent chez Web1.fr vers Gandi Hébergement. Je n’ai pas grand chose à reprocher à Web1.fr qui pendant un bon moment m’a donné le moyen d’avoir une Debian en ligne accessible en ligne de commande.

J’ai fait ce choix pour disposer :

  • d’une distribution Ubuntu
  • d’une capacité à évoluer sans stress
  • d’une offre qui vit et qui évolue
  • d’un support dynamique et des communautés actives

Et aussi pour faire partie de l’aventure et soutenir cette action innovante en France : le côté militant qu’a toujours suscité Gandi fonctionne à fond chez moi.

Y a de l’affect comme on peut en avoir pour Apple par exemple … la liberté en plus 😉

Voili voilou, la décision est prise ! Last but not the least : 6€ HT la part/mois pendant la phase Bêta.

Clé USB poche de jean READY

Je ne sais pas vous, mais moi, je déplace avec à peu près tout dans mes poches : clés, téléphone, porte-monnaie et souvent clé USB. Oui, ok, je sais, ce ne sont plus des poches mais des valises mais bon, c’est comme ça 😉

Je rencontre les 2 soucis suivants avec les clés USB :

  • la perte : je perds régulièrement une clé USB mise dans une poche : chute non détectée quand je sors quelque chose de mes poches, passage en machine etc
  • la détérioration : la clé USB s’abime rapidement et perd le plus souvent son embout. Bref, la durée de vie de la clé est courte voire très courte. La conséquence directe est que je ne peux pas mettre de données sur lesquelles je puisse compter sur ces clés séjournant dans mes poches et c’est dommage !

La solution pourtant existe :

Corsair Survivor (sic !) 4 Go.

Avantages après 2 mois d’usage :

  • possibilité d’accrocher votre clé USB à un trousseau de clés : plus de perte possible ! * embout vissé et protection résistant à l’immersion, l’écrasement ou la chute : données protégées ad vitam 🙂
  • espace disponible (4 Go) correspondant exactement à mes besoins mixant applications (PortableApps, apps standards) et données (bureautique, multimédias)
  • prix raisonnable (~45€ lors de la rédaction de l’article) pour l’espace et les caractéristiques ci-dessus.

Inconvénient : un seul et qui est lié aux avantages : le tout est un chouilla encombrant ! Pour moi, cet inconvénient est totalement contre-balancé par le fait que je peux mettre ma vie nomade numérique dans cette clé sans craindre la perte ou la détérioration de la clé. I am a happy « nomade » user 🙂

Références :

  • page du produit chez le constructeur,
  • exemple de site vendant l’engin.

Ta tête en ASCII

Je ne sais pas vous, mais, moi, l’ASCII Art, cela m’a toujours plu : pouvoir créer des images grâce à des caractères m’a toujours donné des sensations 🙂

Si vous aimez cela comme moi, regardez donc Le site T.Y.P.O.R.G.A.N.I.S.M. qui vous propose de transformer en ASCII Art toute image JPEG de dimension 60*50.

La trombine ci-dessous :

donne le résultat suivant :

Geek mais sympa hein ? 😉

NB : l’export HTML est fourni en plus … alors … Via Ecrans.

Moteur de recherche Blogmarks

Comme on peut le voir sur ce blog, je suis utilisateur du service de bookmarks en ligne Blogmarks.net fournissant tout l’attirail 2.0 (tags, partage etc) et … j’en suis très content ! Merci à eux !

Or, pour effectuer une recherche dans mes marks précédemment sauvegardées, je n’avais pas de moyen autre que d’aller sur le site en question.

Mise en oeuvre :

Du coup, utilisons la fonctionnalité moteur de recherches extensible de Firefox (norme opensearch ) :

  • télécharger le fichier joint blogmarks-my-marks ,
  • arrêter Firefox (et encore j’en suis pas sûr) ,
  • décompacter le fichier téléchargé dans le répertoire searchplugins de votre profil Firefox ,
  • lancer Firefox et faites votre recherche dans vos blogmarks 🙂

Référence :

Documentation de création de moteur de recherches OpenSearch pour Firefox. Enjoy 🙂