NOPASSWD
n'a pas d'impact majeur sur la sécurité. Son effet le plus évident est de fournir une protection lorsque l'utilisateur a laissé son poste de travail sans surveillance :un attaquant ayant un accès physique à son poste de travail peut alors extraire des données, effectuer des actions et implanter des logiciels malveillants avec les autorisations de l'utilisateur, mais pas élever son accès à root. Cette protection est d'une utilité limitée car l'attaquant peut implanter un programme de type enregistreur de frappe qui enregistre le mot de passe de l'utilisateur la prochaine fois qu'il le saisira à une invite sudo ou dans un économiseur d'écran.
Néanmoins, exiger le mot de passe relève la barre pour l'attaquant. Dans de nombreux cas, la protection contre les attaquants non sophistiqués est utile, en particulier dans les scénarios de postes de travail sans surveillance où l'attaque est souvent une opportunité et où l'attaquant peut ne pas savoir comment trouver et configurer des logiciels malveillants discrets à court terme. De plus, il est plus difficile de masquer les logiciels malveillants lorsque vous n'avez pas les autorisations root - vous ne pouvez pas vous cacher de la racine si vous n'avez pas la racine.
Il existe des scénarios réalistes où l'absence de mot de passe protège même contre les attaquants sophistiqués. Par exemple, un ordinateur portable volé :l'ordinateur portable de l'utilisateur est volé, avec des clés SSH privées ; soit le voleur parvient à deviner le mot de passe du fichier clé (peut-être par force brute), soit il y accède à partir d'un vidage mémoire d'un agent clé. Si le vol est détecté, il s'agit d'un signal pour enquêter sur l'activité récente sur le compte de cet utilisateur, ce qui signifie qu'un logiciel malveillant implanté doit être détecté. Si l'attaquant n'avait qu'un accès au niveau utilisateur, tout ce qu'il a fait laissera des traces dans les journaux ; si l'attaquant a obtenu le mot de passe de l'utilisateur et a exécuté sudo, tous les journaux sont désormais compromis.
Je ne sais pas si les inconvénients de NOPASSWD
équilibrez les avantages de votre cas d'utilisation. Vous devez mettre cela en balance avec tous les autres facteurs de votre situation. Par exemple, il semble que vous autorisez mais n'imposez pas d'avoir des mots de passe différents. Pouvez-vous plutôt utiliser une base de données de comptes centralisée ? De combien de confinement avez-vous besoin entre vos systèmes ? Envisagez-vous des alternatives à Ansible qui prendraient en charge différents mots de passe sudo ? Avez-vous envisagé d'autres mécanismes d'authentification ?
Il y a deux cas spécifiques pour lesquels vous ne voulez pas de sudo sans mot de passe :
- Il s'agit d'un mécanisme de défense contre les utilisateurs malveillants qui accèdent à un compte administratif. Cela peut être dû à l'exploitation ou au fait qu'un administrateur laisse son poste de travail sans surveillance sans verrouiller sa session.
- Le fait de devoir réémettre le mot de passe lors de l'utilisation de sudo donne aux utilisateurs impulsifs le temps de réfléchir à deux fois avant d'effectuer réellement l'action.
À propos de l'automatisation :
Je suis d'accord que vous pouvez le faire sans mot de passe, mais en n'exigeant pas le mot de passe sudo, vous donnez en fait TOUS accès à votre outil d'automatisation. Pensez maintenant à ce que l'outil doit réellement faire ? A-t-il vraiment besoin de tous ces accès ? Probablement pas.
Sudo est livré avec une fonctionnalité intéressante qui vous permet de configurer des commandes spécifiques avec le NOPASSWD
drapeau dans le fichier sudoers :
username myhost = (root) NOPASSWD: /sbin/shutdown
username myhost = (root) NOPASSWD: /sbin/reboot
Une chose que personne ne semble avoir soulignée pour une raison quelconque (corrigez-moi si je me trompe), c'est que cela permet à tout programme que vous exécutez d'accéder à l'accès root sans que vous le sachiez. Normalement, si vous exécutez accidentellement un programme ou un script malveillant en tant qu'utilisateur non root sans sudo, alors même s'il peut encore faire beaucoup de dégâts, il n'aura toujours pas (à moins d'un exploit séparé) les privilèges root. Ainsi, vous n'aurez au moins pas à vous soucier d'un rootkit ou de quoi que ce soit. Mais avec le mode NOPASSWD, vous n'avez pas cette protection. Tout programme qui s'exécute sous votre utilisateur pourra passer à la racine en se réinvoquant avec sudo. Le logiciel malveillant doit toujours être spécifiquement programmé pour faire cela, et il n'aura pas d'accès root sinon, mais qu'en est-il du code malveillant qui fait cela ?