Blog de Thomas Martin

Entries tagged "oopss".

Mise en oeuvre de DKIM et DomainKeys sous Debian Lenny
lundi 05 octobre 2009

Voici un récapitulatif de la mise en place des protocoles d'authentification SMTP DKIM et DomainKeys sous Debian Lenny. Le serveur de mail utilisé est Postfix, mais tout MTA sachant communiquer avec les milter de Sendmail peut normalement être utilisé. La signature et la vérification des messages sera effectuée pour le domaine <domain>. Voici les étapes :

Installation de dkim-filter et dk-filter :

# aptitude install dkim-filter dk-filter

Ajouter dans le fichier /etc/dkim-filter.conf un ensemble de directives indiquant le nom du domaine qui va utiliser DKIM, un nom de selector (exemple : 2009), et le nom du fichier qui contiendra la clé privée utilisée pour la signature. L'utilisation des selector permet notamment de changer et/ou révoquer facilement une clé, ou d'utiliser des clés différentes sur des serveurs de mails différents.

Domain      <domain>
KeyFile     /etc/ssl/dkim_<domain>_<selector>.key
Selector    <selector>

Générer la clé :

# openssl genrsa -out /etc/ssl/private/dkim_<domain>_<selector>.key

Et en extraire la partie publique :

# openssl rsa -in /etc/ssl/private/dkim_<domain>_<selector>.key \
          -pubout -outform PEM

Dans la zone DNS du domaine <domain>, ajouter l'enregistrement suivant. La valeur de <key> correspond à la sortie de la commande précédente, contenue entre les lignes _BEGIN PUBLIC KEY_ et _END PUBLIC KEY_ :

<selector>._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=<key>"

Ajouter les paramètres de démarrage de dkim_filter dans /etc/default/dkim-filter. Le fichier /etc/dkim.hosts contient la liste des serveurs dont les mails sortants seront chiffrés :

SOCKET="inet:2505@localhost"
DAEMON_OPTIONS="-l -i /etc/dkim.hosts"

Les paramètres de dk-filter, dans /etc/default/dk-filter, sont similaires, à l'exception que tout est passé via les options, celui-ci n'utilise pas de fichier de configuration.

DAEMON_OPTS="$DAEMON_OPTS -d <domain>  -S <selector> -i /etc/dkim.hosts \
             -s /etc/ssl/private/dkim_<domain>_<selector>.key"
SOCKET="inet:2506@localhost"

Puis les redémarrer :

# /etc/init.d/dkim-filter start
# /etc/init.d/dk-filter start

Reste enfin à utiliser ces milter au niveau de Postfix, pour cela ajouter les directives suivantes au fichier /etc/postfix/main.cf :

milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:2505 inet:localhost:2506

Et redémarrer Postfix :

# /etc/init.d/postfix restart

Un test basique de fonctionnement est alors d'envoyer un mail à destination d'un domaine effectuant des vérifications DKIM, yahoo.com par exemple.

# nc 127.0.0.1 25 <<EOT
HELO localhost
MAIL FROM: root@<domain>
RCPT TO: <account>@yahoo.com
DATA
Subject: Test DKIM
.
QUIT
EOT

Les signatures DKIM et DomainKeys sont correctement vérifiées si l'en-tête Authentication-Results contient dkim=pass et domainkeys=pass.

On peut également envoyer un mail à destination de son domaine, et vérifier que l'en-tête Authentication-Results est bien ajoutée, et valide.

Tags: debian, dkim, evolix, oopss, postfix, sysadmin.

 

Mise en place de DSPAM comme agent de livraison pour Postfix
samedi 13 juin 2009

DSPAM est un logiciel anti-spam pouvant aisément être utilisé comme agent
de livraison Postfix. Cela évite d'utiliser certains hacks, comme la
réinjection SMTP. Dans ce mode, DSPAM agit comme un relais qui accepte un mail
sur son entrée standard, le traite en fonction de votre configuration (ajout
d'en-têtes, préfixage de [SPAM] au sujet, etc), et le délivre à un agent de
livraison final (directive TrustedDeliveryAgent dans dspam.conf).

Pour cela il suffit d'ajouter une ligne de ce type à votre master.cf :


dspam unix - n n - 1 pipe flags=DORqhu user=dspam:mail
    argv=/usr/local/bin/dspam-wrapper
    --user ${recipient} --deliver=innocent,spam

Et de positionner ensuite une directive virtual_transport = dspam, dans le
cas de l'utilisation de comptes virtuels. Il est aussi possible de l'activer
seulement pour certains utilisateurs à l'aide de la table transport(5).

Toutefois, pour que cela reste fiable, il est nécessaire que DSPAM retourne un
code d'erreur 75 (tempfail) en cas de soucis, afin que Postfix conserve
celui-ci en file d'attente. Sur ce point, la version courante de DSPAM (3.8.0)
souffre d'un bug génant : si l'agent de livraison final retourne un code
d'erreur, DSPAM ne retournera pas ce même code (contrairement à ce qui est
indiqué dans la section EXIT VALUE de la page de man), mais 255. Ce qui
entraîne une perte pure et simple du mail !

En attendant, pour contourner ce problème, il est possible de mettre en place
un wrapper qui retournera le code 75 dans toutes les situations d'erreur.

Exemple d'un fichier dspam-wrapper :


#!/bin/sh
cat | /usr/local/bin/dspam $* || return 75

Tags: dspam, oopss, postfix, sysadmin.

 

Importer un mot de passe MD5 dans un champ userPassword d'OpenLDAP
jeudi 06 novembre 2008

J'ai eu récemment l'occasion de migrer des comptes stockés dans une base de
données PostgreSQL vers OpenLDAP. Les mots de passe étaient stockés sous forme
de hash MD5 au format hexadécimal. f71dbe52628a3f83a77ab494817525c6 par
exemple.

Ma première approche a été d'importer directement cette valeur dans le champ
userPassword en les préfixant de {MD5}. En effet OpenLDAP gère de
manière transparente de nombreux formats de mot de passe.

Malheureusement ceci ne marche pas. Les MD5 doivent être stockés sous forme
hexadécimal dans OpenLDAP. Voici le bout de code Perl permettant la conversion,
que j'ai mis un certain temps à écrire :


use MIME::Base64;
my $md5_hexa = "f71dbe52628a3f83a77ab494817525c6";
my $md5_base64 = "{MD5}".encode_base64(pack("H*", $md5_hexa), "");

Tags: evolix, ldap, oopss.

 

Abook et Nokia N95
dimanche 12 octobre 2008

Depuis plusieurs mois je voulais importer dans mon Nokia N95 mes contacts
stockés dans le logiciel Abook (compagnon idéal de Mutt).
C'est aujourd'hui chose faite à l'aide de la solution de Grégory Colpart.

En résumé :

  • Exporter ses contacts Abook au format Vcard avec la ligne de commande
    suivante :

abook --convert --infile ~/.abook/addressbook --outformat gcrd

  • Stocker chaque entrée Vcard dans un fichier distinct (peu importe le nom)
    avec un encodage iso-8859-1. Ce script peut être utilisé pour cela.
  • Copier ces fichiers dans le répertoire Others/contacts/ du téléphone.
  • Aller dans Contacts > Options > Copier > "Depuis carte memoire".

Et voila, tous vos contacts sont importés, et la plupart des champs de Abook
(adresse postale, site web, etc) sont normalement pris en compte.

P.S. : Pour ceux qui utilisent encore la version fournie par leur opérateur du système
d'exploitation du N95 (comme moi jusqu'à aujourd'hui), je leur conseille vivement
(mais toutefois à leurs risques et périls) de consulter cette page
et d'utiliser la version 1.0.38.14 de Nemesis (les version précédentes n'ayant
pas fonctionné pour moi).

Tags: oopss, phone.

 

DHCPD et PF
mercredi 08 octobre 2008

Le serveur dhcpd(8) d'OpenBSD dispose d'une fonctionnalitée permettant
d'alimenter des tables pf(4) lorsque certains évènements se produisent : bail
DHCP établi, adresse IP «abandonnée», changement d'adresse MAC.

Cela peut permettre par exemple de bloquer l'accès à un routeur à des machines
n'ayant pas obtenu leurs adresses IP par DHCP.

Lors d'une tentative de mettre ça en place il y a quelques mois je ne parvenais
pas du tout à le faire marcher : les tables n'étaient jamais remplies !
J'ai découvert il y a peu la réponse : cela ne fonctionne pas pour des machines
dont l'adresse IP est fixée à l'aide d'une directive fixed-address dans
dhcpd.conf. Et de plus le fichier dhcpd.leases n'est pas non plus alimenté
pour ces machines.

Tags: evolix, oopss, openbsd, security.

 

Faille OpenSSL/Debian
mardi 13 mai 2008

En réponse à la faille critique DSA-1571 parue aujourd'hui :

Voici un résumé rapide de certaines opérations urgentes à effectuer ( liste non exhaustive ).
Pour plus d'informations vous pouvez consulter la page dédiée sur wiki.debian.org.

Mettre à jour le système


aptitude update && aptitude upgrade

Regénerer la clé du serveur OpenSSH


ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa
/etc/init.d/ssh restart

Regénerer vos propres clés

A faire sur un système à jour bien sur.

Supprimer les clés utilisateurs impactées

Un script fourni par Debian permet de les détecter : http://security.debian.org/project/extra/dowkd.
Attention l'auteur signale que celui-ci peut donner des faux positifs ou des faux négatifs.

Ensuite vous pouvez lancer par exemple :


for i in /root/.ssh/authorized_keys /home/*/.ssh/authorized_keys; do perl ./dowkd.pl file $i; done

Regénerer vos certificats SSL

Pour votre serveur mail, web, VPN,...

Tags: debian, evolix, oopss, security, sysadmin.

 

Quelques soucis avec portupgrade
samedi 03 mai 2008

J'ai rencontré quelques soucis ces jours-ci après des mises à jour de ports FreeBSD. J'ai utilisé comme à mon habitude la commande portupgrade -arRe.

  • J'avais modifié le script /usr/local/etc/rc.d/milter-greylist afin que milter-greylist s'exécute en tant qu'utilisateur postfix (et non pas mailnull comme c'est le cas par défaut). Cela permet notamment que la socket qu'il crée puisse être utilisable par postfix. J'ai été étonné de voir que la mise à jour a écrasé ce script et a donc rendu le milter indisponible (rien de bien grave, quelques spams reçus avant rétablissement de la situation). Je pensais, peut-être naïvement, qu'un fichier dans /usr/local/etc ne pouvait pas être écrasé sans avertissement.
  • Dans le même genre une mise à jour de Roundcube a écrasé ses fichiers de configuration présents dans /usr/local/www/roundcube/config. Conséquences un peu plus graves : webmail indisponible.

Reste à trouver comment cela aurait pu être évité.

Tags: evolix, freebsd, oopss.

 

Au sujet du moteur de blog
vendredi 02 mai 2008

Comme vous pouvez facilement le voir j'ai fait le choix du moteur de blog Chronicle.

Etant tout à fait novice dans l'univers du blogging j'avais tout d'abord installé Wordpress, qui a l'air très bien, mais que j'ai jugé finalement trop lourd : base MySQL et beaucoup de code PHP.

Je me suis alors orienté vers Blosxom, qui a l'énorme avantage de stocker ses données dans de simples fichiers texte. Parfait pour un adepte de Subversion comme moi.

Néanmoins quelques soucis m'ont poussé à l'abandonner, notamment le fait que celui-ci se base sur la date de dernière modification des fichiers pour déterminer la date d'une entrée de blog, ce qui ne me convient pas. Je suis certain qu'il existe un plugin (Blosxom étant particulièrement modulaire) pour remédier à cela mais je ne l'ai pas trouvé en temps voulu malheureusement.

Finalement je suis tombé ce matin même sur chronicle, qui est très simple, permet de spécifier quelques meta-informations dans le fichier de données, et gère de base les quelques fonctionnalités indispensables qu'il me fallait. Je n'ai rencontré pour l'instant que quelques petites soucis : il n'est à priori pas internationalisable (un peu génant pour les dates), et ne permet pas de spécifier un encodage pour le plugin Textile que j'utilise (et je suis totalement converti à l'UTF-8). Il ne me reste donc plus qu'à faire remonter quelques patch à l'auteur.

De toute manière rien n'est figé et il me suffira de quelques lignes de perl pour passer à un autre moteur si celui-ci ne me convient plus !

Tags: blog, evolix, oopss.

 

s/lynx/ftp/
vendredi 02 mai 2008

Debian a son wget, FreeBSD son fetch, et j'ai cru pendant longtemps que le seul moyen simple de récupérer un fichier via HTTP à partir d'un système de base OpenBSD était d'utiliser lynx.

Ce qui n'était pas très pratique car cela force de passer par un mode interactif (sauf option appropriée, mais j'avoue n'avoir jamais pris le temps de parcourir toute la page de man).

J'apprend aujourd'hui que l'outil ftp d'OpenBSD, comme son nom ne l'indique pas, gère aussi HTTP et HTTPS !

Exemple : ftp http://openbsd.org/index.html

Tags: evolix, oopss, openbsd.

 

mkdir blog
jeudi 01 mai 2008

Et bien voila, c'est fait, j'ai ouvert mon blog.

Je traiterais ici principalement des sujets techniques auquels je suis confronté lors des projets
professionnels auquels je participe au sein de la société Evolix, ou de mes projets personnels/associatifs
au sein de l'association Oopss.org.

Si vous avez suivi les liens ci-dessus vous avez normalement compris que les thèmes abordés seront principalement liés au Logiciel Libre et à l'administration système et réseau.

A bientôt !

Tags: blog, evolix, oopss, sysadmin.

 

Archive

  • 2010
    • janvier (1)
    • juin (3)
  • 2009
    • juin (2)
    • octobre (2)
  • 2008
    • mai (6)
    • juin (1)
    • août (1)
    • octobre (2)
    • novembre (1)

Tags

  • apache (1)
  • blog (2)
  • cisco (1)
  • debian (6)
  • dkim (1)
  • dspam (1)
  • ec2 (1)
  • evolix (15)
  • freebsd (1)
  • ldap (1)
  • mysql (2)
  • oopss (10)
  • openbsd (3)
  • phone (1)
  • php (1)
  • postfix (2)
  • python (1)
  • security (2)
  • sysadmin (11)
  • virtualization (1)
© 2008-2010 Thomas Martin RSS Feed Pour toutes remarques, commentaires, suggestions : blog_deletethis_@_deletethis_tmartin.fr