Mysearch 1.4 : cachez votre IP avec le mode relai

MySearch est un programme qui va récupérer les résultats de recherches sur Google, GoogleImage, Wikipedia, Openstreetmap, ou Yacy et les afficher en enlevant tout ce qui utilisé pour vous tracer : cookies personnels, liens personnalisés, javascript traceur, images traceuses, etc…

Par exemple, voici mon instance perso : http://search.jesuislibre.net

Vous allez me dire, ca ressemble à DuckDuckGo, mais sans les bangs. Mais DuckDuckGo n’a pas la pertinence de Google. MySearch, oui.
Et comment être sûr que DuckDuckGo ou Mysearch ne m’espionnent pas aussi? Avec Mysearch, vous avez accès au code source, et surtout vous pouvez l’installer facilement sur votre machine grâce au paquet Debian (nécessite Debian Jessie).
Une fois installé, vous pouvez y accéder par http://localhost:60061

Il restait un problème, si j’installe Mysearch sur ma machine, alors Google aura connaissance de mon IP et pourra toujours lier mes mots clés à mon IP. C’est là qu’intervient le mode relai entre installations Mysearch !

C’est encore en beta/alpha mais l’idée est que votre recherche soit transmise par l’intermédiaire d’une autre installation Mysearch plutôt qu’en direct. Rassurez-vous, cet intermédiaire ne pourra pas connaître les mots clés que vous cherchez ni connaître ou altérer les résultats car le flux est chiffré par SSL de bout en bout.

Pour activer le mode « relai »:
Modifiez le fichier de config /etc/mysearch/mysearch.conf mettez la valeur relay = true
Pour prendre en compte le changement, relancez le service : #service mysearch restart
Le port 60062 est utilisé pour le relai et doit donc être ouvert.

En activant le mode relai :
– Toutes les requêtes que vous lancerez devront passer par un intermédiaire sinon elles échoueront. Pour l’instant, l’intermédiaire est forcé à search.jesuislibre.net. Si les requetes ne marchent plus vérifier que mon serveur est toujours en ligne ;-) Si le service est utilisé, j’organiserai une pool.
– Vous autorisez automatiquement les autres à pouvoir utiliser votre relai pour leurs requêtes. Vous pouvez vérifier si votre relai est utilisé par d’autres en regardant sur la première page. Normalement vous ne devrez pas voir de connexions étant donné que le pooling n’est pas actif pour l’instant.

mysearch

J'aime(8)Ferme-la !(0)

L’accélération 3D des cartes ATI radeon 7xxx avec le driver libre arrive dans Debian

Aujourd’hui, une mise à jour de xserver-xorg-core est arrivée dans Debian Testing.

Celle-ci active GLAMOR et par conséquence le support de l’accélération 3D pour les cartes ATI Southern Island (ATI Radeon 7750 et plus) dans les drivers libres radeon !

C’est donc avec une certaine joie que j’ai pu voir Blender, HoN, The Witcher2, Dota 2 enfin fonctionner sans le driver propriétaire Catalyst qui traine de vieux bugs. Ma carte étant de 2012, il était temps !

Ca fonctionne « out of the box ». Il n’y a pas de fichier de config à renseigner. Pour vérifier, lancez cette commande : $ glxinfo | grep OpenGL

Vous devriez voir ceci :

OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD PITCAIRN
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.2.2
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 10.2.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.2.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.0
OpenGL ES profile extensions:

Seul hic, certains logiciels tels que Steam et HoN embarquent leur propres librairies GCC et là ca ne marche pas du premier coup. Vous verrez apparaître un message du style :

Error: OpenGL GLX context is not using direct rendering, which may cause performance problems.

Pour régler cela il faut supprimer les vieilles librairies libgcc et libstdc++ embarquées avec HoN ou Steam, ce qui forcera l’utilisation des librairies de votre système Debian à la place :

$ locate -e libgcc | grep « steam\|HoN » | xargs rm
$ locate -e libstdc++ | grep « steam\|HoN » | xargs rm

J'aime(4)Ferme-la !(0)

OpenSSL et la vérification du domaine dans les certificats

Je suis en train de rajouter de l’onion routing à mon moteur de recherche MySearch. Je me suis donc penché sur comment Twisted (13.2) gérait les connexions SSL.

Tout d’abord, il faut savoir qu’une connexion web HTTPS dans Twisted ne fait aucune vérification de certificat par défaut. C’est écrit dans la doc et dans l’API.

Enfin « par défaut », il faut comprendre « sans mettre les mains dans le cambouis ». Car quand on regarde plus en profondeur dans le code de Twisted, on voit que les connexions SSL reposent sur PyOpenSSL , qui est comme vous vous en doutez un binding pour la fameuse librairie OpenSSL.

Dans Twisted, voici ce qu’on trouve de plus exhaustif pour vérifier la sécurité de sa connexion SSL. Là, le premier truc qui choque, c’est que le hostname de destination n’apparaît pas dans le code de vérification des certificats.

On se dit qu’on loupe quelque chose, on va voir du coté de la doc de PyOpenSSL . Pareil, pas de fonction qui vérifie la correspondance du hostname demandé avec le certificat présenté. Et pas un mot sur le sujet.

Allons donc voir ce qu’en dit OpenSSL. Et là c’est beau, je vous le donne en mille :

One very common mistake made by users of OpenSSL is to assume that OpenSSL will validate the hostname in the server’s certificate. Currently, it does not, although a future version (1.1.0?) will include this functionality.

C’est écrit noir sur blanc et .

Sérieusement, vous pensez qu’il est sain de forcer des programmeurs lambda à coder une fonction si critique qui va vérifier le hostname de destination avec toutes les règles de subject alt name encodées en ASN.1 sans faire le moindre faux positif ni faux négatif ?

Je serai amusé de voir le code de cette partie de quelques applications reposant sur OpenSSL. On risque de trouver des manières élégantes de faire du MITM avec un simple certificat adapté…

Par pur hasard, une nouvelle version de Twisted (14.0) est sortie ces jours-ci. Les notes de mise à jour indiquent de grandes améliorations autour des communications SSL (enfin dirais-je !).

Je vais donc, curieux, voir comment ils se sont sorti de ce piège. Le code de vérification du hostname est en fait externalisé à un module Python externe : service_identity , module créé en mars 2014 (semble t il par des codeurs de Twisted). Ca c’est du code sûr, vérifié et testé… qui prend quand même environ 430 lignes de Python (avec beaucoup de lignes blanches je vous l’accorde).

Voici d’autres exemples du joli cadeau sue nous lègue OpenSSL :

 

J'aime(0)Ferme-la !(0)

Avoir le verr Num. actif par défaut sous Gnome 3

Un truc bien chiant est de devoir activer le pavé numérique à chaque fois que l’on démarre une session Gnome.

Depuis Gnome 3 il est possible de demander à ce que le réglage de l’état du pavé numérique soit conservé entre les sessions. Enfin !
Ca s’active ainsi en ligne de commande:

$ gsettings set org.gnome.settings-daemon.peripherals.keyboard remember-numlock-state true

Ou graphiquement en démarrant dconf-editor et en allant chercher la clé org.gnome.settings-daemon.peripherals.keyboard remember-numlock-state

J'aime(6)Ferme-la !(0)

USB dumper

Je vous avais déjà parlé des risques de brancher un téléphone Android par USB pour le recharger. En effet, dans le cas où le téléphone est déverrouillé lorsqu’il est branché, l’accès à l’espace de stockage du téléphone est aussi débloqué.

Bref si vous avez des données confidentielles sur votre téléphone, vous devriez, au même titre qu’une clé USB, ne pas le brancher n’importe où.

Pour aller plus loin dans la réflexion, j’ai codé un programme qui démontre comment vos données pouraient aisément être copiées sans que vous vous en aperceviez.
Ce programme s’appelle « usb-dumper« . Une fois lancé, il copie intégralement et silencieusement le contenu de tous les périphériques USB connectés utilisant le mode UMS (clés USB, Android 3.x, appareils photos) ou MTP (Android 4.x, lecteurs audio, appareils photos, etc…) vers le disque dur de votre ordinateur.

Dès qu’un nouveau périphérique USB est connecté, celui est copié. Vous verrez que la procédure est très rapide avec les débits en USB atteints aujourd’hui et que l’on peut se faire subtiliser des GigaOctets en quelques secondes et donc sans s’en rendre compte.

Le code utilise udev pour détecter le branchement de nouveau périphérique et GVFS pour l’accès aux données. L’utilisation de GVFS implique l’usage de Gnome mais c’est le seul moyen vraiment fiable d’accéder à l’espace de stockage des périphérique MTP (Android 4.x) que j’ai trouvé.

Vu que je commence à mieux appréhender la construction de paquet Debian pour mes programmes Python, je vous ai concocté un paquet .deb pour vous faciliter la tâche d’installation.
Lancez « usb-dumper » et branchez un périphérique :-)

Les préférences se trouvent dans le fichier ~/.config/usb-dumper/usb-dumper.conf
Vous pouvez y déterminer les périphériques et les fichiers à ne pas copier ainsi que l’emplacement où seront copiés les fichiers.

Le code source est sous licence libre AGPL et disponible sur la forge CodingTeam.

J'aime(0)Ferme-la !(0)

Mysearch version 1.0 et paquet debian

Ça fait un petit moment que je travaille sur mon projet de moteur de recherche anonymisé. Je l’utilise depuis quelques mois et il est maintenant prêt à entrer en production et découvrir le monde !

Je l’ai appelé Mysearch. Il s’agit d’une application qui va faire office de proxy entre vous et les grands moteurs de recherche du web. Ce n’est donc pas un moteur de recherche à proprement car il n’a pas de crawler propre, mais plutôt un intermédiaire anonymisateur, comme DuckDuckGo. Voila à quoi ca ressemble:

mysearch

J’ai mis à disposition mon instance de Mysearch sur https://search.jesuislibre.net si vous voulez tester.

Concrètement, Mysearch va anonymiser vos recherches :

  • en masquant votre IP originelle vis à vis du moteur de recherche
  • en vous proposant une page web propre expurgée de tout moyen de tracking (cookie vous identifiant même si vous n’avez pas de compte, lien unique pour chaque résultat permettant de savoir quel résultat vous avez choisi , scripts obscurs utilisés pour vous traquer, mot-clés de votre de recherche transmis au résultat choisi, enregistrement de votre recherche à votre profil, etc…) dont sont truffés les pages de résultats des moteurs de recherche commerciaux (Google, Bing, Yahoo, etc…)
  • du coup, la page web est bien mois lourde et économise votre bande passante (11ko versus 830ko pour une recherche simple sur Google !)
  • en supprimant les publicités qui squattent la place du premier résultat

L’intérêt par rapport à DuckDuckGo:

  • la pertinence des résultats de Google (DuckDuckGo achète ses résultats à Yandex qui renvoie des résultats pourris sur les requêtes avec plusieurs mots clés)
  • qui peut vérifier ce que fait DuckDuckGo de vos données personnelles? C’est une entreprise américaine, donc soumise aux desiratas de la NSA sans qu’elle puisse communiquer dessus.
  • pas de publicité à la place du premier résultat. Car DuckDuckGo a comme Google, un business model basé sur la publicité (vous ne croyez quand même pas que c’était gratuit hahaha…)

Pour l’instant les moteurs de recherches intégrés à Mysearch sont Google, Google Image, Google Vidéo, Wikipedia et Openstreetmap. On peut choisir la langue dans laquelle on veut les résultats. Le design de la page web est approprié à une utilisation tant sur smartphone que sur grand écran.

Le sources de Mysearch se trouvent sur la forge Codingteam

J’ai créé un paquet Debian pour installer simplement Mysearch chez vous. Mysearch est lancé en tant que service automatiquement au démarrage.Il utilise un utilisateur spécifique « mysearch » pour la sécurité de vos données persos. Vous pouvez arrêter le service en lançant en root : # service mysearch stop

Vous pouvez y accéder à l’adresse http://localhost:60061 (encore un chiffre de plus pour le port et je pouvais écrire GOOGLE en leet speak)

J'aime(22)Ferme-la !(0)

CAcert retiré de Debian

À la différence de toutes les autres autorités de certification, CAcert est une autorité de certification communautaire qui fournit gratuitement des certificats SSL/TLS.

Ce n’est pas seulement à cause de cette façon de fonctionner, similaire à l’approche de Debian, que Debian a distribué le certificat racine de CAcert depuis 2005, même après que CAcert a retiré sa demande d’être incluse dans le magasin de certifications approuvées de Mozilla en 2007, à cause d’un audit interne en cours.

La discussion de savoir si Debian continuerait à distribuer le certificat racine de CAcert dans son magasin de certifications approuvées est née de la réponse à un bogue signalé en juillet 2013 plaidant pour son retrait. Après avoir débattu le pour et le contre pendant des mois, c’est le 13 mars que Michael Shuler, le responsable du paquet ca-certificates, a finalement rendu public la décision de ne plus diffuser le certificat racine de CAcert dans Debian.

Pour un résumé détaillé du débat, veuillez vous reporter à l’article de LWN sur le sujet.

StartSSL est une autorité de certification , non communautaire, reconnue par la plupart des navigateurs, propose un offre de certificats SSL gratuits. Il n’est pas possible d’avoir de certificat « wildcard » à ce prix mais on peut en créer un pour chaque sous domaine, ce qui, avec le support du SNI dans SSLv3, permet d’héberger plusieurs domaines et sous domaines en HTTPS sur le même serveur.

J'aime(69)Ferme-la !(1)

Lister et tuer les processus en cours sous Linux

Pour lister les processus de tous les utilisateurs du système : ps -faux
Pour lister uniquement vos processus : ps -fux

$ ps -fux
 USER  PID  %CPU %MEM VSZ   RSS TTY STAT START TIME COMMAND
 erwan 3377 0.0 0.1 600268  13212  ? Ssl 16:06 0:00 x-session-manager
 erwan 3418 0.0 0.0 10584   336    ? Ss  16:06 0:00 \_ /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager
 erwan 3442 0.0 0.2 816644  21384  ? Sl  16:06 0:00 \_ /usr/lib/gnome-settings-daemon/gnome-settings-daemon
 erwan 3520 1.7 2.5 1893352 202408 ? Sl  16:06 1:29 \_ /usr/bin/gnome-shell
 erwan 5067 3.9 3.8 1242492 302140 ? Sl  16:24 2:39 | \_ iceweasel
 erwan 6172 0.0 0.3 906316  25784  ? Sl  17:13 0:00 | \_ nautilus --new-window
 erwan 3572 0.0 0.1 551768  9596   ? SNl 16:06 0:00 \_ /usr/lib/tracker/tracker-miner-fs

C’est beaucoup plus pratique que la commande top car il n’y a pas de limitation de hauteur d’écran.

On y trouve des infos très utiles :

  • l’user qui a lancé le processus
  • la commande complète avec arguments qui a servie à lancer le processus
  • l’arborescence des commandes pour savoir quels sont les processus parents et enfants.
  • la date à laquelle le processus a été lancé et sa durée de vie
  • la charge du CPU
  • le PID, identifiant propre à chaque processus

Pour arrêter les processus qui vous intéressent, récupérez le PID correspondant (ex: 5067) et lancez :

$ kill 5067

.
Si le programme ne se ferme pas assez rapidement, vous pouvez le forcer à s’arrêter immédiatement :

$ kill -9 5067
J'aime(0)Ferme-la !(1)