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 !(0)

Lister les connexions entrantes de votre ordinateur

La commande netstat -tape permet de lister les processus qui acceptent des connections entrantes sur votre ordinateur. Facile à se rappeler !
Pour plus d’information, man netstat.

# netstat -tape
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        User       Inode       PID/Program name
tcp        0      0 localhost:60061         *:*                     LISTEN      mysearch   7850        2813/python     
tcp        0      0 *:43173                 *:*                     LISTEN      statd      13393       1844/rpc.statd  
tcp        0      0 *:sunrpc                *:*                     LISTEN      root       13372       1816/rpcbind    
tcp        0      0 *:ssh                   *:*                     LISTEN      root       33422       6097/sshd       
tcp        0      0 *:gdomap                *:*                     LISTEN      root       6788        2253/gdomap     
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN      root       13375       1816/rpcbind    
tcp6       0      0 [::]:32947              [::]:*                  LISTEN      statd      13397       1844/rpc.statd  
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      root       33424       6097/sshd
J'aime(0)Ferme-la !(0)

Dossier partagé entre utilisateurs sous Linux

La problématique du jour est de faire un répertoire partagé entre les utilisateurs d’un même ordinateur sous linux.

Permissions Unix, la mauvaise solution

Les permissions Unix sont très performants pour restreindre les accès mais rendent la création d’un répertoire partagé impossible en pratique.

La solution classique serait de créer un groupe qui regroupe les utilisateurs et de faire en sorte que tous les fichiers partagés appartiennent à ce groupe. Ca fonctionne en théorie, mais dans la pratique, les utilisateurs créent/modifient/copient  des fichiers sans vouloir mettre à jour les permission groupes. Et seul le propriétaire du fichier peut modifier la permission de groupe du fichier, ce qui rend la chose ingérable.

Le SGID est également une fausse bonne idée pour propager les droits aux fichiers créés car il ne se propage pas aux fichiers copiés par l’utilisateur vers le dossier partagé.

ACL

La solution élégante et performante passe par les ACL ou Access Control List. Elle permet un contrôle bien plus fin et explicite.

Pour avoir accès aux droits ACL vous devez avoir ajouté l’option à votre /etc/fstab .
Ex :

/dev/hda6 /home ext3 options1,option2,option3,acl 0 0

Une fois fait, remontez le point de montage.

# mount -o remount,acl /home

Assignation des droits ACL

On crée un dossier en root /home/dossier_partage. Personne peut y accéder à part root. Jusqu’ici rien de spécial.

# cd /home
# mkdir dossier_partage
# chmod 770 dossier_partage

On crée un groupe « partage » et on ajoute les utilisateurs à ce groupe.

# addgroup partage
# usermod -a -G partage bob
# usermod -a -G partage alice

On ajoute des droits étendus pour que les membres du groupe « partage » puissent tout faire dans ce dossier. La deuxième ligne fait en sorte que les fichiers nouvellement créés héritent aussi de cette règle ACL.

# setfacl -Rm g:partage:rwX dossier_partage
# setfacl -Rm d:g:partage:rwX dossier_partage

On peut vérifier les droits finaux ainsi :

$ getfacl dossier_partage/

# file: dossier_partage/
# owner: root
# group: root
user::rwx
group::rwx
group:partage:rwx
mask::rwx
other::—
default:user::rwx
default:group::rwx
default:group:partage:rwx
default:mask::rwx
default:other::—

Astuce sécurité

Par défaut, le /home/user des utilisateurs n’est pas privé sous Debian ! Si bien que Alice peut lire les fichier dans /home/bob .

Je vous recommande la lecture de ce document sur comment sécuriser Debian, surtout ces 2 points

  • 4.11.13.1 Limiter l’accès aux informations d’autres utilisateurs
  • 4.11.12 Positionner des umasks aux utilisateurs

Le plus important : Pour tous vos utilisateurs existants, assurez que le dossier home bloque bien l’accès aux autres utilisateurs :

# chmod 750 /home/bob

Ensuite, vous pouvez faire en sorte que soit créé automatiquement comme ça quand vous créez un utilisateur:

# dpkg-reconfigure adduser

et choississez Non

Vous pouvez également faire en sorte que les utilisateurs créént par défaut des fichiers que seuls eux peuvent voir :

# echo session optional pam_umask.so umask=027 >> /etc/pam.d/common-session

Dans /etc/login.defs, changez la valeur à UMASK 027

Pour vérifier les droits de l’utilisateur courant :

$ umask

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

Pulseaudio partagé sur le LAN

J’ai toute ma musique organisée et stockée sur mon ordinateur portable avec mon interface au poil. Et mes amis font de même. Du coup, quand on fait une soirée ou que je me faire plaisir j’aimerai diffuser ma musique sur mes enceintes HiFi  « over the air »sans prise de tête et que mes amis puissent faire de même. J’ai connecté un petit PC à enceintes et c’est là que Pulseaudio entre en scène.

Pour configurer Pulseaudio, lancez la commande $ paprefs:

Sur les 2 ordinateurs, j’ai coché cette option:

pulseaudio-config

Sur le PC relié aux enceintes seulement, j’ai coché ces options :pulseaudio-config2Vous remarquerez qu’il faut une autorisation pour se connecter. Le fichier ~/.config/pulse/cookie (si vous avez une version de Pulseaudio < 3, il s’agit du fichier ~/.pulse-cookie ) sert de clé partagée entre tous les ordinateurs qui veulent partager leur périphériques audio. Il faut donc faire en sorte que ce fichier soit identique entre toutes les machines.

Si vous voulez appliquez des changements à Pulseaudio, il faut parfois le redémarrer. La commande $ pulseaudio -k fait ça.

Normalement, vous devriez alors voir les sorties audio du PC relié aux enceintes apparaître sur votre PC portable !

pulseaudio-config3

C’est magique, on peut choisir la sortie audio en live, régler le niveau sonore, sortir le son sur les enceintes locales et distantes en simultané. Tout ça à distance sans se lever de son fauteuil. Je peux streamer Youtube, mon film sur VLC, Grooveshark, mes Flac, Ogg, mp3. Plus de risque que des amis bousillent les PC fixe ou augmentent le volume sonore plus que de raison. Que du bonheur.

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

Etat des lieux de la messagerie chiffrée

Tout d’abord, je vais ré-préciser quelque chose de fondamental. Une communication aussi sécurisée et chiffrée qu’elle soit est in fine déchiffrée sur l’OS de l’utilisateur pour être affichée à l’écran et stockée dans un historique de conversation. Donc quelque soit le système de protection de communication que vous utilisez, si votre OS est troué ou à la solde de votre espion, vos protections risquent d’être inutiles.

Donc chiffrer ses messages sur un téléphone Android où l’on a installé les GoogleApps et où Google peut lire l’intégralité de la mémoire de votre smartphone sans vous avertir, ça ne sert à rien pour se prémunir de la NSA. Même chose pour les appareils Apple.
Sous Windows, si vous croyez que votre OS n’a pas de porte dérobée, c’est bien. J’aurai des doutes à votre place. Quand aux failles de sécurité, il suffit de regarder l’histoire pour voir que les failles réseau du système sont courantes.

Bref, les prérequis me semblent un smartphone sous Android (sans logiciels propriétaires en root  == sans GoogleApps) et une distribution Gnu (Debian, etc…) sans logiciels propriétaires.

Le postulat est donc que seul votre terminal est sûr, le reste du réseau (serveurs tiers, FAI, internet et même réseau local) pouvant être mis sur écoute. Détrompez vous, il n’y a pas forcément besoin d’une faille technique pour mettre le réseau sur écoute, la contrainte légale sur les sociétés par les états de livrer les informations personnelles de leurs utilisateurs fonctionne généralement assez bien.

E-mails

Les e-mails sont par défaut envoyés en clair. Ils passent par votre réseau local, internet et les serveurs de courrier de chaque correspondant. Autant dire que l’on part de loin.

On peut communiquer en SSL avec son serveur mais si ca protège une partie de la communication, le serveur peut encore lire vos messages et vous n’avez aucune garantie sur la suite du chemin (votre correspondant n’a pas l’obligation d’utiliser une communication chiffrée avec son serveur et tous vos messages passeront alors en clair sur le réseau). Mais SSL protège le mot de passe de votre compte, c’est déjà ça !

La solution souvent conseillée est d’utiliser GnuPG pour chiffrer le contenu des messages. Le problème de cette solution c’est que le champ « sujet » des mails reste toujours en clair. On pourrait mettre des sujets bidons mais je n’imagine pas la galère pour classer ses emails !Donc pour un usage courant, c’est horrible à utiliser. Pour échanger un document confidentiel de temps en temps, ça devrait bien fonctionner.

Messagerie instantanée

XMPP semble être devenu le standard de la messagerie instantanée. Il utilise un modèle client/serveur décentralisé comme les e-mails. C’est vrai que c’est le meilleur modèle que l’on ait actuellement pour fonctionner avec les samrtphones (restrictions de volume de données, consommation énergétique à préserver, pas d’adresse IP publique).

Même constant qu’avec les serveurs e-mails, On peut communiquer en SSL avec son serveur mais si ca protège une partie de la communication, le serveur peut encore lire vos messages et vous n’avez aucune garantie sur la suite du chemin (votre correspondant n’a pas l’obligation d’utiliser une communication chiffrée avec son serveur et tous vos messages passeront alors en clair sur le réseau). Mais SSL protège le mot de passe de votre compte, c’est déjà ça !

GnuPG serait ici plus pratique car il n’y a pas le problème du « sujet » en clair. Mais je n’ai pas trouvé de client XMPP pour Android qui le gère.

OTR est un nouvel modèle de chiffrement pour les échanges de messages synchrones. L’idée est d’utiliser des clés de chiffrement temporaires à conversation. Avantage par rapport à GnuPG : Si un espion a enregistré au préalable vos conversations chiffrées et qu’il tombe un jour sur votre clé privée, il ne pourra pas déchiffrer vos conversations du passé (vu que des clés temporaires qui ont été utilisées pour les chiffrer ont été jetées). C’est une belle idée mais dans la réalité :

  • votre historique est conservé en clair sur le même terminal qui contient votre clé privée. Donc un espion trouverait les deux ensemble.
  • si l’espion récupère votre clé privée et celle de votre correspondant, il peut alors déchiffrer vos conversations du passé.
  • mais surtout  : il est impossible d’envoyer des messages à un correspondant hors ligne (car il faut négocier une clé partagée temporaire avant toute nouvelle conversation). Ce qui rend ce modèle inutilisable en pratique à mon avis si on n’est pas connecté 24/24 à sa messagerie instantanée.

Conclusion

Rien de marche pour l’utilisateur lambda qui n’a rien à cacher. Les emails chiffrés sont impossibles à classer. Les messages instantanés hors ligne sont illisibles.

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

Enregistrer une vidéo du bureau sous Gnome 3

J’ai découvert que le raccourci clavier Ctrl-Shift-Alt-R déclenchait l’enregistrement d’une vidéo du bureau au format libre WebM dans votre dossier $HOME/Videos.

Pour arrêter l’enregistrer, refaites le même raccourci clavier.

Bon à savoir aussi:

  • Impr. (« Impression Ecran ») fait une capture complète de l’écran dans votre dossier $HOME/Images
  • Alt-Impr. capture uniquement la fenêtre en cours
  • Shift-Impr. vous permet de sélection une zone de capture sur l’écran.

Pratique !

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

Installer Steam sur Debian Testing (Jessie)

Voici les commandes nécessaires pour installer Steam sur Debian Testing en utilisant le binaire officiel de Valve.

Les commandes sont à lancer en root.

# dpkg –add-architecture i386

# apt-get update

# apt-get install libc6:i386 libgl1-mesa-glx:i386

# wget http://media.steampowered.com/client/installer/steam.deb

# dpkg -i steam.deb

On peut ensuite lancer steam depuis le compte de son user:

$ steam

J’ai testé Dota2 avec ma carte graphique intégrée Intel HD4600 et c’est injouable en basse qualité alors que j’ai de bonne performances avec son concurrent HoN.

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