Est-il possible de désactiver requiretty?

39

J'essaie de configurer un script de déploiement à l'aide de Capistrano À une étape, le cap deploy:setupscript consiste à se connecter à mon serveur et à exécuter des commandes qui créent des répertoires. Puis je vois une erreur:msudo: sorry, you must have a tty to run sudo

Il existe une solution suggérée pour désactiver requiretty sur mon serveur. https://unix.stackexchange.com/a/49078/26271

Je me demande si c'est sécuritaire de le faire?

développeur
la source

Réponses:

40

Avoir requirettysur un serveur présente un avantage de sécurité très limité . Si du code non racine est exploité (un script PHP, par exemple), l' requirettyoption signifie que le code d'exploitation ne pourra pas mettre à niveau directement ses privilèges en s'exécutant sudo.

L’attaquant a peut-être un autre moyen d’obtenir root et, bien sûr, il pourra toujours altérer votre site, mais ne pas le laisser prendre racine signifie que d’autres services fonctionnant en tant qu’utilisateurs différents continueront de fonctionner normalement et que l’attaquant aura gagné. t être capable d'effacer les journaux du système. Si aucune de vos sudorègles ne fait quoi que ce soit de dangereux, comme créer un répertoire , ce n'est pas un problème.

De plus - et plus accablant requiretty- aucun privilège n’est nécessaire pour créer un terminal, par exemple avec expect . Donc, vous pourriez aussi bien désactiver requiretty: cela ne confère pas un avantage en termes de sécurité. Il offre un léger avantage en termes de capacité d’audit lorsqu’il est exécuté par les utilisateurs (car les journaux donnent une meilleure idée de qui a appelé sudoet d’où ils viennent), mais pas lorsqu’il est exécuté à partir d’un travail en arrière-plan.

Gilles, arrête de faire le mal
la source
1
Voulez-vous dire que si l'utilisateur peut exécuter expect(ou screenpar exemple), requirettyest inutile du point de vue de la sécurité? (Je n'ai pas très bien compris ce que vous vouliez dire par "condamner" dans cette phrase)
Suzanne Dupéron
@ GeorgesDupéron Oui, c'est ça. Comme tout le monde peut créer un tty, cette requirettyoption n’empêche personne d’utiliser sudo.
Gilles 'SO- arrête d'être méchant'
3
requirettypeut empêcher un utilisateur de divulguer son mot de passe en texte clair, s'il exécute une commande sudo nécessitant un mot de passe via ssh. C'est là pour forcer l'utilisateur à appeler ssh -t.
Chris Betti
1
@Chris Betti - pourquoi est-ce une bonne chose de faire appliquer ssh -t ...?
Rop
Je pensais à l'époque que dans ce cas, si vous exécutez une commande sudo distante qui demande un mot de passe, il est préférable de tirer parti du programme askpass de la machine distante plutôt que de saisir le mot de passe en texte clair via la console. Honnêtement, je ne sais absolument pas si cela offre une sécurité renforcée, si ce n’est éviter éventuellement que votre mot de passe ne soit renvoyé à l’écran lorsque vous le tapez. Je pense que je pensais qu'un programme askpass ne serait pas invoqué sans tty ou pseudo-tty.
Chris Betti