Come impedire il collegamento o l'esecuzione in un contenitore finestra mobile


9

Come impedire a un utente del mio contenitore finestra mobile predefinito di accedere a una shell all'interno di un'istanza in esecuzione di quel contenitore? Ho cercato su Google e letto tutti i post relativi a questo scenario e sono usciti senza una soluzione funzionante. Sto cercando di impedire l'accesso a una determinata risorsa nel contenitore, per il bene di questa inchiesta, diciamo che è un numero seriale in un file di configurazione. Sto costruendo l'immagine java: 7 che si basa su un'immagine ubuntu .

Per verificare la tua soluzione, procedi come segue:

  1. Crea ed esegui il contenitore della finestra mobile

  2. Esporta il tuo contenitore

    esportazione docker [nome contenitore] | gzip -c> mycontainer.tar.gz

  3. Importa il tuo contenitore su un sistema esterno

    gzip -dc mycontainer.tar.gz | importazione docker - [nome contenitore]

  4. Esegui il contenitore

  5. Shell nel contenitore in esecuzione utilizzando uno / tutti i seguenti metodi:

    docker exec -it [nome contenitore] bash

    docker attach [nome contenitore]

    docker run -ti --entrypoint = / bin / bash [nome contenitore]

[nome contenitore] è il nome del tuo contenitore

bash, dash e sh sono tutte shell valide


1
Se stai cercando di proteggere le informazioni all'interno del tuo contenitore, la finestra mobile non è la tecnologia che desideri. Anche se sei stato in grado di limitare l'accesso alla shell, ci sono una miriade di altri mezzi banali per ottenere l'accesso al filesystem all'interno del contenitore.
EEAA,

Sfortunatamente devo usare la finestra mobile in questo caso; Sono ben consapevole che in questo caso non è l'ideale.
Paul Gregoire,

Ehi, @EEAA, potresti indicarmi un elenco di quei "mezzi banali"? Cosa suggeriresti invece di docker allora?
nils petersohn,

Risposte:


5

Per il bashcomando in particolare, ho aggiunto nel file .bashrc il comando exitalla fine del file, in modo che l'utente acceda e alla fine abbia eliminato, ma gli utenti possono ancora utilizzare il shcomando.


3

Per aggiungere alla risposta di Jose, un'altra soluzione è quella di ...

docker exec :id -it /bin/rm -R /bin/*

Ciò elimina sh e qualsiasi comando utile bin in linux. Non sono sicuro di cosa faresti per entrare nel container a quel punto. Anche se so che potresti essere in grado di utilizzare un debugger di memoria per ottenere variabili di ambiente del contenitore in esecuzione, ma lo rende molto più fastidioso ... Mi chiedo se c'è un modo per bloccare quella memoria nell'anello 0 e portare via accesso ssh completamente all'host.

Se qualcuno sapesse come risolverlo, sarei interessato a sapere come.

MODIFICARE

Vuoi usare i segreti della finestra mobile se stai proteggendo le informazioni sensibili. Check-out:

https://docs.docker.com/engine/swarm/secrets/


Questo funziona perfettamente per i miei scopi, grazie! Anche se credo che il comando corretto sia:docker exec -it 'container-id' /bin/rm -R /bin/*
ty01

Questo non funziona per me Docker version 18.09.6, build 481bc77156 . L' approccio di@ty01 dà questo messaggio di errore /bin/rm: cannot remove '/bin/<filename>': No such file or directoryper tutti filenamei messaggi /bin. La risposta@Dr. Knowitall restituisce Error: No such container: :id. Anche se sostituisco idcon il CONTAINER_IDda docker ps, viene comunque visualizzato lo stesso messaggio di errore.
edesz,

0

Se le informazioni che si desidera proteggere sono un numero seriale, la crittografia di tali informazioni è l'unico modo sicuro per proteggerle. Puoi scegliere vari modi per crittografare i dati segreti, assicurati di utilizzare una chiave avanzata. Puoi anche fare in modo che la tua applicazione invii dati segreti al tuo server per identificarne la validità e in base alle risposte del tuo server le app possono continuare a funzionare o fermarsi e mostrare messaggi.

In breve, supponi sempre che la tua applicazione possa essere sezionata completamente e accuratamente. Crittografa sempre tutti i dati segreti e importanti usando una chiave forte in modo che il cracking della chiave richiederà molto tempo (supponi che l'algoritmo di crittografia sia pubblicamente disponibile o ben noto).

Prevenire l'accesso da solo anche se trovi un modo per farlo darà solo un falso senso di sicurezza.


... quindi il segreto da proteggere diventa la chiave di crittografia e devi proteggerla con una chiave di crittografia. E proteggi quella chiave con una chiave e proteggi quella chiave con una chiave e ...
Segna il
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.