Existe-t-il un système de fichiers chiffré en écriture seule pour Linux?

14

Je recherche un système de fichiers crypté pour Linux qui peut être monté en mode écriture seule, je veux dire que vous devriez pouvoir le monter sans fournir de mot de passe, tout en étant capable d'écrire / d'ajouter des fichiers, mais vous ne devriez pas non plus pouvoir lire les fichiers que vous avez écrits ni lire les fichiers déjà sur le système de fichiers. L'accès aux fichiers ne doit être accordé que lorsque le système de fichiers est monté via le mot de passe. L'objectif est d'écrire des fichiers journaux ou des données similaires qui sont uniquement écrits, mais jamais modifiés, sans que les fichiers eux-mêmes soient exposés. Les autorisations de fichiers ne sont pas utiles ici car je veux que les données soient inaccessibles même lorsque le système est entièrement compromis.

Une telle chose existe-t-elle sous Linux? Sinon, quelle serait la meilleure alternative pour créer des fichiers journaux chiffrés?

Ma solution de contournement actuelle consiste simplement à diriger les données gpg --encrypt, ce qui fonctionne, mais est très lourd, car vous ne pouvez pas facilement accéder au système de fichiers dans son ensemble, vous devez diriger chaque fichier gpg --decryptmanuellement.

Grumbel
la source
3
Je crois que vous pouvez faire ce que vous voulez via syslog. Cela sépare la génération des messages du journal du système qui les stocke, de sorte que les applications qui génèrent le message n'ont pas accès à l'endroit où elles sont stockées. Les journaux peuvent même être (et sont fréquemment) sur un serveur distinct.
mpez0
Je veux aller plus loin et faire en sorte que les données ne soient pas accessibles du tout, pas seulement au processus qui les a créées, mais même pas à la racine. C'est ce que fait le chiffrement à clé publique avec gpg, mais je cherche un moyen de le faire au niveau du système de fichiers.
Grumbel

Réponses:

4

... Je veux que les données soient inaccessibles même lorsque le système est complètement compromis.

Ce n'est pas possible. Si le système est entièrement compromis, «par définition» tout ce qui s'y trouve est accessible, y compris les clés de chiffrement.

Le chiffrement est inutile pour protéger contre la compromission du système, tandis que le système fonctionne, SI les clés pour chiffrer / déchiffrer les données sont sur le même système que les données chiffrées. Par exemple, si vous avez un système de fichiers LUKS monté et que quelqu'un obtient un accès root à votre système, il est possible d'extraire les clés de la RAM - car ils doivent vivre dans la RAM pour déchiffrer le système de fichiers. Dans votre situation, si vous tapez votre phrase secrète à chaque fois que vous cryptez un fichier, vous êtes protégé (en supposant qu'un enregistreur de frappe n'est pas présent sur votre système), sinon, vous êtes dans la même situation et quelqu'un qui compromet votre système peut constater que clé et annuler tout votre cryptage.

Vous devez envoyer les données que vous souhaitez protéger en dehors du système + NE PAS les écrire sur un support intermédiaire sur ce système si vous ne voulez absolument pas que root y accède. rsyslogprend en charge explicitement cela en ce qui concerne la journalisation, et vous pouvez crypter la connexion entre la source et le récepteur avec OpenVPN stunnel, ou similaire. Je suis sûr qu'il existe d'autres options de transfert "à sens unique".

LawrenceC
la source
"parce qu'ils doivent vivre dans la RAM pour décrypter le système de fichiers" cela peut être vrai avec LUKS spécifiquement, mais pas en général: la crypto asymétrique est conçue exactement à cette fin (quelqu'un qui détient la clé publique peut crypter, mais pas décrypter)
Clément
3

Il me semble que vous allez dans la mauvaise direction. Si vous voulez un fichier dans lequel vous pouvez écrire, mais pas lire, les autorisations de fichier sont ce que vous recherchez.


$ touch log
$ chmod 222 log
$ echo test > log
$ cat log
cat: log: Permission denied

Bien sûr, ce fichier peut être sur un système de fichiers crypté.

gorille
la source
Vous pouvez monter le système de fichiers avec un umask donné, ne permettant pas aux utilisateurs de modifier les autorisations.
nos
Et seul le propriétaire du fichier (ou superutilisateur) peut modifier l'autorisation.
gorille
Je pense que OP essaie de se protéger même contre un attaquant qui prend racine.
Clément
1
umask 0477 && touch file && echo test > file && cat file

peut aussi être utile. Tout fichier créé dans le processus en cours aura le mode 0200.

edk
la source