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
etmarcuse2
, 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
etmarylou2
, 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
AjouterUnattended-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
- Importer les fichiers suivants :
/etc/sudoers.d/00 defaults
/etc/sudoers.d/01 nopasswd
/etc/sudoers.d/rebooted.warn
- Actualiser le nom d'hôte dans
rebooted.warn
. - Enregistrer les changements :
sudo etckeeper commit "Configuration de sudo"
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écifierroot: 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 directivenameserver
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 enregistrementsA
et éventuellementAAAA
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
, ajouterMAILTO=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