How can two-man control be implemented with minimal overhead?
TL; DR Questo può essere ottenuto utilizzando un comando speciale sudo
che richiede che una seconda persona approvi ciascun comando, combinato con una bella lista bianca per rendere più comodi i comandi più sicuri. È importante che ogni comando sia approvato dalla regola di due uomini oppure che la protezione sia facilmente sconfitta.
Opzioni di implementazione di regole a due:
Unconstrained root access
Abilita root
accesso temporaneo
Un piccolo script di root potrebbe richiedere una seconda persona (Utente A) da autorizzare prima che sudo
diventi disponibile per il sysadmin che agisce (Utente B)
-
Utente A: enable-sudo user-b
(aggiunge automaticamente una voce a /etc/sudoers
con un limite di tempo o una rimozione pianificata tramite% lavoro diat
)
-
Utente B: sudo do stuff
inizierà a funzionare a questo punto
Sfortunatamente, una User-back potrebbe essere facilmente aggiunta dall'utente B una volta che l'Utente A ha autorizzato l'accesso. Potrebbe essere semplice come aggiungere nuovamente user-b
a /etc/sudoers
o avviare un servizio separato.
Non è possibile applicare con sicurezza le regole di sicurezza una volta che qualcuno ha guadagnato root
(poiché è "non vincolato"), quindi dovresti monitorare segretamente le possibilità di bypass più probabili e avvisare un altro sysadmin (più affidabile) se qualcosa inizia dispari dopo l'abilitazione di due persone di sudo
.
- imprevisto
at
o cron
lavoro
- processo in background inatteso ancora in esecuzione
- script di avvio imprevisto
E non dire loro esattamente quali misure di sicurezza stai usando. Ciò aiuterà contro le backdoor ovvie, specialmente se user-b
non ha familiarità con le protezioni in atto, ma non ostacolerà un user-b
che è determinato a causare problemi.
Regola a due uomini basata su comando
Crea la tua versione di sudo
, che avverte la seconda persona di qualsiasi comando suggerito dalla prima persona, con la possibilità di approvare o rifiutare.
Non inserirò qui i dettagli di implementazione, ma sarebbe piuttosto semplice da implementare.
In questo caso, una backdoor dovrebbe essere nascosta all'interno di uno dei file forniti, ad esempio un aggiornamento software da installare.
Modifica di file con vim
La tua versione personalizzata di sudo
non dovrebbe consentire l'avvio di comandi di modifica diretta dei file. Se qualcuno digita oursudo vi
, quindi oursudo
dovrà avviare uno script speciale per la modifica dei file.
- Copia il file in una posizione
/tmp
(nome file generato casualmente per impedire attacchi con collegamenti simbolici)
- Avvia
vim
con privilegi ridotti a un account non root
(quindi user-b
non può utilizzare la funzione "Salva con nome" in vim
per ignorare questo wrapper)
- Quando il salvataggio è completato, presenta un
diff
del file modificato in user-a
.
- Una volta approvato, copia il file approvato da
/tmp
nella posizione di destinazione.
Barriere fisiche
Richiedere l'accesso fisico per ottenere l'accesso root
potrebbe aiutare a dare visibilità a ciò che user-b
sta facendo. A seconda dell'ambientazione dell'ufficio, il team può avere un indizio su che cosa è user-b
fino a, e / o user-b
potrebbe essere meno comodo causando problemi in quell'ambiente. Dipende da quanto spesso è necessario tale accesso.
Problemi: root
= non vincolato
Come puoi ricavare dalle idee che ho sollevato, non sembra esserci un fuoco sicuro per proteggere dalle installazioni di back-door. root
è progettato per non permetterlo.
I comandi della white list si avvicinano (vincolano l'accesso root)
La cosa migliore è creare una whitelist di comandi disponibili. (che sudo
ha la capacità di offrire) Questo crea un overhead significativo all'inizio, ma alla fine può diventare più pratico man mano che impari il comando che sono comunemente usati.
Deploying application updates
Le tue applicazioni non dovrebbero essere eseguite su accesso root. Quelli che devono passare attraverso un sistema di Code Review separato e quindi gli aggiornamenti dal commit VCS approvato possono essere inclusi.
Patching [packaged] software
Questo non può essere limitato, quindi suggerirei di utilizzare la regola a due mani Comando-base descritta sopra.
Troubleshooting
Gli strumenti sicuri possono essere consentiti tramite sudo
, quindi utilizzare la regola a due uomini basata su comando per applicare la correzione.