LabCA - serveur ACME auto-hebergée

Posted on Fri 01 December 2023 in Internet

J'ai installé un serveur ACME auto-hebergée pour des besoins internes (mon super LAN à la maison) 😀.

L'idée est venue suite à l'écoute de l'épisode du podcast NoLimitSecu avec Christophe Brocas - Lien de l'épisode et au visionnage de la conférence Hack.lu 2023 - ACME: Benefits Of An Internet Security Protocol In Your Network.

Dans l'épisode et la conférence il explique la mise en place d'un serveur proxy ACME relié a une PKI existante, afin de permettre à des clients internes d'effectuer des demandes de certificats simplement et automatiquement, tous les bénéfices de LetsEncrypt mais en interne sur le LAN!

Lors de la conférence, Christophe Brocas évoque pour la partie serveur l'utilisation de Serles ACME, solution complète mais que je trouve un peu rustre pour ce que je veux en faire, j'avais déjà bidouillé sans grand succès avec Step-CA, et finalement je suis tombé sur le projet LabCA (repo GitHub), qui à l'avantage de présenter une interface Web simple et une installation rapide sous forme de Containers.

Pré-requis

  • Une VM pour installer ça
  • Un serveur DNS interne, ça aide, genre Samba AD par ex.
  • Deux bras, deux jambes, un cerveau

Installation

La préconisation est de l'installer sur une VM dédiée, c'est pas plus mal et j'ai un Proxmox sous la main donc c'est ce que j'ai fait.

La procédure d'installation est plutôt complète, sur une VM fresh, j'ai pris la technique rapide et dégueu :

curl -sSL https://raw.githubusercontent.com/hakwerk/labca/master/install | bash

Bon, bah ça marche, ça démarre, on suis les étapes de création de la CA, identifiants/mot de passe tout ça et hop la belle Web-UI.

labca_homepage

Déploiement CA

Un pré-requis après la première installation est de déployer la racine de certificats sur les serveurs qui seront clients de ce serveur ACME, logiquement tous donc, pour du Debian par ex. :

cp ca.crt /usr/local/share/ca-certificates/ca.crt
update-ca-certificates

Automatisez ça avec Ansible, au boulot.

Utilisation

On peux maintenant faire des demandes de clé+certificats au serveur ACME

A partir de l'interface web, pas de possibilité de faire des demandes de clé+certificats, logique c'est un serveur ACME.

Exemple de demande avec le client certbot pour un serveur Nginx avec le virtualhost longbottom.poudlard.lan :

certbot --agree-tos --server https://acme.poudlard.lan/directory certonly -d longbottom.poudlard.lan --nginx -m admin@poudlard.lan

Si tout est bien paramétré (CA à importée sur la VM cliente + certbot), ça fonctionne directement c'est magnifique.

Il existe bien d'autres clients ACME, certbot étant le client de base pour LetsEncrypt, ça permet de mettre les même routines de renouvellement en place si vous les avez déjà sur des serveurs publics, c'est pratique.

L'avantage de LabCA à mon gout, c'est les différentes vues dans l'interface Web qui permettent de voir les certificats.

  • Certificats générés :

labca_certificates

  • Certificats révoqués :

labca_revoked

Et la CRL fonctionne ! (enfin... ça dépends du navigateur et du cache et de Mercure en rétrograde 🙃)

Conclusion

Quelques conclusions rapides :

  • C'est simple et rapide à mettre en place
  • Ca marche.
  • Idéal pour un HomeLab
  • Egalement pour des établissements scolaire, stages de BTS SIO 😉
  • A l'echelle je ne sais pas si c'est pertinent, il doit exister des solutions entreprise "plus complètes"

Sources


Ender3v2 - débuts dans l'impression 3D et premiers bidouillages

Posted on Mon 01 February 2021 in Hardware

ender3v2 z-axis

J'ai récemment eu en cadeau une Creality Ender3v2, et je dois dire que c'est une belle surprise !

Beaucoup d'échos par le passé de difficultés à opérer des imprimantes 3D trop onéreuses, buses qui se bouchent tout le temps, qualité d'impression pas au rendez-vous, etc.

Désormais il faut dire que ces machines sont beaucoup beaucoup beaucoup plus accessibles (~200€), fiables , techniquement finies (plateau chauffant, moteurs silencieux, carte-mère extensible) et surtout avec une qualité d'impression bluffante.

Je partage dans cet article les modifications apportées à cette imprimante, j'espère que ce sera utile à certain(e)s.

Toutes les pièces mentionnées sont disponibles dans une collection Thingiverse : Collection Ender3

Petites améliorations

Quelques petites améliorations de base sans grand matériel, il vous faudra acheter des roulements à bille 608ZZ (les mêmes que les roulements de Skate) - prenez en un pack il en faudra d'autres pour d'autres pièces

Guide tige filetée pour Axe-Z avec roulement à bille

Une fois reçue, montée et calibrée, la première chose qui m'a un peu deçu est l'absence de guide pour la tige filetée de l'axe Z et d'une molette pour tourner cet axe.

C'est utile quans vous voulez remonter le chariot d'extrusion, surtout quand vous foirez une impression.

Le résultat :

ender3v2 z-axis

Guide fil sortie bobine (8h d'impression)

Une autre amélioration très simple à imprimer est un guide filament, il permet de guider le fil vers le moteur d'extrusion sans qu'il aille s'entortiller sur l'axe Z ou se coincer dans le chariot.

Le résultat :

ender3v2 guide fil

En fouinant sur Thingiverse en rédigeant l'article, je viens de voir qu'il existe maintenant un modèle qui combine support pour l'axe Z + support pour guide filament :

Support bobine de fil à roulement à billes (2h d'impression)

Lors des premières impressions, vous allez remarquer que la bobine de file "râpe" sur le support fourni avec l'imprimante.

Ce support de bobine avec deux roulements à bille est une solution à ce problème si vous conservez la bobine au dessus de l'imprimante.

Le résultat :

ender3v2 support bobine

Pieds surélevés (3h d'impression)

Afin de pouvoir effectuer des modifications électriques, j'ai dû surélever les pieds de l'imprimante avec ces extensions, elles reprennent les patins caoutchouc d'origine.

Le résultat :

ender3v2 support bobine

Support pour alarme incendie (2h d'impression)

Parce qu'on est jamais assez prudent quand ça chauffe

ender3v2 fire alarm

Raspberry Pi + Octoprint

Octoprint est un logiciel libre écrit en Python qui permet de piloter l'imprimante 3D via une interface Web. Je ne vais pas m'étaler sur cette partie il y'a plein de vidéos et tutoriels disponibles partout

C'est un indispensable.

Modifications électroniques

On passe aux choses sérieuses, les modifications éléctroniques.

ender3v2 psu

DISCLAIMER : Elles sont à faire en ayant conscience du risque éléctrique, faites vous aider si vous n'êtes pas sûr de ce que vous faites.

Pré-requis :

Les composants éléctroniques à acheter

Ca fait un peu de matériel mais pour un résultat satisfaisant il faut ça.

J'ai fait un schéma de cablage global pour tenter d'illustrer tout ça :

Ender3v2 schematics

Remplacement du ventilateur de l'alimentation (8h d'impression)

Le ventilateur de l'alimentation n'est pas silencieux, ce n'est pas le pire mais il participe au bruit ambiant.

  • Attention 1 : par défaut, la tension d'alimentation des ventilateur Creality est 24V DCC, les ventilateurs Noctua sont en 12V c'est pourquoi il faut installer entre l'alimentation du ventilateur et celui-ci un "buck converter" qui va abaisser la tension à 12V DCC.

Il faudra régler à l'aide d'un tournevis et d'un multimètre la tension de sortie, pour faire ça j'ai triché j'ai utilisé une ligne d'alimentation disponible supplémentaire qui sort 24V DCC en permanence.

  • Attention 2 : lors de vos tests, si vous allumez l'imprimante, le ventilateur de l'alimentation ne se mettra pas en marche directement, en effet il ne se déclenche qu'a partir d'une certaine puissance utilisée par l'alimentation.

Cette modification nécessite de remplacer le capot de protection de l'imprimante par un capot imprimé en 3D

Le resultat :

ender3v2 psu

Remplacement du ventilateur de la carte mère (8h d'impression)

Même topo, le ventilateur de la carte mère participe aussi au bruit ambiant de l'imprimante.

Il faudra pour ça :

  • 1x convertisseur-abaisseur en tension

Quelques remarques

  • Idem la tension en entrée doit être de 12V DCC > convertisseur abaisseur en tension à régler.
  • Idem pour calibrer le buck converter : utiliser une ligne d'alimentation supplémentaire sur l'alim
  • Idem le ventilateur de la carte mère ne se lance que lorsque vous lancez une impression.
  • Idem : il faut remplacer le capot de l'imprimante pour y insérer le ventilateur. Ce capot servira aussi de lieu d'acceuil pour les autres composants à venir

  • Lien Thingiverse du capot : Ender 3 v2 Mainboard 80x80x25 Silent Fan

Le resultat :

ender3v2 psu

Remplacement du ventilateur de la tête d'extrusion (30min)

Celui-ci c'est celui qui fait le plus de bruit, c'est celui à remplacer en priorité.

Il faudra pour ça :

  • 1x convertisseur-abaisseur en tension

Quelques remarques

  • Idem la tension en entrée doit être de 12V DCC > convertisseur abaisseur en tension à régler.
  • Celui-ci se lance directement au démarrage de l'imprimante
  • Pas de pièce supplémentaire à imprimer
  • Tips : les cables fournis par Noctua permettent de faire un câblage propre en conservant la connectique DuPont/Molex du ventilateur

Pilotage de l'alimentation à partir d'Octoprint (1h30)

La touche finale à tout ça c'est le pilotage de la partie puissance de l'imprimante 3D à partir d'OctoPrint.

Initiallement lorsque vous démarrez votre imprimante, tout se met en route, les ventilateurs tournent dans le vide pour pas grand chose. Avec cette modification l'imprimante se met en route uniquement lorsque on à décidé de lancer une impression via Octoprint et surtout elle se coupe toute seule lorsqu'elle à terminé son impression !

Il faudra pour ça :

  • 1x relais
  • 1x convertisseur-abaisseur en tension
  • Du cablage electronique et des connecteurs DuPont
  • Du cablage electrique et des cosses à sertir

Electronique / Electricité :

  • Il y'a une partie cablâge électrique à réaliser afin d'alimenter le relais lorsque l'imprimante n'est pas en marche, pour ça il faudra tirer une ligne d'alimentation supplémentaire pour alimenter un convertisseur abaisseur de tension qui alimentera le relais de commande.
  • Il y'a une partie cablâge éléctronique à réaliser afin de relier la masse + sortie GPIO de pilotage vers le relais de commande.

Ender3v2 schematics

Quelques remarques

  • Ce montage nécessite d'installer plusieurs plugins dans Octoprint pour que ce soit fonctionnel
  • Si le Raspberry Pi est alimenté par une source exterieure à l'imprimante (un convertisseur secteur-USB), il faudra relier les masses du RPi et de sortie de convertisseur de tension, afin d'avoir la même référence et la même différence de tension sur le relais pour la broche de pilotage.

TODO List

Dans la ToDo List :

  • Installation d'un BL-Touch
  • Amélioration de l'intégration du RapsberryPi et des composants
  • Ajout de connecteurs XT60 pour le pilotage d'alimentation

MeshCentral

Posted on Wed 27 January 2021 in Libre

Voici un truc qui ne rencontre pas le succès qu'il mérite.

C'est une solution client-serveur de prise en main à distance MeshCentral

MeshCentral

Le projet Open-Source MeshCentral est développé par Ylian Saint-Hilaire

C'est un ingénieur Canadien à l'origine de beaucoup de choses chez Intel, notamment sur AMT qui permet de gérer à distance des serveurs avec l'outil MeshCommander

MeshCentral permet depuis un navigateur web de prendre le contrôle d'un système Windows/MacOSX/Linux/Android à distance, au moyen d'un *.exe portable ou en installant l'agent MeshAgent.

C'est simple, léger, efficace, libre, c'est magnifique.

Ce que ça permet de faire :

  • Contrôle complet à distance
  • Transfert de fichiers up/down
  • Mode console shell à distance
  • ACL sur des groupes de postes
  • Partage de prise en main à un tiers
  • Authentification 2FA (TOTP + U2F)
  • etc, etc, etc..

J'ai une instance MeshCentral personnelle depuis plusieurs mois pour dépanner la famille c'est vraiment génial.

Pour le tutoriel d'installation, il y'a des gens super à Toulouse qui ont écrit un tutoriel pour installer son serveur (coucou Jérôme) : MeshCentral solution libre pour remplacer TeamViewer

Enjoy


RTL-SDR simple et rapide pour voir les avions

Posted on Wed 28 August 2019 in Libre

Je me suis acheté un clé USB RTL-SDR récemment pour faire du SDR ( Software Defined Radio ). C'est une clé USB qui à l'origine est destiné à la réception des chaines TNT sur PC. Des gens intéressants se sont aperçu que la puce utilisée pouvait être, moyennant le bon driver, utilisée pour recevoir/écouter d'autres fréquences (AM/FM/VHF/etc). Désormais des marques vendent des clés directement adaptées à cet usage avec des puces optimisées. Pour la référence j'ai commandé une clé RTL2832U de la marque Nooelec avec antenne.

Objectif de la manœuvre : voir les avions qui passent au dessus de nos têtes.

Certains avions émettent des signaux ADS-B ce qui permet de déterminer l'identité+trajectoire+vitesse+altitude de chaque appareil : https://fr.wikipedia.org/wiki/Automatic_dependent_surveillance-broadcast

Pour la partie logiciel :

Une fois tout ça installé, driver qui fonctionne, SDRSharp qui arrive à recevoir de la FM ou tout autre chose, on lance RTL1090 puis Virtual Radar et tadaaaaaam les avions apparaissent !

EasyJet

La CIA qui rentre du G7

C'est simple et marrant de voir tout ce qu'on peut capter comme signaux (coucou les électrosensibles).


ipset et shorewall

Posted on Wed 28 August 2019 in Internet

Edit 2019-09-01 : j'ai mis le rafraîchissement en place toute les heures, c'est efficace a en juger les graphes Fail2ban.

ipset

--

Récemment j'ai pu faire la découverte d'ipset, une extension kernel Linux qui permet de faire des listes d'adresses ipv4/ipv6 et sous-réseaux utilisables avec iptables (et donc shorewall)

C'est très pratique quand vous en avez ras le bol de vous faire poutrer des services (SSH/FTP/Mail/etc) par des robots, fail2ban c'est bien mais si on peut bloquer le gros des méchants déjà connus c'est mieux.

Pour faire simple et à la main, il faut créer une liste en définissant son type (net/ip) puis l'alimenter :

## creation des sets
ipset create blacklist_net -exist hash:net family inet hashsize 16777216 maxelem 16777216 
ipset create blacklist_ipv4 -exist hash:ip family inet hashsize 16777216 maxelem 16777216
## alimentation d'une liste
ipset add blacklist_ipv4 8.8.8.8
ipset add blacklist_net 192.168.12.0/24

Exemples idiots mais vous voyez ou je veux en venir. Une fois la liste créé on peut l'utiliser dans une règle shorewall dans le fichier /etc/shorewall/rules par exemple :

DROP       net:+blacklist_ipv4 $FW
DROP        net:+blacklist_net  $FW
DROP        $FW         net:+blacklist_net
DROP        $FW         net:+blacklist_ipv4

Pour être plus efficace, et parce qu'alimenter ip par ip c'est pas l'objectif, il existe un projet open-source très bien fourni, Firehol, qui regroupe pour les besoins de sa solution un ensemble de listes d'adresses IP mises à jour régulièrement, toutes les heures voir toutes les minutes pour certaines.

Pour automatiser :

  • Première solution, utiliser la solution Firehol
  • Deuxième solution, pisser un script qui va télécharger les listes qui me plaisent et les bidouiller pour les utiliser dans mes ipset derrière.

J'ai mis en ligne une première ébauche d'un script bash+python qui fait tout ça sur mon dépôt Git : https://git.k3nny.fr/Tools/ipset_updater

Note : d'un point de vu technique, l'ajout des ip/subnet par une boucle python ou bash est beaucoup trop long, ipset permet l'import massif en utilisant la restauration de fichier, c'est cette méthode qui est utilisé (voir le script : https://git.k3nny.fr/Tools/ipset_updater/src/branch/master/ipset_update.sh )

Une fois le script lancé on obtient ça :

* 2019-08-28 20:00:10 Runinng list update
Reading lists of URL to download
= Update ipv4
- Downloading spamhaus
- Downloading bi_any_2_7d
- Downloading blocklist
- Downloading stopforumspam
- Downloading haley_ssh
- Downloading blocklist_ssh
- Downloading bi_any_2_1d
- Downloading bi_any__1_7d
- Downloading bi_any_0_1d
- Downloading bi_any_2_30d
= Update net
- Downloading ru
- Downloading emerging
- Downloading cn2
- Downloading cn
- Downloading bogons
- Downloading firehol
- Downloading pk
- Downloading sa
- Downloading kor
= Saved 280625 elements to ipset_ipv4.set
= Saved 24751 elements to ipset_subnets.set
* Create ipset blocklists if not already existing
* Import lists into ipset
== Import ipv4 ipset
== Import subnets ipset
* Saving ipset
* Cleanup ipset files

Avec les listes incluses ça fonctionne déjà assez bien, je constate moins de tentative de connexion ssh intempestives, à vous de faire votre choix de blocage en fonction de vos besoins (blocage par pays, listes de blocages).

  • Je ne suis pas encore passé à Debian Buster, ni à nftables, visiblement nftables implémente les listes directement sans passer par une extension comme ipset.
  • J'ai commencé à modifier le script pour prendre en charge les listes ipv6 mais j'ai eu la flemme

Des ressources pour gratter :


Les buckets s3 c'est comme les FTP free

Posted on Wed 28 August 2019 in Non classé

En surfant sur les internets je suis malencontreusement tombé sur un bucket Amazon S3 utilisé par un site que je consultais.

Le problème avec ce service proposé par Amazon c'est qu'il est insécurisé par défaut : https://www.upguard.com/blog/s3-security-is-flawed-by-design .

\<salt>Pour caricaturer , auparavant les développeurs web crados y allaient à grand coup de chmod 777 à tout va sur le FTP, désormais on fout tout dans un bucket s3 et on l'ouvre en public. \</salt>

Un bucket s3 ouvert en public = tout le bucket accessible à tout va et à n'importe qui. En fouillant dans ce seau, je suis tombé sur des dump de la base SQL de production (oh bah merde alors).

Cela m'a permis d'apprendre à jouer avec les buckets, si jamais vous tombez sur une instance ouverte un jour, voici un script python qui permet dumper la liste de touts les objets présents (remplacer "bucket-tout-moisi") :

#!/usr/bin/python3
import boto3
import json
from botocore import UNSIGNED
from botocore.client import Config

client = boto3.client("s3", config=Config(signature_version=UNSIGNED))

paginator = client.get_paginator("list_objects_v2")

data = []
for page in paginator.paginate(Bucket="bucket-tout-moisi"):
    for elem in page["Contents"]:
        data.append(elem["Key"])

with open('output.json', 'w') as outfile:
    json.dump(data, outfile)

On creuse et on trouve que ce dump SQL est une base PostgreSQL. Si vous êtes sous Win10, je vous conseille d'installer un sous-système Linux (debian-wsl) + VcXsrv + Terminator puis d'installer postgresql, ça va vite, on importe le dump puis avez un outil simple comme PgAdmin on regarde ce qu'il y'a de beau à gratter.

Oh surprise, cette base contient 2600+ utilisateurs, hash de mot de passe, adresses, des données personnelles, etc,etc.

La table "users" est intéressante elle contient des hashs de mot de passe au format bcrypt, c'est à dire un sel différent pour chaque utilisateur + hash du mot de passe :

$2y$10$wxeXGxk6YJTN8MPXFAeoLewBJ6toW88x.xqiNq7c/Ip0Y8MYhD0DO

C'est pas mal du tout puisque ça permet en cas de fuite de la base de données d'éviter des attaques par table arc-en-ciel.

On peut quand même retrouver quelques mots de passe en utilisant Hashcatet un dictionnaire de mots de passe, en l’occurrence c'est un site français donc j'ai pris la liste des 5000 mots de passe Français les plus fréquents dans le projet Richelieu : https://github.com/tarraschk/richelieu

PS : si un de vos mot de passe est dans cette liste, bon, voilà hein.

Hashcat demande énormément de puissance de calcul puisque pour chaque sel et chaque élément du dictionnaire il va calculer le hash de mot de passe correspondant puis comparer avec tous les hashs de mots de passes de la liste. Temps estimé avec une GTX 1080 : 13h.

En laissant tourner quelques minutes, j'ai pu trouver 18 mots de passes simples.

En corrélant les résultat avec la liste des emails on obtient une liste comme celle-ci :

xxxxxxxxxxxxxxxxxx@wanadoo.fr:$2y$10$wxeXGxk6YJTN8MPXFAeoLewBJ6toW88x.xqiNq7c/Ip0Y8MYhD0DO:toto
xxxxxxxxxxxxxxxxxx@free.fr:$2y$10$wxeXGxk6YJTN8MPXFAeoLewBJ6toW88x.xqiNq7c/Ip0Y8MYhD0DO:motdepasse
xxxxxxxxxxxxxxxxxx@gmail.com:$2y$10$wxeXGxk6YJTN8MPXFAeoLewBJ6toW88x.xqiNq7c/Ip0Y8MYhD0DO:pierre
xxxxxxxxxxxxxxxxxx@numericable.fr:$2y$10$wxeXGxk6YJTN8MPXFAeoLewBJ6toW88x.xqiNq7c/Ip0Y8MYhD0DO:dodo
xxxxxxxxxxxxxxxxxx@laposte.net:$2y$10$wxeXGxk6YJTN8MPXFAeoLewBJ6toW88x.xqiNq7c/Ip0Y8MYhD0DO:coucou
xxxxxxxxxxxxxxxxxx@sfr.fr:$2y$10$wxeXGxk6YJTN8MPXFAeoLewBJ6toW88x.xqiNq7c/Ip0Y8MYhD0DO:password
etc...

Les combinaisons email+mot de passe sont très intéressantes puisqu'en général les gens sont fainéants et réutilisent le même mot de passe partout, donc il y'a fort à parier qu'on puisse se connecter avec les email/mot de passe à divers comptes Facebook/Mail/Twitter/etc

Après avoir gratté et appris à faire joujou avec Hashcat et les buckets s3 j'ai pris contact avec l'éditeur du site en défaut qui à depuis pris les mesures nécessaires pour faire le ménage.


DoH - DoT - Pi-hole - Unbound

Posted on Sun 19 May 2019 in Internet

Au commencement, pi-hole

Projet intéressant qu'est Pi-Hole : https://pi-hole.net/

pihole

C'est une solution qui installe de manière automatique un DNS menteur afin de s'éviter tous les sites qui hébergent de la publicité, trackers, etc..

Si vous disposez d'un RaspberryPi qui traine dans un coin à la maison c'est une excellente solution à mettre en place.

C'est bien mais pas top

Si vous disposez comme moi d'un serveur dédié ou d'une machine virtuelle hébergée, il pourrait être intéressant de mettre la chose en place en cas de déplacement ou pour son smartphone en 4G.

Il suffirait pour cela d'exposer votre serveur DNS Pi-Hole publiquement (TCP 53), personnellement je ne le fait pas directement, uniquement au travers d'un tunnel VPN.

Je suis tombé sur cet article très bien construit sur l'installation en plusieurs étapes d'un serveur DNS over HTTPS (DoH) + DNS over TLS (DoT) + Pi-hole + Unbound :

https://www.aaflalo.me/2018/10/tutorial-setup-dns-over-https-server/

  • DNS over HTTPS/DoH c'est la possibilité d'effectuer des requêtes DNS chiffrées sur HTTPS/TLS (TCP 443) via Nginx.
  • DNS over TLS/DoT c'est la peu ou prou la même chose, DNS sur TLS directement mais sur un port spécifique (TCP 853).
  • Pi-hole, cf. juste avant
  • Unbound est un recurseur DNS simple à installer et configurer.

Le fonctionnement est le suivant :

pihole

Les cas d'usage

  • Connecté en VPN, vous utilisez le DNS interne du serveur, en l'occurence pi-hole, vous beneficiez du DNS menteur/filtrage publicitaire. Pratique à condition que le port de votre VPN ne soit pas filtré.
  • Sur mobile Android à partir de la version 9, vous pouvez préciser un DNS privée (DNS over TLS, DoT) et vous utilisez alors votre DNS menteur quelque soit le réseau WiFi ou 4G.
    • Test effectué avec Chrome Android, pas de bloqueur en extension, les pages normalement infestées de publicités sont visitables.
    • Un détail cependant, le protocole nécessite d'utiliser le port TCP 853, donc filtrable.
  • Sur un poste de travail Windows/Linux/OSX, au moyen d'un client approprié (
    https://dnscrypt.info/implementations/) pour le protocole DNS over HTTPS/DoH, vous utilisez votre DNS menteur, y compris au travers de proxy HTTP.

Pour essayer/utiliser

Pour utiliser DoT sur votre mobile :

Options > Réseau > Avancé > DNS privée > dns.k3nny.fr

Pour tester DoH dans un navigateur :

https://dns.k3nny.fr/dns-query?name=www.toto.fr&type=A

{
    Status: 0,
    TC: false,
    RD: true,
    RA: true,
    AD: false,
    CD: false,
    Question: [
    {
        name: "www.toto.fr.",
        type: 1
    }
    ],
    Answer: [
    {
        name: "www.toto.fr.",
        type: 1,
        TTL: 3867,
        Expires: "Sun, 19 May 2019 15:46:27 UTC",
        data: "46.105.57.169"
    }
    ]
}

Pour aller plus loin

Pour comprendre plus en détails tous les enjeux et la technique derrière DoH/DoT, je vous invite à lire l'excellent billet de Stephane Bortzmeyer :

https://www.bortzmeyer.org/8484.html .

Et si au passage l'envie vous prend, je vous conseille d'acheter son livre "Cyberstructure" il est excellent.

https://cyberstructure.fr/


OpenVPN road-warrior et Shorewall

Posted on Sun 22 October 2017 in Libre

Pour l'usage en déplacement/depuis l'étranger/sur des Wi-Fi pourris, il est intéréssant de disposer d'une connexion VPN.

J'utilise pour cela l’intéressant script "OpenVPN road-warrior", certes très vindicatif dans le titre, néanmoins très efficace : https://github.com/Nyr/openvpn-install

Le setup est le suivant :

utlisateur <=== vpn ===> Serveur + OpenVPN <---> Internet

Depuis quelques temps j'ai pris gout à utiliser Shorewall afin de maîtriser simplement la configuration firewall de ce serveur.

L'utilisation concurrente de Shorewall + OpenVPN est possible il faut tout de même prendre soin de paramétrer tout cela correctement

Fichier /etc/shorewall/interfaces

Rien de transcendant, juste déclarer l'interface vpn

#ZONE   INTERFACE       OPTIONS
net     eth0            dhcp,tcpflags,logmartians,nosmurfs,sourceroute=0
vpn     tun0            dhcp
Fichier /etc/shorewall/masq

Il faut indiquer à Shorewall qu'il faut effectuer un masquerade du traffic venant du sous-réseau 10.8.0.0/24 (réseau VPN) vers l'interface eth0 (patte Internet sur le serveur)

eth0    10.8.0.0/24
Fichier /etc/shorewall/policy

Autoriser le traffic provenant du VPN vers eth0 dans le fichier policy

###############################################################################
#SOURCE         DEST            POLICY          LOG LEVEL       LIMIT:BURST
[...]
vpn             net             ACCEPT
Fichier /etc/shorewall/rules

Autoriser le service OpenVPN à écouter sur le port que vous utilisez. A noter que 1194 est parfois filtré, préférez-y un port plus standard (443/80/53/...) ( voir https://memo-linux.com/openvpn-sur-le-port-443-partage-avec-un-serveur-web/)

# OpenVPN
ACCEPT          net             $FW       udp     1194
Fichier /etc/shorewall/tunnels

Dernier fichier a ne pas oublier sinon ça ne peut pas fonctionner, déclarer le tunnel. Adapter avec le port UDP ou TCP choisit et l'IP publique de votre serveur

#TYPE         ZONE           GATEWAY        GATEWAY_ZONE
openvpn:1194  net            IP_SERVEUR
Test de connexion

Tout est prêt, plus qu'a tester si tout fonctionne.

Tester la connexion OpenVPN. Si connexion OK on passe à la suite.

Lancer un ping vers une IP, si shorewall n'a pas été redémarré ça ne doit pas passer. Relancer shorewall en mode safe (rollback vers ancienne configuration automatique)

shorewall safe-restart

Le ping doit maintenant passer > la connexion sort bien par eth0 vous avez un OpenVPN qui roule pour vous connecter de n'importe ou!


Mopidy le serveur de musique à la maison

Posted on Sat 19 August 2017 in Hardware

mopidy

Nouveau RPi reçu j'essaye des choses, je voulais depuis quelques temps installer une solution permettant de jouer de la musique sur les enceintes du salon et contrôlable à distance depuis smartphone/tablette/laptop.

Pour ça j'ai installé la solution Mopidy sur une base Raspbian (Debian compilé ARM pour RaspberryPi)

Comment faire ? Aller on y va

Télécharger et installer Raspbian (Lite) sur une carte microSD, utiliser Etcher pour ça, c'est intuitif.

[embed]https://www.youtube.com/watch?v=blgdBzcu80U[/embed]

Brancher le RPi sur un écran + clavier, par defaut le clavier est en qwerty donc on va faire en sorte que le machin soit correctement configuré pour avoir du réseau et que votre clavier azerty soit correctement mappé

Hint : les identifiants par défaut sont pi/raspberry  (tapez rqspberry donc)

On se cale en root parce qu'on est grand, et on règle la timezone

sudo su
dpkg-reconfigure tzdata

Modifier l'agencement du clavier en utilisant la commande

raspi-config

Fichier de configuration réseau (vide par défaut) : /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet dhcp

Il manque quelques outils de base pour diagnostiquer deux trois choses

apt install vim htop screen

Un petit reboot et on passe à l'installation de Mopidy. Ajouter le dépôt de paquet Mopidy

wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/stretch.list
apt-get update

Installer mopidy + python-pip + les paquets supplémentaires (Spotify, SoundCloud, Youtube, Interface Iris)

apt-get install mopidy mopidy-youtube mopidy-spotify mopidy-soundcloud mopidy-podcast
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install Mopidy-Iris
pip install Mopidy-Spotify-Web
pip install Mopidy-MusicBox-Webclient

Voila le machin est installé. Mais il va falloir configurer la chose. Explications

  • Mopidy en standalone va chercher le fichier de configuration dans \~/.config/mopidy/.. bref c'est de la merde.
  • Mais! Mopidy est prévu pour tourner en tant que service, c'est mieux.
  • Et en tant que service, il va taper dans /etc/mopidy/mopidy.conf. AH!
  • Mopidy ne balance rien à l'affichage, il ne sort que du son sur HDMI ou sortie jack du RPi.
  • Mopidy écoute par défaut sur les ports 6680 (interface web) et 6600 (interface MPD) mais uniquement en localhost. Je garde ça par défaut, défois que je voudrais coller un service web un jour sur le RPi.

Le fichier de configuration /etc/mopidy/mopidy.conf doit ressembler à quelque chose comme ça.

[core]
cache_dir = /var/cache/mopidy
config_dir = /etc/mopidy
data_dir = /var/lib/mopidy

[logging]
config_file = /etc/mopidy/logging.conf
debug_file = /var/log/mopidy/mopidy-debug.log

[local]
media_dir = /var/www/media

[m3u]
playlists_dir = /var/lib/mopidy/playlists

[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600
password =
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy $hostname
command_blacklist =
  listall
  listallinfo
default_playlist_scheme = m3u

[http]
enabled = true
hostname = 0.0.0.0
port = 6680
static_dir =
zeroconf = Mopidy $hostname

[spotify]
username = identifiant_spotify
password = mot_de_passe_spotify
client_id = id_client_a_generer
client_secret = secret_a_generer
toplist_countries = FR

[spotify_web]
client_id = id_client_a_generer
client_secret = secret_a_generer

[soundcloud]
auth_token = token_a_generer

[iris]
country = fr
locale = fr_FR

Pour la plupart des paramètres c'est "classique" pour un fichier de conf, ip, port, description, truc. J'ai déplacé le dossier de media par défaut dans /var/www/media ça m'emmerdai de laisser ça dans /var/lib/mopidy

Attention : Pour pouvoir utiliser le streaming Spotify il faut un compte Spotify Premium

  • Pour la partie Spotify, les valeurs a renseigner sont vos identifiants/mot de passe + un id/secret à récupérer depuis le site https://www.mopidy.com/authenticate/#
  • Idem pour Soundcloud : https://www.mopidy.com/authenticate/#

Ok une fois que c'est bon pour la configuration on peut lancer le serveur

systemctl enable mopidy
systemctl start mopidy

Pour voir si tout se lance bien

tail -f /var/log/mopidy/mopidy.log

Si le module Spotify à bien réussi à s'authentifier :

2017-08-18 23:55:25,074 INFO [10372:SpotifyEventLoop] spotify.session: Spotify logged in
2017-08-18 23:55:25,075 INFO [10372:SpotifyEventLoop] mopidy_spotify.backend: Logged in to Spotify in offline mode
2017-08-18 23:55:25,642 INFO [10372:SpotifyEventLoop] mopidy_spotify.backend: Logged in to Spotify in online mode

Sinon

2017-08-18 21:00:04,530 WARNING [6300:MainThread] mopidy.__main__: Found spotify configuration errors, the extension has been automatically disabled:
2017-08-18 21:00:04,531 WARNING [6300:MainThread] mopidy.__main__: spotify/client_secret must be set.
2017-08-18 21:00:04,532 WARNING [6300:MainThread] mopidy.__main__: spotify/client_id must be set.

Et comment utiliser ça maintenant ? http://\<ip raspberrypi>:6680 dans un navigateur et on récupère la liste des interface web disponibles

mopidy

Oui je n'ai pas trouvé mon bonheur tout de suite. Après plusieurs essais je conseille Iris + Musicbox. Iris ressemble à ça sur laptop

mopidy

Sur téléphone dans un navigateur (à gauche) il existe aussi une application dédiée Mopidy Mobile (via protocole MPD)

mopidy

Quelques notes :

  • La fonctionnalité Spotify permet de jouer de la musique depuis votre compte Spotify Premium sur le RPi en le controllant depuis une interface web (laptop/tablette/mobile). Elle ne permet pas d'utiliser la fonctionnalitée "Spotify Connect" donc n'est pas contrôllable depuis l'application Spotify directement.
  • Pour la locale je viens de me rendre compte qu'il me crois en Nouvelle Zélande, doit y'avoir une merde quelque part
  • La fonction recherche permet de recherche dans Spotify+SoundCloud+Localement. C'est puissant
  • Sur RPi3 le son est clean en sortie HDMI, crado en sortie jack. Dunno why
  • L'interface Iris est très orienté Spotify, pour être complet je laisse l'interface Musicbox qui permet de balancer du Youtube/SoundCloud/Local/Podcast plus simplement
  • J'ai coller RasperryCast en plus sur le même RPi ça ne rentre pas en conflit, les deux sont compatibles.

Voilà amusez vous bien, c'est simple à mettre en place (avec un minimum de techskilz), ça peut être sympa comme solution de musique partagée en soirée ou au bureau (avec ses risques et périls), vraiment efficace avec un compte Spotify Premium.


Déployer et configurer Mozilla Firefox en entreprise

Posted on Sat 01 July 2017 in Non classé

Mozilla

Quel dilemme que celui de déployer Mozilla Firefox correctement en entreprise/collectivité.

À l'opposé de Google Chrome,qui propose un installer MSI ainsi qu'un modèle d'administration ADMX très complet, Mozilla Firefox ne propose en tout et pour tout qu'un maigrichon Mozilla Firefox ESR (pour Extended Support Release) et pas de modèle d'administration du tout.

Des solutions existent, CCK2 ou encore FrontMotion Firefox, qui emulent le comportement de GPOs pour forcer des paramètres dans les confs de Firefox, c'est bien mais pas optimal (manque d'information en cas d'échec d'installation, pas assez souple).

Alors que faire ?

Se résigner à utiliser un navigateur qui remonte moultes informations à ses concepteurs ? Non, continuons d'utiliser Firefox mais déployons le correctement et configurons le de manière pérenne et sécurisée.

Vous l'aurez peut être deviné, on utilise à cet effet WAPT, la solution open-source de déploiement logiciel.  Et coup de chance Mozilla Firefox ESR est déjà packagé !

Voyons un peu ce qui est fait dans le paquet Firefox :

# -*- coding: UTF-8 -*-
from setuphelpers import *

uninstallkey = []


def install():
    version = control.version.split('-',1)[0]
    ukey = 'Mozilla Firefox %s ESR (x86 fr)'%version

    exe = 'Firefox Setup %sesr.exe'%version
    install_exe_if_needed(exe,'-ms',key=ukey,min_version=version,killbefore='firefox.exe')

    print("Disabling auto update")
    filecopyto("mozilla.cfg",makepath(install_location('Mozilla Firefox %s ESR (x86 fr)' %version )))
    filecopyto("local-settings.js",makepath(install_location('Mozilla Firefox %s ESR (x86 fr)' %version ),"defaults","pref"))

    print ("Disabling profile migration from ie")
    filecopyto("override.ini",makepath(install_location('Mozilla Firefox %s ESR (x86 fr)' %version ),"browser"))

    print ("Override User UI")
    ensure_dir(makepath(install_location('Mozilla Firefox %s ESR (x86 fr)' %version ),"browser","defaults","profile","chrome",""))
    filecopyto("userChrome.css",makepath(install_location('Mozilla Firefox %s ESR (x86 fr)' %version ),"browser","defaults","profile","chrome"))

    """
    print ("Deploy extensions")
    ensure_dir(makepath(programfiles32,"Mozilla Firefox","browser","extensions",""))
    copytree2("extensions",makepath(programfiles32,"Mozilla Firefox","browser","extensions"))
    """

On peut voir que Mozilla Firefox est installé selon les recommandations de la documentation officielle, des paramétrages par défaut sont appliqués dans ce paquet :

  • Désactivation de la mise à jour automatique
  • Désactivation de la migration depuis Internet Explorer)
  • Application de préférences par défaut (mozilla.cfg et local-settings.js) :

local-settings.js - indiquer le fichier de personnalisation

// Process mozilla.cfg in FireFox root directory.
pref("general.config.obscure_value", 0);
pref("general.config.filename","mozilla.cfg");

mozilla.cfg - indiquer les préférences du navigateur

// Disable Auto Updates
pref("app.update.enabled", false);
pref("extensions.update.enabled", false);
pref("app.update.service.enabled", false);

//disable feedback
pref("toolkit.telemetry.prompted",2);

//disable browser rights info toolbar
pref("browser.rights.3.shown", true);
pref("browser.rights.3.shown",true);

// disable default browser check
pref("browser.shell.checkDefaultBrowser", false);
pref("browser.startup.homepage_override.mstone", "ignore");
pref("general.smoothScroll", false);

//configurer proxy detection automatique wpad
pref("network.proxy.type",4);

//disable ipv6
pref("network.dns.disableIPv6",true);

//disable pdf integre
pref("pdfjs.disabled",true);

//disable cache 
pref("network.http.use-cache",true);
pref("browser.cache.disk.enable",false);


//disable migration
pref("profile.confirm_automigration",false);
pref("profile.migration_behavior",0);
pref("profile.migration_directory", "")


// Clear privacy data
// on shutdown
lockPref("privacy.clearOnShutdown.cache", true);
lockPref("privacy.clearOnShutdown.downloads", false);
defaultPref("privacy.clearOnShutdown.formdata", false);
lockPref("privacy.clearOnShutdown.passwords", false);
lockPref("privacy.clearOnShutdown.sessions", false);
lockPref("privacy.clearOnShutdown.siteSettings", false);
defaultPref("privacy.clearOnShutdown.cookies", false);
defaultPref("privacy.clearOnShutdown.history", false);
defaultPref("privacy.clearOnShutdown.offlineApps", false);
lockPref("privacy.sanitize.sanitizeOnShutdown", false);

// Changes to Root Certificates in Firefox on Windows
lockPref("security.enterprise_root.enable", true);

Dans ce paquet, l'installation et la configuration sont effectuée d'un seul tenant.

Problème pour ma structure, le proxy est définit spécifiquement dans la configuration de Firefox (absence de proxy.pac / wpad). Voici rapidement ce qu'il faut modifier dans le fichier mozilla.cfg

//set proxy server settings
 lockPref("network.proxy.ftp", "srvproxy.domain.lan");
 lockPref("network.proxy.ftp_port", 3128);
 lockPref("network.proxy.gopher", "srvproxy.domain.lan");
 lockPref("network.proxy.gopher_port", 3128);
 lockPref("network.proxy.http", "srvproxy.domain.lan");
 lockPref("network.proxy.http_port", 3128);
 lockPref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, *.domain.lan");
 lockPref("network.proxy.type", 1);
 lockPref("network.proxy.share_proxy_settings", true); // use the same proxy settings for all protocols

Ainsi la préférence est bloquée dans la configuration de Firefox et les utilisateurs ne pourront pas la modifier.

Pour plus de sécurité, j'installe l'extension uBlock, le paquet existe déjà : paquet WAPT uBlock

On décline l'installation de Firefox comme ceci :

  • Paquet Mozilla Firefox sans personnalisation
  • Paquet extension uBlock
  • Paquet de configuration Firefox

En utilisant le principe de dépendance de WAPT, je suis assuré d'avoir déployé correctement ces trois éléments.

Simon des Fourmis du Web a déjà fait ce travail de séparation de la configuration et de l'installation :

Modifiez le paquet de configuration à votre convenance et à vous Mozilla Firefox déployé correctement !

Sources :


WAPT la solution de déploiement logiciel libre et open-source

Posted on Fri 03 March 2017 in Internet

Un outil que tous les sysadmin de France et de Navarre devrait connaître et utiliser, c'est WAPT.

WAPT

Le site officiel : https://www.wapt.fr/fr/

What is WAPT ?

WAPT c'est une solution open-source de déploiement de logiciels, sous forme de paquets. Ca fonctionne en mode client-serveur et ça a l'énorme avantage de tourner en service système avec les droits administrateur et tout ça s'il vous plait silencieusement. S'pas beau la vie ?

Ça permet quoi :

  • Installer les logiciels silencieusement
  • Désinstaller les logiciels silencieusement
  • Mettre à jour \<idem>
  • Reporting dans une console GUI de gestion
  • Packager ses propres applis
  • Servir d'outil d'inventaire

Si on compare avec les solutions de déploiement de base type scripts batchs / GPO / MSI etc., c'est beaucoup plus léger et souple. J'utilise des paquets pour l'utilisation classique (Firefox, VLC, etc..) mais aussi des paquets un peu plus tordus (Office 2016, Trend Micro OfficeScan, SolidWorkds).

Mis en place chez ex-job, la première utilitée que j'y ai trouvé c'est la mise à jour de Flash et Java, qui me prenait un temps fou, alors qu'avec WAPT, suffit d'importer le paquet déjà fourni par Tranquil IT Systems (les créateurs de WAPT) et bazinga Flash et Java à jour !

Derrière c'est quoi ?

  • Un serveur d'inventaire qui recolte passivement les données remontées des agents
  • Un serveur web qui sert les paquets pour les agents (sur la même machine que précédemment)
  • Une console de management GUI
  • Du Python essentiellement, c'est puissant, efficace, ça roxx
  • Du Lazarus pour la console, c'est efficace
  • De la sécurité, les paquets sont signés et les agents vérifient les paquets avec installation
  • Plein de paquets existants, pas besoin de réinventer la roue : https://store.wapt.fr/

Et c'est utilisé par qui ?

  • Par beaucoup d'Etablissements Scolaire, Ecoles, Universités
  • Par des BTS SIO en sujet de stage, je vous vois ;)
  • Par pas mal de Municipalités/Agglomérations/Com-Com
  • Par des Industries
  • Par des Ministères
  • Par tous ceux la : https://www.wapt.fr/fr/#references
  • Bientôt par ta boite aussi ;)

Si tu veux rendre service autour de toi, dis a ton sysadmin que pour qu'il arrête d'être emmerdé par les mises-à-jour de Flash et Java sur les postes de laboite, WAPT est la pour lui faire gagner du temps.

On a fait une chouette documentation en ligne, tout y est, profitez en : https://www.wapt.fr/fr/doc/

Si jamais vous avez des questions n'hésitez pas, en commentaire ou sur Twitter : \@K3nnyfr


Définir le thème Mustang pour Vim dans Debian 8

Posted on Wed 09 March 2016 in Internet

Va savoir pourquoi ça voulait pas, il faut tout d'abord créer l'arborescence suivante

mkdir ~/.vim/
mkdir ~/.vim/colors/
vim ~/.vim/colors/mustang.vim

Dans ce fichier mustang.vim collez-y ceci

" Maintainer:    Henrique C. Alves (hcarvalhoalves@gmail.com)
" Version:      1.0
" Last Change:  September 25 2008

set background=dark

hi clear

if exists("syntax_on")
  syntax reset
endif

let colors_name = "mustang"

" Vim >= 7.0 specific colors
if version >= 700
  hi CursorLine guibg=#2d2d2d ctermbg=236
  hi CursorColumn guibg=#2d2d2d ctermbg=236
  hi MatchParen guifg=#d0ffc0 guibg=#2f2f2f gui=bold ctermfg=157 ctermbg=237 cterm=bold
  hi Pmenu      guifg=#ffffff guibg=#444444 ctermfg=255 ctermbg=238
  hi PmenuSel   guifg=#000000 guibg=#b1d631 ctermfg=0 ctermbg=148
endif

" General colors
hi Cursor       guifg=NONE    guibg=#626262 gui=none ctermbg=241
hi Normal       guifg=#e2e2e5 guibg=#202020 gui=none ctermfg=253 ctermbg=234
hi NonText      guifg=#808080 guibg=#303030 gui=none ctermfg=244 ctermbg=235
hi LineNr       guifg=#808080 guibg=#000000 gui=none ctermfg=244 ctermbg=232
hi StatusLine   guifg=#d3d3d5 guibg=#444444 gui=italic ctermfg=253 ctermbg=238 cterm=italic
hi StatusLineNC guifg=#939395 guibg=#444444 gui=none ctermfg=246 ctermbg=238
hi VertSplit    guifg=#444444 guibg=#444444 gui=none ctermfg=238 ctermbg=238
hi Folded       guibg=#384048 guifg=#a0a8b0 gui=none ctermbg=4 ctermfg=248
hi Title        guifg=#f6f3e8 guibg=NONE    gui=bold ctermfg=254 cterm=bold
hi Visual       guifg=#faf4c6 guibg=#3c414c gui=none ctermfg=254 ctermbg=4
hi SpecialKey   guifg=#808080 guibg=#343434 gui=none ctermfg=244 ctermbg=236

" Syntax highlighting
hi Comment      guifg=#808080 gui=italic ctermfg=244
hi Todo         guifg=#8f8f8f gui=italic ctermfg=245
hi Boolean      guifg=#b1d631 gui=none ctermfg=148
hi String       guifg=#b1d631 gui=italic ctermfg=148
hi Identifier   guifg=#b1d631 gui=none ctermfg=148
hi Function     guifg=#ffffff gui=bold ctermfg=255
hi Type         guifg=#7e8aa2 gui=none ctermfg=103
hi Statement    guifg=#7e8aa2 gui=none ctermfg=103
hi Keyword      guifg=#ff9800 gui=none ctermfg=208
hi Constant     guifg=#ff9800 gui=none  ctermfg=208
hi Number       guifg=#ff9800 gui=none ctermfg=208
hi Special      guifg=#ff9800 gui=none ctermfg=208
hi PreProc      guifg=#faf4c6 gui=none ctermfg=230
hi Todo         guifg=#000000 guibg=#e6ea50 gui=italic

" Code-specific colors
hi pythonOperator guifg=#7e8aa2 gui=none ctermfg=103

Enfin on créer son fichier de propriétés perso

vim ~/.vimrc

Le contenu de votre fichier perso

set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE

Et voila ça roxx


GPG

Posted on Mon 15 February 2016 in misc

Fingerprint : AD1E 7821 13D4 7343 BD21 4924 EA48 E2C7 FBAE 8272

-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.10 (GNU/Linux)

mQENBExOMtEBCADOqtw1GYK6bsd9nRq1k7pHOV4EGUxJ8TU+MDakNYAtdQM0my+A
xdwCFrhjg5huXkMZdHjAqQQafsZ727QinM2OMkujv82SbhAqlq/4/Z96+7wr1X0z
UlrsSdcvaG9c1pVNvU7Epq0H2rgR8Sd0Ggp1mUyETb9/HflRTLJ4b/Bw1BKeZJ7e
u8tLzMEZYYxvrIo/Q1atE2/Pb79A55V/W2R1j7/6wVWxjVe4g1kApaC4xS1SLI5J
fInZCqenktxpqw9TIdc2p9SMbOa9v7ORIsUJoQYN7ja9HVdWqJhLvdbdl1lmQUSu
R/wkDGXcp/44i2n+AAVHKDnB2FoVVwnR7qEdABEBAAG0KEFsZXhhbmRyZSBHYXV2
cml0IDxrM25ueTQzMjg1QGdtYWlsLmNvbT6JATgEEwECACIFAkxOM6oCGwMGCwkI
BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOpI4sf7roJyVBsH/i5pgM6UHjA1U6v/
cMevQ2co1wLfcGn7g9yaYhzyypoE9AhJVKZmRUxXTCH12ymEOWDfg6sxOeKD/qLZ
YFRsbCGbj7OEuoNo75jlfFRyM3GVZ8wtH7lCjVjxtJexreN8ZPlnJmYZ3xZBYmkz
D9hlShsUf7yo1FJotSM24KiE7s22unTt2fPEkuZ9UTDpYVz9Z6Y2PbwkoilsYnmD
OVYFmT6z2M8cftXcqcSftibuhmq3t7C+fwUIFZEd6DJojyT+BWlEh9v+0fqj4NRP
B9pDBlfeQPP+kL3cToMdgzUH1HuifkhnCXTbjIC9iH8vfTw5e23fCvb6wTJwxgRg
nVtCoeO0L0FsZXhhbmRyZSBHYXV2cml0IDxnYXV2cml0LmFsZXhhbmRyZUBnbWFp
bC5jb20+iQE7BBMBAgAlAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCTE4z
uQIZAQAKCRDqSOLH+66CcmO8B/wMhi7DV5z7DTFRTpY4fPl55CZsHkxIxKMAZ7Wu
3hpcG86gK8R1ecymtTDbQtwnXbYESsBj5VtsZMC3t2+TiOZqUgv0S4eHG3+RGNa2
FIAHT6eqfgKRZmotpJIcJGKjQ36t67OA1J/9kUVEZ7To9Ebqm6e/4jHHAx0i7pKI
9o9WBBcdMbHezhwtfmsqYD//MM9K0EngP3jnQ+qrbyW6qE9BZCairgH+QM2KlnSm
7uCMCgwChl7TETDPy/CAqshN/+mZCn+dcTUOfCWc1PnhazF8tjykjFoTHaU7uox0
2r62AfAvI8miaGy2FomkymsNpN9puRiHUKD72vDjkoiLFztfuQENBExOMtEBCAC4
t4qthcf4KosRXW9yAWe+BLtKYq4T5QpNao3567cn+m/gbsfVyssIjXpIs2uTP66N
EpIeBN8MktqKRmlWSIUnFCLl3NKA9KpNoRnP9NAXXXEf2HzKIYZkbRkSAG1vH0Ql
SuqZr2F1IWJYtRDyzP5/vCYFxWPMwS8QozDCqQ9uj6+hEdDH9T1WdaCo+nDAmwB8
and/ZJJ6t9b/pofyyqGn0A07QHQ5g/7tdEAfXLg540R8K2BSsssQeWbgz3rVy7jS
UhHsJGnD+jI46nZkaSKiUeIGk+gvqO6XsvUIgTCN7DTj4hAF7mtvIMmA4ZegWT9r
//Jq3FJNlFhzaxo7uhw5ABEBAAGJAR8EGAECAAkFAkxOMtECGwwACgkQ6kjix/uu
gnIvewgAi8yw4ntTl3Rd10baofa7d4iDp8gsAbuwQJtpn9a3M9Ag3StXz44hAbrQ
PYulScd1eITaOx2I0/u+d71YZVv9rGkA7hNxJ4mi5dPkpNiPmCxutd95wCpySfGq
yA+BthmRywc/YG8RqGqyT4wHkRlbe+9q1WG1hBYeqZV/bUVfpFZ7YV1bEvtRga95
ejA1gL1AlZBqSEvA5oNuSRdhdhmAd4/dRB1sOt9f0hrMWsETOZDBVplsrWSZkhtb
n9I6xFwRZW7cA4P9paNKvnshRWtDJAlRy4lLSLgFiDeeOS+m5AIOXcCqN0vBcacO
WysaXpGUQLHPKBlsmB2jqBi+nzXj4Q==
=ecUB
-----END PGP PUBLIC KEY BLOCK-----


LetsEncrypt rapide et facile

Posted on Fri 04 December 2015 in Internet

Pour celles et ceux qui veulent faire ça rapide

Configuration utilisée :

  • Debian 7.9
  • Apache 2.2.22
  • LetsEncrypt à jour du 04/12/2015

Je suppute que :

  • vous ayez déjà téléchargé LetsEncrypt depuis le repo Github
  • vous ayez un fichier de conf de vHost par domaine déjà existant.
  • vous n’êtes pas un gros pinpin

Soit.

Allons-y Christian !!

1 - Copier le vHost actuel et le modifier

cd /etc/apache2/sites-available/
cp monsite.fr monsite.fr-SSL
vim monsite.fr-SSL

2 - Modification du vHost en prévision de ce que va nous sortir LetsEncrypt

  • Le port d'écoute pour https c'est 443 je ne vous apprend rien donc on change le port d'écoute
  • On doit activer l'engin de la mort SSLEngine
  • Et on doit mettre tout ça dans un fichier de log distinct

Grosso merdo vous devriez obtenir un fichier dans ce genre là :

NameVirtualHost *:443
<VirtualHost *:443>
        DocumentRoot /var/monsite.fr
        ServerName www.monsite.fr

        CustomLog /var/log/apache2/monsite.fr-SSL.log combined
        ErrorLog /var/log/apache2/monsite.fr-SSL_error.log

        SSLEngine On
        SSLCertificateKeyFile /etc/letsencrypt/live/www.monsite.fr/privkey.pem
        SSLCertificateFile /etc/letsencrypt/live/www.monsite.fr/cert.pem
        SSLCertificateChainFile /etc/letsencrypt/live/www.monsite.fr/chain.pem
        SSLCompression off
        SSLProtocol All -SSLv2 -SSLv3
        SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
        #SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

        <Directory "/var/monsite.fr">
                allow from all
                Options +Indexes
        </Directory>
</VirtualHost>

Le gros bloc de CipherSuite ce sont les recommandations de SSL-Labs, rapport a HeartBleed etc.

Vous noterez le bloc qui défini les clés utilisées :

SSLCertificateKeyFile /etc/letsencrypt/live/www.monsite.fr/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/www.monsite.fr/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.monsite.fr/chain.pem

J'ai tout simplement anticipé pour la suite, étant donnée que ce sont les chemins utilisés par Let'sEncrypt pour sortir les clés.

3 - Génération des clés avec LetsEncrypt

Générons maintenant les clés en automatique, c'est tout simple

cd /opt/letsencrypt/
./letsencrypt-auto certonly --webroot -w /var/monsite.fr/ -d www.monsite.fr

Hop Hop il se débrouille pour générer les clés tout le toutim et tadaaaaaa

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.monsite.fr/fullchain.pem. Your
   cert will expire on 2016-03-03. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

On active ce vHost, on regarder si la configuration est correcte, on redémarre Apache2 pour vérifier tout ça et on test voir si le navigateur nous chie pas dans les bottes

a2ensite monsite.fr-SSL
apache2ctl configtest
service apache2 reload

Chez moi ça s'est déroulé sans encombre pour mes différents domaines/sites


Monitorer ProFTPd avec Munin

Posted on Fri 10 July 2015 in Libre

Pour monitorer ProFTPd il faut bidouiller un tantinet, le plugin n'étant plus très à jour.

Pré-requis, installer logtail

apt-get install logtail

Première étape, télécharger les fichiers du plugin

cd /usr/share/munin/plugins
wget https://raw.githubusercontent.com/munin-monitoring/contrib/master/plugins/ftp/proftpd
wget https://raw.githubusercontent.com/munin-monitoring/contrib/master/plugins/ftp/proftpd_bytes
wget https://raw.githubusercontent.com/munin-monitoring/contrib/master/plugins/ftp/proftpd_count
chmod a+x proftpd*

Deuxième étape, ajouter le plugin a munin

ln -s /usr/share/munin/plugins/proftpd* /etc/munin/plugins/

Dans la configuration des plugins munin il faut ajouter la configuration pour proftpd

[proftp*]
group root

Si le plugin était à jour et maintenu on pourrait se dire c'est bon ça roule. Non ça foire pour proftpd_count et proftp_bytes

Deux raison à cela :

  1. Le chemin indiqué dans le plugin pour xferlog est erroné
  2. Le dossier plugin-state ne contient pas le fichier offset voulu par le plugin

Pour proftpd_bytes voici ce qu'il faut obtenir

LOGFILE=${logfile:-/var/log/proftpd/xferlog}
LOGTAIL=${logtail:-`which logtail`}
STATEFILE=/var/lib/munin-node/plugin-state/xferlog-bytes.offset

Le fichier ne se créer pas de lui même on va l'aider

touch /var/lib/munin-node/plugin-state/xferlog-bytes.offset
chmod 775 /var/lib/munin-node/plugin-state/xferlog-bytes.offset

Pour proftpd_count voici ce qu'il faut obtenir

LOGFILE=${logfile:-/var/log/proftpd/xferlog}
LOGTAIL=${logtail:-`which logtail`}
STATEFILE=/var/lib/munin-node/plugin-state/xferlog-count.offset

Le fichier ne se créer pas de lui même on va l'aider aussi

touch /var/lib/munin-node/plugin-state/xferlog-count.offset
chmod 775 /var/lib/munin-node/plugin-state/xferlog-count.offset

On test voir si la configuration fonctionne (pas de message d'erreur)

cd /etc/munin/plugins/
munin-run proftp_bytes

Voilà tout devrait fonctionner maintenant !


Compte-Rendu d'infection par CryptoWall 3.0 - 2015/04/29

Posted on Thu 30 April 2015 in Internet

------------------ Infection

Jeudi matin à 8h44 est apparu sur le poste cuisine-pc.dir.lan un virus sous la forme d'une fausse mise à jour Adobe Flash Player.

Ce virus non détecté par l'Antivirus en place et à jour Trend OfficeScan, la signature étant apparu la veille selon Virus-total, utilise le mécanisme CryptoWall / CryptoLocker dans sa version 3.0

Ce virus fonctionne de la sorte :

  • Injection/Lancement d'une binaire au démarrage du poste (clés de registre situées dans HKLM\Software\Microsft\Windows\CurrentVersion\Run et HKCU\Software\Microsft\Windows\CurrentVersion\Run)
  • Ajout d'une entrée également dans le Menu Démarrer\Démarrage pour tous les utilisateurs
  • La binaire se lance et exécute plusieurs outils par le biais de commandes batch.
  • L'empreinte mémoire atteignait 17 000 à 27 000 Ko pour chaque instance.

Chaque instance lancée chiffre les fichiers situés sur le disque dur du poste client ainsi que les éventuels lecteurs réseaux, périphériques de stockage (clé USB/disque dur externe), sur lesquels l’utilisateur courant à les droits d’écriture.

Les répertoires qui ne sont pas impactés sont :

  • Windows
  • Program Files
  • Temp

Cela permet à l’ordinateur de continuer à fonctionner « normalement ».

Les types de fichiers touchés sont :

  • Images JPG/PNG : le nom du fichier reste identique, l'aperçu dans l'explorateur reste le même, le contenu est altéré et l'image illisible.
  • Documents doc/docx/xls/xlsx : le nom du fichier reste identique, le contenu est altéré et le fichier illisible
  • Même conséquence pour les fichiers PDF, ODF, MKV, AVI, MP4

Voici la liste de tous les types de fichiers concernés (source : https://blog.fortinet.com/post/cryptowall-another-ransomware-menace )

filetypes

Ne sont pas concernés les fichiers .exe/.ini/.cfg ce qui en soit est "intéressant" dans le monde professionnel car le virus n’altère pas les fichiers de configuration de logiciels installés à la racine du disque (c’est souvent le cas avec les logiciels métiers anciens).

Dans chaque dossier/sous-dossiers où se trouvaient des fichiers chiffrés par le virus sont joint 4 fichiers :

fichiersduplique

C’est le seul effet vraiment visible de ce virus puisque rien n’est détruit, tous les fichiers sont réécrits en lieu et place des existants.

La page HTML est très simple, sans fioritures et contient le même texte que l’image PNG et le fichier texte.

  • Les trois fichiers sont rédigés dans un français correct avec quelques fautes.
  • Le quatrième fichier est un raccourci vers une page internet qui permet à la personne infectée de payer une rançon afin d’obtenir la clé de déchiffrement.

prompted

Un des effets qui a alerté l’utilisateur était le ralentissement du poste client.

La charge CPU nécessaire au chiffrement des fichiers est assez importante ce qui explique la lenteur soudaine. Une analyse avec Sysinternals Process Explorer montre également une forte activité réseau pour chaque instance du virus.

Chaque instance semblait se comportait comme un client/serveur, transmettant des requêtes HTTP en UDP (de mémoire le port 3192). Après recherches l’interface de commande du virus utilise le réseau Tor pour contrôler les postes infectés, le poste infecté était probablement utilisé comme relais de commande Tor.

Mon investigation s’est arrêtée là par manque de temps, il me fallait éviter une éventuelle propagation et rétablir les services touchés.

------------------ Recherches

Après recherches sur le virus en question, plusieurs autres choses sont exécutées en arrière-plan et non des moindres :

  • Suppression des sauvegardes automatiques des volumes :
    • vssadmin.exe Delete Shadows /All /Quiet

La désactivation de ce service signifie que les copies des fichiers éventuellement sauvegardées par Windows dans un point de restauration précédent sont supprimées, aucune récupération avec des logiciels spécialisés tels que Recuva ou testdisk/PhotoRec n’est possible.

  • Désactivation des notifications d’Erreur de Récupération Windows :
    • bcdedit /set {default} recoveryenabled No
    • bcdedit /set {default} bootstatuspolicy ignoreallfailures
  • Désactivation des services Centre de Sécurité, Windows Defender, Windows Update, Service de Transfert Intelligent en Arrière-Plan (BITS).

L’exploit utilisé semble être celui-ci documenté sur le blog Malware Don’t Need Coffee : https://malware.dontneedcoffee.com/2015/04/cve-2015-0359-flash-up-to-1700134-and.html

------------------- Impact et rétablissement

impacted

Impact

Les dégâts subis suite à cette infection ont empêché le fonctionnement du self du collège pour une journée.

Ont été touchés :

  • Fichiers du lecteur réseau mappé en écriture pour le logiciel de restauration
  • Fichiers du lecteur réseau mappé en écriture pour les documents de restauration
  • Fichiers situés dans les Documents utilisateur et le Bureau
  • Fichiers situés dans la deuxième partition du disque du poste client

Le logiciel de restauration utilise une borne de contrôle d’accès biométrique + lecteur de carte associé à un distributeur de plateau commandé par le réseau. Le logiciel de communication avec la borne de contrôle étant situé sur le poste infecté, nous avons dû fonctionner en manuel pour une journée.

Tous les postes du VLAN concerné ont été déconnecté manuellement du réseau, et un scan viral lancé avec l’outil Kaspesky Removal Tool. Au final cela n’a été d’aucune efficacité puisque le virus étant juste sorti, la signature du fichier était inconnu de cet outil. Méthode à revoir.

Fort heureusement aucune infection sur les postes du VLAN concerné n'a été signalée, cela reste à confirmer.

Rétablissement de l’activité

Pour le rétablissement de l’activité il a fallu dans l’ordre :

  • Extraire le disque de la machine infecter et le remplacer par un autre disque
  • Installer le système d’exploitation de la machine
  • Installer le logiciel de restauration
  • Installer le logiciel de communication avec la borne de contrôle
  • Installer le logiciel de contrôle en température des chambres froides
  • Paramétrer la messagerie Outlook
  • Installer les périphériques (imprimantes)
  • Intégrer le poste au domaine et mise en place du poste

Pour le rétablissement des données, n’étaient sauvegardées de manière journalière et mensuelle que les données du logiciel de restauration + documents de restauration.

Les utilisateurs ont pour consigne de ne sauvegarder que le minimum de choses dans leur dossier utilisateur et leur bureau. Egalement les données éventuellement stockées dans la partition 2 du disque dur infecté (photos, documentation) n’ont pu être récupérées puisque non sauvegardées.

Ce manquement de sauvegardes sur les clients sera comblé par le déploiement de la solution gratuite Veeam Endpoint Backup qui permet la sauvegarde de données sur postes clients.

Grâce aux sauvegardes différentielles effectués la nuit précédente et complète en début de mois les pertes de documents ont été minimes voir nulles.

La réinstallation rapide des logiciels métiers spécifique et leur paramétrage a pu être faites facilement car le virus ignore les fichiers de configuration .ini et binaires .exe ce qui a permis de récupérer les configurations précédentes sur l’ancien disque dur et de tout relancer sans l’intervention d’un technicien spécialisé.

Au final le service a été rétabli le lendemain midi soit 24h après la constatation de l’infection. Dans notre cas c’est une durée très satisfaisante.


USBKEY – Magie de Nowel - LE RETOUR DU COMEBACK !

Posted on Fri 19 December 2014 in Internet

Swiss-Army-USB,A-B-301043-13

Le tutoriel rapide pour nettoyer le pc de tata jacqueline qui fait n'importe quoi :

Si vraiment c'est trop encrassé, nettoyez avec TronRescue : https://bmrf.org/repos/tron/Tron%20v4.3.1%20(2014-12-18).exe

TronRescue sur votre clé USB de Nowel sera la seul chose utile puisque c'est le script de la mort qui fait tout !

Bonnes Vacances !


Sauvegarder ses données

Posted on Mon 25 November 2013 in Internet

De plus en plus de personnes viennent me voir à propos de la sauvegarde de données, soit en amont en préventif, soit après.

Il est de bon ton de s’en inquiéter en amont, car une fois le support de stockage endommagé il devient difficile de l’exploiter afin d’en extraire les données.

Petit guide à destination de toutes et tous et à diffuser autour de vous si vous le voulez.

  • Rappel 1 : Les disques durs externes sont fragiles
  • Rappel 2 : Les clés USB ne sont pas éternelles
  • Rappel 3 : Durée de vie d'un disque dur d’ordinateur portable \~= durée de vie d'un disque dur externe
  • Rappel 4 : Un disque dur d’ordinateur fixe = 8 ans GRAND MAXIMUM

locker

Identifier et quantifier les données à sauvegarder

Première chose à faire, identifier les données à sauvegarder. On peut penser à :

  • Documents sensibles – associatif, pièces d’identités, docs bancaires, factures, CV, Impôts
  • Documents importants – emails, documents personnels
  • Medias – Photos, Vidéos
  • Divers – Films, Musique
  • Supports amovibles – clés USB, appareils photos
  • « Mobile Devices » – Tablettes, Smartphones
  • CD de Photos et anciennes sauvegardes

On veillera a bien définir le volume-la taille de ces données, cela peut varier de quelques Mega octets (Mo) à plusieurs Giga-octets (Go)

Rappel de quantification octets: 1024 Ko = 1 Mo / 1024 Mo = 1 Go / 1024 Go = 1 To

  • Un document Word :                                        de 400 Kilo octets à + 10 Mo
  • Une photo de bonne qualité ou une chanson :     5 Méga octets
  • Une vidéo de quelques minutes :                       de 120 Méga octets a + 2 Giga octets
  • Un film en qualité standard :                                                   700 Mo
  • Un film en qualité HD 720p :                                                   4.7 Go
  • Un film en qualité HD 1080p « full HD » et  3D :                        4 à 21 Go

Il existe plusieurs types de sauvegarde :

  • Sauvegarde complète : une sauvegarde complète de tous les dossiers/medias indiqués sera faite sur le support de destination. On conseille de prévoir 10x l’espace de stockage initial. (100Go pour 10Go a sauvegardé)
  • Sauvegarde incrémentielle/différentielle : une sauvegarde complète est faite puis on ne va sauvegarder quotidiennement uniquement les fichiers modifiés, on a donc besoin de moins d’espace de stockage et on réduit le temps de sauvegarde.

En termes de périodicité de sauvegarde, les préconisations que j'applique sont :

  • Une sauvegarde annuelle complète                 – N années conservées.
  • Une sauvegarde mensuelle complète              – 3 à 12 mois conservés
  • Une sauvegarde hebdomadaire complète         – 2 à 4 semaines conservées
  • Une sauvegarde journalière incrémentale         – 7 jours conservés

Choisir un/des support(s) de destination

Pour chaque type de donnée un choix de support de destination peut être fait.

Disque dur externe (entre 250Go et 1To – de 65€ à 95€)

  • Economiques et d’une bonne capacité de stockage
  • Durée de vie limitée (entre 3 et 5 ans maximum)
  • Limités à un poste informatique

NAS - Unité de Stockage réseau (entre 1To et 12To voir+  – de 150€ à 500€)

  • Coup important à l’achat, de grande capacité de stockageDurée de vie bien plus longue (de 5 à 8 ans)
  • Les données sont dupliquées entre les disques (fonctionnement en RAID) si un disque meurt, l’autre prend le relais et les données ne sont pas perdues
  • Partageable avec d’autres postes (fonctionne en réseau)

Stockage sur Internet

Ex : CozyCloud - Offre gratuite de 5 Go puis payant (offres de 100Go/500Go/1To pour –de 10€/mois) - Economique et fiable, stockage dupliqué également - Partageable entre plusieurs postes (fonctionne sur Internet) - Dépend de la vitesse de connexion pour les transferts..

Différents cas de figure

Cas 1 : J’ai seulement des documents à sauvegarder (entre 100Mo et 5Go de donnée)

  • Sauvegarde sur disque dur externe
  • + sauvegarde sur Internet avec un service Cloud gratuit (en France : CozyCloud / étranger : Dropbox)

Cas 2 : J’ai des photos de vacances + des documents (entre 5Go et 200Go de donnée) :

  • Sauvegarde sur disque dur externe
  • + sauvegarde sur Internet avec un service Cloud payant (en France : CozyCloud)

Cas 3 : J’ai beaucoup de photos et de vidéos (entre 100Go et 1To) :

  • Sauvegarde sur une unité de stockage (NAS) + sur disque dur externe si possible
  • + sauvegarde sur Internet avec un service de Cloud payant (en France : CozyCloud)

Le plus sûr est de diversifier les supports de destination avec un même logiciel de sauvegarde.

Quel logiciel utiliser ?

Windows - Gratuit :

Au choix selon les affinités avec le logiciel, ils remplissent tous la même tâche.

Petite préférence pour Cobian Backup en gratuit

Windows - Payant :**

Acronis est une référence en logiciel de sauvegarde, il va plus loin car il peut sauvegarder le disque dur en entier pour une restauration brute du système.

Mac

  • TimeMachine. Natif, fonctionne très bien.

Linux

Mon support de stockage a crashé, je fais quoi ?

Cas 1 :

  1. Je pleure
  2. Je ne pleure plus car j’ai suivi ce guide à la lettre et j’ai mes données sauvegardées quelque part sur un disque externe, ou sur mon NAS, ou dans le Cloud.

Cas 2 :

  1. Je pleure
  2. Je n’ai pas suivi ce guide parce que « merde pas le temps informatique blablabla »
  3. Je pleure une deuxième fois
  4. Je me demande comment je vais faire pour récupérer toutes ces données…

Il existe des sociétés spécialisés en récupération de données, certaines équipées de salles blanches afin d’opérer les disques ou supports endommagés. Il vous en coutera entre 150 et 600€ et plus selon la gravité et la quantité de donnée à récupérer.

La méthode utilisée dans ces sociétés est une suite de récupération spécialisée qui va copier l’intégralité du disque ou du support flash endommagé secteur par secteur pour en créer un fichier image disque brute.

Ce fichier sera exploité par un second logiciel qui va extraire les fichiers qu’il pourra tenter de retrouver dans le fichier de récupération. Les chances de réussite de recouvrement de photos et documents avec cette méthode sont de l’ordre de 50%.

La meilleur des méthodes étant bien évidement de sauvegarder en amont !


ssmtp - envoi simple d'emails

Posted on Thu 12 September 2013 in Internet

J'ai installé une solution osTicket et le grand atout de cet outil est de pouvoir automatiser l'envoi d'emails de confirmation pour les utilisateurs et d'emails d'alerte pour les techniciens.

Pour ça on devrait en temps normal paramétrer un serveur Sendmail ce qui est fastidieux, en regardant la doc sur le Wiki de debian on rigole un coup en voyant ça :

[caption id="attachment_1080" align="alignnone" width="775"]C'est une doc... radicale ! C'est une doc... radicale ![/caption]

Donc! On va installer ssmtp !

Attention les yeux, c'est super dur :

aptitude install ssmtp

on édite l'unique fichier de config de ce programme - ici avec utilisation d'une adresse GMail :

# /etc/ssmtp/ssmtp.conf
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=username@domain.com

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=yourhostname.domain.tld

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
UseTLS=YES 
UseSTARTTLS=YES 
AuthMethod=LOGIN 
AuthUser=username@domain.tld
AuthPass=Password1234$%

On a plus qu'a tester l'envoi d'un mail dans osTicket, et bah ça fonctionne impec.

En php plus généralement c'est la commande mail() , tout plein de documentation par ici : https://php.net/manual/fr/function.mail.php


CSGO config file highlight for Notepad++

Posted on Thu 25 July 2013 in Internet

Tonight I took up as a challenge to create a language file for Notepad++ designed to highlight Counter-Strike Global Offensive configuration files (.cfg files). It becomes pretty handy to see syntax error and if keywords are correctly spelled to avoid further problems.

It took me half an hour to do so, based on the works of \@gustavnikolaj, he posted on Reddit his works for SublimeText 2. I took his work, especially lists of keywords and a similar color scheme, to achieve mine.

You can find his work here on GitHub

You can see below the result of my work, how it highlights text and values in Notepad++

If you want to download that language file : GOTO my GitHub CSGO repo


Serveur de chat + visio XMPP Libre et NSA-free

Posted on Fri 28 June 2013 in Internet

Suite aux révélations de Snowden, v'la comment j'ai trop flippé !

Haha non, en fait je suis tombé sur un superbe outil nommé OpenFire

C'est un serveur XMPP (Extensible Messaging and Presence Protocol) qui a l'avantage d'être libre et gratuit. Qui plus est c'est bien foutu, très facile a installer et qui fonctionne "out-of-box"

[J'ai fait l'installation sur un serveur dédié VPS chez OVH - Debian 7.0 wheezy. Il faut installer Java Runtime, télécharger le paquet .deb OpenFire et installer la chose, let's go]{style="line-height: 1.5;"}

aptitude install default-jre
wget https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.8.2_all.deb
mv downloadServlet\?filename\=openfire%2Fopenfire_3.8.2_all.deb openfire.deb
dpkg -i openfire.deb

On créer une database dans MySQL, sinon on peut stocker tout ça dans une db sqlite, a votre convenance..

mysql -u root -p
create database openfire;
exit

Voilà c'est tout ce qu'il y'a a faire pour installer la chose en cli, on passe en web.

Connectez vous sur l'interface web d'administration :

https://ipduserv:9090

On vous pose alors plein de question habituelles, c'est assez facile a remplir. Pour la base MySQL il faut juste editer la ligne connector avec l'adresse de connexion correcte à votre base.

jdbc:mysql://localhost:3306/openfire?rewriteBatchedStatements=true

On demande la base d'identification, si c'est du local ou sur du LDAP ou encore sur un bidule chouette J2EE, ici sur ce serveur je suis sur du local, au boulot on a fait l'intégration LDAP depuis un ActiveDirectory, ça fonctionne super bien !

Un administrateur doit être créer on peut terminer l'installation. Suite a ça on peut se connecter a l'interface d'administration avec le compte admin

openfire_loginscreen

On peut régler quelques options, ajouter des plugins etc etc...

Mais le plus important c'est de savoir si cela fonctionne ! Je vous conseille d'utiliser le client Jitsi qui est libre et gratuit également et "multi-protocole" (GTalk - Facebook - Yahoo - ICQ - MSN - qui pour la plupart utilisent le protocole XMPP).

Il n'y a pas de formulaire d'inscription en ligne, l'inscription se fait via le logiciel Jitsi ou autre client XMPP (Spark, Pidgin, liste de clients XMPP), il y'a juste a préciser que le serveur est k3nny.fr, de choisir un identifiant et un mot de passe et voila !

Pour m'ajouter : k3nnyfr\@k3nny.fr

Un screen pour voir la tronche de la chose :

jitsi_videocall

Pour la vidéo ça fonctionne impeccablement bien, pour l'audio également, c'est décentralisé et encrypté AES 128bits. Comme on dit par ici, "dans ton cul la NSA".

J'espère vous avoir éclairé sur l'installation de la chose!


HOW-TO: se manger un takeover de ses compte Mails/Facebook/Whatever

Posted on Fri 15 April 2011 in Internet

Bon alors ici sera le récit de la mésaventure d'aujourd'hui le 15/04/2011.
Tout a commencé aux alentours de 17h, je reçoit une notification comme quoi je dois me reconnecter a GMail...  0_o ?

Je rentre mon mot de passe habituel et la ... fail.
Je vais sur mon deuxieme compte GMail et la ... 2eme fail.
Pour voir je vais sur facebook et la ... 3eme fail.
Hotmail, ... 4eme fail

Bien-sur comme un gros lol de la vie que je suis, j'ai mis le même mdp partout, chose que je ne recommande a personne autour de moi

Bilan :

  • Adresse GMail Pro -> tous mes contacts pro + mails perso/boulot + données sensible
  • Adresse GMail kikoolol -> mouais au pire, ça fait chier quoi
  • Adresse Hotmail -> accès a Hotmail et MSN, mail + msn messenger, imagine les dégats
  • Facebook -> bon bah la c'est exhultoire
  • J'ai peut-être pas encore fait le tour...

**

"Faites ce que je dit, mais pas ce que je fais"

**

Procédure sur facebook -> mot de passe perdu -> un mail est envoyé a mes adresses enregistrées.
Génial je n'ai accès a aucune.

HEUREUSEMENT sur GMail on peut rentré son numéro de téléphone portable pour recevoir un identifiant de récupération via SMS. Ce que je fait et je récupère ma première adresse GMail
Puis je récupère Facebook
Mon deuxieme GMail et Hotmail

Le "hacker" derrière tout ça a eu le temps d'envoyer "OWNED" a tous mes contacts et changer ma photo de profil.
De plus il a renseigner une adresse bidon supplémentaire, avec laquel il reçoit un lien pour le changement de mot de passe. --> 2eme takeover possible

Ayant récupéré l'adresse Hotmail (grâce a l'adresse GMail master on diras, sur laquelle je reçoi un lien de récupération),ce gentil monsieur qui se fait appeler LeMechantH​ackeur\@couc​ou.com m'envoi des messages sur ma boite mail Hotmail (qui semble manifestement être le point d'entrée de tout cela) :

si tu veut des info du pk du comment rep ici

Je lui répond très volontiers, mais celui-ci semble sourd a mes réponse et s'énnerve.

S'en suit une deuxieme vague où il change une deuxieme fois tous mes mot de passe..
Même procédure. Entre temps sur hotmail il parle a tous mes contacts, insultes, etc.

De nouveau je récupère les comptes.

**

Good Practices

**

1 - mettez un mot de passe fort (a-zA-Z0-9\^\$ù*&éèàç) différent pour chaque compte. Stockez ces mot de passes sur clé usb que vous avez sur vous, je sais pas trouvez un truc.
2 - renseignez votre numéro de mobile si vous avez GMail et activez le avec votre compte. C'est vital
3 - Sur facebook ne mettez qu'une seule adresse pour laquelle vous pouvez être sur de récupérer le contrôle (GMail par exemple)
4 - Sur les forums ne mettez pas le même mot de passe que partout (haha GG moi encore une fois), ce sont les cibles privilégiées de kiddies, et parfois, semble-t-il, les mot de passes sont en clair... J'aimerais bien savoir ou pourquoi comment
5 - un bon coup de malware bytes et antivir ne fait jamais de mal a personne

Voila sur ce j'espère que vous comprendrez un peu le caca et la panique dans laquelle j'ai été =)

La suite peut-être avec un avocat..

PS : Monsieur/Madame si tu lis ça et que tu te reconnais la dedans, en tant qu'attaquant, pas comme victime hein jsuis pas SOShacked, Merci de me contacter rapidement pour qu'on aille boire un verre en terrasse ;D. Mes contacts tu les connais déjà je crois.


Powershell : Créer des utilisateurs à partir d'un fichier CSV

Posted on Fri 25 February 2011 in Libre

Afin de peupler un nouveau domaine en remplacement d'un ancien, j'ai été confronté au soucis de ne pas avoir sous la main d'outil permettant la création massive de comptes utilisateurs avec tous les attributs, dossiers, partages, droits, etc..

Il existe bien des outils vieillissants tels que Gestion5, mais largement dépassé vu les nouvelles versions de serveurs (Win2008R2 dans mon cas).

Voici donc un script que j'ai réalisé en Powershell, language que je ne connaissait pas jusqu'a peu, qui reprend des commandes batch - .net et qui s'apparente parfois a du bash linux.

C'est un language très puissant que je vous invite a découvrir au plus vite !

Fonctionnalités du code :
- Import d'un fichier CSV
- Détection des noms en double (cn basé sur le nom)
- Création d'un mot de passe numérique de 4 digits
- Création des dossiers correspondants
- Création des partages associés aux dossiers
- Droits de sécurité sur les dossiers
- Création du script de logon pour chaque utilisateurs
- Jonction au groupe classe
- Création d'un dossier pour chaque classe
- Fichier de log avec les identifiants et mot de passe

Il reste de nombreuses choses a voir et a faire encore avec ce script mais pour le moment il est fonctionnel dans mon établissement.

Ce travail est soumis à licence Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)
(plus d’infos ici : https://creativecommons.org/licenses/by-nc-sa/3.0/)

Pour voir le depot GitHub du projet c'est ici : https://github.com/k3nnyfr/TICE-create-users


HADOPI 3 dans les starting blocs !

Posted on Thu 16 December 2010 in Internet

Voici une ébauche faites par nous les internautes sur https://piratepad.net/c4WP6U9h2c.
Cette fake-proposition de loi est libre de droit, et n'a pas pour objectif d'offenser les personnes citées ou les sites internet citées.
Amusez vous bien et bonne lecture !

HADOPI3.pdf