Résumé

Machine virtuelle sur gaillard

  • RAM 1Go
  • DD: 20Go
  • IP: 91.216.110.20
  • PTR: mail.grenode.net. ns3.grenode.net. outils.grenode.net

DNS faisant autorité sur grenode.{net,org}

L'idée c'est que la machine outils soit autoritaire sur les nom de domaine grenode.net et grenode.org, et que notre registar, Gandi face office de DNS secondaire. C'est bind qui fait le boulot et named.conf.local ressemble à ça :

    acl slaves {
            217.70.177.40;    // ns6.gandi.net
    };

    zone "grenode.net" {
            type master;
            file "/etc/bind/db.grenode";

            allow-transfer { slaves; };
    };

    zone "grenode.org" {
            type master;
            file "/etc/bind/db.grenode";

            allow-transfer { slaves; };
    };

Et après faut aller voir le fichier db.grenode.

Les commandes tapées :

sudo apt-get install bind9
sudo vim /etc/bind/named.conf.local
sudo vim /etc/bind/db.grenode
sudo invoke-rc.d bind9 restart

Les sites web sur outils

Ça ce passe d'abord sur Prendre en main ikiwiki a Grenode puis ici pour les détails techniques.

Apache

Installation initiale pour grenode.net

sudo apt-get install apache2
sudo mkdir /var/www/grenode.net
sudo vim /var/www/grenode.net/index.html
sudo vim /etc/apache2/sites-available/grenode.net
sudo a2ensite grenode.net
sudo invoke-rc.d apache2 restart

Rajout du fichier /etc/apache2/conf.d/cgi :

AddHandler cgi-script .cgi

Conf apache des sites web

Allez donc voir les fichiers dans /etc/apache2/sites-available/ .

Installation ikiwiki

À partir des recommandations de "git repository setup" et "ikiwiki setup".

Ajout d'un utilisateur pour la copie du wiki qui sera utilisée pour le site web et ajout du groupe d'utilisteur qui pourront modifier le wiki.

sudo adduser --disabled-password grenode-ikiwiki
sudo addgroup grenode-web
sudo adduser grenode-ikiwiki grenode-web
sudo mkdir -p /var/www/grenode.net/
sudo chown grenode-ikiwiki:grenode-web /var/www/grenode.net/

Création d'un ikiwiki standard et affinage selon nos besoins :

  • changer les différents chemins liés à l'emplacement du site ;
  • wrappergroup = grenode-web ;
  • umask = 002 ;
  • décommenter les deux lignes git_wrapper et git_wrapper_mode ;
  • et plein de cuisine ikiwiki .

.

sudo su - grenode-ikiwiki
ikiwiki --setup /etc/ikiwiki/auto.setup
rm -rf public_html
mv grenode.setup .ikiwiki/ikiwiki.setup
mv grenode src
mv grenode.git web.git
vim src/.git/config
vim .ikiwiki/ikiwiki.setup
ikiwiki --setup ikiwiki.setup
exit

Donne la possibilité à tout membre du groupe grenode-web de modifier le dépot git.

sudo chown -R grenode-ikiwiki:grenode-web web.git

Rajoute notre ikiwiki dans la liste à mettre à jour lors d'une mise à jour du paquet ikiwiki

sudo sh -c 'echo "grenode-ikiwiki /home/grenode-ikiwiki/.ikiwiki/ikiwiki.setup" >> /etc/ikiwiki/wikilist'

Ajout la possiblité d'executer des CGI (Options ExecCGI)

sudo vim /etc/apache2/sites-available/grenode.net

Dans un deuxième temps, cet ikiwiki a été renommé en pub.setup et il se construit à partir des données du répertoire pub du dépot git. Un autre ikiwiki à été créer sur le même principe mais à la racine du dépot git. Cet ikiwiki est accesible à l'adresse doc.grenode.net avec une authentification par mot de passe (pour y avoir accès, il faut vous rajouter au fichier .htpasswd comme indiqué ici).

Envoi des notifications de commit sur IRC

L'envoi des notifications pour le robot IRC se fait à l'aide d'un script post-receive placé dans ~grenode-ikiwiki/web.git/hooks.

Courrier de Grenode

Intro sur Courrier électronique.

Listes de grenode

Grenode dispose de listes de discussion. Pour cela nous utilisons le logiciel sympa qui est installé sur la machine outils. Le nom de domaine utilisé est listes.grenode.net et on peut consulter l'interface web.

Note sur l'installation de sympa

  • Pas de « domaine virtuel » : un fichier d'alias (/etc/sympa/sympa.aliases est gérer par sympa et inclu dans postfix).

  • La création de liste est reservée aux postmasters.

  • Les adresses mail des postmasters sont indiquées dans le fichier /etc/sympa/sympa.conf. Pour recevoir un mot de passe, il faut s'enregistrer dans sympa par la procédure classique sur l'interface web.

Chiffrement des mails avec kuvert

  1. Est-ce que kuvert conserve le champ From: ? C'est à dire, est-ce que nous recevrons bien des mails avec root@machine.grenode.net ?

Oui

  1. Si c'est le cas, dans la clé GPG générée, je rajouterais une uid root@machine.grenode.net par machine. Cela simplifirait la lecture des mails.

Oui, c'est a faire... sudo -H -u kuvert-machines gpg --edit-key machines

  1. Du moment que outils & les autres machines se trouvent dans un même lieu physique, cela me va ! Dans le cas contraire, nous pourrons alors installer kuvert directement sur les machines concernées où faire une seconde paserelle...

Cela voudrait-il dire que sur passavant on installerait un kuvert ?

kuvert est un programe qui se place entre le MUA et le MTA pour chiffer/signer les mails envoyés. Il fonctionne avec un daemon kuvert et un wrapper kuvert_submit pour soumettre des mails au daemon.

Dans son fonctionnement « classique », tout fonctionne dans l'espace de l'utilisateur avec un fichier de configuration .kuvert, un répertoire pour la queue de mail à traiter par le daemon .kuvert_queue et un répertoire temporaire.

Coté kuvert

L'idée est de créer deux utilisateurs système dont le but est de dispatcher les messages des adresses root AT grenode.net et machines AT grenode.net. Ces utilisteurs sont kuvert-root et kuvert-machines, ils ont respectivement /etc/kuvert/root et /etc/kuvert/machines comme HOME. Et pour chacun des deux, on a alors les fichiers .kuvert et .forward ainsi qu'un trousseau de clés dans le repertoire .gnupg .

Le fichier .forward ressemble à ça :

| "kuvert_submit user1@grenode.net user2@grenode.net ..."

Le fichier .kuvert à ça (pour kuvert-root) :

# logging to syslog, which facility? defaults to no syslog
syslog mail

# where to spool mails and temporary files
queuedir /var/spool/kuvert/root/queue
tempdir /var/spool/kuvert/root/tmp

# how often to check the queue, in seconds
interval 10

# add an x-mailer header?
identify f

msp /usr/sbin/sendmail -om -oi -oem

can-detach t

defaultaction fallback-all

alwaystrust t

use-agent t

Le trousseau de clé contient les clé publiques des admins ainsi que la clé privée associée à l'adresse du compte (root AT grenode.net ou machines AT grenode.net). Les clés privées sont uniquement fait pour signer less message (seulement RSA 4096).

D'autre part pour fonctionner, kuvert a besoin d'un répertoire de queue et d'un répertoire temporaire. Nous utilisons les répertoires suivant :

/var/spool/kuvert/machines/queue
/var/spool/kuvert/machines/tmp
/var/spool/kuvert/root/queue
/var/spool/kuvert/root/tmp

Coté postfix

/etc/mailname:

    outils.grenode.net

/etc/postfix/main.cf:

    virtual_alias_maps = hash:/etc/postfix/virtual

    smtpd_recipient_restrictions =
        hash:/etc/postfix/recipient_restrictions
        permit_mynetworks
        reject_unauth_destination

/etc/postfix/recipient_retrictions:

    machines AT grenode.net           permit_mynetworks, reject
    kuvert-machines AT grenode.net    permit_mynetworks, reject

/etc/postfix/virtual:

    machines AT grenode.net           kuvert-machines
    root AT grenode.net               kuvert-root
    root AT outils.grenode.net        machines AT grenode.net

Postgrey

Postgrey est un démon de greylisting ; le greylisting consiste à demander au serveur qui essaie de nous envoyer un mail « steup, réessaye dans 10 minutes, là, je me sens pas bien… ».

On installe :

apt-get install postgrey

On change la conf dans /etc/default/postgrey :

POSTGREY_OPTS="--inet=10023 --delay=120 --max-age=30"

Ensuite, on ajoute à la configuration de postfix, dans le main.cf :

smtpd_recipient_restrictions = …
    check_policy_service inet:127.0.0.1:10023
    …

Attention Le démon postgrey sur debian a un petit bug, le restart ne fonctionne pas ; il faut tuer le démon à la main, puis on peut le redémarrer.

Pour éviter que certains domaines soient mis en liste grise, on peut les ajouter au fichier /etc/postgrey/whitelist_clients.local, sous la forme d'expressions rationnelles. Pour Grenode, on y ajoute nous-même, les membres (Antigone, Grésille, Illyse et Rézine), les structures dont nous sommes membres (Gitoyen et FFDN) et notre fournisseur de collecte (FDN).

# postgrey local whitelist for mail client hostnames
# reseaux de confiance
/^.*grenode\.net$/
/^.*bibliothequeantigone\.org$/
/^.*gresille\.org$/
/^.*illyse\.org$/
/^.*illyse\.net$/
/^.*illyse\.fr$/
/^.*rezine\.org$/
/^.*gitoyen\.net$/
/^.*ffdn\.org$/
/^.*fdn\.fr$/

À noter qu'il s'agit du reverse de l'adresse IP qui se connecte au postfix, et non de l'expéditeur du mail, qui est beaucoup plus facilement falsifiable.

L'installation en commande

sudo su
adduser --system --home /etc/kuvert/root kuvert-root
adduser --system --home /etc/kuvert/machines kuvert-machines
sudo -H -u kuvert-root gpg --gen-key
sudo -H -u kuvert-machines gpg --gen-key
sudo -H -u kuvert-machines gpg --import < cle_gpg.asc
sudo -H -u kuvert-root gpg --import < cle_gpg.asc
sudo -u kuvert-root vim /etc/kuvert/root/.kuvert
sudo -u kuvert-machines cp /etc/kuvert/root/.kuvert /etc/kuvert/machines/
sudo -u kuvert-machines vim /etc/kuvert/machines/.kuvert
mkdir -p /var/spool/kuvert/root
chown kuvert-root\: /var/spool/kuvert/root
chmod 700 /var/spool/kuvert/root
mkdir -p /var/spool/kuvert/machines
chown kuvert-machine\: /var/spool/kuvert/machines
chmod 700 /var/spool/kuvert/machines
sudo -u kuvert-root vim /etc/kuvert/root/.forward
sudo -u kuvert-machines vim /etc/kuvert/machines/.forward
vim /etc/postfix/main.cf
vim /etc/postfix/recipient_restrictions
vim /etc/postfix/virtual
postmap /etc/postfix/virtual
postmap /etc/postfix/recipient_restrictions
invoke-rc.d postfix reload

Les autres pistes pour chiffrer les messages

  • Schleuder : outils tout à fait adapté.
  • anubis : même principe que kuvert mais un peu usine à gaz pour ce que l'on veut faire.
  • gpg_mail : script shell qui reconstruit le mail en le chiffrant le tout en utilisant le paquet mime-constuct.

apt-cacher

Le but est d'éviter de re-télécharger autant de fois que de machine les paquets debian. Pour l'utiliser il suffit de rajouter le fichier /etc/apt/apt.conf.d/01proxy contenant la ligne :

Acquire::http::Proxy "http://outils.grenode.net:3142";

L'installation est réduite à une commande

apt-get install apt-cacher-ng

Le parefeu sur sauterelle a été modifié pour que tous les membre de grenode puisse y avoir accès.