Bagaimana cara mencegah agar pengguna dari wadah buruh pelabuhan yang dibuat sebelumnya tidak dapat mengakses sebuah shell di dalam instance yang berjalan dari wadah itu? Saya telah googled dan membaca semua posting yang terkait dengan skenario ini dan muncul tanpa solusi yang berfungsi. Saya mencoba untuk mencegah akses ke sumber daya yang diberikan dalam wadah, demi penyelidikan ini, katakanlah ini adalah nomor seri dalam file konfigurasi. Saya membangun berdasarkan java: 7 gambar yang didasarkan pada gambar ubuntu .
Untuk menguji solusi Anda, lakukan hal berikut:
Buat dan jalankan wadah buruh pelabuhan Anda
Ekspor kontainer Anda
ekspor buruh pelabuhan [nama wadah] | gzip -c> mycontainer.tar.gz
Impor wadah Anda pada sistem eksternal
gzip -dc mycontainer.tar.gz | impor buruh pelabuhan - [nama wadah]
Jalankan wadah
Shell ke wadah berjalan menggunakan salah satu / semua metode berikut:
docker exec -it [nama wadah] bash
buruh pelabuhan melampirkan [nama wadah]
run docker -ti --entrypoint = / bin / bash [nama wadah]
[nama wadah] adalah nama wadah Anda
bash, dash, dan sh adalah semua shell yang valid
Jawaban:
Khusus untuk
bash
perintah, saya menambahkan file .bashrcexit
pada akhir file, jadi pengguna log in dan akhirnya ditendang keluar, tetapi pengguna masih dapat menggunakansh
perintah.sumber
Untuk menambahkan jawaban Jose, solusi lain adalah dengan ...
Itu menghilangkan sh dan perintah bin yang berguna di linux. Saya tidak yakin apa yang akan Anda lakukan untuk masuk ke wadah pada saat itu. Meskipun saya tahu bahwa Anda mungkin dapat menggunakan debugger memori untuk mendapatkan variabel lingkungan dari wadah yang sedang berjalan, tetapi membuatnya jauh lebih menyebalkan ... Saya ingin tahu apakah ada cara untuk mengunci memori itu di cincin 0 dan mengambilnya akses ssh sama sekali ke host.
Jika ada yang tahu cara memecahkannya, saya akan tertarik mengetahui caranya.
EDIT
Anda ingin menggunakan rahasia buruh pelabuhan jika Anda melindungi informasi sensitif. Periksa:
https://docs.docker.com/engine/swarm/secrets/
sumber
docker exec -it 'container-id' /bin/rm -R /bin/*
Docker version 18.09.6, build 481bc77156
. The pendekatan dengan@ty01
memberikan pesan kesalahan ini/bin/rm: cannot remove '/bin/<filename>': No such file or directory
untuk semuafilename
s di/bin
. The jawaban dengan@Dr. Knowitall
pengembalianError: No such container: :id
. Bahkan jika saya gantiid
denganCONTAINER_ID
daridocker ps
, masih memberikan pesan kesalahan yang sama.Jika informasi yang ingin Anda lindungi adalah nomor seri, maka mengenkripsi informasi itu adalah satu-satunya cara pasti untuk melindunginya. Anda dapat memilih berbagai cara untuk mengenkripsi data rahasia, pastikan Anda menggunakan kunci yang kuat. Anda juga dapat membuat aplikasi Anda mengirim data rahasia ke server Anda untuk mengidentifikasi validitasnya dan berdasarkan pada balasan dari server Anda, aplikasi tersebut dapat terus bekerja atau berhenti dan menampilkan pesan.
Singkatnya, selalu asumsikan bahwa aplikasi Anda dapat dibedah sepenuhnya dan menyeluruh. Selalu mengenkripsi semua data rahasia dan penting menggunakan kunci yang kuat sehingga memecahkan kunci akan memakan waktu yang sangat lama (asumsikan bahwa algoritma enkripsi tersedia untuk umum atau terkenal).
Mencegah akses sendirian bahkan jika Anda menemukan cara untuk melakukannya hanya akan memberikan rasa aman yang salah.
sumber