Simon Vieille


Software developer and sysadmin at web&design (symfony expert), casual worker at IUT-BM. Debian addict.

Gist est dans la place !

Une nouvelle version de mon wall vient d'être mise ligne ! Bienvenu GIST.

GIST

  • Du chiffrement : on peut à présent partager du code colorisé chiffré et déchiffré coté navigateur
  • L'application est fondée sur git et permet de versionner les modifications réalisées sur du code et d'accéder aux différentes versions avec des diff
  • Il est à présent possible d'insérer sur son site le résultat de la colorisation
  • L'application est multilingue et fonctionne très bien sur téléphone
  • Toujours et encore libre, avec une procédure d'installation simplifiée !

La procédure d'installation :


Emails : sécurité et identification

Envoyer et recevoir des emails est quelque chose que quasi tout le monde fait chaque jour. Des informations importantes peuvent transiter dans ces messages. On peut avoir des données sensibles (comme des identifiants de connexion vers un service), mais aussi des demandes qui impliquent des actions importantes (exemple : "Pourrais-tu supprimer cette page du site stp ?").

Comment sécuriser le fait d'envoyer des identifiants ? Comment s'assurer que la demande de modification d'un site émane bien d'une personne légitime ? Comment s'assurer que le message qui a été initialement rédigé n'a pas été modifié en cours de route par des personnes malveillantes ou des services peu scrupuleux ?

Voici donc quelques outils que j'utilise quotidiennement, pour moi mais aussi dans mon boulot.

SPF

Mes noms de domaines sont configurés de telle sorte que seuls certains serveurs sont considérés comme légitimes pour envoyer des messages. Pour se faire, j'utilise la norme de vérification Sender Policy Framework (SPF) qui s'appuie sur une configuration DNS. Si un email est expédié en @deblan.fr depuis des serveurs que je n'ai pas désignés légitimes, alors ils devront être rejetés systématiquement.

DKIM

Sur mon principal serveur de mail, j'ai mis en place un système qui, indépendamment de la manière de rédiger un message, signera l'email et permettra au serveur qui le réceptionnera de s'assurer que c'est bien mon serveur qui l'a expédié. DKIM s'appuie sur configuration spécifique du serveur de mail et le DNS.

OpenPGP et certificat

Lorsque je rédige un email, je signe systématiquement le message avec une clé PGP ou bien un certificat. Cela permet de s'assurer, dès la réception du message, que l'email n'a pas été modifié en cours de route. L'utilisation de mes certificats demande aucun mot de passe. Si une personne envoi un mail en utilisant ma machine (bon courage), la personne qui va réceptionner l'email pourrait avoir un doute. Ainsi, quand il s'agit d'informations importantes, j'utilise la clé PGP qui demande un mot de passe avant de signer le mail. On est à présent certain que c'est moi qui a écrit le message.

Enfin, quand je veux envoyer des données sensibles, je vais chiffrer les messages avec la clé publique (PGP) de mon interlocuteur (si toutefois il en a une). Je peux donc chiffrer mon message que lui seul pourra déchiffrer. Aucun intermédiaire sera en mesure le lire le contenu du mail.


Mon gitlab ouvre ses portes !

Aujourd'hui a été installé un outil en ligne pour gérer mes projets versionnés avec GIT.

J'y ai placé l'ensemble de mes projets plus ou moins intéressant :)

Deblan GITLAB


PDNS-Console is released!

Je viens de finaliser la première version de pdns-console, un outil en ligne de commande qui permet de gérer un serveur PowerDNS : un puissant serveur DNS qui repose sur des bases de données comme MySQL.

La particularité de pdns-console est qu'il permet de versionner ses zones.

  • On peut donc écrire différentes zones
  • On peut associer une zone à plusieurs domaines
  • Une zone est composée d'une ou plusieurs version dont l'une d'elle pourra être activée
  • La version activée d'une zone sera appliquée aux noms de domaine associés

pdns-console ajoute également des contraintes dans la base de données pour rendre les enregistrements cohérents.

Sous licence BSD, les sources et la procédure d'installation sont dispos sur Github. Je vous invite à tester, forker et bien sur contribuer !

Voici un exemple qui provient du README (en anglais) :

Specifications

  • We want to mange the domain example.tld
  • We need 3 records:
    • example.tld -> 1.2.3.4
    • www.example.tld -> same as example.tld
    • The MX of example.tld is mail.foo.net

Add the domain

$ ./app/console domain:add
Name: example.tld
MASTER [null]:
Type [NATIVE]:
Domain added
$ ./app/console domain:list
DOMAIN: example.tld
ID    : 5             # This ID is important
TYPE  : NATIVE
MASTER:

Create a zone

Interactive (or not)
$ ./app/console zone:add
Name: Example zone
Description: My example zone
Zone added.
The list is updated
$ ./app/console zone:list
Example zone
------------
My example zone
ID: 4                 # This ID is important

No version found
New version for "Example zone" (ID=4)
$ ./app/console zone:version:add 4 # My zone ID
Zone version added.
$ ./app/console zone:list
Example zone
------------
My example zone
ID: 4

Version: 1 - Active: No

No record found.

Add the records

"SOA" record (no interactive)
$ ./app/console zone:record:add 4 1 --name @ --type SOA --content "localhost. postmaster@localhost 0 10800 3600 604800 3600" --ttl 3600 --prio null
"A" record (interactive)
$ ./app/console zone:record:add 4 1
Name: @
Content: 1.2.3.4

Available types: A AAAA CNAME MX NS TXT SPF WKS SRV LOC SOA
Type: A
TTL: 3600
Prio [null]:
Zone record added.
"CNAME" record. "--ttl" is missing
$ ./app/console zone:record:add 4 1 --name www --type CNAME --content example.tld. --prio null
TTL: 3600
Zone record added.
"MX" record. The validation of "--prio" failed
$ ./app/console zone:record:add 4 1 --name @ --type MX --content mail.foo.net. --ttl 3600 --prio badValue
Prio [null]: badValueAgain
Prio [null]: 10
Zone record added.
My version is now ready
$ ./app/console zone:list
Example zone
------------
My example zone
ID: 4

Version: 1 - Active: No

   ID | NAME                  | TYPE      | TTL    | PRIO    | CONTENT
----------------------------------------------------------------------
   13 | @                     | SOA       | 3600   |         | localhost postmaster@localhost 0 10800 3600 604800 3600
   14 | @                     | A         | 3600   |         | 1.2.3.4
   15 | www                   | CNAME     | 3600   |         | example.tld.
   16 | @                     | MX        | 3600   | 10      | mail.foo.net.

Active and assign the new zone

$ ./app/console zone:version:active 4 1
Zone version activated.
$ ./app/console zone:assign 4 5
Domain zone updated.
./app/console domain:list --zone
DOMAIN: example.tld
ID    : 5
TYPE  : NATIVE
MASTER: 


      > Example zone
      > ------------
      > My example zone
      > ID: 4
      > 
      > Version: 1 - Active: Yes
      > 
      >    ID | NAME                  | TYPE      | TTL    | PRIO    | CONTENT
      > ----------------------------------------------------------------------
      >    13 | @                     | SOA       | 3600   |         | localhost postmaster@localhost 0 10800 3600 604800 3600
      >    14 | @                     | A         | 3600   |         | 1.2.3.4
      >    15 | www                   | CNAME     | 3600   |         | example.tld.
      >    16 | @                     | MX        | 3600   | 10      | mail.foo.net.
      > 

Push modifications

./app/console zone:push

Test :)

$ dig +short -t A @localhost example.tld
1.2.3.4
$ dig +short -t CNAME @localhost www.example.tld
example.tld.
$ dig +short -t MX @localhost example.tld
10 mail.foo.net.

T411 en console

Pour les addicts de t411, j'ai développé un outil en ligne de commande permettant d'accéder aux données du site. Ainsi, il est possible de faire des recherches avec critères, afficher les détails d'un torrent ou bien le télécharger. L'API du site a des bugs qui ne sont pas encore corrigés mais il est déjà possible de faire quelques trucs sympas.

Le code source et la doc sont disponibles sur Github. Tout est libre et ne vous génez pas pour forker :)