Chaque guide de renforcement que j'ai lu recommande d'interdire de se connecter au compte root et d'utiliser plutôt Sudo
. Je peux comprendre cela si vous définissez un fichier sudoers
strict qui active uniquement les commandes nécessaires pour chaque groupe et utilisateur. Mais sur chaque serveur sur lequel je mets le pied, je n'ai été témoin que d'une configuration Sudo
non restrictive. Je voudrais savoir si c'est une bonne pratique ou non et pourquoi (toujours, je comprends la raison de la traçabilité)?
Donc, voici mes questions :
su
et d'autoriser Sudo
afin de conserver la traçabilité des actions de l'administrateur? (Je peux imaginer un scénario où un utilisateur effectue beaucoup d'actions Sudo avant de supprimer son bash_history)Sudo -i
et Sudo -s
dans la configuration?Sudo command
avoir un utilitaire sans une configuration sudoers
forte? Si oui, lesquels?De plus, pour un seul utilisateur, je ne vois que des avantages pour interdire Sudo
et activer su
. En effet, se connecter avec l'utilisateur root et normal en utilisant le même mot de passe semble être une mauvaise pratique.
Votre question est assez large, touchant plusieurs sujets différents. Il serait peut-être préférable de prendre certains détails et de les poser dans une question distincte.
Suffit-il d'interdire
su
et d'autoriserSudo
afin de garder la traçabilité des actions de l'administrateur?... la commande Sudo peut-elle avoir un utilitaire sans une configuration sudoer forte? lesquels ?
Unrestricted Sudo
a quelques avantages par rapport à su
.
Chaque sudoer
peut utiliser son mot de passe personnel. De cette façon, vous n'avez pas à redistribuer le mot de passe root s'il est modifié.
Sudo
peut être configuré pour consigner l'activité. Si votre configuration syslog
écrit dans un emplacement distant, il devient alors difficile pour quelqu'un de couvrir ses traces.
Cependant, l'accès illimité root
est toujours "illimité".
Si vous n'utilisez pas un serveur syslog
distant, les pistes peuvent facilement être couvertes.
Pour plus de commodité, les gens utilisent souvent Sudo -s
pour obtenir un shell interactif. Cela vous permet d'obtenir bash
la saisie semi-automatique sur les répertoires restreints. Malheureusement, les avantages de syslog
sont annulés si une personne est autorisée à exécuter Sudo -s
. Il existe également de nombreuses alternatives à Sudo -s
qui peut permettre l'exécution de commandes sans journalisation spécifique.
(Je peux imaginer un scénario où un utilisateur effectue beaucoup d'actions Sudo avant de supprimer son bash_history)
bash_history
ne doit pas être utilisé comme outil de suivi d'historique. C'est uniquement pour la commodité de l'utilisateur.
Existe-t-il une autre source à côté de .bash_history utile pour conserver la traçabilité? un tel fichier peut-il être mis à jour par un administrateur (avec Sudo)?
Tous les fichiers du serveur peuvent être mis à jour par une personne disposant d'un accès illimité root
. (que ce soit via Sudo
ou su
)
Comment tracer l'activité d'un utilisateur root
peut faire l'objet d'une question différente. Je crois que les configurations avancées de SELinux peuvent le faire, mais ce n'est probablement pas pratique. Je ne connais aucun autre moyen de suivre l'activité d'un utilisateur root
.
Comme je l'ai dit, si vous avez une journalisation qui devra être écrite sur un serveur de journalisation distant pour éviter qu'elle ne soit effacée par l'attaquant.
est-il possible de restreindre Sudo -i et Sudo -s dans la configuration?
Pour vous répondre mot pour mot, cela peut être possible, mais dépasse le cadre de cet article. Pensez à créer une nouvelle question.
Cependant, cela ne résoudra pas votre problème. Par exemple, on pourrait utiliser Sudo su
au lieu de Sudo -s
. On pourrait utiliser Sudo sudoers
, ou mettez à jour le crontab
, etc.
La seule façon de résoudre ce problème est de "restreindre" les capacités Sudo
à l'aide d'une liste blanche. Comme vous l'avez dit, ce n'est pas aussi courant, mais c'est certainement le seul moyen d'atteindre l'objectif de traçabilité fiable avec n'importe quel niveau de détail.
J'espère que cela t'aides. N'hésitez pas à demander des éclaircissements sur ma réponse, ou à poster une question plus spécifique si vous avez de nouvelles questions basées sur ce que vous avez appris jusqu'à présent.
En réponse à votre dernière phrase, je fais en fait quelque chose dans cet esprit sur mon serveur SSH. J'y ai deux utilisateurs: ssh_user
et Sudo_user
. Seulement ssh_user
est autorisé à se connecter, mais il n'est pas dans sudoers et doit émettre un su Sudo_user
commande pour faire avancer les choses. Cela fournit une ligne de défense supplémentaire: même si l'attaquant obtient les informations d'identification de ssh_user
(par exemple en volant mes fichiers de configuration PuTTY), il n'aura pas immédiatement accès à Sudo
ou /etc/shadow
sur le serveur et devra forcer le mot de passe de Sudo_user
ou exécutez un exploit sur le système pour obtenir un accès root.
Bien sûr, une fois que l'attaquant a accès à ssh_user
compte que le serveur est compromis, mais je m'attends à ce que cette astuce me donne un peu plus de temps pour réagir avant que les dégâts ne soient réels.
Quant à cela:
Se connecter avec l'utilisateur root et normal en utilisant le même mot de passe semble être une mauvaise pratique.
Sudo
peut être configuré pour demander le mot de passe de l'utilisateur "cible", ou un mot de passe root, au lieu du mot de passe de l'utilisateur en cours d'exécution. Ainsi, pour un seul utilisateur, vous pouvez avoir des mots de passe administrateur et non privilégiés distincts. Pour plusieurs administrateurs, qui devraient tous avoir des mots de passe distincts pour un accès non privilégié et administrateur, c'est plus difficile et c'est probablement plus facile en créant des utilisateurs supplémentaires avec l'uid 0.
De sudoers (5) :
[Sudo] valide les informations d'identification de l'utilisateur appelant, et non les informations d'identification de l'utilisateur cible (ou de l'utilisateur racine). Ceci peut être modifié via les drapeaux
rootpw
,targetpw
etrunaspw
, décrits plus loin.