Aide à une noob par reverse SSH

Imaginons que Alice veuille se faire dépanner par Bob.

Problème, Bob ne peut pas se connecter directement à l’ordinateur d’Alice à cause d’un routeur NAT (une box ADSL, un réseau d’entreprise, un réseau wifi public, etc…).

Il existe un moyen assez simple pour Alice de se faire dépanner grâce à SSH.

Bob a un peu de travail avant

Bob va créer sur sa machine un utilisateur aux droits très restreints. Alice va utiliser celui-ci pour faire un tunnel inversé. On commence par la création du nouvel utilisateur dénommé « help » :

# adduser help

Donnez un mot de passe qui pourra être communiqué à Alice.

Dans /etc/ssh/sshd_config faites un règle spéciale pour cet utilisateur :

Match User help
   #AllowTcpForwarding yes
   X11Forwarding no
   PermitTunnel no
   GatewayPorts no
   AllowAgentForwarding no
   PermitOpen localhost:60000
   ForceCommand echo 'Only reverse port forwarding allowed'

En gros, l’utilisateur ne peut qu’écouter sur le port 60000 local.

Pour Alice, c’est simple, une ligne suffit

Alice doit ouvrir le terminal et copier-coller ceci en remplacant l’IP de Bob:

$ ssh -R 60000:localhost:22 help@ip_de_bob

L’empreinte de la clé publique de la machine de Bob sera présentée. Tapez « yes ».

Le mot de passe à entrer est donné par Bob, c’est celui de l’utilisateur « help » que Bob a créé chez lui. Note pour Alice : le mot de passe ne s’affiche pas quand on le tape, c’est normal :)

Voila. c’est fini pour Alice. Simple !

Prise de contrôle

Bob peut ensuite se connecter à l’ordinateur d’Alice, sous le compte d’Alice avec le mot de passe d’Alice :

$ ssh -p 60000 alice@localhost

Critique

Cette technique est une alternative à Teamviewer pour Linux et Mac. Elle permet notamment d’avoir un accès confortable au terminal à distance et aux possibilités évoluées de SSH par la suite (partage de fichier par SFTP, redirection de port, proxy SOCKS pour naviguer sur le réseau local, VNC sécurisé, etc…).

Au début, je me suis dit que j’allais enfin tordre le cou au « man in the middle » de Teamviewer. Mais en réalité, il y a pas mal de failles de sécurité dans la mise en place de ce processus tant qu’on veut le garder simple pour Alice.

Premièrement, Alice doit donner son mot de passe de session à Bob ainsi qu’un accès complet à ses fichiers pour se faire aider… De plus, elle n’aura aucun contrôle sur ce que fera Bob avec cet accès. Donc il faut une grande confiance dans Bob.

Ensuite, par quel canal est transmis la commande à taper? le mot de passe d’Alice? Comment est vérifiée l’authentification de la machine de Bob par Alice?

Il y a peut être moyen de wrapper tout ça dans un utilitaire avec une double authentification et une interface graphique qui affiche sur l’écran d’Alice un suivi en temps réel des commandes effectuées par Bob, des fichiers transférés… le tout sans nécessiter le mot de passe de session d’Alice. Mais ce sera peut être moins flexible pour Bob… (auto-complétion, sshfs, etc..)

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

Retour sur l’utilisation de Mumble

Dans un précédent article, j’ai installé un serveur Mumble en guise de solution de VoIP chiffrée. Voici mon retour d’utilisation :

Le serveur plante souvent, sans que j’en sache la raison. Ce ne m’arrive jamais en conversation mais le fait est que quand j’en ai besoin, le serveur est éteint et que je dois le relancer. Systemd ne voit pas que le service a planté et ne le relance pas automatiquement.

Il n’y a pas de système de réduction d’écho performant. Cette fonctionnalité a l’air de dépendre du client et est souvent de mauvaise qualité. On s’entend parler avec un décalage ou pire, ça larsen à cause du bruit de fond qui est amplifié en boucle. En tout état de cause, on s’entend bien uniquement quand tout le monde a un casque avec micro.

J’ai essayé Firefox Hello. Ou plutôt j’ai tenté de l’essayer, j’ai jamais pu voir ou entendre mon correspondant.

Et vous, vous utilisez quoi?

J'aime(2)Ferme-la !(5)

Proxy Web avec SSH

Imaginons que vous soyez sur un réseau où certains sites web sont bloqués.
Si vous avez une machine à l’extérieur et un accès SSH dessus, vous pouvez l’utiliser comme proxy.

1ère étape

Lancez la commande suivante pour créer un proxy :

$ ssh Utilisateur@MachineExterne -C -N -D 8080

Les options sont les suivantes :

  • -C : compresse la transmission pour économiser la bande passante
  • -N : n’ouvre pas de shell
  • -D : ouvre un proxy dynamique

Vous devez garder le proxy ouvert, ne fermez donc pas la console sur laquelle vous l’avez ouvert !

Cette commande fonctionne pour Linux et MacOS. Pour Windows, je vous laisse regarder du coté de Putty.

2eme étape

Configurez ensuite votre navigateur pour pour rediriger le flux TCP et DNS vers le proxy :
proxyN’oubliez pas de cocher la case « DNS distant ». Et voila !

Vous avez en plus changé d’IP sur Internet. Vous utilisez désormais celle du serveur proxy.

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

OpenMailBox

Vous cherchez à quitter Gmail ou Hotmail mais ne savez pas comment avoir un email ailleurs? Pourquoi ne pas héberger vos mails sur OpenMailBox?

Il n’y a pas de business pour revendre ou exploiter vos données. Les conditions de services sont simples à comprendre.
Vous payez ce que vous voulez, voir rien.
Les protocoles de communications sont sécurisés.
C’est géré uniquement avec des logiciels libres.
Vous avez 1Gb d’espace à vous. (Pas besoin de garder 10 ans de mails en ligne alors que l’espace coûte rien chez vous. Vous pouvez aussi les ranger ou supprimer ce qui est obsolète.)
ll y a un webmail sympa.
Vous avez en plus un compte XMPP (Jabber) pour faire de la messagerie instantanée avec vos potes barbus.

Ca ne vous protégera pas des lois liberticides de Ho’llandouille. Mais vos mails ne serviront plus à vous profiler comme le dindon de la farce. De plus, vos amis vous remercieront car les emails qu’ils vous enverront seront aussi protéger des yeux des GAFA.

Comme le site est très succinct sur comment configurer votre logiciel de mail, je vous donne ici les réglages de manière plus détaillée :

Réception des mails:

Serveur: imap.openmailbox.org
Port: 993
Sécurité: SSL/TLS
Nom d’utilisateur: username@openmailbox.org
Authentification: clair/mot de passe normal

Envoi des mails:

Serveur : smtp.openmailbox.org
Port: 465
Sécurité : SSL/TLS
Authentification requise : oui
Nom d’utilisateur: username@openmailbox.org
Authentification: clair/mot de passe normal

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

Mettre à jour le microcode de son CPU sous Debian

Les CPU ont aussi un firmware appelé microcode. Normalement, c’est le BIOS de votre carte mère qui le met à jour. Mais si le fabricant de sa carte mère ne publie pas de nouveau BIOS avec de nouveaux microcodes pour son CPU, il est possible de le faire à la volée avant le chargement du noyau Linux.

Le microcode corrige des bugs connus du CPU. Si vous rencontrez des freeze ou des erreurs de calcul, il peut être intéressant de voir si une mise à jour du microcode ne corrige pas votre problème.

Tout d’abord on vérifie la version du microcode de son CPU :

$ grep microcode /proc/cpuinfo
microcode : 0x19

Puis on installe le paquet intel-microcode ou amd64-microcode selon son modèle de CPU. Vous avez besoin d’activer les dépôts contrib et non-free pour y avoir accès.

On redémarre. Et voilà !

$ dmesg | grep -i microcode
[    0.000000] CPU0 microcode updated early to revision 0x1c, date = 2014-07-03
[    0.071491] CPU1 microcode updated early to revision 0x1c, date = 2014-07-03
[    0.085625] CPU2 microcode updated early to revision 0x1c, date = 2014-07-03
[    0.099732] CPU3 microcode updated early to revision 0x1c, date = 2014-07-03
[    0.448963] microcode: CPU0 sig=0x306c3, pf=0x2, revision=0x1c
[    0.448968] microcode: CPU1 sig=0x306c3, pf=0x2, revision=0x1c
[    0.448972] microcode: CPU2 sig=0x306c3, pf=0x2, revision=0x1c
[    0.448976] microcode: CPU3 sig=0x306c3, pf=0x2, revision=0x1c
[    0.449007] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba

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

Fail2ban pour Owncloud 7 sur Debian Jessie

Petit guide pour couper court au crackage de vos passwords par le formulaire de login d’Owncloud.

Ajouter dans le fichier /etc/fail2ban/jail.conf :

[owncloud]
enabled = true
port = http,https
filter = owncloud
logpath = /var/log/owncloud.log
maxretry = 3

Modifier le fichier /etc/owncloud/config.php

'loglevel' => '2',
'logtimezone' => 'Europe/Brussels',

Le loglevel ne doit pas être supérieur à 2 pour que les tentatives de login soient enregistrées dans le log !
le logtimezone doit être accordé avec l’heure de votre serveur. Sinon fail2ban pensera toujours que la connexion est ancienne et ne bannira rien.

Créer un fichier /etc/fail2ban/filter.d/owncloud.conf:

[Definition]
failregex = .*"message":"Login failed:.*IP: '<HOST>'.*
ignoreregex =

Relancer le service fail2ban:
# systemctl fail2ban restart

Faites trois mauvaises tentatives de login sur Owncloud pour vérifier !
Pour vérifier le status de fail2ban:

# fail2ban-client status owncloud

Pour débloquer une IP:

# fail2ban-client set owncloud unbanip 192.168.0.13

Cette configuration de Owncloud et Fail2ban devraient être par défaut dans Debian à mon sens.

On peut également se connecter à Owncloud par l’API REST. Je n’ai pas testé si les erreurs de connexion par cette API étaient aussi enregistrées dans le fichier de log, et donc prises en compte par Fail2ban.

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

Cacher ses adresses mail, numéros de téléphone, etc… des spammeurs sur WordPress

Si vous laissez votre adresse email sur un site web, nul doute qu’un robot va venir la lire et l’ajouter à son fichier de SPAM. Pour éviter cela, on peut encoder l’email en Javascript.

Les humains regardant la page web verront l’email proprement car leur navigateur va décoder le javascript. (Aucun problème de copier coller contrairement aux images)

Les robots ne vont pas exécuter le javascript car c’est trop long et trop complexe pour eux.

Cette technique s’applique aux emails mais aussi à tout contenu que vous voudriez protéger des bots comme votre numéro de téléphone etc…

Il existe un plugin pour WordPress pour mettre en place cette technique facilement : Email encoder bundle

Pour cacher un email ou tout autre contenu des robots, écrivez celui-ci entre balises dans votre article :

[eeb_content]toto@gmail.com[/eeb_content]

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

MySearch and GooglePlayDownloader passent en version 1.6

Voila c’est Noël avant l’heure, je sors une nouvelle version de mes 2 logiciels libres :

  • Mysearch : un métamoteur de recherche anonymisateur, sans pub, et avec la pertinence des résultats Google.
  • GooglePlayDownloader : il vous permet de télécharger les applications gratuites du PlayStore sans nécessiter d’utiliser un compte Google personnel ni d’installer les applis Google avec les droits root sur votre smartphone Android

Par un hasard incroyable ils atteignent le même numéro de version (1.6) en même temps :-)

Si vous voulez me faire plaisir, faite connaître ce blog plus largement sur la toile, ça me suffit.

Amusez-vous bien !

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

Mini guide MySQL

Je mets ici mon anti-sèche pour mes besoins basiques de MySQL, à savoir gérer des sites  WordPress, Owncloud, Piwik, etc…

Prise en main

Un super utilisateur nommé « debian-sys-maint » est créé par Debian pour administrer MySQL. Son mot de passe se trouve dans le fichier /etc/mysql/debian.cnf
# cat /etc/mysql/debian.cnf

On peut se connecter à MySQL avec l’une des solutions suivantes :

  • Mot de passe interactif :
    $ mysql -u debian-sys-maint -p
  • Mot de passe en chargeant le mot de passe directement depuis le fichier:
    # mysql --defaults-file=/etc/mysql/debian.cnf
  • Mot de passe avec le mot de passe dans la ligne de commande (déconseillé, le mot de passe se trouvant alors dans l’historique):
    $ mysqldump --user=debian-sys-maint --password=MOTDEPASSE

Vous devriez avoir l’invite de commande MySQL:
mysql>

Pour quitter MySQL à tout moment:
mysql> exit

On va maintenant pouvoir lancer des commandes, chaque commande se termine par le caractère ‘;‘, ne l’oubliez pas.

Pour lister toutes les bases de données présentes:
mysql> SHOW databases;

Pour lister tous les utilisateurs:
mysql> SELECT User,Host FROM mysql.user;

Procédure pour installer un nouveau site web facilement

Souvent, il vous arrivera pour installer un nouveau service (WordPress, Owncloud, Piwik, etc…) de devoir créer une nouvelle base de données et un nouvel utilisateur ayant tous les droits sur celle ci. Voyons comment faire ca.

Comme nous allons créer un nouvel utilisateur et son mot de passe, je vous invite générer un bon de mot de passe en suivant ce guide avant de commencer.

Ensuite, un fois connecté à MySQL :

Créez un nouvel utilisateur en utilisant le mot de passe généré:
mysql> CREATE USER 'piwik_user'@'localhost' IDENTIFIED BY 'mot_de_passe_complique';

Créez une nouvelle base de donnée:
mysql> CREATE DATABASE piwik_database;

Donnez les permissions à l’utilsateur sur la base de données:
mysql> GRANT ALL ON piwik_database.* TO 'piwik_user'@'localhost';

Appliquez les privilèges:
mysql> FLUSH PRIVILEGES;

Fini !
mysql> exit;

Et voila, vous êtes bon. C’était pas si dur :-)

Sauvegarde et restauration

Une chose super indispensable à savoir aussi, sauvegarder sa base de donnée. Car on ne peut pas récupérer les données sans que MySQL tourne. Donc il faut penser à bien faire ses sauvegardes tant que MySQL fonctionne.

$ mysqldump --user=debian-sys-maint --password=MOTDEPASSE piwik_database > ~/mysql-piwik_database-backup.sql

Pour restaurer:

$ mysqldump --user=debian-sys-maint --password=MOTDEPASSE piwik_database < ~/mysql-piwik_database-backup.sql

Si vous réimportez la base de données dans un MySQL vierge (ex: résintallation de PC), il faut aussi penser à re-créer les utilisateurs (cf guide ci-dessus) :
$ mysql --user=debian-sys-maint --password=MOTDEPASSE
mysql> CREATE USER 'piwik_user'@'localhost' IDENTIFIED BY 'mot_de_passe_complique';
mysql> GRANT ALL ON piwik_database.* TO 'piwik_user'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit;

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