Je souhaite faire une connexion sécurisée vers mon serveur de torrents. En effet, pas envie de voir quelqu’un qui sache ce que je fais sur ma connexion à la maison, ou que sur mon lieu de travail je lance des téléchargements de torrent comme video-de-mes-vacances.1080p.VO.multi.x264.mkv
.
Pour ça, il faut forcer la connexion SSL à notre site, qui sera un proxy vers le serveur de torrents qui écoute en local. Peu importe le client torrent, j’utilise actuellement le démon deluged
couplé à deluge-web
, mais transmission
marche bien aussi. À partir d’ici on suppose que l’URL du site à sécuriser est « torrent.example.com ».
Donc pour ça, on va commencer par créer un fichier contenant les mots de passe des utilisateurs que l’on souhaite laisser passer :
fichier de mot de passe des utilisateurs
htpasswd -c /path/to/passwords/passwdfile USER
Pour la suite, tout se fait dans un fichier d’hôte virtuel (nom arbitraire) comme /etc/apache2/sites-available/torrent.example.com-ssl
. On force la connexion SSL au site torrent.example.com
:
<VirtualHost *:80>
ServerName torrent.example.com
Redirect permanent / https://torrent.example.com/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /path/to/ssl/ca.cert
SSLCertificateKeyFile /path/to/ssl/ca.key
ServerAdmin moi@example.com
ServerName torrent.example.com
ProxyPass / http://IPLOCALE:PORT/
ProxyPassReverse / http://IPLOCALE:PORT/
<Proxy *>
AuthType Basic
AuthName intranet
AuthUserFile /path/to/passwords/passwdfile
Require user USER # ne laisse passer QUE USER
# Require user USER1 USER2 USER3
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/torrent.example.com-ssl.err
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/torrent.example.com-ssl.log combined
</VirtualHost>
</IfModule>
Je ne réexplique pas la génération des certificats auto-signés, expliquée dans un précédent billet. À partir d’ici, a2ensite torrent.example.com-ssl
puis service apache2 reload
devraient suffire pour ne laisser passer qu’un seul utilisateur, et redirige la connexion SSL vers une adresse IP locale, sur un certain port, où écoute votre serveur de torrents. Si on rajoute à cela l’authentification supplémentaire de votre client bittorrent, il va être difficile de faire mieux au niveau de la sécurité.
J’ai réussi à faire ça en lisant la documentation suivante :