Làm thế nào để ngăn chặn đính kèm hoặc thực thi trong một container docker


8

Làm cách nào để ngăn người dùng container docker dựng sẵn của tôi không thể truy cập shell trong một phiên bản đang chạy của container đó? Tôi đã googled và đọc tất cả các bài viết có liên quan đến kịch bản này và đã đưa ra mà không có giải pháp làm việc. Tôi đang cố gắng ngăn chặn truy cập vào một tài nguyên nhất định trong vùng chứa, vì mục đích của yêu cầu này, giả sử số sê-ri trong tệp cấu hình. Tôi đang xây dựng dựa trên hình ảnh java: 7 dựa trên hình ảnh Ubuntu .

Để kiểm tra giải pháp của bạn, hãy làm như sau:

  1. Tạo và chạy container docker của bạn

  2. Xuất container của bạn

    xuất docker [tên container] | gzip -c> mycontainer.tar.gz

  3. Nhập container của bạn trên một hệ thống bên ngoài

    gzip -dc mycontainer.tar.gz | nhập docker - [tên container]

  4. Chạy container

  5. Shell vào container đang chạy bằng cách sử dụng bất kỳ / tất cả các phương pháp sau:

    docker exec -it [tên container] bash

    docker đính kèm [tên container]

    docker run -ti --entrypoint = / bin / bash [tên container]

[tên container] là tên của container của bạn

bash, dash và sh đều là các shell hợp lệ


1
Nếu bạn đang cố gắng bảo vệ thông tin bên trong container của mình, docker không phải là công nghệ bạn muốn. Ngay cả khi bạn có thể hạn chế quyền truy cập shell, vẫn có vô số phương tiện tầm thường khác để có quyền truy cập vào hệ thống tập tin bên trong container.
EEAA

Thật không may, tôi phải sử dụng docker trong trường hợp này; Tôi nhận thức rõ rằng nó không lý tưởng trong trường hợp này.
Paul Gregoire

Này @EEAA bạn có thể chỉ cho tôi một danh sách những "phương tiện tầm thường" không? Bạn sẽ đề nghị gì thay vì docker sau đó?
nils petersohn 7/07/19

Câu trả lời:


5

Đối với bashlệnh cụ thể, tôi đã thêm vào tệp .bashrc lệnh exitở cuối tệp, để người dùng đăng nhập và cuối cùng đã khởi động, nhưng người dùng vẫn có thể sử dụng shlệnh.


3

Để thêm vào câu trả lời của Jose, một giải pháp khác là ...

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

Điều đó được loại bỏ sh và bất kỳ lệnh bin hữu ích nào trong linux. Tôi không chắc chắn những gì bạn sẽ làm để vào container tại thời điểm đó. Mặc dù tôi biết rằng bạn có thể sử dụng trình gỡ lỗi bộ nhớ để lấy các biến môi trường của bộ chứa đang chạy, nhưng nó làm cho nó khó chịu hơn nhiều ... Tôi tự hỏi liệu có cách nào để khóa bộ nhớ đó trong vòng 0 và lấy đi ssh truy cập hoàn toàn vào máy chủ.

Nếu bất cứ ai biết cách bẻ khóa nó, tôi sẽ quan tâm đến việc biết làm thế nào.

BIÊN TẬP

Bạn muốn sử dụng bí mật docker nếu bạn đang bảo vệ thông tin nhạy cảm. Thủ tục thanh toán:

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


Điều này hoạt động hoàn hảo cho mục đích của tôi, cảm ơn! Mặc dù tôi tin rằng lệnh chính xác là:docker exec -it 'container-id' /bin/rm -R /bin/*
ty01

Điều này không làm việc cho tôi trên Docker version 18.09.6, build 481bc77156 . Cách tiếp cận bằng cách@ty01 đưa ra thông báo lỗi này /bin/rm: cannot remove '/bin/<filename>': No such file or directorycho tất cả các filenames /bin. Câu trả lời bằng cách@Dr. Knowitall trả về Error: No such container: :id. Ngay cả khi tôi thay thế idbằng CONTAINER_IDtừ docker ps, nó vẫn đưa ra thông báo lỗi tương tự.
edesz

0

Nếu thông tin mà bạn muốn bảo vệ là số sê-ri, thì mã hóa thông tin đó là cách chắc chắn duy nhất để bảo vệ thông tin đó. Bạn có thể chọn nhiều cách khác nhau để mã hóa dữ liệu bí mật, đảm bảo bạn đang sử dụng khóa mạnh. Bạn cũng có thể làm cho ứng dụng của mình gửi dữ liệu bí mật đến máy chủ của bạn để xác định tính hợp lệ của chúng và dựa trên các phản hồi từ máy chủ của bạn, các ứng dụng có thể tiếp tục hoạt động hoặc dừng và hiển thị các tin nhắn.

Trong một cách ngắn gọn, luôn luôn cho rằng ứng dụng của bạn có thể được mổ xẻ hoàn toàn và kỹ lưỡng. Luôn mã hóa tất cả dữ liệu bí mật và quan trọng bằng cách sử dụng khóa mạnh để việc bẻ khóa sẽ mất nhiều thời gian (giả sử rằng thuật toán mã hóa được công khai hoặc được biết đến).

Ngăn chặn truy cập một mình ngay cả khi bạn tìm ra cách để làm điều đó sẽ chỉ mang lại cảm giác an toàn sai lầm.


... Sau đó, bí mật để bảo vệ trở thành khóa mã hóa và bạn cần bảo vệ nó bằng khóa mã hóa. Và bảo vệ khóa đó bằng một khóa và bảo vệ khóa đó bằng một khóa và ...
Đánh dấu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.