PrivateBin : comment déployer votre propre PasteBin sur un serveur ?

Cybersécurité

PrivateBin : comment déployer votre propre PasteBin sur un serveur ?

I. Présentation

PrivateBin est une alternative open source à PasteBin, que vous pouvez héberger sur votre propre machine, que ce soit un serveur ou un NAS. Pour rappel, PasteBien est un service en ligne très populaire qui permet de coller du texte ou du code, puis de partager un lien pour y accéder facilement.

PrivateBin est une application web libre et open source qui vous permet d’héberger votre propre instance de PasteBin, avec un chiffrement côté client (via AES 256 bits). Cela signifie que le serveur ne voit jamais le contenu, car il est chiffré directement dans le navigateur de l’utilisateur.

L’idée est simple : vous copiez-collez le texte à partager et vous obtenez un lien de partage unique (et temporaire). Ce lien peut être valide pendant une durée limitée et éventuellement protégé par un mot de passe.

Voici quelques d’usages intéressants de PrivateBin :

  • Partage sécurisé d’un mot de passe, d’une clé de licence ou toute autre information sensible : une alternative à l’e-mail.
  • Partage d’informations réseau, comme des adresses IP.
  • Partage d’une configuration.
  • Partage d’un fichier ou de n’importe quel document.
  • Mise à disposition d’un extrait de code, pour le partager simplement.

Cette alternative à PasteBin est idéale pour les entreprises ou ceux qui veulent garder un contrôle total sur leurs données.

II. Installation de PrivateBin avec Docker

Dans ce tutoriel, nous verrons comment installer une instance de PrivateBin à l’aide de Docker, en nous appuyant également sur le reverse proxy Nginx, lui aussi installé via Docker. En effet, l’application PrivateBin ne peut pas fonctionner sur une connexion HTTP, il convient donc d’utiliser une connexion HTTPS. Dans ce cas, ce qui me semble le plus judicieux, c’est d’utiliser un reverse proxy pour publier l’application.

Une machine sous Linux sera utilisée et elle est déjà équipée de Docker. Nous allons déployer 2 conteneurs Docker :

  • 1 conteneur Docker avec PrivateBin, basé sur PHP-FPM et un serveur Web Nginx
  • 1 conteneur Docker avec Nginx en tant que reverse proxy

L’objectif sera de pouvoir accéder à l’application via l’adresse suivante : . Ici, j’utilise volontairement un nom de domaine local pour utiliser un certificat auto-signé. Pour passer une instance en production, il est fortement recommandé d’utiliser un certificat émit par une autorité de certification publique (Let’s Encrypt peut suffire).

Avant de commencer, veillez à effectuer la configuration DNS. En ce qui me concerne, un enregistrement DNS a été créé dans la zone pour associer le nom à l’adresse IP .

A. Créer le conteneur Docker pour PrivateBin

Nous allons commencer par traiter le cas du conteneur PrivateBin, en utilisant l’image officielle privatebin/nginx-fpm-alpine. Il y a plusieurs images, car PrivateBin peut s’appuyer sur une base de données MySQL / PostgreSQL, un stockage S3 ou un environnement Google Cloud Storage. Ici, nous utiliserons le système de fichiers.

Créez les répertoires dans lesquels seront stockées les données du conteneur ( existe déjà) :


Puis, créez le fichier avec le code suivant :


L’application sera accessible sur le port , même si cela n’a que peu d’importance puisque nous allons configurer un reverse proxy. Un réseau commun nommé sera utilisé par les 2 conteneurs.


Quand c’est fait, toujours dans le même répertoire, créez le fichier qui correspond à la configuration de l’application PrivateBin en elle-même. Pour affiner votre configuration, vous pouvez consulter la documentation officielle. Celle proposée ci-dessous est commentée pour faciliter votre compréhension.


Enfin, dernière étape : la gestion des droits sur le dossier puisqu’il doit être accessible à l’application.

En principe, l’application va écrire dans ce répertoire avec l’utilisateur . Si vous avez un doute ou un problème, mettez les droits en , puis créez un paste (quand le déploiement sera terminé) pour regarder les permissions et les adapter en conséquence.


Vous êtes prêt à passer à la suite : la création du conteneur Nginx.

B. Créer le conteneur Docker pour Nginx

Désormais, nous allons attaquer la configuration du reverse proxy Nginx pour publier notre application en HTTPS. Au-delà de configurer le conteneur Docker, nous allons devoir configurer Nginx et aussi créer un certificat auto-signé (à des fins de tests).

Commençons par créer les répertoires :


Puis, créez le fichier pour déclarer le conteneur. On aurait pu créer un seul fichier Docker Compose avec la déclaration des deux conteneurs pour créer un projet global.

Ici, nous mettons le conteneur en écoute sur le port . Le fichier sera monté dans la configuration de Nginx et le dossier sera utilisé pour stocker les fichiers du certificat.


Désormais, créez le fichier pour configurer le serveur Nginx en tant que reverse proxy. La configuration ci-dessous part du principe que le reverse proxy dispose d’un frontend pour l’adresse . Dans ce cas, le flux sera redirigé vers le conteneur PrivateBin accessible sur l’adresse IP du serveur, sur le port , soit .


Autre point important à bien comprendre :

  • : chemin et nom attendu pour le certificat TLS
  • : chemin et nom attendu pour la clé privée associée au certificat TLS

Nous devons maintenant créer le certificat TLS auto-signé. Vous avez besoin du paquet pour accomplir cette tâche. Il y a de fortes chances pour qu’il soit déjà présent sur votre machine. Commencez par accéder au répertoire adéquat :


Créez une clé privée nommée à l’aide l’algorithme RSA. Ici, nous ne demandons pas de passphrase pour permettre la lecture directe par Nginx.


Puis, vous devez créer une demande de signature de certificat (CSR) :


Vous serez alors invité à renseigner différentes informations : pays, organisation, etc… Ainsi que le , où vous devez indiquer le nom de domaine de votre application.

Enfin, pour finir, générez le certificat auto-signé à partir des deux fichiers créé précédemment. Ce certificat sera valide 365 jours.


En sortie, vous devez obtenir le certificat sous le nom .

La configuration du reverse proxy Nginx est prête.

C. Créer le réseau Docker

Nos deux conteneurs vont chercher à utiliser le réseau Docker nommé , sauf que celui-ci n’existe pas. Exécutez cette commande :


Listez les réseaux Docker, celui que vous venez de créer devrait apparaître.


D. Lancer les conteneurs Docker pour PrivateBin

Pour finir, nous allons lancer les deux conteneurs Docker puisque la configuration est terminée.

Exécutez ces commandes :


Les deux conteneurs seront exécutés en arrière-plan. Vous pouvez lister les conteneurs en cours d’exécution via cette commande :


Il ne reste plus qu’à tester…

E. Utilisation de PrivateBin

Ouvrez un navigateur et accédez à l’adresse (adaptez, bien entendu). Si votre reverse proxy est opérationnel, vous devriez arriver sur l’interface de PrivateBin. Si vous utilisez un certificat auto-signé, vous devez au préalable ignorer l’avertissement de sécurité.

Vous n’avez plus qu’à créer votre premier paste. Vous pouvez choisir une date d’expiration (5 minutes, 1 heure, 1 semaine, etc.), un mot de passe, et même l’effacer automatiquement après la lecture. La zone de saisie vous permet de saisir votre texte. Quand vous cliquez sur le bouton “Créer” vous valider le paste.

Vous obtenez alors un message de validation accompagné par un lien. Vous n’avez plus qu’à transférer ce lien au destinataire pour qu’il récupère l’information du paste. Pratique, n’est-ce pas ?

Vous avez aussi la possibilité de choisir un autre format, comme du code source ou Markdown, à la place du texte brut.

III. Conclusion

PrivateBin est une application simple et efficace qui répond à un besoin bien précis : le partage d’informations de façon sécurisée avec un système de lien temporaire et le chiffrement des données. C’est avec ce type d’outils que l’on peut éviter de retrouver des mots de passe ou autre information sensibles dans des e-mails, des conversations sur Teams ou sur d’autres plateformes.

Qu’en pensez-vous ?

SOURCE