web-dev-qa-db-fra.com

Comment faire des fichiers protégés?

Comment créer un fichier contenant des données cruciales protégées? Par exemple, supposons que certains fichiers soient importants. Existe-t-il une méthode ou une stratégie pour mieux protéger ce type de fichier sur Ubuntu? Je veux même que certains fichiers demandent un mot de passe chaque fois que quelqu'un essaie de l'ouvrir. Cela affecte-t-il la version d'Ubuntu en termes de politique de sécurité? Puis-je utiliser n'importe quel algorithme de chiffrement en externe? Cordialement.

24
Avani badheka

La meilleure méthode que vous avez est chattr +i {file}. Ceci définit l’attribut immuable, puis un fichier ne peut pas être modifié, supprimé, renommé ou un lien dur créé par quiconque, y compris root.

La seule personne pouvant éditer le fichier est la racine. Il doit annuler cela en supprimant le bit immuable: chattr -i {file} et peut ensuite faire n'importe quoi avec le fichier. Régler à nouveau le + i verrouille le fichier de toute modification.

Cela n'empêchera pas de formater la partition où le fichier est stocké. Cela empêchera le vol du fichier.


Vous pouvez même le faire sur un point de montage complet si vous voulez:

chattr +i -R /discworld

rendrait le "monde du disque" entier et tout ce qui s'y trouvait immuable (chattr -i -R /discworld pour l'annuler;))


32
Rinzwind

Sans rien faire de spécial, vous pouvez rendre difficile la lecture, la modification ou la suppression du fichier par des tiers en supprimant les autorisations pour tous les utilisateurs, à l'exception du propriétaire. Faites de root le propriétaire du fichier et placez-le dans un répertoire auquel seul root a accès ...

Sudo mkdir /home/secret     #this directory will be owned by root, no need to chown
Sudo chmod 700 /home/secret

déplacez (Sudo mv file /home/secret) votre fichier et faites-le

Sudo chown root: /home/secret/file
Sudo chmod 600 /home/secret/file

chmod et chown acceptent plusieurs arguments: chmod 600 file1 file2 ou chmod 600 file*

autre que cela, utilisez le cryptage ...

18
Zanna

Le cryptage est un moyen relativement sécurisé de protéger les documents (à condition de détruire l'original et de stocker correctement la version cryptée).

Les autorisations (comme suggéré par les autres réponses) peuvent être contournées (voir this ).

Par conséquent, je vous recommande de chiffrer correctement le fichier. Voici comment:

(Pour une méthode d'interface graphique, voir la fin de cette réponse.)

Assurez-vous que gpgest installé.

Par exemple, pour chiffrer un fichier nommé Important_File.txt, utilisez

$ gpg -c Important_File.txt

Maintenant, entrez le mot de passe (il sera utilisé plus tard si vous devez le lire).

Vous allez maintenant obtenir un fichier avec le nom de l'original et une extension .gpg, par exemple Important_File.txt.gpg.

Supprimez le fichier d'origine et conservez la version .gpg. Il peut être facile d’obtenir le fichier original à partir du disque si vous n’utilisez pas l’utilitaire sécurisé shred(qui ne fonctionnera toujours pas sur les lecteurs SSD ou les cartes SD):

$ shred Important_File.txt

Maintenant nous n’avons que Important_File.txt.gpg avec nous.

Chaque fois que vous avez besoin de le lire, simplement

$ gpg Important_File.txt.gpg

Puis entrez le mot de passe que vous avez défini dans la première commande. Vous obtiendrez le Important_File.txt d'origine.

NOTE: Ceci ne protégera que le contenu du fichier crypté .gpg par quiconque (en utilisant le cryptage), mais n'importe qui peut l'enlever, le copier ou le déplacer ! Pour une protection de base contre que , utilisez les méthodes d'autorisation des autres réponses du fichier .gpg crypté.

Méthode d'interface graphique (GUI)

Installez l'application Seahorse.

Ensuite, vous pouvez le faire à partir de l'application Fichiers:

Screenshot of GNOME Files encrypting

12

Il suffit de définir une autorisation très stricte 600, de sorte que seul le propriétaire puisse la lire et l'écrire (si vous avez besoin d'autorisations d'exécution, ce sera 700).

Vous pouvez également le faire graphiquement - il suffit de cliquer avec le bouton droit de la souris sur le fichier, de sélectionner Properties > Permissions > Set et de définir tout sauf le champ owner sur rien.

Voir l'image à titre d'exemple:

the picture

9
dadexix86

Si vous êtes le seul utilisateur du système et que personne ne peut accéder à votre ordinateur sans vos autorisations, vous pouvez simplement bloquer l'accès à l'aide de cette commande, comme indiqué dans réponse de Zanna :

Sudo chown root:root /my/secret/file.txt
Sudo chmod 600 /my/secret/file.txt

Dans ce cas, le fichier ne peut être lu et/ou écrit que par l'utilisateur root. Ceci est considéré comme "suffisamment sécurisé" si personne ne peut démarrer votre ordinateur sans votre permission ou soulever votre disque dur. Nous utilisons l'utilisateur root dans ce cas, car l'utilisateur root peut toujours lire les fichiers, même s'ils ne sont pas autorisés. En utilisant l'utilisateur root, nous imposons que seulement un utilisateur peut y accéder.

Si vous souhaitez marquer le fichier comme étant non modifiable de quelque façon que ce soit, vous pouvez utiliser l'attribut i pour marquer le fichier comme immuable . Dans ce cas, les autorisations du fichier sont verrouillées et ne peuvent en aucun cas être modifiées. Ainsi, vous pouvez exécuter la commande suivante pour rendre le fichier non modifiable et le protéger contre la suppression et les modifications d'autorisation:

Sudo chattr +i /my/secret/file.txt

Si vous souhaitez le modifier, remplacez le +i par un -i pour déverrouiller temporairement le fichier. Voir réponse de Rinzwind pour une vue plus détaillée.

Désormais, si d’autres personnes ont accès à votre ordinateur (accès Sudo à distance ou toute forme d’accès physique), cela s’efface instantanément. Un attaquant peut utiliser root power pour lire votre fichier, insérer un Live USB ou simplement retirer votre disque dur.

Par conséquent, nous devons chiffrer le fichier. Personnellement, je préfère utiliser des "conteneurs de fichiers", afin que vous puissiez en coller davantage et les faire grandir au besoin. chattr +i est toujours recommandé afin que le fichier ne soit pas supprimé (ou modifié) par inadvertance. Enfin, si vous utilisez une image cryptée, vous pouvez définir des autorisations pour permettre à d'autres utilisateurs d'accéder à un sous-ensemble très limité de fichiers lorsque le disque est monté, ce qui en fait un outil de choix pour un serveur. Ce guide était disponible à l'origine ici et a été adapté pour être utilisé ici.

Tout d'abord, vous voulez créer une image disque pour votre usage. Dans cet exemple, nous allons en faire 5 Go.

dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img

Ensuite, nous devons rendre votre image cryptée:

Sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img

Vous aurez le choix ici d'entrer votre mot de passe de cryptage préféré. Une fois que cela est fait, nous devons exposer le périphérique de bloc brut:

Sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device

À l'heure actuelle, nous avons un conteneur de fichiers décrypté, mais il n'y a pas de système de fichiers, et c'est presque inutile. Réparons cela:

Sudo mkfs.ext4 /dev/mapper/my-secret-device

Maintenant, nous avons besoin d’un endroit pour monter notre nouvelle partition. Dans ce cas, je le mettrai à /crypt. Je suis utilisateur 1000, je vais donc configurer ma partition pour qu'elle me permette uniquement (ainsi que root) de lire/écrire à partir de celle-ci.

Sudo mkdir /crypt
Sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000

Maintenant, je peux utiliser mon outil de fichiers pour accéder à /crypt et je peux y stocker tous mes fichiers sensibles. Une fois terminé, je devrai démonter et rechiffrer ma partition.

Sudo umount /crypt
Sudo cryptsetup luksClose my-secret-device

Maintenant, je vais définir les partitions appropriées sur mon fichier image, de sorte que seuls moi et root puissent y accéder, et qu'il ne puisse plus être modifié.

chmod 400 ~/NSA-Data-Dump-20161012.img
Sudo chattr +i ~/NSA-Data-Dump-20161012.img

Chaque fois que je veux ouvrir ce fichier en lecture, il me suffit d'exécuter ces deux commandes, que je peux facilement nommer:

Sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
Sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Mes données cryptées seront disponibles à /crypt et elles resteront en lecture seule et accessibles uniquement pour moi et root.

Si je veux modifier le fichier, je dois modifier les autorisations, puis monter:

Sudo chattr -i ~/NSA-Data-Dump-20161012.img
chmod 700 ~/NSA-Data-Dump-20161012.img
Sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
Sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Maintenant, vous devez faire attention ici, car si un utilisateur a la racine sur son système, il peut modifier/détruire votre partition cryptée, la rendant ainsi inutile. Ils peuvent également voler des données sur le lecteur, mais uniquement lorsqu'ils sont ouverts. Cependant, ils ne peuvent pas voler de données ou même voir que des données existent sans que vous les ouvriez explicitement. Par conséquent, il est de votre devoir de vous assurer que votre système est suffisamment sécurisé pour qu'aucun utilisateur root ne soit en ligne lorsque vous ouvrez votre volume chiffré.


TL; DR :

  1. Faire la voûte:

    dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
    Sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    Sudo mkfs.ext4 /dev/mapper/my-secret-device
    
  2. Remplissez le coffre-fort:

    Sudo mkdir /crypt
    Sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
  3. Verrouillez le coffre-fort:

    Sudo umount /crypt
    Sudo cryptsetup luksClose my-secret-device
    
  4. Geler le coffre-fort:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    Sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
  5. Ouvrez le coffre-fort:

    Sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    Sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
    
8
Kaz Wolfe

Vous pouvez utiliser encfs pour le chiffrement de répertoire .

Fondamentalement, vous devez créer 2 répertoires, 1 dans lequel les données cryptées seront stockées et 1 où vous pourrez accéder à ces données:

mkdir ~/.encrypted
mkdir ~/private

Puis exécutez (vous devez exécuter cette ligne chaque fois que vous voulez 'monter' votre répertoire):

encfs ~/.encrypted/ ~/private/

Si vous n'en savez pas plus, appuyez simplement sur ENTER aller avec les paramètres standard (demandé seulement la première fois).

Ensuite, entrez votre mot de passe et il sera monté.

Vos données ne seront accessibles que par votre utilisateur en toute sécurité dans ~/private/ (vous pouvez pratiquement ignorer ~/.encrypted)

Pour le démonter:

Sudo umount ~/private/

ou

fusermount -u ~/private/

Aussi simple que cela.

7
lepe

Vous pouvez chiffrer les données en utilisant cryptkeeper, qui est vraiment une très bonne application et peut sécuriser votre fichier. Vous pouvez l'installer avec:

Sudo apt-get update
Sudo apt-get install cryptkeeper

Je vous recommande généralement de chiffrer le dossier avec le nom commençant par . car le placer avant le nom du fichier le masquerait. C’est un petit truc mais ça marche.

Pour afficher le dossier, utilisez Ctrl+h ou vice-versa.

3
SHUBHRANEEL GHOSH