2016-08-10 30 views
5

Cho phép nói rằng tôi kéo một hình ảnh mới từ kho lưu trữ trung tâm và chạy nó mà không xem nội dung của dockerfile. Container hoặc hình ảnh có thể ảnh hưởng đến máy chủ của tôi theo bất kỳ cách nào có thể không?Docker Host Security - Container có thể chạy mã nguy hiểm hoặc thay đổi máy chủ từ bên trong thùng chứa không?

Vui lòng cho tôi biết vì tôi sẽ chạy danh sách hình ảnh từ tên người dùng được nhập vào hình ảnh trên máy chủ của tôi. Tôi lo lắng nếu nó sẽ ảnh hưởng đến máy chủ/máy chủ.

Trả lời

8

Với việc thực thi mặc định hình ảnh, câu trả lời là không có điều kiện. Các khả năng của hạt nhân bị giới hạn, hệ thống tập tin bị hạn chế, không gian xử lý được phân lập và nó nằm trên một mạng cầu nối riêng biệt từ máy chủ. Bất kỳ thứ gì cho phép truy cập trở lại máy chủ sẽ là một lỗ hổng bảo mật.

Phần có điều kiện là nó có thể sử dụng hết tất cả các chu kỳ CPU của bạn, nó có thể làm cạn kiệt bộ nhớ của bạn, nó có thể lấp đầy ổ đĩa của bạn, và nó có thể gửi lưu lượng mạng từ máy của bạn NAT'ed đến địa chỉ IP của bạn. Nói cách khác, theo mặc định, không có gì ngăn cản vùng chứa khỏi cuộc tấn công DoS trên máy chủ lưu trữ của bạn.

Trình kết nối không có khả năng giới hạn nhiều thứ trong số này, bao gồm bộ nhớ giới hạn, hạn chế các quy trình ưu tiên của CPU và có các giải pháp hạn ngạch cho hệ thống tệp.

Bạn cũng có thể đi theo hướng khác và đưa máy chủ lưu trữ vào vùng chứa, tạo lỗ hổng bảo mật hiệu quả. Điều này sẽ bao gồm khối lượng lưu trữ gắn kết, đặc biệt là docker.sock bên trong vùng chứa, loại bỏ các hạn chế về khả năng hạt nhân với --privileged và loại bỏ sự cách ly mạng với --net=host. Việc thực hiện bất kỳ việc nào trong số này với một thùng chứa sẽ tắt các bảo vệ mà Docker cung cấp theo mặc định.

Trình kết nối có mức độ cô lập thấp hơn máy ảo do cách chia sẻ hạt nhân với máy chủ. Vì vậy, nếu mã bạn đang chạy có chứa một hạt nhân hoặc phần cứng vật lý khai thác, có thể truy cập vào máy chủ. Vì lý do này, nếu bạn đang chạy mã không đáng tin cậy, bạn có thể muốn xem xét linuxkit, cung cấp một hệ điều hành dựa trên thùng chứa nhẹ để chạy bên trong một vm. Điều này được sử dụng để cung cấp các os moby chạy dưới hyperv/xhyve trên docker cho windows/mac.

+1

Để thậm chí tự bảo vệ mình trước các khai thác hạt nhân có thể, bạn có thể xem tại https://docs.docker.com/engine/security/security/#/other-kernel-security-features – Ohmen

Các vấn đề liên quan