PrivateBin - Installation d'une solution de partage de texte sécurisée
Création — Nicolas THOREZ 2022/04/28 14:12
Réalisation
Cette procédure a été réalisée et testée sur un VM de 2 cœurs (CPU Atom) et 2Mo de RAM, hébergée sur unProxmox et dont le système d'exploitation est une Debian 11.Droits
Certaines manipulations nécessitent des droitsroot. Attention donc.Présentation
PrivateBin est un logiciel de partage de texte, code sécurisé.
Il permet a un utilisateur de partager des données de type texte et plus précisément, ces données peuvent être :
- du texte non formaté.
- du code informatique avec coloration syntaxique .
- du texte au format
Markdownpour un affichage web.
Les données ainsi partagées sont chiffrées en AES256 et un lien internet est créé donnant accès à quiconque le possédant aux données déchiffrés. La sécurité des données ést assurée sur le serveur par le fait que ce dernier ne connaît pas et n'a aucune trace de la clé de chiffrement, cette dernière étant insérée dans le lien internet à communiquer aux destinataires. De plus, le partage peut être verrouillé par un mot de passe et limité dans le temps voire supprimé dès qu'il est lu.
- Référence : PrivateBin
Prérequis
PrivateBin nécessite un serveur web parfaitement configuré pour fonctionner.
apt update apt install -y apache2 php7.4 php7.4-xml php7.4-mbstring php7.4-json php7.4-pdo libapache2-mod-php7.4 a2enmod ssl a2enmod rewrite a2enmod headers service apache2 restart
Installation
- Récupération des sources :
cd /tmp wget https://github.com/PrivateBin/PrivateBin/archive/refs/tags/1.4.0.tar.gz
- Préparation du dossier web :
mkdir -p /var/www/privatebin/
- Décompression des sources :
tar -xvf 1.4.0.tar.gz
- Déplacement des sources dans le dossier cible :
mv PrivateBin-1.4.0/* /var/www/privatebin/
- Affectation des droits :
chown -R www-data:www-data /var/www/privatebin/
Configuration d'Apache
- Création d'une configuration pour notre
PrivateBin:
nano /etc/apache2/sites-available/privatebin.conf
- Le contenu de ce fichier de configuration :
<VirtualHost *:80>
ServerName mon.privatebin.com
DocumentRoot /var/www/privatebin/
# Redirection vers HTTPS
RewriteEngine On
RewriteRule ^(.*)$ https://mon.privatebin.com/$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName mon.privatebin.com
DocumentRoot /var/www/privatebin/
Protocols h2 http/1.1
# Log
ErrorLog ${APACHE_LOG_DIR}/privatebin-error.log
CustomLog ${APACHE_LOG_DIR}/privatebin-access.log combined
<Directory /var/www/privatebin>
AllowOverride All
</Directory>
# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always set Strict-Transport-Security "max-age=15768000"
Header set X-Frame-Options SAMEORIGIN
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header always set Referrer-Policy "same-origin"
Header always set Feature-Policy "microphone 'none'; payment 'none'; sync-xhr 'self' https://mon.privatebin.com"
# SSL
SSLEngine On
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
- Activation du site :
a2ensite privatebin.conf
- Recharge du service web :
service apache2 reload
Personnalisation
Configuration de PrivateBin
- Le dossier de configuration principale est
/var/www/privatebin/cfg. Il contient un fichier d'exempleconf.sample.phpqu'il convient de copier enconf.phppour activer une configuration particulière :
cd /var/www/privatebin/cfg cp conf.sample.php conf.php chown www-data:www-data conf.php nano conf.php
- Parmi les options disponibles, on pourra noter :
- name : Le nom du
PrivateBin, aka le nom du site. - discussion : Active ou désactive l'option
Discussion. - password : Active ou désactive le verrouillage par mot de passe.
- fileupload : Active ou désactive la possibilité d'ajouter une pièce jointe.
- sizelimit : Spécifie la taille maximale du partage.
- template : Spécifie le modèle d'affichage à utiliser. Par défaut, il s'agit de
bootstrap. En mettantbootstrap-black, on active le mode sombre. - languageselection : Active ou désactive le choix de la langue d'affichage.
- languagedefault : Fixe la langue d'affichage par défaut.
- qrcode : Active ou désactive l'émission et l'accès au partage via un QR Code.
sizelimit
La taille maximale du partage est souvent confondu avec la taille maximale de la pièce jointe. Hors cette taille correspond à la taille du message chiffré au total, soit le message, la pièce jointe et le surplus de chiffrement. Il est préférable de compter 10% d'espace (estimation à la louche de ma part) pour le message et son chiffrement, le reste pour la pièce jointe. Ainsi pour une limite à 10Mo, le pièce de 9Mo passe mais pas celle de 9.1Mo.La limite par défaut est à 10Mo. J'ai testé un limite à 20Mo sur une VM à 2 cœurs propulsé par un CPU Atom et ça passe malgré quelques secondes d'attente pour le chiffrement et le déchiffrement. Par contre, sur cette configuration, une pièce de 60Mo n'a pas aboutit.
A ajuster donc selon la puissance de votre machine.
Modification des icônes et images
Les images par défaut de PrivateBin peuvent être remplacées par des images personnalisées. Le dossier par défaut pour les images est /var/www/privatebin/img.
Modification du pied de page
Pour modifier le pied de page, il y a 2 possibilités :
- On peut modifier la traduction contenu dans le fichier de langue, situé dans le dossier
/var/www/privatebin/i18n. - On peut aussi modifier le ficher de template, situé dans le dossier
/var/www/privatebin/tpl.
Résultat final
Voici le résultat pour mon propre PrivateBin, disponible à l'adresse Shyrka System Secure Share
Discussion