Password SSH / Login diversa dalla password SUDO


9

Vorrei utilizzare una password diversa per elevare il mio utente allo stato sudo rispetto alla password che utilizzo per accedere (tramite GUI, shell o SSH) al mio account. È possibile?

EDIT: Poiché l'impostazione della password di root consentirebbe l'accesso come root, questo non è un buon modo per procedere. Preferirei una password sudo specifica dell'utente, piuttosto che una password di root a livello di sistema.


1
Puoi approfondire questo - perché vuoi farlo?
Doug Harris,

1
Ritengo che la domanda si spieghi abbastanza bene, ma l'obiettivo è rendere sicuro l'accesso tramite password lunghe e difficili e quindi utilizzare una password diversa per l'accesso sudo, in modo che compromettere l'account di un utente non fornisca automaticamente l'accesso sudo.
Richard,

Ho sentito che è possibile eseguire sudo tramite i tasti rsa / dsa, che possono avere qualsiasi passphrase desiderata.
Rob,

Risposte:


2

da man sudoers:

rootpw          If set, sudo will prompt for the root password instead of the
                password of the invoking user.  This flag is off by default.

runaspw         If set, sudo will prompt for the password of the user defined
                by the runas_default option (defaults to root) instead of the
                password of the invoking user.  This flag is off by default.

Oppure potresti semplicemente vietare l'accesso con password tramite ssh completamente. Richiede una chiave crittografata passphrase per l'accesso remoto. Quindi sei libero di usare la password per sudo. L'opzione pertinente è

da man sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.

Grazie per il tuo aiuto, Chas. Owens. Temo che un effetto collaterale della tua soluzione sia che l'account root avrebbe una password e sarebbe quindi possibile accedere come root, che non è una porta che desidero lasciare aperta. Preferirei una password sudo specifica dell'utente, piuttosto che una password di root a livello di sistema.
Richard,

Puoi disabilitare anche il login root da sshd_config
Rob

1

stai cercando questo invece in sudoers amico?

   targetpw        If set, sudo will prompt for the password of the user
                   specified by the -u option (defaults to root) instead of the
                   password of the invoking user. 

Grazie per l'aiuto, johnshen64. Temo che un effetto collaterale della tua soluzione sia che l'account root avrebbe una password e sarebbe quindi possibile accedere come root, che non è una porta che desidero lasciare aperta. Preferirei una password sudo specifica dell'utente, piuttosto che una password di root a livello di sistema.
Richard,

quell'utente non deve essere utente root, per impostazione predefinita è root se non lo si specifica. puoi sperimentarlo per vedere se sarebbe adatto a te. unix è abbastanza aperto e se questi non funzionano ancora per te, puoi persino scrivere uno script wrapper o persino modificare sudo (se conosci c) per fare esattamente quello che vuoi.
johnshen64,

@ johnshen64 Penso che si opponga al fatto che la stessa password verrebbe utilizzata per tutti gli utenti.
Chas. Owens,

Vedo, ma un utente amministratore può essere creato per ogni utente, ad esempio $ {USER} foradmin, in modo che un utente specifichi sempre -u $ {USER} foradmin, sebbene per imporre che sudo debba ancora essere sostituito da uno script personalizzato.
johnshen64,

1

Che ne dici di disabilitare l'accesso con password tramite SSH e consentire l'accesso con chiave pubblica dove puoi impostare la tua password difficile da indovinare. Quindi la password locale può essere più breve e utilizzata da sudo.

Diverso da quello che dovrai configurare /etc/pam.d/sudoper utilizzare un modulo diverso (o aggiuntivo), a prima vista pam_dialpasspotrebbe consentire ciò di cui hai bisogno.

È inoltre possibile configurare la configurazione LDAP per una e le password locali per l'altra. Dipenderà tutto da quanti cambiamenti sei in grado e disposto a fare, quali moduli sono disponibili ecc.


Grazie per il tuo aiuto, Bram. Il tuo primo suggerimento funzionerebbe, salvo che l'autenticazione con chiave pubblica può essere proibitiva con cui lavorare, a meno che tu non sia pronto a trasferire file di chiavi.
Richard,

1

SOLUZIONE 1: newgrp

Un modo semplice per affrontare il tuo caso d'uso sarebbe quello di utilizzare :NOPASSWDin combinazione con un gruppo e un gruppo passwd:

Aggiungi una linea ai sudoers:

%rudo   ALL=(ALL:ALL) NOPASSWD:ALL

Creare un gruppo protetto passwd:

groupadd rudo
gpasswd  rudo # Enter passwd

Ora quando accedi come utente non privilegiato (supponendo che tu non sia già nel rudogruppo), accedi al rudogruppo, a quel punto ti verrà richiesta la password.

login user
newgrp rudo

Ora puoi eseguire senza sudopassword, purché rimani connesso al gruppo.


SOLUZIONE 2: runaspw

Un modo migliore, forse più sicuro per fare questo usa runaspw. runaspwè associato runas_defaultall'opzione, quindi è necessario aggiungere anche questa opzione.

Supponendo che tu abbia già la %sudovoce di gruppo predefinita :

%sudo   ALL=(ALL:ALL) ALL

aggiungi queste righe al file sudoers:

Defaults:%sudo  runas_default=sudo
Defaults:%sudo  runaspw

Ora aggiungi un nuovo sudoutente con una password:

useradd sudo -d /nonexistent -s /usr/sbin/nologin -MNr
passwd sudo

Ora agli utenti del gruppo sudo verrà richiesto il passwd dell'utente sudo, ma solo gli utenti del gruppo sudo saranno in grado di eseguire il sudo (diversamente dalla soluzione di gruppo sopra, dove chiunque nel gruppo o con il passwd del gruppo potrebbe eseguire il sudo).

Un problema minore è che l'utente runas predefinito ora è sudosudo per root come root è necessario specificare esplicitamente root:

sudo -u root <cmd>

Ma abbastanza facile da definire un alias ( alias sudo='sudo -u root') o un comando sudo indiretto.

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.