Happy hacking :-)

To content | To menu | To search

geek

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.

La commande shell à lancer est la suivante :

wget --user <votre compte utilisateur> --password <votre mot de passe> 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 :

exim4

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.

exim - locla host

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 <votre user>@<votre adresse IP>

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.

Commande :

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.

cle usb corsair survivor

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 emcombrant ! 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.

- page 1 of 4