Va bene disabilitare Requiretty?


39

Sto cercando di impostare uno script di distribuzione usando Capistrano In un passo lo cap deploy:setupscript si sta connettendo al mio server e sta cercando di eseguire comandi che creano directory. Quindi vedo un errore:msudo: sorry, you must have a tty to run sudo

C'è una soluzione suggerita per disabilitare requiretty sul mio server. https://unix.stackexchange.com/a/49078/26271

Mi chiedo se sia sicuro farlo?

Risposte:


40

Vi è un vantaggio di sicurezza molto limitato nell'avere requirettysu un server. Se viene sfruttato un codice non root (uno script PHP, ad esempio), l' requirettyopzione significa che il codice exploit non sarà in grado di aggiornare direttamente i suoi privilegi eseguendo sudo.

Potrebbe esserci un altro modo per ottenere l'attaccante di ottenere il root, e ovviamente l'attaccante sarà ancora in grado di sfigurare il tuo sito, ma non lasciare che l'attaccante ottenga il root significa che altri servizi in esecuzione come utenti diversi continueranno a funzionare normalmente e l'attaccante vincerà " essere in grado di cancellare i registri di sistema. Se nessuna delle tue sudoregole fa qualcosa di pericoloso come la creazione di una directory , questo non è un problema.

Inoltre - e più dannatamente per requiretty- non è necessario alcun privilegio per creare un tty, ad esempio con aspettarsi . Quindi potresti anche spegnere requiretty: da solo, non offre un vantaggio in termini di sicurezza. Fornisce un leggero vantaggio di verificabilità quando eseguito dagli utenti (perché i registri danno un'idea migliore di chi ha invocato sudoe da dove provengono), ma non quando eseguito da un processo in background.


1
Vuoi dire che se l'utente può eseguire expect(o screenper esempio), allora requirettyè inutile dal punto di vista della sicurezza? (Non ho capito bene cosa intendevi per "dannazione" in quella frase)
Suzanne Dupéron,

@ GeorgesDupéron Sì, tutto qui. Dal momento che chiunque può creare un tty, l' requirettyopzione non impedisce a nessuno di usare sudo.
Gilles 'SO- smetti di essere malvagio' il

3
requirettypuò impedire a un utente di perdere la propria password in chiaro, se sta eseguendo un comando sudo che richiede una password tramite ssh. È lì per forzare l'utente a chiamare ssh -t.
Chris Betti,

1
@ Chris Betti - perché è una buona cosa, per far valere ssh -t ...?
Rop,

All'epoca pensavo che in questo caso, se si sta eseguendo un comando sudo remoto che richiede una password, è meglio sfruttare il programma askpass della macchina remota piuttosto che inserire la password in chiaro tramite la console. Onestamente non ho idea se ciò fornisca una maggiore sicurezza, oltre a prevenire eventualmente la situazione in cui la tua password viene ripetuta sullo schermo mentre la digiti. Credo che stavo pensando che un programma askpass non sarebbe stato invocato senza un tty o uno pseudo-tty.
Chris Betti,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.