PROJET AUTOBLOG


Le blog de Genma

Site original : Le blog de Genma

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Bureau à distance Google Chrome

jeudi 1 janvier 1970 à 01:00

Le but de cet article n'est pas de critiquer une énième fois les GAFAM, de parler dégooglisons etc. Quoique ;)

Bureau à distance Google Chrome

Saviez vous qu'il était possible d'utiliser un ordinateur ou un appareil mobile pour accéder par Internet aux fichiers et aux applications d'un autre ordinateur via le bureau à distance Chrome. Accéder à un autre ordinateur via le bureau à distance Chrome.

Dit autrement, c'est un équivalent de VNC ou TeamViewer, mais directement installé en tant que greffon dans le navigateur Chrome.

Technologies ?

Au delà de la question de l'usine à gaz que devienne les navigateurs webs (il y a déjà suffisamment à faire avec la complexité des pages webs qui sont toujours plus lourdes et chargées en technologie, pour peut être ne pas avoir à y mettre une fonctionnalité comme le bureau à distance, vu qu'il y a des logiciels dédiés pour ça).

Niveau technologie, ça utilise le Chromoting protocol qui est développé par Google. Cela permet la transmission des événements générés par la clavier et la souris (ou l'interface tactile dans le cas d'une tablette) d'un ordinateur à un autre, en relayant les mises à jours écran en arrière plan via le réseau. L'affichage de l'écran distant utilise le code vidéo VP8. Sous Windows, le copier-coller est supporté ainsi que la transmission du flux audio en temps réel.

Dans les prérequis il est indiqué que le trafic se fait via les ports TCP 443 (HTTPS) et 5222 (XMPP). Quelques recherches montrent que des personnes cherchant à bloquer cette fonctionnalité au niveau réseau et conseille de bloquer l'adresse host.talkgadget.google.com au niveau des DNS des réseaux de l'entreprise. Cette adresse dans un navigateur donne la page d'accueil de Google Hangouts, le Skype par Google directement au sein du navigateur (et pour les autres il y a https://meet.jit.si/ et https://framatalk.org/accueil/).

Confidentialité ?

Concernant la confidentialité, Google renvoit vers cette page https://www.google.com/chrome/browser/privacy/#policy-on-using-apps qui contient une phrase très importante Les modules complémentaires développés et fournis par Google peuvent communiquer avec les serveurs Google et sont soumis aux Règles de confidentialité Google, sauf mention contraire.

Cette page renvoyant elle-même aux Règles de confidentialité Google.

D'une façon générale, tout ce qui est fait via Google (le moteur de recherche), via un logiciel de l'écosystème Google (Chrome, les téléphones Android avec la couche Google, les applications Google...) sont susceptibles de fournir des données d'utilisation à Google ; et cette fonctionnalité de bureau à distance n'y fait pas exception.

D'ailleurs, quand on installe Chrome Remote Desktop, on a une demande pour les autorisations suivantes :

Conclusion

Cette fonctionnalité peut s'avérer intéressante pour des utilisateurs de Chrome et de l'écosystème Google.

Deux téléphones et séparation des usages

jeudi 1 janvier 1970 à 01:00

J'ai actuellement deux téléphones, un téléphone personnel et un professionnel, de type smartphone. Mon pseudonyme étant connu de mon employeur, avec le temps, comme je l'explique dans ma conférence "Du pseudonymat au pseudonyme", mon modèle de menace a évolué et du coup mes usages ne sont plus les mêmes. Ce billet se veut une sorte d'état des lieux de la séparation que je fais et de la porosité qu'il existe tout de même.

Appliquant comme toujours des règles d'hygiènes numériques, je n'installe que le strict minimum, des applications dont j'ai besoin, je fais le ménage dans les permissions. Dès que possible, j'utilise des applications libres issues des dépôts de F-Droid ; toutefois certaines applications ne se trouvant que sur le PlayStore de Google, je passe par lui (pas encore fait les manipulations pour outrepasser ça en récupérant les applications d'une autre façon). Sur le téléphone professionel, associé à un compte sous mon vrai nom, j'ai des applications qui sont nécessaires à mon usage professionnel. Des applications liées aux transports par exemple (Air France ou SNCF) que je n'ai pas sur mon téléphone personnel, ces applications sont liées à mes comptes correspondants.

Certaines applications liées aux réseaux sociaux comme Twitter ou Mastodon, celle de prise de notes (Nextcloud) ou de veille (EasyRss, Wallabag) sont installées sur les deux téléphones et liées au même compte en ligne (ou à mon cloud personnel), celui lié à mon pseudonyme. Comme mon pseudonyme n'est plus du pseudonymat, cela ne me pose pas de soucis et me permet donc d'avoir accès le midi facilement, entre deux usages pro (regarder des mails) aux applications qui me permettent de faire ma veille. Pour les mails, mails pro sur le téléphone pro, mails perso sur le téléphone perso.

J'avais rédigé une synthèse fortement inspiré d'un billet de Taziden sur la différence entre Silence et Signal. J'utilise Silence dans le cadre personnel. J'utilise Signal comme service de messagerie SMS par défaut sur mon téléphone professionnel. Pourquoi ? Signal possède un client installable sur PC qui permet d'envoyer et de récupérer les messages qui sont échangés de façon sécurisé au sein de l'application. Cela montre bien que les messages sont stockés sur le serveur (vu que la synchronisation est possible entre un smartphone et un PC). Pratique pour échanger via un canal sécurisé.

Je me suis posé la question de pourquoi pas un téléphone avec deux cartes sim (un dual-sim) ? Cela serait plus simple que d'avoir sans cesse deux téléphone sur soi ?. La séparation des usages permet aussi un droit à la déconnexion : je suis joignable aux heures ouvrées sur mon téléphone pro, je le coupe ensuite. Mon téléphone perso est allumé sur des amplitudes plus large. Je ne sais pas si ça se gère bien avec un téléphone dual-sim (couper une puce selon des plages horaires). Sûrement.

De plus, j'ai deux comptes Android différents (un par téléphone) et il y a des choses que je veux continuer à séparer /cloisonner. Je gère finement les permissions comme je le disais. Je n'active la géolocalisation que quand c'est nécessaire. Parfois les deux téléphones sont allumés, parfois le téléphone pro est éteint et seulement le téléphone personnel l'est. Le recoupement de données des deux comptes est tout à fait possible, vu que mon pseudonymat n'est plus qu'un pseudonyme. Ce cloisonnement est donc assez théorique et ne tient pas dans le cadre d'un modèle de menace élevé, ce qui n'est pas mon cas actuellement, du moins pour mon pseudonyme.

Chatonkademy - Billet N°2 - Ansible pour les mises à jour

jeudi 1 janvier 1970 à 01:00

Série de billets sur le projet Chatonkademy

Introduction

Un billet déjà écrit avec quelques commandes Ansible Jouons avec Ansible et Virtualbox, dans celui-ci je donnerai quelques astuces et commandes sur l'usage d'Ansible pour des choses simples. En effet, le projet Chatonkademy contient, entre autre 40 machines virtuelles sous Debian 9 (une par étudiant), que je souhaite gérer facilement. D'où Ansible.

Prérequis

Avoir des machines installées, avec un serveur SSH actif et configuré. L'installation des 40 machines, la configuration par SSH (pour automatiser la création de l'utilisateur, de la machine etc.) fera l'objet d'un billet plus complexe sur Ansible. Car il y a une seule IP publique pour la machine superviseur (sous Proxmox), on part d'un parc de 40 machines déjà installées et configurées à minima. Toutes accessibles en SSH sur un port différent du 22 (avec redirection au niveau de l'hyperviseur).

Connexion SSH par clef publique

Copie de la clef ssh publique de l'utilisateur que j'ai sur ma machine principale (j'ai le même utilisateur sur les machines en face) sur toutes les machines via

#!/bin/bash
sshpass -p 'password' ssh-copy-id genma@chaton01.chatonkademy.com -p 20122
sshpass -p 'password' ssh-copy-id genma@chaton02.chatonkademy.com -p 20222
sshpass -p 'password' ssh-copy-id genma@chaton03.chatonkademy.com -p 20322

Pour pouvoir me connecter en ssh depuis ma machines dans .ssh/config j'ai ajoué

host chaton01.chatonkademy.com
HostName chaton01.chatonkademy.com
Port 20122
host chaton02.chatonkademy.com
HostName chaton02.chatonkademy.com
Port 20222
host chaton03.chatonkademy.com
HostName chaton03.chatonkademy.com
Port 20322
(...)

Ansible les bases

Dans le fichier /etc/ansible/hosts j'ai ajouté

[chatonkademy_std]
chaton01.chatonkademy.com:20122
chaton02.chatonkademy.com:20222
chaton03.chatonkademy.com:20322
(...)

Quelques tests avec un appel de commande pour valider qu'Ansible marche bien

ansible chatonkademy_std -m command -u genma --args "uptime" --one-line
ansible chatonkademy_std -m command -u genma --args "df -h" --one-line

On remplacera le args par une commande simple que l'on veut et on redirigera la sortie standard dans un fichier que l'on analysera par la suite.

Ansible playbook pour mises à jours

Création d'un playbook Ansible pour les mises à jours dans le fichier hosts update_upgrade.yml

---
- hosts: chatonkademy_std
remote_user: genma
become_method: sudo
become_user: root

tasks:
- name: update and upgrade apt packages
apt:
update_cache=yes
state=latest
upgrade=yes

Lancement du playbook

ansible-playbook -i /etc/ansible/hosts update_upgrade.yml -K

Résultat de l'exécution

ansible-playbook -i inventory/production/chatonkademy update_upgrade.yml -K
SUDO password:
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default). This feature will be removed in version 2.6.
Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

PLAY [chatonkademy] **********************************************************

TASK [Gathering Facts] ******************************************************
ok: [chaton01.chatonkademy.com]
ok: [chaton02.chatonkademy.com]
ok: [chaton03.chatonkademy.com]
ok: [chaton04.chatonkademy.com]

TASK [update and upgrade apt packages] **************************************
[WARNING]: Could not find aptitude. Using apt-get instead.
changed: [chaton04.chatonkademy.com]
changed: [chaton01.chatonkademy.com]
changed: [chaton03.chatonkademy.com]
changed: [chaton02.chatonkademy.com]

PLAY RECAP *****************************************************************
chaton02.chatonkademy.com : ok=2 changed=0 unreachable=0 failed=0
chaton03.chatonkademy.com : ok=2 changed=0 unreachable=0 failed=0
chaton04.chatonkademy.com : ok=2 changed=0 unreachable=0 failed=0

Conclusion

Les machines virtuelles sont utilisables via Ansible pour la maintenance etc. On va pouvoir des choses intéressantes. A suivre dans un projet billet sur le projet Chatonkademy !

Chatonkademy - Billet N°1 - Les utilisateurs

jeudi 1 janvier 1970 à 01:00

Série de billets sur le projet Chatonkademy

Introduction
Le projet continue et d'autres billets sont en cours de rédaction. Je publie celui-ci pour partager quelques astuces de bases dont j'ai eu besoin. Dans celui-ci, quelques astuces sur les utilisateurs et Yunohost (rappel : dans le projet il y a une instance Yunohost multi utilisateur).

Créer des utilisateurs en masse dans Yunohost

On fait appel à la moulinette. On crée un script du type
Dans le présent script, les mot de passe sont en dur

#!/bin/bash

yunohost user create chaton01 -p motDePasseChaton01 -f chaton01 -l chaton01 -m chaton01@chatonkademy.com --admin-password motDePassAdminYunohost
yunohost user create chaton02 -p motDePasseChaton02 -f chaton02 -l chaton02 -m chaton02@chatonkademy.com --admin-password motDePassAdminYunohost
yunohost user create chaton03 -p motDePasseChaton03 -f chaton03 -l chaton03 -m chaton03@chatonkademy.com --admin-password motDePassAdminYunohost
yunohost user create chaton0X -p motDePasseChaton04 -f chaton0X -l chaton0X -m chaton0X@chatonkademy.com --admin-password motDePassAdminYunohost

Largement améliorable en utilisant des variables pour les mots de passe utilisateur et le mot de passe administrateur, ce qui évite de les mettre en dur au sein du script.

Applications

Dans mon cas, tous les utilisateurs ont accès à toutes les applications. J'ai installé les applications après la création des utilisateurs.
Je ferai un billet (ou plusieurs) sur le cas des applications.

Surveiller leurs connexions

Le besoin est le suivant : les utilisateurs ont été crées, le mot de passe communiqués. Comment suivre si l'instance Yunohost est bien utilisée et si oui par quels utilisateurs. Il y a plusieurs façons de faire et de voir il y a des connexions des utilisateurs.

Tous les logs de connexion se trouvent dans le fichier /var/log/nginx/chatonkademy.com-access.log

Les logs étant compressés, on peut passer par zcat et créer un fichier de cumul des logs dans /tmp/access.log pour avoir un suivi depuis le début de la création de l'instance.

cat /var/log/nginx/chatonkademy.com-access.log >> /tmp/access.log
zcat /var/log/nginx/chatonkademy.com-access.log.*.gz >> /tmp/access.log

Un peu de shell en une ligne permet de faire pas mal de choses, selon les besoins. Quelques exemples :

Ip et utilisateur

root@cloud:# cat /tmp/access.log |cut -f1 -d '[' |sort -u
1.2.3.1 - chaton01
1.2.4.5 - chaton02
1.2.1.2 - chaton03
1.2.1.2 - chaton01
1.2.1.4 - chaton04

Nombre de connexion par utilisateur

cat /tmp/access.log |grep -v "\- \-" |cut -f1 -d '['|cut -d "-" -f2 |sort |uniq -c |sort -nr
5733 chaton03
1525 chaton02
1334 chaton01
913 chaton04

Quel(s) utilisateur(s) se connecte quel jour ?

cat /tmp/access.log |cut -f1 -d ']' |grep -v "\- \-" |cut -f1 -d ':'|cut -f2 -d '-'|uniq |sed 's/\[//g'
chaton04 11/Apr/2018
chaton01 11/Apr/2018
chaton04 11/Apr/2018
chaton01 11/Apr/2018
chaton03 12/Apr/2018
chaton02 12/Apr/2018
chaton01 12/Apr/2018
chaton02 12/Apr/2018
chaton03 12/Apr/2018

Analyse des logs en graphique

On pourra envisager l'installation de la suite ELK (ElasticSearch Logstash Kibana, pourquoi pas) avec des dashbords qui vont bien pour avoir le reporting des connexions. Pour faire faire plus simple et déjà avoir quelques graphiques, j'ai eu recours un GoAccess. Voir à ce sujet Yunohost - Goaccess - Rapport HTML depuis des logs d'un serveur web.

J'ai repris l'idée de faire l'installation de customWebApp dans Yunohost appelée "Logs" dans laquelle je dépose un fichier index.html qui est le rapport généré par GoAccess

Création d'un script qui contient

#/bin/bash
goaccess --log-format=COMBINED -f /tmp/access.log -a -o /var/www/my_webapp/www/index.html

On le lance via

./root/script_goaccess.sh

On consulte les logs via https://chatonkademy.com/logs/ tout simplement.

Faire passer des entretiens

jeudi 1 janvier 1970 à 01:00

Dans mon billet Faire passer des entretiens - mes quelques questions subjectives, j'expliquais que dans le le cadre de mon travail et de mes responsabilités de chef d'équipe, je suis amené à faire faire des entretiens. J'expliquais le fait que j'ai une série de questions techniques et une série de questions de culture générale que je qualifiais de subjectives.

Dans le présent article, je voudrais parler de ce que le fait de faire passer ces entretiens m'a appris sur la façon de faire passer des entretiens mais également sur moi-même.

Un premier entretien avec la responsable des ressources humaines, permettant de comprendre et jauger (juger ?) le parcours de la personne, sa personnalité a été fait et a conduit à une première sélection. Les différents chefs d'équipe, qui, comme moi, font passer les entretiens, nous sommes la seconde étape dans le processus de recrutement. Notre rôle est d'évaluer le niveau et les compétences techniques du candidat. Dans le cas où le niveau requis est là et l'entretien est concluant, cela donne l'accès à un entretien final avec un supérieur / dirigeant de l'entreprise (au cours duquel sont vu par exemple, la négociation du salaire, le poste final, les missions envisagées etc.)

On attend donc de moi de faire un entretien technique. Le niveau technique est discriminant : un niveau insuffisant est éliminatoire. Tel est la directive. Je nuance : le niveau attendu pour un stagiaire, un alternant, n'est pas le même que pour un profil confirmé, une personne qui a de l'expérience. Pour les personnes confirmées, l'expérience montre qu'un niveau insuffisant, même avec de la motivation, ne permettent pas, dans les conditions actuelles, de répondre aux attentes et besoins. Les missions que nous avons en administration système nécessite d'être aguerri, efficace rapidement, de pouvoir monter en compétence et de s'investir dès le début.

Comme je fais passer l'entretien pour une personne avec laquelle je vais potentiellement travailler, je vais plus loin que le simple entretien technique. Je prends le temps de discuter et de cerner la personnalité de la personne, de voir si nous avons des affinités, quel est mon ressenti... Quand l'entretien prend plus de temps que le temps alloué initialement, c'est signe d'une chose : la personne a fait un bon test et retient mon attention, je vais en savoir un peu plus sur elle (et les informations recueillies sont ajoutées à la fiche d'évaluation et me permettent de confirmer mon choix).

Dans les choses positives, il y a le fait que je n'ai pas d'a priori sur les personnes. Je pense que celles et ceux qui me connaissent en dehors du blog pourront en témoigner, du moins je l'espère. Et que le candidat a sa chance et s'il réussit le test technique, il a validé cette étape de recrutement.

Dans les choses négatives, il y a le fait que j'ai du apprendre à ne pas avoir de compassion et à être objectif. L'entretien technique est discriminant et je ne peux pas repêcher des candidats. Certes, j'ai des personnes en face de moi qui ont un vécu, une personnalité, qui sont parfois en recherche d'emploi. Mais quand j'ai le moindre doute sur la motivation, la capacité technique ou la capacité à progresser et monter en compétence (avec l'expérience, entretien après entretien, ce jugement s'affine), je n'hésite plus à donner une appréciation négative, ce qui se conclue par la fin du processus de recrutement. Dis de façon naïve, je ne peux pas être gentil car ce n'est pas aider la personne que de lui donner un emploi pour lequel on sait par avance que ce sera un échec, tant pour elle, que pour l'entreprise. Toutefois, je donne des conseils, j'explique à la personne ce que j'attendais, le niveau d'exigence que j'avais, je la conseille sur comment mieux se préparer, sur quoi apprendre...

Je suis exigeant avec moi-même et je le suis donc avec les personnes que je veux dans mon équipe. Et celles et ceux qui travaillent avec moi au quotidien pourraient en témoigner. Je suis exigeant, mais juste. J'explique ce que j'attends, ce que je veux. Je donne des conseils, je fais part de mon expérience. Je suis preneur des critiques et à l'écoute, pour m'améliorer. Et j'ai déjà eu des remarques sur ma façon de gérer l'équipe, que j'ai essayé de prendre en compte pour m'améliorer.

Faire passer des entretiens, c'est comprendre qu'on a le droit de se tromper, mais qu'il faut apprendre de ses erreurs de jugement. C'est comprendre que l'on va perdre des illusions. On recrute pour un emploi, pour travailler dans une entreprise dont le but est de gagner de l'argent (pour au moins pouvoir payer les salaires en fin de mois des différents employés, on mettra de côté la considération capitaliste). Et on ne peut donc pas laisser place à la subjectivité.