Quanto è importante la password sudo?


25

So che la password sudo protegge il mio computer dall'hacking locale da parte di qualcuno che ha accesso fisico ad esso ( modifica: in realtà, non lo fa ). La mia password è abbastanza forte per questo scopo, ma so che non è abbastanza forte se qualcuno può forzarla a distanza.

Qualcuno può accedere al mio computer in modalità root usando la mia password sudo senza accesso fisico al computer, su un'installazione desktop Ubuntu standard?

  1. Se si dispone di un accesso alla rete, sicuramente (risposta breve)
  2. Se non presti sufficiente attenzione alla sicurezza, (risposta lunga)
  3. Se hai "ssh" in esecuzione e non 2FA , ( commenti e risposte)
  4. Si può accedere al proprio computer come root senza sudo / password utente

letteralmente "chiunque", incluso me, o per esempio, un manutentore del ppa di cui mi fido, chiunque altro.
mxdsp,

1
possono accedere tramite SSH e sudo al root.
Aizuddin Zali,

1
Esattamente. per indurire è possibile utilizzare 2FA. Segui questa guida
Aizuddin Zali,

1
allora sei salvato dall'attacco SSH. Esistono molte tecniche di hacking possibili che le persone usano.
Aizuddin Zali,

1
Semplicemente non esiste una "password sudo".
Hobbs

Risposte:


34

So che la password sudo protegge il mio computer dall'hacker locale da parte di qualcuno che ha accesso fisico ad esso.

Non voglio spaventarti troppo, ma se qualcuno ha accesso fisico, ti viene consegnato l'accesso indipendentemente dalla forza della tua password. Ci vorrà 1 riavvio da parte di qualcuno per consentire a qualcuno di modificare la password di root (può essere fatto da "salvataggio di grub" senza la necessità di fornire la password corrente). A proposito: questo metodo è considerato valido, una funzionalità e un rischio per la sicurezza accettato (altrimenti non saresti mai in grado di riparare il tuo sistema nel caso in cui la password venisse compromessa).

ma so che non è abbastanza forte se qualcuno può forzarlo a distanza.

Ecco qualcos'altro in gioco: un ROUTER dovrebbe essere abbastanza intelligente da bloccare l'accesso dall'esterno se si tratta di una richiesta ripetuta che richiede le stesse informazioni in un breve periodo di tempo. Fondamentalmente quello che hai qui è un attacco DOS (o un DDOS se 2+ computer ti attaccano). Un router dovrebbe interrompere tale connessione e applicare un periodo di attesa prima di accettare nuove richieste da tale connessione.

Qualcuno può accedere al mio computer in modalità root usando la mia password sudo senza accesso fisico al computer, su un'installazione desktop Ubuntu standard?

Prima devono connettersi, quindi fornire la password sudo. La modalità "root" è disabilitata e non è possibile accedere direttamente al prompt "#".

Si noti che è possibile abusare di un servizio. Se hai "ssh" in esecuzione su quella macchina e possono "ssh" sul tuo sistema, e ottieni una mano sul tuo nome utente e password per quell'utente (e poiché è un utente amministratore anche la tua password sudo) possono accedere alla tua macchina e rovinare tutto. A proposito: se lo fanno in questo modo devono prima conoscere il tuo sistema (come la tua password).

Ma poi c'è un problema con questo (e qualsiasi altro metodo): come hanno ottenuto la tua password? NON possono ottenerlo dal sistema stesso. E in generale indovinare non vale la pena. Se è stato socialmente progettato ... allora il tuo problema è lì, non con il modello di sicurezza del tuo sistema, Ubuntu o Linux in generale.

Finché la tua password sudo è tua, dovresti / dovrebbe andare bene. E starai ancora meglio se si tratta di una password complessa (forse facile da ricordare per te ma non indovinabile da altri). Un esempio che ho usato prima di discuterne: se il tuo cane si chiama "Abwegwfkwefkwe" usando "Abwegwfkwefkwe" come password è MALE anche se sembra buono (dal momento che qualcuno potrebbe chiederti: 'come si chiama il tuo cane' e loro lo provano come un'ipotesi gratuita). Se non hai alcuna relazione con "Abwegwfkwefkwe" è una buona password.

Il miglior consiglio che posso dare:

  • non inserire la password dell'amministratore quando viene richiesta a meno che non si sappia che dovrebbe essere richiesto. Se apri un browser e ti viene mostrato un popup che assomiglia al nostro "chiedere la password dell'account admin" ... fermati ... e pensa prima.

  • non lasciare il sistema incustodito quando è attivo il periodo di tolleranza "sudo". sudo --reset-timestamprimuove l'attuale periodo di tolleranza e chiederà nuovamente la password al prossimo utilizzo di "sudo". Blocca lo schermo quando vai in AFK.

  • non installare servizi o software per il gusto di farlo. Se non è necessario ssh, non installare ssh, se non si utilizza un server Web, non installare un server Web. E dai un'occhiata ai servizi attualmente in esecuzione. Se non si utilizza BT su un notebook, disabilitarlo. Se non si utilizza una webcam disabilitarlo (se attivo). Elimina il software che non usi più.

  • e per il veramente paranoico (e sì, Paranoid Panda, ti sto guardando): cambiare la password ogni tanto. Puoi anche installare i cacciatori di rootkit per verificare un accesso inappropriato.

  • eseguire il backup dei dati importanti su qualcosa che si mantiene off-line. Quindi, anche se trovi qualcuno sul tuo sistema, puoi formattarlo e ricominciare con una nuova installazione e ripristinare i tuoi dati.


2
È possibile abbreviare sudo --reset-timestampa sudo -k, o sudo -Kper i più paranoici (necessario solo se l'attaccante può impostare il tempo di sistema per valori arbitrari, a quel punto probabilmente avete già perso).
Kevin,

Jups. Ho usato la versione lunga, quindi è chiaro cosa fa. "-k" fa lo stesso in effetti.
Rinzwind,

1
@mxdsp: la crittografia può impedire alle persone di leggere il contenuto delle partizioni crittografate, se la passphrase è abbastanza potente, ma potrebbe essere possibile estrarre la chiave di crittografia da un computer in esecuzione o arrestato di recente. Crypto è anche un campo in rapida evoluzione e dovrai tenere il passo con i nuovi sviluppi, per evitare che la tua crittografia diventi obsoleta e facilmente interrotta.
Kevin,

1
@mxdsp sì. Per uno: puoi formattare un disco e quando i dati sono spariti ... sei tu quello con i problemi.
Rinzwind,

1
La prima parte presuppone implicitamente nessuna crittografia del disco completo.
otus,

6

Si Loro possono.

Esistono diversi modi per farlo, e forzare brutalmente la sudopassword non è probabilmente il primo.

Prima di tutto, la sudopassword è la password dell'utente; quindi davvero ciò di cui avrebbero bisogno per ottenere è la tua password.

In secondo luogo, decifrare la password di un utente usando la forza bruta per accedere a un sistema è probabilmente l'ultima risorsa.

Ci sono modi molto più eleganti (ma soprattutto più efficaci) di irrompere in un altro sistema.

In genere un utente malintenzionato può semplicemente tentare di sfruttare le vulnerabilità più comuni (il più noto probabilmente sta ottenendo una shell utente in qualsiasi modo e sfruttare ShellShock per ottenere una shell root) o fare un ottimo lavoro sulla falsariga di:

  • Scansione delle porte aperte sul sistema per ottenere informazioni come:
    • Versione del sistema operativo
    • Esecuzione della versione dei servizi
  • Sfruttare il sistema operativo noto o eseguire i bug dei servizi (overflow del buffer, ...) per ottenere almeno una shell utente e quindi provare a ottenere una shell root (di nuovo, magari sfruttando ShellShock)

La forzatura bruta sudodella password / utente può essere un tentativo nel caso in cui una shell root non possa essere ottenuta altrimenti, ma ad esempio lo sfruttamento di un servizio in esecuzione come root non richiederà all'autore dell'attacco di forzare la sudopassword / dell'utente.


1
Grazie. in breve, significa che un utente malintenzionato non ha bisogno della password sudo per ottenere l'accesso come root?
mxdsp,

2
@mxdsp Esatto. Detto in questo modo: se un utente malintenzionato riesce a ottenere una shell utente sudoer con qualsiasi mezzo (ad esempio esplorando un programma in esecuzione di un utente sudoer), potrebbe utilizzare exploit noti (nella mia risposta ho citato il più infame) per ottenere una shell root, bypassando la necessità dell'utente / sudopassword. Ancora meglio, se riesce a sfruttare un servizio in esecuzione come root, è direttamente root.
kos,

1
@mxdsp Ora stiamo abbastanza generalizzando, ma guarda questo video per capire, ad esempio, come un utente senza sudodiritti (= ~ un utente con cui un utente malintenzionato ha effettuato l'accesso ma di cui l'utente non conosce la password) può ottenere un root shell semplicemente sfruttando i bug noti (in questo caso il famigerato ShellShock).
kos,

1
@mxdsp Da un lato non volevo dire utente sudoers, solo utente. Non è necessario, stavo solo pensando a troppe cose allo stesso tempo.
kos,

3
  1. Se negli ultimi anni ho imparato qualcosa sulla sicurezza, una cosa: nulla è impossibile .

  2. Finché hai accesso a una rete, sicuramente. Ogni servizio in esecuzione sul tuo sistema a cui è possibile accedere sulla rete è teoricamente vulnerabile e quindi un potenziale punto debole.

E quindi, per un attaccante con abbastanza idee è possibile. Puoi rendere il tuo sistema il più sicuro possibile, ma non puoi mai arrivare al 100% di sicurezza.

È quindi importante valutare ciò che è possibile con uno sforzo tecnico giustificabile e ciò che ti protegge così bene che tu stesso non puoi più lavorare.


Ho un accesso alla rete. Può essere più specifico su quanto possa essere probabile quel tipo di attacco?
mxdsp,

1
utilizzare un'autenticazione a due fattori. È necessario modificare PAM.D e così via.
Aizuddin Zali,

@Arronical il link è anche da questo forum e anche una guida molto bella.
Aizuddin Zali,

@Arronical l'ho inserito nel commento alla domanda. Questa guida
Aizuddin Zali,

Scusa @AizuddinZali Non ho aggiornato la pagina!
Arronical

2

So che la password sudo protegge il mio computer dall'hacking locale da parte di qualcuno che ha accesso fisico ad esso (modifica: in realtà, non lo fa). La mia password è abbastanza forte per questo scopo, ma so che non è abbastanza forte se qualcuno può forzarla a distanza. Qualcuno può accedere al mio computer in modalità root usando la mia password sudo senza accesso fisico al computer, su un'installazione desktop Ubuntu standard?

sudo password non è esclusivamente per la protezione locale, ma ha lo scopo di aggiungere un ulteriore livello di sicurezza all'utilizzo dei privilegi di root. Una buona discussione può essere trovata qui /superuser//a/771523/467316

La tua password potrebbe non essere forte come pensi. In questo momento sto craccando il 20-40% degli hash di Active Directory del mio client per quelli che ho visto prima, quelli che hanno regole di password sbagliate stanno diventando crackati al 70%. Consiglio 16 caratteri, password complesse. Le schede grafiche oclHashcat e Radeon possono causare molti danni. Aggiungi tutti i dump della password da ogni violazione negli ultimi 5 anni e tendi a ottenere un buon dizionario da cui lavorare.

Se stai usando SSH, apporta alcune modifiche in sshd_config

sudo nano /etc/ssh/sshd_config

I MUSTS appena usciti dal gate (l'ultimo per disabilitare il server ftp se non lo si utilizza).

Protocol 2
X11Forwarding no
PermitEmptyPasswords no
MaxAuthTries 5
#Subsystem sftp /usr/lib/openssh/sftp-server

Salvalo, riavvia ssh

sudo service ssh restart

Usa la crittografia della chiave pubblica Inizia creando una chiave sul tuo computer remoto (usando puttygen o qualunque sia il tuo sistema operativo disponibile). Copia la chiave pubblica sulla tua macchina Ubuntu sotto l'utente a cui desideri accedere come file authorized_keys (probabilmente dovrai crearla)

sudo nano /home/yourdumbusername/.ssh/authorized_keys

copia la chiave pubblica in questo formato

ssh-rsa 23r0jfjlawjf342rffjfa89pwfj8ewfew98pfrfj8428pfwa9fupfwfcajwfpawf8rfapfj9pf892jpfjpwafj8a where-ever-you-have-your-private-key-for-your-own-notes

salvalo e imposta sshd_config per consentire l'accesso con chiave pubblica

sudo nano /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

salva e riavvia ssh

sudo service ssh restart

Prova SSHing sul tuo host Ubuntu dal tuo computer con chiave privata usando la crittografia a chiave pubblica. Se tutto è andato bene, torna all'host Ubuntu e disabilita l'autenticazione della password.

sudo nano /etc/ssh/sshd_config

PasswordAuthentication no

Salva e riavvia ssh

sudo service ssh restart

Prova di nuovo a inviare da un computer con chiave privata per confermare.

Vuoi aggiungere altro? configura un account non privilegiato, gira PermitRootLogin no, riavvia ssh, aggiungi la tua chiave pubblica ai tasti autorizzati del nuovo account, accedi come account non privilegiato, su al tuo account root o privilegiato quando devi effettuare il root o privilegiare le cose.


2

Lo scopo di sudo non è legato alla password, ma invece di fornire ad alcuni utenti funzionalità di root, limitando gli altri su una macchina senza richiedere loro di presentare il login di root (password / chiave / token di sicurezza / ecc.). Ad esempio nel mio lavoro, i lavoratori quotidiani possono solo avviare / arrestare / installare e aggiornare le proprie stazioni (da un repository di veto della società) tramite sudo. A loro non vengono date le altre libertà di root come la rimozione / formattazione intenzionale dei dispositivi, l'aggiunta e la rimozione di utenti, la decisione su quali moduli del kernel debbano essere inseriti nella lista nera o cosa funziona in crontab (ecc., Ecc., Ecc.). Considerando che a casa tua, il tuo sudo consente l'accesso completo alla macchina. Per quanto riguarda la password, in realtà è la password del tuo account utente che sudo richiede (la stessa che useresti per accedere, se l'autologin non è abilitato.

Suggerimento errato : se si desidera rendere root un account normale su un unix abilitato per sudo (linux / apple osx) eseguire il seguente

sudo -s
passwd
Enter your unix password:

A questo punto root ha una password normale e puoi semplicemente disconnetterti e accedere come root con la password menzionata alla "vecchia maniera".

Per quanto riguarda la sicurezza, se un programma (ad esempio web server, mysql, daemon php, sshd) viene eseguito come un account elevato .. dire root e ha un exploit noto là fuori, gli aggressori potrebbero non aver bisogno di credenziali di sicurezza per ottenere l'accesso. Possono sfruttare la vulnerabilità del programma e generare una nuova shell da questo programma in esecuzione come root. Tuttavia, questo è piuttosto raro poiché i gestori di distro sono consapevoli di problemi simili e svolgono un lavoro eccezionale nella creazione di un ambiente predefinito ben ponderato e generalmente sicuro.

Nell'altro sistema operativo un'operazione simile a sudo sarebbe fare clic con il tasto destro ed eseguire come amministratore di sistema (o il privilegio di controllo dell'account utente).

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.