Renommez / etc / passwd et / etc / shadow pour des raisons de sécurité [fermé]

8

J'ai un serveur. Mon serveur est sécurisé, mais imaginons un bon pirate qui entre. Il peut maintenant regarder dans /etc/passwdet /etc/shadow. Je voudrais renommer ces fichiers /etc/passwden quelque chose comme /etc/xxanoda.

Je pensais pouvoir faire un lien, mais pour un pirate, ce sera facile à faire ls -l.

Il est possible de renommer ces fichiers et d'avoir toujours un système d'exploitation en cours d'exécution, sans problèmes de compatibilité, ou est-il complètement inutile? Juste pour la recherche de connaissances.

Marco Caggiano
la source
1
Je pense qu'il est possible d'utiliser un serveur d'authentification séparé, pour contenir tous les mots de passe des utilisateurs. Le serveur principal contactera le serveur d'authentification lorsqu'un utilisateur essaiera de se connecter. Le serveur d'authentification est tenu à l'écart des utilisateurs (pas d'accès direct à Internet).
ctrl-alt-delor
9
La sécurité par l'obscurité n'est pas du tout une sécurité.
Poignée de porte
C'est une idée terrible, terrible, terrible .
Shadur

Réponses:

29

La norme de hiérarchie du système de fichiers pour les systèmes de type Unix inclut /etc/passwdà un emplacement fixe, et les outils sont donc généralement codés en dur pour y rechercher. Alors qu'en théorie, vous pouvez recompiler tous les utilitaires pertinents pour rechercher dans un nouvel emplacement, tout attaquant peut toujours simplement rechercher des chaînes dans ces fichiers binaires pour localiser le nouveau fichier, ou utiliser des expressions régulières pour rechercher des fichiers avec un passwdcontenu similaire.

Le shadowfichier ne doit être lisible que par root(et éventuellement par un groupe appelé shadow). Si un attaquant a réussi à obtenir un accès root sur votre système, il a un contrôle complet et s’il peut ou non lire vos fichiers passwd / shadow n’est pas pertinent à ce stade.

Il y a peut-être quelques situations où avoir des fichiers qui ne se trouvent pas aux endroits attendus pourrait aider, par exemple si vous avez un serveur Web mal configuré qui permet à quelqu'un de demander http://myserver/../../etc/passwd, mais en général ce type d'indirection nécessitera beaucoup de travail pour un bénéfice de sécurité minimal.

chronite
la source
8
Dans le dernier cas, il vaut mieux réparer le serveur web à la place ...
Braiam
Mais ça va parce que tous les utilisateurs avec des comptes sur le serveur lui-même n'ont pas de mot de passe, seulement des clés SSH, et les informations de mot de passe ne sont pas stockées de /etc/passwdtoute façon , non?
Blacklight Shining
12

La meilleure chose qui serait est "complètement inutile" comme vous dites. (Cela ne constitue pas un obstacle supplémentaire pour un intrus)

/etc/passwd contient des noms de compte, mais toute personne ayant un accès shell au système pourra les trouver.

/etc/shadowcontient des informations sensibles (le mot de passe haché) mais il est lisible pour root uniquement. Si un intrus a réussi à obtenir les privilèges root - eh bien, comment épeler un désastre ?

guntbert
la source
1
Vous devez également supposer qu'un attaquant a un accès complet à tous les fichiers de votre système (et peut-être téléchargé sa propre copie) jusqu'à ce que vous sachiez le contraire.
Bert
4
"Comment épelez-vous le désastre?" fonctionne probablement mieux dans un contexte où vous n'avez pas à épeler un désastre pour le demander: D
9

Dans les Unices modernes (et Unix-like, y compris Ubuntu), /etc/passwdne contient aucun secret. Le renommer serait plus difficile qu'il ne le vaut, étant donné le nombre d'utilitaires qui devraient être reconstruits pour le rechercher dans son nouvel emplacement.

/etc/shadowest une autre affaire, car il y a des secrets dans ce fichier, mais le renommer ne sera pas utile. Il est uniquement lisible par root, donc même si un pirate pénètre dans le système en tant qu'autre utilisateur, cela ne suffit pas pour accéder au fichier. C'est pourquoi les mots de passe ont été supprimés /etc/passwden premier lieu: tout le monde doit pouvoir lire /etc/passwd, mais seul root doit pouvoir accéder aux mots de passe réels, de sorte que les mots de passe ont été déplacés vers un fichier que seul root pouvait lire.

Si le pirate ne se racine, puis un changement de nom ne vous sauvera pas. Une simple récursivité greppourrait donner au pirate une liste de fichiers dans un /etc/shadowformat similaire, puis le pirate n'a qu'à les parcourir pour trouver les données qu'il souhaite. Vous l'avez retardé de quelques heures tout au plus, et probablement moins: encore une fois, cela ne vaut pas le temps qu'il faudrait pour modifier et recompiler tous les utilitaires qui dépendent de /etc/shadowl'emplacement de.

The Spooniest
la source
De plus, s'il a un accès root, il n'a pas / n'a pas besoin du mot de passe de quelqu'un d'autre. Il peut simplement accéder suau compte de son choix ou modifier le mot de passe de n'importe quel utilisateur du système. Et s'il veut vraiment avoir les mots de passe (juste au cas où les utilisateurs réutilisent leurs mots de passe ailleurs), il peut télécharger un loginbinaire modifié ou ajouter un pammodule qui intercepte les tentatives d'authentification et lui relaie les combinaisons nom d'utilisateur / mot de passe.
Shadur
2

Vous ne pouvez pas simplement renommer ces fichiers. De nombreux processus et programmes les rechercheront, car il s'agit d'une norme dans les systèmes Linux. Ce que vous pouvez faire est de sécuriser votre serveur de manière appropriée.

Frantique
la source
je voulais juste ajouter plus de sécurité, j'ai plus d'un site Web sur mon serveur.
Marco Caggiano
2

Bien qu'il ne soit probablement pas utile de renommer les fichiers /etc/passwdet /etc/shadow, si vous voulez plus de sécurité, vous pouvez regarder PAM (modules d'authentification enfichables) et NSS (Name Service Switch). Comme ici.

PAM peut être utilisé pour ajouter des modules d'authentification qui, à la place, lisent leur authentification en cas de normalisation à partir des fichiers standard, la lisent à partir d'une autre source, comme de ldap ou d'une base de données. L'utiliser signifierait que le /etc/shadowbidon serait presque complètement éliminé.

NSS complète PAM en rendant une partie de la résolution de noms (comme les groupes auxquels cet utilisateur appartient) indépendante des fichiers standard ( /etc/passwd, /etc/groups). Son utilisation signifierait que votre fichier passwd ne contiendrait potentiellement qu'une option de secours pour root, et rien de plus. L'utilisation de clés SSH pour valider la connexion root éliminerait également la nécessité d'avoir un mot de passe root dans le fichier fantôme (bien que cela puisse être souhaité si la connexion SSH est interrompue).

Alternativement, si vous ne voulez pas authentifier vos utilisateurs via une base de données ou un hôte LDAP séparé, vous pouvez également créer vos propres modules PAM et NSS, qui lisent leurs données à partir d'un fichier non standard, bien que je ne recommanderais pas cette option.

Lorsque vous voulez essayer de les utiliser, n'oubliez jamais de garder une sorte de secours sur une couche d'authentification connue et fonctionnelle, sinon vous pouvez vous verrouiller hors du système, même avec root.

Notez que toutes les applications ne prennent pas en charge PAM (beaucoup le font cependant). NSS peut cependant être utilisé pour implémenter l'authentification pour les applications qui ne prennent pas en charge PAM, et certains sites que j'ai lus sur NSS suggèrent en fait cette approche. Cela signifie cependant que le module NSS fournira le mot de passe (potentiellement) haché à toute personne qui peut accéder à la couche d'authentification NSS, ce qui est presque toujours quelque chose que vous voulez éviter (c'est fondamentalement la même chose que donner un accès en lecture non root au fichier fantôme )! Donc, si vous optez pour cette approche, assurez-vous toujours que NSS est uniquement utilisé pour fournir à l'utilisateur les données de base (comme le contenu de /etc/passwd) et que PAM est utilisé comme couche d'authentification.

SztupY
la source