Darkjpeg : un webservice de stéganographie opensource

Rédigé par citizenz - - 1 commentaire

Je m'attaque à un truc que je ne connais pas du tout : la stéganographie. Ca m'a l'air un poil complexe bien qu'utilisé depuis déjà longtemps par "certains groupes".

Sur ce thème, je viens de tomber sur la page Github de DarkJpeg (https://github.com/yndi/darkjpeg/) et son site principal (http://yndi.github.io/darkjpeg/).

DarkJpeg, c'est quoi ?

DarkJPEG est un service Web de stéganographie en ligne de nouvelle génération.

Il est censé répondre aux besoins des utilisateurs en ce qui concerne la liberté de communication, et ceci même dans les pays qui enfreignent les droits de l'homme, par leur censure du Net ou même en refusant d'utiliser la cryptographie par la loi.

Le service utilise des méthodes de stéganographie qualifiées de "fortes" pour cacher ... le fait même de cacher des données (avec des méthodes de cryptographie puissantes) et pour protéger les données d'une lecture "non autorisée" par des groupes de personnes non fiables.

C'est un peu compliqué pour le novice que je suis. En fait, c'est un peu le système des poupées russes : je souhaite cacher ... ce que j'ai caché.

Ce que Darkjpeg propose :

  • SHA3 key generation;
  • AES256 encryption;
  • JPEG steganography;
  • Random containers;
  • Client side encoding;
  • Anonymity and privacy;
  • MIT License.

Le site n0where.net propose un petit compte-rendu des possibilités qu'offre cette appli (https://n0where.net/open-source-steganography-darkjpeg/).

Comment ça marche ?

Je me suis "amusé" à tester les capacités de l'appli et c'est assez surprenant. Vous pouvez, directement sur le site, copier-coller une URL ou carrément ajouter un fichier. 

J'ai d'abord choisi une image :


Puis je l'ai "glissée-déposée" dans la barre prévue à cet effet :


J'ai entré un mot de passe, j'ai cliqué sur OK (en fait, y'a pas écrit OK... juste deux "barres").

Remarquez les options qui s'affichent : 

  • encode : permet d'encoder
  • auto : option par défaut (autres options : join, steg, ...)
  • file : affiche la description de votre fichier et sa taille
  • rand : ça télécharge une image de manière aléatoire depuis Wikimedia (autres options : grad ou image)


Et Hop ! Je me suis retrouvé avec une image... mais pas celle de départ ! C'est bien ça la stéganographie... ou l'art de camoufler.
Vous cliquez sur l'image pour la télécharger.

Et après ?

Et bien l'idée c'est de pouvoir aussi "décoder" l'image.
Avec les mêmes outils, on va faire "la démarche inverse" :

  • On charge l'image encodée dans la barre
  • On clique encode qui se transforme en decode
  • On rentre le mot de passe
  • On valide ...

.. et HOP!

On retrouve le fichier original ! Magique ... et peut-être... utile.

[ACTU] De nouvelles distribs Linux pour WSL/Bash via Windows Store

Rédigé par citizenz - - 4 commentaires

Et vlan : de nouvelles "distribs" Linux arrivent dans le "Bash/WSL" via Windows Store !
L'info est parue ici : https://blogs.msdn.microsoft.com/commandline/2017/05/11/new-distros-coming-to-bashwsl-via-windows-store/.
Durant la "Microsoft’s Build conference keynote" du 11 mai dernier, "un gars qui bosse pour Microsoft" a fait quelques annonces à propos du fameux "Windows Subsystem for Linux" (http://build.microsoft.com/).

Pour rappel et pour faire ultra rapide, Microsoft propose(ra) sous Windows 10 la possibilité de faire tourner Linux (https://msdn.microsoft.com/en-us/commandline/wsl/install_guide).

Bref, pour revenir à cette annonce, le gars a annoncé qu'il bossait avec Suse et Fedora pour que ces distribs bien connues soient dispos sous WSL (Windows Subsystem for Linux).
Ces distribs seront aussi dispos sur le Windows store. Il faudra encore attendre un peu, une mise à jour "Windows Insider build" devant venir d'ici ... "quelques temps".

Comble des combles..., il y a même un repo Github (https://github.com/microsoft/BashOnWindows), et un dev a même déjà plublié des scripts permettant de télécharger et d'installer de nouvelles distribs sous le WSL et de "switcher" facilement entre elles (https://github.com/RoliSoft/WSL-Distribution-Switcher).
L'archive rootfs est actuellement récupérable depuis le "Docker Hub's official images repositories".

Les "Stats" pour les Nuls : Netdata

Rédigé par citizenz - - 1 commentaire

​Afficher les stats d'un serveur, cela peut être bien utile : vérifier la charge processeur, la RAM utilisée, la "santé" de sa base de données SQL, etc.
Jusqu'à maintenant, j'avais l'habitude d'installer Munin qui nous propose de jolis graphiques. Mais, à mon goût, l'un des inconvénients de Munin, c'est que, outre l'aspect esthétique graphique un peu répétitif, ça devient vite "assez lourd" sur des petits systèmes (sur un petit VPS avec un proc et 2 GO de RAM, vous êtes vite dépassé niveau charge avec des crêtes d'utilisation assez élevées...).

Et puis je suis tombé sur Netdata. Un site proposait d'aller "voir" ses stats en ligne : ahurissant !
Netdata, c'est du "live", "temps réel", "en direct", blablabla, ... et vous avez beau descendre dans la page de stats, vous en avez toujours, encore et encore.
C'est ULTRA complet, esthétiquement à des années lumières de Munin. Ca flash !

C'est quoi Netdata ?
Netdata est un outil de supervision en temps réel pour les systèmes Linux qui va nous permettre de visualiser les éléments importants d'un système (processeur, mémoire, débit du disque dur, traffic réseau, application, etc.).
C'est assez exhaustif et vous serez surpris du nombres d'éléments visualisables ! 

Comment on installe Netdata ?
Bon : on va l'installer sur notre serveur Debian. Mais avant cela, on va installer quelques éléments indispensables :

$sudo apt install zlib1g-dev gcc make git autoconf autogen automake pkg-config

J'ai l'habitude d'installer mes sites web dans /var/www/monsite.com/web.
Je pars du postulat que Nginx (version stable depuis le dépot officiel), php5 ou php7 sont installés.
N'oubliez pas de changer monsite.com avec vos propres infos.

Pour plus d'aisance, on passe directement en root :

$sudo -s

Puis on crée le répertoire web qui va accueillir les fichiers netdata :

#mkdir /var/www/netdata.mondomaine.com

Si vous n'avez jamais encore configuré de site dans ce répertoire, entrez plutôt la commande suivante : 

#mkdir -p /var/www/netdata.mondomaine.com

On se place dans le répertoire web qu'on vient de créer :

#cd /var/www/netdata.mondomaine.com

La ligne suivante est facultative (mais ça me permet de placer les logs du site afin de les consulter facilement, notamment en cas de soucis...)

#mkdir logs

On va maintenant cloner le repertoire git du projet Netdata :

#git clone https://github.com/firehol/netdata.git netdata --depth=1

L'étape suivante est facultative. Je renomme le répertoire netdata pour coller avec ma config et mon "organisation" :

#mv netdata/ web/

On se place dans le répertopire web/ :

#cd web/

... et on installe Netdata :

#./netdata-installer.sh

... et c'est tout !

Configuration Nginx
Il reste quand même à configurer Nginx :

#cd /etc/nginx/conf.d
#vim netdata.mondomaine.com.conf

Cerise sur le gateau, nous allons configurer le vhost Nginx avec HTTPS Let's Encrypt :
- netdata écoute, par défaut, sur le port 19999
- IPV6 ready
- tous les accès sur le port 80 sont "automagiquement" renvoyer sur le port 443 (HTTPS)
- on ne log pas les accès sur le port 80
- on ajoute plusieurs options SSL "qui vont bien" ...
- nous configurerons Let's Encrypt juste après cette partie

Voici le fichier :

#/etc/nginx/conf.d/netdata.mondomaine.com.conf
upstream backend {
    server 127.0.0.1:19999;
    keepalive 64;
}
server {
    listen 80;
    listen [::]:80;
    server_name netdata.mondomaine.com;
    return 301 https://$server_name$request_uri;
    access_log /dev/null;
    error_log /dev/null;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name netdata.mondomaine.com;
    charset utf-8;
    access_log /var/www/netdata.mondomaine.com/logs/netdata.access.log combined;
    error_log /var/www/netdata.mondomaine.com/logs/netdata.error.log error;
    ssl_certificate /etc/letsencrypt/live/netdata.mondomaine.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/netdata.mondomaine.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/netdata.mondomaine.com/chain.pem;
    ssl_protocols TLSv1.2;
    ssl_ecdh_curve prime256v1;
    ssl_ciphers EECDH+AESGCM:EECDH+AES;
    ssl_prefer_server_ciphers on;
    resolver 80.67.169.12 80.67.169.40 valid=300s;
    resolver_timeout 5s;
    ssl_session_cache shared:SSL:10m;
    add_header Strict-Transport-Security "max-age=15768000";
    add_header Referrer-Policy "strict-origin-when-cross-origin";
    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

Et voila. Vous enregistrez ce fichier après avoir adapté les passages avec netdata.mondomaine.com.

Configuration de Let's Encrypt
On passe à la config Let's Encrypt. On installe d'abord les backports Debian (à moins que cela ne soit déjà fait ...) :

#echo "deb http://httpredir.debian.org/debian jessie-backports main" >> /etc/apt/sources.list

On met à jour : 

#apt update && apt full-upgrade -y

On installe Let's Encrypt :

#apt install -t jessie-backports letsencrypt

Pour obtenir un certificat Let's Encrypt, il faut arrêter Nginx (port 80) :

#service nginx stop

Puis on génére le certifcat (à adapter pour netdata.mondomaine.com et l'adresse e-mail) :

#letsencrypt certonly -d netdata.mondomaine.com --agree-tos -m contact@mondomaine.com --rsa-key-size 4096 --standalone

Si vous voyez "Congratulations..." etc., c'est bon, votre certificat Let's Encrypt a été créé et installé dans /etc/letsencrypt/live/netdata.mondomaine.com/.
Vous y trouverez plusieurs fichiers : fullchain.pen, chain.pem, privkey.pem, ...

Redémarrez maintenant votre serveur Nginx :

#service nginx start

Si vous ne voyez pas d'erreur : VICTOIRE !

Vous pouvez aller voir vos superbes stats sur l'adresse https://netdata.mondomaine.com !
 

Utiliser rsync (+ ssh et sudo) pour copier facilement vos données

Rédigé par citizenz - - 13 commentaires

​Imaginons : vous avez plusieurs centaines de fichiers et des répertoires entiers à rapatrier depuis votre anciens serveur vers votre nouveau serveur. Pour aller plus vite, l'outil idéal, c'est rsync.

Le wiki Ubuntu nous dit :

rsync (pour remote synchronization ou synchronisation à distance), est un logiciel de synchronisation de fichiers.
Il est fréquemment utilisé pour mettre en place des systèmes de sauvegarde distante.
rsync travaille de manière unidirectionnelle c'est-à-dire qu'il synchronise, copie ou actualise les données d'une source (locale ou distante) vers une destination (locale ou distante) en ne transférant que les octets des fichiers qui ont été modifiés.

Mettons tout cela en place sur notre Debian :
sudo apt install rsync

Il vous faut également ssh (sudo apt install ssh).

Voici un exemple assez complet de rsync :
rsync -av --progress --delete --stats --human-readable -e 'ssh -p xxxx' user@serveurdistant.fr:/home/user/* /home/user/

-a : c'est l'option de la "mort-qui-tue". En fait ça fait tout (ou presque). C'est un moyen rapide de dire que vous voulez la récursivité et préserver pratiquement tout. C'est équivalent aux optissn combinées -rlptgoD.
-v : verbeux
--progress : vous indique la progression de la copie/transfert
--stats : affichage de stats sur le transfert des fichiers
--human-readable : lecture "humaine" des chiffres. Idem à l'option ls -h (transforme en KO, MO, GB, ...)
- e : spécifie un shell distant

Il existe une autre option bien pratique :

 --delete : cette option demande à rsync d'effacer tous les fichiers superflus côté réception (ceux qui ne sont pas du côté envoi); uniquement pour les répertoires synchronisés. Attention toutefois à l'utilser correctement ...

Vous avez "la totale" des options rsync ici :

http://www.delafond.org/traducmanfr/man/man1/rsync.1.html

Résultat ?

Avec la commande utilisée plus haut, une fois rentré le mot de passe de l'utilisateur distant (en ayant précisé un éventuel port ssh au cas où le serveur ssh ne tournerait pas sur le traditionnel port 22), rsync va "copier" tous les fichiers du répertoire /home/user (/home/user/*) depuis le serveur distant VERS votre nouveau serveur dans le répertoire /home/user.

Il peut arriver que certains répertoires ou fichiers ne puissent être récupérés pour des questions de droits. Il va alors falloir, sur le serveur distant, configurer sudo

Sur le serveur distant, si sudo n'est pas installé :
sudo apt install sudo 

Il faut configurer sudo :
sudo visudo

Nous allons rajouter dans le fichier la ligne suivante (où vous voulez) :
user ALL= NOPASSWD:/usr/bin/rsync 

Evidemment, changez "user" par votre véritable nom/pseudo... C'est le truc con qui arrive quand on fait des copier/coller. Je dis ça, car je suis le roi du "Ca marche pas... pourquoi ... Oh M.... ! J'ai pas changé user / mondomaine.com !"

Puis on va utiliser l'option "--rsync-path" pour préciser à rsync de démarrer avec l'option sudo :
rsync -av --progress --stats --human-readable --rsync-path="sudo rsync" -e "ssh -p xxxx" useronremoteserver@remoteserver:/data/to/sync /archive/data/

Et hop, là, plus de soucis on récupère tous les répertoires et fichiers.

Utiliser Protonmail en MX principal pour votre nom de domaine

Rédigé par citizenz - - 11 commentaires

J'utilise Protonmail depuis quelques semaines et je suis entièrement satisfait.
Pas encore francisé mais parfaitement utilisable, Protonmail n'offre pas qu'un simple service mail : mais bien plus !
L'offre de base (gratuite) vous permet d'obtenir une adresse e-mail en @protonmail.com avec 500 Mo.
L'offre payante à 5 € commence à être très inétressante : 5 Go, 5 adresses, VPN et possibilité de configurer un "custom domain", c'est à dire d'utiliser le MX de protonmail pour votre domaine.
Pour cela, protonmail propose 7 étapes.

Il vous suffit de suivre l'assistant de configuration qui va vous aiguiller et vous présenter les bonnes config (notamment au niveau config DNS...).

Voici les 7 étapes en images :

Une fois fait vous devrez attendre 1 heure ou deux, ... voir plus, pour que les nouvelles options du DNS se propagent (MX, opendkim, SPF, opendmarc, ...)
Si tout est bon, vous devrirez donc voir passer au vert les 6 "cases" de la configuation du "custom domain".


Vous pourrez alors créer une (ou plusieurs) adresse e-mail pour votre domaine et tous les mails pour cette adresse arriveront dans votre boite mail Protonmail.

Un dernier test :
[olivier@archy ~]$ host citizenz.info
citizenz.info has address 37.187.121.56
citizenz.info has IPv6 address 2001:41d0:a:f238::1
citizenz.info mail is handled by 10 mail.protonmail.ch.

On peut bien voir ici que le MX de citizenz.info est bien mail.protonmail.ch.
Je vous recommande chaudement Protonmail pour sa simplicité d'utilisation.

L'utilisation du VPN Protonmail est aussi un avantage important car il permet de configurer sa connexion avec plusieurs niveaux sécurité (voir cet article).

Pour rappel, Protonmail vous propose 3 niveau d'utilisation :
1 - GRATUIT : 500 MB, 1 adresse, 150 messages par jour, 20 labels, support limité
2 - 5 € / mois ou 48 € / an (soit 4 € / mois) : 5 GB, 1 custom domain, VPN, 5 adresses, 1000 messages par jour, 200 labels (et répertoires), support, filtres d'email. Vous pouvez également choisir plus de stockage, plus d'adresses etc. moyennant finance.
3 - 30 € /mois ou 288 € / an (soit 24 € / mois) : 20 GB, 10 custom domains, 50 adresses, envois illimités, labels et repertoires illimités, support prioritaire, filtres d'e-mail, etc.

Fil RSS des articles de ce mot clé