Table des matières

PrivateBin - Installation d'une solution de partage de texte sécurisée

CréationNicolas 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 un Proxmox et dont le système d'exploitation est une Debian 11.

Droits

Certaines manipulations nécessitent des droits root. 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 :

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.

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

cd /tmp
wget https://github.com/PrivateBin/PrivateBin/archive/refs/tags/1.4.0.tar.gz

mkdir -p /var/www/privatebin/

tar -xvf 1.4.0.tar.gz

mv PrivateBin-1.4.0/* /var/www/privatebin/

chown -R www-data:www-data /var/www/privatebin/

Configuration d'Apache

nano /etc/apache2/sites-available/privatebin.conf

<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>

a2ensite privatebin.conf

service apache2 reload

Personnalisation

Configuration de PrivateBin

cd /var/www/privatebin/cfg
cp conf.sample.php conf.php
chown www-data:www-data conf.php
nano conf.php

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 :

Résultat final

Voici le résultat pour mon propre PrivateBin, disponible à l'adresse Shyrka System Secure Share