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.

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 Markdown pour 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.

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

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

  • 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

  • Le dossier de configuration principale est /var/www/privatebin/cfg. Il contient un fichier d'exemple conf.sample.php qu'il convient de copier en conf.php pour 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 mettant bootstrap-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.

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.

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.

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

Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • linux_privatebin.txt
  • Dernière modification : 2022/05/02 09:41
  • de nekan