Le but de cette procédure n'est pas seulement de rendre une machine opérationnelle aussi rapidement que possible en tant que nœud Tor, mais aussi de l'intégrer au mieux à l'infrastructure de Nos oignons, dans le même délai.

L'idée qui sous-tend ce document est de résumer les différentes étapes (les détails se trouvant ailleurs sur ce wiki), mais de les faire apparaître toutes. On ne trouvera donc ici aucune explication sur les raisons de telle ou telle configuration ; en revanche, des raccourcis méthodologiques sont suggérés, comme par exemple l'importation et la copie d'un fichier de configuration depuis un autre nœud Tor plutôt que son édition sur le système local.

NOTE : pour copier un fichier d'un nœud vers un autre à partir d'une machine tierce (celle sur laquelle on a sa clef privée), on peut utiliser scp. Cependant, la copie directe entre machines distantes n'est possible que par le transfert de l'agent ssh (ForwardAgent yes), mais ce n'est pas conseillé ; si l'agent n'est pas transféré, les données doivent transiter par le système local, en ajoutant l'option -3.

Installation du système

Mis à part le choix du système d'exploitation proprement dit (Debian), rien ne permet d'élaborer une procédure type d'installation de ce système, puisque la méthode d'installation dépend principalement de l'hébergeur. Actuellement, trois nœuds Tor ont été installés et configurés dans des conditions très différentes :

  • marcuse est une machine physique installée in situ en utilisant une image iso d'installation ; puis un changement de processeur et d'architecture, l'ajout conséquent de RAM et d'une seconde IP publique l'ont amenée à devenir marcuse1 et marcuse2, qui permettent de faire tourner deux instances de Tor (mêmes ports sur deux IP différentes).
  • ekumen est une machine virtuelle préinstallée dont les choix de base ont été faits via une interface web.
  • marylou est une machine physique installée in situ en utilisant une image iso d'installation ; puis elle est devenue marylou1 et marylou2, où deux instances de Tor tournent sur la même IP mais sur des ports différents.

Ces trois premières machines ont été installées sous Wheezy (Debian 7) en 2013/2014 et ont toutes été migrées sous Jessie (Debian 8) fin 2015, puis sous Stretch (Debian 9) en juin/juillet 2017.

  • AlGrothendieck est une machine physique installée à partir d'une image iso d'installation (méthode netboot) de Jessie, modifiée par quidame pour automatiser, pendant l'installation, la quasi-totalité de la procédure décrite ci-après.

Configuration du système

NOTE : L'ordre dans lequel sont décrites les étapes de ce chapitre est donné à titre indicatif.

Installation et configuration d'etckeeper

Cette étape est à effectuer aussi tôt que possible.
Pour résumer :

  • Installer le paquet :
    sudo apt-get --no-install-recommends install etckeeper
    sudo etckeeper commit "Post-installation d'etckeeper"
  • Dans /etc/etckeeper/etckeeper.conf :
    AVOID_DAILY_AUTOCOMMITS=1
    AVOID_COMMIT_BEFORE_INSTALL=1
  • Importer les fichiers suivants depuis une autre machine :
    /etc/etckeeper/init.d/30initial-package-list
    /etc/etckeeper/post-install.d/10refresh-package-list
    /etc/cron.hourly/etckeeper-warn-changes
  • Créer le répertoire /var/lib/etckeeper
  • Enregistrer les changements :
    sudo etckeeper commit "Configuration d'etckeeper"

Installation de paquets utiles

D'abord reconfigurer APT :

  • créer le fichier /etc/apt/apt.conf.d/00InstallRecommends avec :
    APT::Install-Recommends "false";

Ne pas oublier d'enregistrer les changements de configuration au coup par coup, ou par ensembles cohérents. Cette liste ne se veut pas exhaustive (la liste des paquets /etc/.package-list sur marylou peut servir de référence) :

  • molly-guard
    Dans /etc/molly-guard/rc : ALWAYS_QUERY_HOSTNAME=true
  • s-nail
    L'installer comme alternative à mailx/mail/Mail :
    sudo update-alternatives --install /usr/bin/mailx mailx /usr/bin/s-nail 100 […]
    (la commande complète se trouve ici)
  • unattended-upgrades (détails)
    sudo dpkg-reconfigure unattended-upgrades
    Ajouter Unattended-Upgrade::Mail "root";
  • apparmor, apparmor-util` et apparmor-profiles pour [Services/Debian/AppArmor]]

Configuration de ssh

Attention à ne pas s'interdire l'accès à la machine par une mauvaise manipulation

  • Importer et copier le fichier /etc/ssh/sshd_config depuis n'importe quel autre nœud Tor.
  • Supprimer la clef DSA (fichiers /etc/ssh/ssh_host_dsa_key{,.pub})
  • Relancer le service (cela ne coupe pas les connexions en cours) et enregistrer les changements :
    sudo service ssh restart
    sudo etckeeper commit "Configuration du serveur SSH"

Configuration de sudo

Attention à ne pas s'interdire l'accès root à la machine par une mauvaise manipulation

Configuration du pare-feu

Attention à ne pas s'interdire l'accès à la machine par une mauvaise manipulation

  • Installer ferm :
    sudo apt-get install ferm
  • Importer et copier le fichier /etc/ferm/ferm.conf depuis n'importe quel autre nœud Tor.
  • Relancer le service et enregistrer les changements :
    sudo service ferm restart
    sudo etckeeper commit "Configuration du pare-feu"

Installation et configuration de Postfix

L'installation de Postfix nécessite la désinstallation d'Exim4.

  • Lors de l'installation, opter pour le mode smarthost.
  • Importer et copier le fichier /etc/postfix/main.cf depuis n'importe quel autre nœud Tor.
  • L'éditer pour actualiser myhostname.
  • Dans /etc/aliases, spécifier root: machines@nos-oignons.net, puis lancer :
    sudo postalias /etc/aliases
  • Redémarrer le service et enregistrer les changements :
    sudo service postfix restart
    sudo etckeeper commit "Configuration de Postfix"

Installation et configuration du Resolver

  • Installer le paquet unbound
  • Dans /etc/resolv.conf :
    search nos-oignons.net
    nameserver 127.0.0.1
    Ajouter une deuxième directive nameserver en fallback, avec le DNS de l'hébergeur de la machine.
  • Importer /etc/unbound/unbound.conf d'un autre nœud Tor
  • Relancer le service et enregistrer les changements :
    sudo service unbound restart
    sudo etckeeper commit "Configuration du résolveur de noms (unbound)"
  • Actualiser /etc/knot/db.nos-oignons.net sur bulbe : ajouter les enregistrements A et éventuellement AAAA pour la nouvelle machine, relancer knot et enregistrer les changements.

Installation et configuration de Tor

  • Suivre la procédure de https://support.torproject.org/apt/
  • Importer les fichiers suivants d'un autre nœud Tor :
    /etc/tor/tor-exit-notice.html
    /etc/tor/torrc
  • Dans torrc, mettre à jour les directives suivantes :
    ORPort
    Address
    Nickname
    DirPort
    RelayBandwidthRate
    RelayBandwidthBurst
    MyFamily
    ExitPolicy
  • Relancer Tor et enregistrer les changements :
    sudo service tor restart
    sudo etckeeper commit "Configuration de Tor"
  • Actualiser la valeur de MyFamily sur tous les autres nœuds Tor et enregistrer les changements.

Création des comptes admin. sys.

Pour se simplifier la tâche dans la création et configuration des comptes admin. sys. on peut utiliser… ce wiki : il contient un script et les clefs ssh publiques de chaque membre, ce qui permet de faire, depuis le nouveau système :

alias wget="wget --user=${USER} --ask-password"
WIKI_ADMIN="https://nos-oignons.net/wiki-admin"
wget ${WIKI_ADMIN}/Procédures/Créer_un_compte_user/add_user
wget -r -np -nH --cut-dirs=2 -R html ${WIKI_ADMIN}/Privé/Membres/
for x in $(ls Membres); do
    sudo ./add_user -l $x -k Membres/$x/clef_ssh.pub -G sudo,adm,staff,debian-tor
done

Si cette étape est réalisée avant l'installation de Tor, penser ensuite à ajouter les membres de l'équipe au groupe debian-tor.

Si Postfix est déjà configuré, on peut envoyer les infos concernant la machine à tous les membres de l'équipe :

cat <<EOF | mailx -s "$(hostname -f) is born" adminsys@nos-oignons.net
> Chers admin. sys, la nouvelle machine est prête:
>
> $(./add_user -I)
>
> Vous recevrez bientôt chacun un mail individuel avec le mot de passe
> de votre nouveau compte.
>
> --
> ${USER}
> EOF

Autres configurations

En vrac :

  • Dans /etc/hosts :
    S'assurer qu'on a bien une entrée comportant l'IP publique, le fqdn et le petit nom de la machine (dans cet ordre).

  • Dans /etc/default/locale :
    LANG="en_US.UTF-8"
    LANGUAGE="en_US:en"

  • Messages automatiques
    Dans /etc/crontab, ajouter MAILTO=root.

  • Messages automatiques
    Si les premiers messages d'etckeeper en provenance de la nouvelle machine posent problème (bounce), importer le script /usr/local/bin/wheezy-post-receive-email depuis une autre machine, et remplacer le lien symbolique /var/backups/etc.git/hooks/post-receive :
    sudo ln -sf /usr/local/bin/wheezy-post-receive-email /var/backups/etc.git/hooks/post-receive

  • Monitoring Ajouter le nouveau serveur dans le monitoring via Monit

Documentation

Ajouter au moins deux pages au wiki-admin :

  • la première pour décrire le système (voir les autres machines).
  • la seconde pour relater son installation

Mettre à jour les documents suivants :

  • Déployer un nœud Tor
  • Tor