PROJET AUTOBLOG


Le blog de Genma

Site original : Le blog de Genma

⇐ retour index

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é.

Coffre-fort de mot de passe : état des lieux

jeudi 1 janvier 1970 à 01:00

Pour (re)définir ce que j'entends par Coffre-fort de mot de passe, je dirai ceci : "Dans le guide d'hygiène numérique, j'évoque le fait qu'il faut avoir un mot de passe différent généré aléatoirement par site, le tout stocké dans un logiciel dédié, un coffre-fort de mot de passe, qui s'ouvre avec une phrase de passe"

J'ai écrit différents articles de sensibilisation et de partage sur les mots de passe et les coffres-forts de mot de passe et je vous mets la série de lien ci-dessous :
- Les phrases de passe
- Changement de mot de passe et testament numérique
- Keepass au quotidien c'est possible
- A.I.2 - Porte blindée ou coffre-fort ?
Et d'une façon générale, Les billets tagués Keepass

Il existe des solutions de service en ligne qui ont l'avantage de proposer une synchronisation (via Internet) entre différents appareils (ordinateur, smartphone, tablette), mais dont le code source n'est pas accessible. Les experts en sécurité des podcasts que j'écoute (Le Comptoir Sécu pour ne pas le nommer) utilise et vante ce type de solution. Personnellement, adepte du logiciel libre, j'ai fait depuis un moment le choix de Keepass. Il faut un petit temps d'adaptation, car un gestionnaire de mot de passe (l'autre nom pour coffre-fort de mot de passe) demande un petit temps d'appropriation. Avec le temps, le réflexe est là : toute nouvelle inscription sur un site passe par la création d'une fiche dans Keepass, la création d'un mot de passe aléatoire utilisé uniquement pour le site en question.

Quelle solution pour une synchronisation ?

Différents billets de blogs et messages dans des forums proposent une même solution, à savoir :
- KeepassX (dans mon cas je suis passé à KeepassXC) ;
- Synchronisation du fichier de base de données via Nextcloud ;
- Application Keeweb intégrée à Nextcloud pour avoir un accès web ;
- Application Keepass2Android et synchronisation Webdav ou via l'application Nextcloud pour un usage mobile.

Quid des sauvegardes ?

Le fait d'avoir un coffre-fort de mot de passe synchronisé entre plusieurs appareils ne fait pas que l'on en a une sauvegarde. Car si on modifie / supprime un des mots de passe du coffre-fort, avec la synchronisation, la suppression est copié dans toutes les versions et on perd définitivement le mot de passe. Les recommandations liées aux sauvegardes s'applique donc là aussi : on copiera régulièrement le fichier du coffre-fort numérique sur un espace de confiance (par exemple un disque externe sur lequel on fait ses sauvegardes, disque que l'on conserve soigneusement).

Quid de la sécurité ?

La sécurité de Keepass tient essentiellement à la qualité et la complexité (la longueur) de la phrase de passe (il faut également penser à mettre à jour le logiciel).

La synchronisation via Nextcloud pose le soucis de la sécurisation de Nexcloud en lui-même (il faut maintenir le serveur à jour et de façon sécurisé et de préférence déléguer cette partie à un administrateur système de confiance, comme au sein des CHATONS par exemple).

Dans le cas de la synchronisation par un client Nexcloud sur son téléphone, on a donc une copie de son coffre-fort numérique sur son téléphone. Tout comme avec son ordinateur (rappel les smartphones ne sont rien d'autres que des ordinateurs au format poche), il faut donc protéger son appareil avec un code, nécessaire au déverrouillage. Et activer le chiffrement du disque.

Autre solution (complémentaire) : avoir deux conteneurs Keepass. Un avec les mots de passe usuels que l'on peut utiliser sur un smartphone et un avec les mots de passe critique qu'on n'utilisera que sur des appareils de confiance, qui risquent peu (il y a toujours un risque, quelque soit l'appareil, mais il est plus facile de voler un smartphone - ou de le perdre) qu'un ordinateur de type tour qui ne bouge pas de son bureau.