
Autenticazione, autorizzazione, tracciabilità e verificabilità per gli accessi SSH.

I Bastion sono un cluster di macchine utilizzato come punto di ingresso unico dai team operativi (come sysadmin, sviluppatori, amministratori di database, ...) per connettersi in modo sicuro a dispositivi (server, macchine virtuali, istanze cloud, apparecchiature di rete, ...), solitamente tramite ssh.
The Bastion fornisce meccanismi per autenticazione, autorizzazione, tracciabilità e auditabilità per l'intera infrastruttura.
Posizionandosi tra i tuoi utenti e la tua infrastruttura, The Bastion aggiunge un livello di astrazione in modo che la tua infrastruttura non abbia bisogno di conoscere individualmente i membri del tuo team operativo.
Ogni membro del team ha un account individuale su The Bastion e può essere membro di uno o più gruppi del bastion che possono concedergli l'accesso a una o più infrastrutture. I dispositivi dell'infrastruttura devono solo conoscere e fidarsi del/dei gruppo/i del bastion di cui fanno parte.
Il RBAC granulare di The Bastion consente di delegare alcune responsabilità a qualsiasi account, con ambito gruppo o esteso a tutto il bastion, inclusi account che potrebbero essere utilizzati dalla tua automazione per, ad esempio, gestire il ciclo di vita degli account (collegato al tuo sistema di gestione delle risorse umane, al tuo LDAP o AD), garantire che l'ACL di un gruppo sia aggiornata (collegato al tuo CMDB), ecc. I processi automatizzati sono facili da implementare tramite l'API JSON su SSH.
Vuoi saperne di più mentre guardi dei bei disegni? Ecco una serie di post del blog che approfondiscono le funzionalità principali e i principi di The Bastion:
Altre risorse che potrebbero interessarti:
Non è necessario nulla di speciale né sul lato di ingresso né su quello di uscita di The Bastion per farlo funzionare.
Solo il tuo vecchio e buon client ssh è necessario per connetterti attraverso di esso, e dall'altro lato, qualsiasi server sshd standard farà al caso tuo. Ciò include, ad esempio, dispositivi di rete su cui potresti non avere la possibilità di installare software personalizzato.
I dispositivi obsoleti che supportano solo algoritmi crittografici a bassa sicurezza o telnet possono essere nascosti da Internet tramite firewall e consentendo solo The Bastion, evitando così un compromesso di bassa sicurezza permettendo comunque solo connessioni ad alta sicurezza sul lato di ingresso del bastion.
Consulta la documentazione online o la corrispondente versione testuale nella cartella doc/.
Questo è un buon modo per testare The Bastion in pochi secondi, ma leggi le FAQ se sei seriamente intenzionato a usare la containerizzazione in produzione.
L'immagine sandbox è disponibile per le seguenti architetture: linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/s390x.
Eseguiamo l'immagine docker:
docker run -d -p 22 --name bastiontest ovhcom/the-bastion:sandbox
Tieni a portata di mano la tua chiave pubblica SSH, quindi configura il primo account amministratore:
docker exec -it bastiontest /opt/bastion/bin/admin/setup-first-admin-account.sh poweruser auto
Ora siamo attivi con la configurazione predefinita! Impostiamo un alias comodo per il bastion e testiamo il comando info:
PORT=$(docker port bastiontest | cut -d: -f2)
alias bastion="ssh [email protected] -tp $PORT -- "
bastion --osh info
Dovrebbe salutarti come amministratore del bastion, il che significa che hai accesso a tutti i comandi. Entriamo in modalità interattiva:
bastion -i
Questo è utile per chiamare più plugin --osh in sequenza. Ora possiamo chiedere aiuto per vedere tutti i plugin:
$> help
Se hai una macchina remota a cui vuoi connetterti tramite il bastion, recupera la tua chiave di uscita:
$> selfListEgressKeys
Copia questa chiave pubblica nella authorized_keys della macchina remota nella cartella .ssh/ dell'account a cui vuoi connetterti, quindi:
$> selfAddPersonalAccess --host <host_remoto> --user <nome_account_remoto> --port-any
$> ssh <nome_account_remoto>@<host_remoto>
Nota che puoi connetterti direttamente senza usare la modalità interattiva, con:
bastion <nome_account_remoto>@<host_o_ip_macchina_remota>
Questo è tutto! Ovviamente c'è molto di più; la documentazione è disponibile nella cartella doc/ e online.
Assicurati di controllare l'aiuto del bastion (bastion --help) e l'aiuto di ogni plugin osh (bastion --osh comando --help).
Inoltre, non dimenticare di personalizzare il tuo file bastion.conf, che si trova in /etc/bastion/bastion.conf (per Linux).
Le distribuzioni Linux riportate di seguito vengono testate con ogni rilascio, ma poiché si tratta di un prodotto di sicurezza, ti consigliamo caldamente di eseguirlo sull'ultima versione stabile aggiornata del tuo sistema operativo preferito:
Qualsiasi altra versione di Linux cosiddetta "moderna" non viene testata con ogni rilascio, ma dovrebbe funzionare con aggiustamenti minimi o nulli.
I seguenti sistemi operativi sono anche testati con ogni rilascio:
FreeBSD ha un supporto parziale per MFA, a causa del suo set ridotto di plugin pam disponibili. È possibile configurare il supporto per un fattore aggiuntivo (password o TOTP), ma non entrambi contemporaneamente.
perltidyperlcriticAnche con il processo di codifica più conservativo, prudente e paranoico, il codice contiene bug, quindi non ci si dovrebbe fidare ciecamente. Pertanto, il bastion non si fida del proprio codice. Sfrutta le primitive di sicurezza del sistema operativo per ottenere sicurezza aggiuntiva, come visto di seguito.
Utilizza il ben noto e affidabile Controllo di Accesso Discrezionale UNIX:
Lo script principale del bastion è dichiarato come shell di sistema dell'utente del bastion:
bash) sul sistemaIl codice è modulare
ssh ad altre macchineTutto il codice che necessita di privilegi di sistema estesi è separato dal codice principale, in moduli chiamati helper
sudosudoers è allegata a un gruppo di sistema specifico per il comando, che viene concesso agli account in base alle necessitàsyslog, che dovrebbe anche essere inviato a un server syslog remoto per garantire che nemmeno gli amministratori del bastion possano manomettere le loro tracce, e/osqlite3 per ricerche facilittyrec, sono forniti script di supporto per crittografare e inviare questi record a un archivio di escrow remotoUn elenco non esaustivo di strumenti correlati mantenuti dalla comunità:
Concesso in licenza secondo i termini della Apache License, Versione 2.0 (la "Licenza"); non puoi utilizzare questo file se non in conformità con la Licenza. Puoi ottenere una copia della Licenza all'indirizzo
http://www.apache.org/licenses/LICENSE-2.0
Salvo diversamente previsto dalla legge applicabile o concordato per iscritto, il software distribuito sotto la Licenza è distribuito "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, espresse o implicite. Vedi la Licenza per il linguaggio specifico che regola le autorizzazioni e le limitazioni previste dalla Licenza.
sudoers-T) viene utilizzata per tutto il codice eseguito sotto sudo, impedendo a qualsiasi input dell'utente di interferire con la logica, interrompendo immediatamente l'esecuzionesudo non si fida del chiamante e ricontrolla ogni inputViene operata un'interruzione del protocollo tra il lato di ingresso e quello di uscita, rendendo inefficaci la maggior parte delle vulnerabilità basate sul protocollo