PROJET AUTOBLOG


Le Blog de Genma

source: Le Blog de Genma

⇐ retour index

Wget derrière un SSO

jeudi 1 janvier 1970 à 01:00

SSO ???

Un ensemble de page derrière un SSO (abréviation en anglais Single Sign-On : SSO) ou authentification unique est une méthode permettant à un utilisateur d'accéder à plusieurs applications informatiques (ou sites web sécurisés) en ne procédant qu'à une seule authentification.. C'est le fameux système que l'on retrouve en entreprise où on se connecte une fois pour accéder aux différentes applications de l'Intranet. Pour des infrastructures variées et complexes, il y a lemonldap par exemple. Ou pour Yunohost, il y a SSOwat, un SSO pour nginx, écrit en Lua.

Ma problématique

Sur une des applications de l'Intranet de l'entreprise dans laquelle je travaille, j'ai eu à récupérer différentes pages via l'outil Wget. Soucis, wget ne permet pas de se connecter au SSO.

Au lancement de Wget, l'application ne me voyant pas connecté, je suis renvoyé vers le SSO et ma page récupérée par Wget, même si le lien est correct contient deux champs HTML "Identifiant et mot de passe", soit la mire de connexion.

A l'arrivée sur la page de l'application, il y a une vérification de la présence du cookie d'authentification et comme wget ne le fournit pas, on est renvoyé vers l'authentification.

La solution ?

On lance Firefox dans lequel on a ajouté l'extension Export Cookies. On se connecte sur le site (on a donc un cookie d'authentification qui est créé). On exporte ce cookie via le menu "Outils -> Export Cookies" et on sauvegarde le ficher cookies.txt.

Puis on relance la commande wget qui va bien, avec les options qui vont bien à savoir :

wget --load-cookies cookies.txt -p --no-check-certificate https://application.enterprise.com/page01.htmlt -O ./Applicaton_page01.html

--no-check-certificate pour éviter le soucis avec https
--load-cookies cookies.txt : charge le cookie d'authentification sur le SSO

Ce qui manque à beaucoup de tutoriel

jeudi 1 janvier 1970 à 01:00

Je vois passer dans mon agrégateur RSS et je lis un certain nombre de tutoriels sur les services à mettre en place soi-même, sur l'autohébergement, sur comment installer tel ou tel service (NextCloud par exemple). Ces tutoriels sont une très bonne choses, ils donnent de l'information, partagent des bonnes pratiques. Il y a plus de précisions sur comment sécuriser l'installation (avec les services webs, le cas d'une connexion en https est de plus en plus abordé, avec souvent comme recommandation de mettre en place un certificat Let's Encrypt).

Toutefois, j'estime que dans ces bonnes pratiques, il manque toutefois une bonne pratique importante pour que ce tutoriel soit complet : les sauvegardes. Quels sont les fichiers de configuration à sauvegarder pour réinstaller le logiciel par exemple et retrouver le même paramétrage. Et surtout quelles sont les données utilisateurs, où elles se trouvent et comment les conserver ?

Je ne m'attends pas à avoir un tutoriel complet sur les sauvegardes (il y a des tas de façon de faire et d'outils pour faire ça), mais au moins à pouvoir savoir quelles sont les données que je dois impérativement sauvegarder. Un lien vers un autre tutoriel en ligne déjà existant sur comment sauvegarder m'irait très bien...

Si je dois réinstaller une machine ou migrer sur une autre machine par exemple, je réinstalle tout. Du coup, pour le logiciel, je repartirai de la dernière version (à partir du code source ou des paquets). Mais pour mes données, je repartirai de mes sauvegardes. J'aimerais donc savoir où je dois restaurer mes données (logiquement au même endroit depuis lequel j'ai fait mes sauvegardes).

De même, pour aller plus loin, des précisions sur les formats supportés, les possibilités d'import et d'export et dans quels formats sont fait les sauvegardes, seraient le top du top.

Du coup, pour les prochains tutoriels que je ferai, dès que je me poserai la question de comment faire la sauvegarde, je ferai les tests (sauvegarde ET restauration de cette sauvegarde) et je ferai alors une section dédié dans le corps du billet de blog tutoriel. Car autant appliquer moi-même les recommandations que je fais.

Cryptpad, tutoriel et critiques

jeudi 1 janvier 1970 à 01:00

Présentation de Cryptpad

Pour en savoir plus sur Cryptpad et son fonctionnement, ses caractéristiques et spécificités, je vous invite à lire le très bon article de NextInpact : CryptPad v1.10.0 est disponible, à la découverte du service collaboratif chiffré de bout en bout

En résumé, c'est un système de pad chiffré zeroknowledge le service ne détient pas les clefs de chiffrement utilisées par les utilisateurs en local et ne peut donc pas consulter le contenu. On parle en général de solution de bout en bout, ou E2E (End-to-end) pour les intimes. Il est donc possible de partager un document, de l'éditer à plusieurs, sans que celui-ci soit stocké en clair sur le serveur. L'usage est ainsi considéré comme privé, mais pas anonyme, prévient l'équipe qui renvoie vers l'utilisation de Tor ou d'un VPN pour ajouter un telle couche de protection.

Les fonctions apportées par Cryptpad :
- CryptPad - Pad
- CryptCode - Éditeur de code collaboratif
- CryptSlide - Présentation en markdown
- CryptPoll - Sondage

Installation de Cryptpad sur CentOS - pourquoi cette documentation ?

Le site officiel https://cryptpad.fr/ ne détaille pas assez l'installation et j'ai un peu galéré à avoir un système fonctionnel et plus abouti que de simplement suivre ce qui est indiqué sur la page de documentation par défaut qui permet de cloner le dépôt Git, de lancer l'application sur un port exotique depuis la ligne de commande...

Voir https://github.com/xwiki-labs/cryptpad/wiki/Installation-guide

Exemple de souci rencontré

On a donc des dossiers qui créés par défaut depuis l'endroit où on lance le server Cryptpad... La preuve :

[root@cryptpad tmp]# mkdir /tmp/test
[root@cryptpad tmp]# cd /tmp/test/
[root@cryptpad test]# /usr/bin/node /home/cryptpad/server.js
loading rpc module...

[2017-07-26T08:35:04.802Z] server available http://[::]:3000
Cryptpad is customizable, see customize.dist/readme.md for details
^C
[root@cryptpad test]# ls
blob blobstage datastore pins

Cryptpad vient de créer des dossiers (nécessaires à son fonctionnement) depuis l'endroit où je le lance... Oui je suis en root donc il a les droit, mais quand même...

De plus, je connais mal "Node", lancer un serveur en Javascript, j'ai encore un peu de mal avec ça (je suis de la vielle école), c'est lancé sur un port exotique (3000), directement exposé, sans proxy ou autre.

Pour réussir à trouver une configuration de Nginx qui marche, j'ai du testé les différentes solutions proposées dans des issues Github du projet, car là encore, il n'y a rien dans la documentation.

Le fait que le projet propose la fourniture d'un espace de stockage aux utilisateurs enregistrés contre rémunération (cela semble être le business model) me fait penser que la documentation est volontairement pauvre pour que l'on ait à passer par eux en tant que prestataire...

De même, dans le fichier de configuration l.156 et suivante semble confirmer cette hypothèse (source du fichier

/*
* If you are using CryptPad internally and you want to increase the per-user storage limit,
* change the following value.
*
* Please note: This limit is what makes people subscribe and what pays for CryptPad
* development. Running a public instance that provides a "better deal" than cryptpad.fr
* is effectively using the project against itself.
*/
defaultStorageLimit: 50 * 1024 * 1024,

Mais le plus gênant pour moi - je vous laisse juger - toujours dans ce même fichier :

/*
* By default, CryptPad also contacts our accounts server once a day to check for changes in
* the people who have accounts. This check-in will also send the version of your CryptPad
* instance and your email so we can reach you if we are aware of a serious problem. We will
* never sell it or send you marketing mail. If you want to block this check-in and remain
* completely invisible, set this and allowSubscriptions both to false.
*/
adminEmail: 'i.did.not.read.my.config@cryptpad.fr',

J'aime beaucoup l'humour (i.did.not.read.my.config = je ne lis pas mon fichier de configuration : moi, je le lis...) mais est-ce normal que le logiciel que j'installe contacte l'éditeur. Et ce n'est pas indiqué ailleurs, bien en évidence...

Bref, voici mon tutoriel, plus complet ci-dessous.

Installation de Cryptpad

Je suis parti sur un serveur sur lequel était installé CentOS.

Installation de Cryptpad

# yum install epel-release
# yum install -y nodejs git
//Ajout d'un user cryptpad
# adduser cryptpad
# su cryptpad
// Dans /home/cryptpad on clone le depot github
$ cd /home/cryptpad
$ git clone https://github.com/xwiki-labs/cryptpad
// on deplace le contenu un cran au-dessus
$ cd /home/cryptpad/cryptpad
$ mv * ../
$ mv .* ../
$ cd ..
//Installation de cryptpad via la commande npm
$ npm install
//retour en root
# npm install -g bower
//Retour en utilisateur cryptpad
# su cryptpad
$ bower install --allow-root
$ cd /home/cryptpad/
//Copie du fichier de configuration par defaut
$ cp config.example.js config.js
//Changement des droits
chmod -R 755 /home/cryptpad/
//Il faut créer / copier le dossier customize pour que les pads anonymes soient actifs et sauvegardés
cp -r customize.dist/ customize/

Ouverture du port sur le firewall

Pour activer l'ouverture du port 3000 :

# firewall-cmd --zone=public --add-port=3000/tcp --permanent
success
# firewall-cmd --reload
success
# firewall-cmd --zone=public --list-ports
3000/tcp

Lancement de cryptpad

Depuis la ligne de commande, permet de lancer cryptad pour faire de tests temporaires :

$ node ./server.js

Installation en tant que service (Systemd)

Création d'un fichier /etc/systemd/system/cryptpad.service qui contient :

[Unit]
Description=cryptpad
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /home/cryptpad/server.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cryptpad-app
User=cryptpad
Group=cryptpad
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/home/cryptpad

[Install]
WantedBy=multi-user.target

Installation de Nginx comme proxy

Comme indiqué dans mes critiques, j'ai passé du temps à tester différents configurations pour finir par trouver celle qui marche

Exemple de fichier de configuration nginx :
https://github.com/xwiki-labs/cryptpad/blob/master/docs/example.nginx.conf

Fichier de configuration nginx qui marche :

[root@cryptpad cryptpad]# cat /etc/nginx/conf.d/cryptpad.conf
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

upstream wscrypt {
server 127.0.0.1:3000;
}

server {
listen 80;
server_name cryptpad.monserveur.com;
return 301 https://cryptpadpad.monserveur.com$request_uri;
}

server {
listen 443 ssl;

server_name cryptpad.monserveur.com;
ssl_certificate /etc/moncertificat.crt;
ssl_certificate_key /etc/moncertificat.key;
ssl_trusted_certificate /etc/gandi_SSLCA2.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE
# ECDHE better than DHE (faster) ECDHE & DHE GCM better than CBC (attacks on AES) Everything better than SHA1 (deprecated)
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA';
ssl_prefer_server_ciphers on;

location / {
proxy_pass http://wscrypt;
}

location /cryptpad_websocket {
proxy_pass http://wscrypt/cryptpad_websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}

}

Configuration du firewall

# firewall-cmd --add-service=http
# firewall-cmd --add-service=https
# firewall-cmd --runtime-to-permanent
# firewall-cmd --reload

Pour vérifier :

# firewall-cmd --list-services

Sauvegarde des pads et des utilisateurs

Le dossier contenant toutes les données (pad et comptes utilisateurs) se situe dans le dossier datastore. Le transfert de de dossier permet de migrer d'une instance Cryptpad à une autre. (Il suffit de réinstaller une instance CryptPad et de copier coller le contenu du dossier datastore sauvegardé).

Cryptpad et Yunohost

Pour celles et ceux qui ont une instance Yunohost, et qui seraient intéressées par l'application Cryptpad, celle-ci est packagée et disponible ici : https://github.com/YunoHost-Apps/cryptpad_ynh et il y a un sujet de discussion sur le forum.

Soucis à la mise à jour...

Une nouvelle version est sortie corrigeant une faille de sécurité étant sortie, j'ai donc fait la mise à jour / migration vers la nouvelle version.

Reprend le guide officiel https://github.com/xwiki-labs/cryptpad/wiki/Installation-guide avec des compléments :

Faire une sauvegarde avant

# cp -rv /home/cryptpad /Backup/cryptpad_avant_migration

cd /home/cryptpad
git pull
npm update
bower update

# Manquant dans la documentation
# Sinon, on a toujours les anciens skins/design pour l'interface.
# yes |cp -rv ./customize.dist/ ./customize/

Et surtout IL FAUT PURGER / VIDER LE CACHE DU NAVIGATEUR pour éviter tout conflit / soucis de rafraîchissement.

Reste à faire

Pour moi, il me reste à faire une intégratin de LDAP, l'ajout éventuel d'une base de données pour le stockage des pads, la charge en fonction du nombre d'utilisateurs... vu que le serveur sera utilisé au quotidien par les équipes de l'entreprise où je travaille.

Et comprendre où / comment on a des logs... Car là ça utilise "node".

Tokyo Rider, un DJ qui fait de la synthwave

jeudi 1 janvier 1970 à 01:00

Dans le présent billet, je voudrais vous faire découvrir la musique de Tokyo Rider. Tokyo Rider est un jeune collègue (22 ans), Russe, en stage dans mon entreprise avec lequel j'ai beaucoup d'affinité sur différents sujets, entre autre une passion pour la culture Japonaise. Tokyo Rider est un DJ qui compose lui même sa musique et la met à disposition sur sa page Soundcloud Soundcloud de Tokyo Rider.

Turn your engine to overdrive. Tonight we're hitting top speed on the streets of midnight Tokyo. Tokyo Rider will take you through neon-lit outrun scenery in a mindblowing synthwave rave. Get ready for the ride !

Rien que les pochettes des différents albums (pour lesquels il a fait appel à différents artistes) me plaisent beaucoup de part leur ambiance.

Niveau sonorité, c'est de la musique électronique. Je ne saurai pas la qualifié exactement (ma période musique électronique où je savais bien différencier Techno, House, Trance et autres genres remonte à la fin des années 90 début des années 2000). En y regardant de plus près, il qualifie lui-même sa musique de Synthwave. La synthwave, ou outrun, est un genre musical ayant émergé au début des années 2010, influencé par la musique et des films des années 1980. (...)Musicalement, la synthwave s'inspire de la new wave et des films, des dessins animés et des émissions de télévision issus des années 1980. Des compositeurs tels que John Carpenter et Tangerine Dream sont fréquemment cités comme influences. Le style est principalement instrumental, et se compose le plus souvent d'éléments sonores issus des années 1980 comme les tambours électroniques et les basses de synthétiseur analogique. Cependant, la synthwave utilise également des éléments modernes, comme les lignes de basses side-chain, issus des genres modernes de musique électronique comme l'electro house Synthwave sur Wikipedia

Ceci explique cela. Cette musique touche à ma fibre nostalgeek... et otaku (avec une influence nippone très présente, avec des chants en Japonais). Le combo gagnant ! D'abord écoutée parce que je connais l'artiste, l'écoute a ensuite laissée place au plaisir personnel... Et plus j'écoute, plus je suis fan de l'artiste. Que je vous invite donc à découvrir à votre tour via : Soundcloud de Tokyo Rider.

Lifehacking - L'application Tasks de Nextcloud

jeudi 1 janvier 1970 à 01:00

Avec le temps, je continue de faire évoluer mes méthodologies de travail. J'utilise beaucoup l'outil de Notes qui se synchronise avec mon instance Nextcloud personnel et je me retrouve à avoir plein de notes qui deviennent des actions d'une todo-liste. J'ai donc cherché à aller un peu plus loin. Je n'ai pas besoin d'un Kanban, j'en ai un si besoin (via l'application Kanboard). Et il existe un outil du même type qui peut s'intégrer dans Nextcloud. Mais ce n'est pas pratique pour une synchronisation / utilisation depuis un smartphone et j'ai avant tout besoin d'un outil utilisable depuis mon téléphone et également depuis un PC. Je cherchais avant tout une alternative à l'application en ligne Todoist, pour un usage personnel, et moins complexe. Et depuis quelques semaines j'utilise l'application Tasks de Nextcloud.

L'application Tasks

L'application Task s'installe facilement via l'outil d'installation des applications de Nextcloud. Le dépot Githun de l'application https://github.com/nextcloud/tasks permet de suivre l'évolution, les bugs et demande existante, il faudra que je me penche dessus.

Par défaut, Tasks reprend les noms des différents calendriers que l'on a dans la partie Agenda, il est possible d'en ajouter d'autres. Ces catégories permettent alors de classer les différentes tâches. Chaque tâche peut avoir une date de début, une date de fin, une priorité (prioritaire ou non), une zone de description pour compléter le champ titre. On peut ajouter des mots clefs / Tags.

Par rapport à un Kanban, il n'y a que deux états pour les tâches : à faire ou fait. Une tâche étant marquée comme fait est conservée mais devient invisible / masquée par défaut.

Dans les choses sympathiques, il y a du "drag & drop" dans l'interface. Comprendre : on peut déplacer une tâche comme sous-tâche d'une autre. Ce qui s'avère très pratique pour réorganiser des tâches déjà créées / existantes.

Synchronisation sur le téléphone

Il faut installer Davdroid et l'application OpenTasks (applications libres disponibles via F-Droid). Les tâches sont alors synchronisées entre l'application Tasks dans Nextcloud et l'applicatif OpenTasks, dans les deux sens. Pratique quand ajoute un élément depuis son smartphone.

Ce qu'il manque ? Les limites de l'application Tasks

- Ce n'est pas multi-utilisateur, on n'a pas de diagramme de Gant. Et ce n'est pas le but de cette application. Cette application se veut rester simple et efficace.
- C'est indépendant de l'agenda. Même si on a la notion de date, les tâches ne s'ajoutent pas dans l'agenda.
- Pas de possibilité de faire des recherches. Le CRTL+F (fonction de recherche du navigateur) est donc bien utile.

Sauvegarde

Toutes les données se trouvant dans la base de données utilisée par Nextcloud, en faisant un dump de cette base de données régulièrement, je sauvegardes ces tâches. J'ai testé le réimport du dump sur une base de recettes et effectivement, ce dump suffit à restaurer les différentes tâches.

Lifehacking ?

J'utilise donc l'application Tasks depuis plusieurs jours et à l'usage, ça correspond à ce que je souhaitais faire / ce dont j'avais besoin. Si je résume mon organisation, j'utilise donc 3 applications pour mon organisation personnelle :

- Calendrier : pour des événements précis, ponctuels ou récurrents, avec un label rapide et des rappels / alerte
- Notes : prise de notes que je dépile rapidement, que je trie et efface, ajoute dans mes tâches
- Tasks : une sorte de todo avec des sous éléments, des tags.

Je parcours régulièrement ma todo-liste qui est donc dans Tasks. L'avantage est très nettement celui de pouvoir le faire depuis mon smartphone et de pouvoir l'éditer depuis le smartphone, en ayant quelque chose de rapide, simple et un peu plus évolué qu'un fichier texte et moins complexe que
le fichiers Calc que j'ai et conserve, toujours pour mes usages de suivi de mes journées.