Ist es in Ordnung, requiretty zu deaktivieren?

39

Ich versuche, ein Bereitstellungsskript mit Capistrano einzurichten. In einem Schritt cap deploy:setupwird eine Verbindung zu meinem Server hergestellt und versucht, Befehle auszuführen, mit denen Verzeichnisse erstellt werden. Dann sehe ich einen Fehler:msudo: sorry, you must have a tty to run sudo

Es gibt einen Lösungsvorschlag zum Deaktivieren von requiretty auf meinem Server. https://unix.stackexchange.com/a/49078/26271

Ich frage mich, ob das sicher ist?

Entwickler
quelle

Antworten:

40

Es gibt einen sehr begrenzten Sicherheitsvorteil requirettyauf einem Server. Wenn ein anderer Code als Root ausgenutzt wird (z. B. ein PHP-Skript), requirettybedeutet diese Option, dass der Exploit-Code seine Berechtigungen nicht direkt aktualisieren kann, indem er ausgeführt wird sudo.

Es kann auch eine andere Möglichkeit für den Angreifer geben, root zu werden, und der Angreifer kann Ihre Site natürlich weiterhin entlarven. Wenn der Angreifer jedoch nicht root wird, werden andere Dienste, die als andere Benutzer ausgeführt werden, weiterhin normal ausgeführt, und der Angreifer hat gewonnen. ' Systemprotokolle können nicht gelöscht werden. Wenn keine Ihrer sudoRegeln etwas Gefährliches wie das Erstellen eines Verzeichnisses bewirkt , ist dies kein Problem.

Darüber hinaus - und das ist noch schlimmer requiretty- ist kein Privileg erforderlich, um eine Tty zu erstellen, z . B. mit Erwartung . Sie können es also genauso gut ausschalten requiretty: Allein bietet es keinen Sicherheitsvorteil. Bei der Ausführung durch Benutzer ergibt sich ein geringfügiger Vorteil in Bezug auf die Überprüfbarkeit (da die Protokolle einen besseren Überblick darüber geben, wer aufgerufen hat sudound woher sie stammen), nicht jedoch bei der Ausführung über einen Hintergrundjob.

Gilles 'SO - hör auf böse zu sein'
quelle
1
Meinen Sie damit, dass, wenn der Benutzer ausgeführt werden kann expect(oder screenzum Beispiel), dies requirettyaus Sicherheitsgründen unbrauchbar ist? (Ich habe nicht ganz verstanden, was Sie mit "Verdammen" in diesem Satz gemeint haben)
Georges Dupéron
@ GeorgesDupéron Ja, das war's. Da jeder ein tty erstellen kann, requirettyhindert die Option niemanden daran, sudo zu verwenden.
Gilles 'SO- hör auf böse zu sein'
3
requirettykann verhindern, dass ein Benutzer sein Passwort im Klartext verliert, wenn er einen sudo-Befehl ausführt, für den ein Passwort über ssh erforderlich ist. Hiermit wird der Benutzer gezwungen, ssh -t aufzurufen.
Chris Betti
1
@Chris Betti - warum ist das eine gute Sache, ssh -t durchzusetzen ...?
Rop
Ich dachte damals, dass in diesem Fall, wenn Sie einen Remote-Sudo-Befehl ausführen, der Sie zur Eingabe eines Kennworts auffordert, es besser ist, das Askpass-Programm des Remote-Computers zu verwenden, als das Kennwort über die Konsole im Klartext einzugeben. Ich habe ehrlich gesagt keine Ahnung, ob dies die Sicherheit verbessert, außer möglicherweise zu verhindern, dass Ihr Kennwort während der Eingabe auf dem Bildschirm wiedergegeben wird. Ich glaube, ich habe gedacht, dass ein askpass-Programm ohne tty oder pseudo-tty nicht aufgerufen werden würde.
Chris Betti