Lxc container đường biên an ninh ở đâu?


8

Câu hỏi của tôi là xung quanh tính bảo mật của một container LXC.

Nếu tôi đang chạy nhiều container trên hộp của mình và cung cấp cho người dùng quyền truy cập ssh riêng vào container của họ, bất kỳ container nào trong số đó có thể hack vào các container khác trên hộp đó hoặc thậm chí cả máy chủ không?

Lxc container đường biên an ninh ở đâu?


bạn biết cần phải lo lắng về điều đó, AppArmor sẽ lo việc đó.
rdʒɑ

Câu trả lời:


8

Như tôi đã thấy về LXC Nó lưu trữ thông tin vùng chứa và (với kho lưu trữ sao lưu mặc định) hệ thống tập tin gốc dưới / var / lib / lxc. Các mẫu tạo container cũng có xu hướng lưu trữ thông tin phân phối được lưu trong bộ nhớ cache trong / var / cache / lxc.

Vì vậy, thông thường truy cập vào hệ thống tập tin gốc chỉ được phép quản trị trừ khi có hồ sơ người dùng cấu hình sai hoặc cấu hình sai trong khi tạo chúng.

Nhưng các nhà phát triển Ubuntu có thể đã đi đến điểm này và họ đã cung cấp một giải pháp an toàn với sự trợ giúp của AppArmor.

Các tàu LXC có hồ sơ Apparmor nhằm bảo vệ chủ nhà khỏi sự lạm dụng vô tình của đặc quyền bên trong container. Chẳng hạn, container sẽ không thể ghi vào /proc/sysrq-triggerhoặc vào hầu hết /syscác tệp.

Cấu hình usr.bin.lxc-start được nhập bằng cách chạy lxc-start. Cấu hình này chủ yếu ngăn lxc-start gắn các hệ thống tệp mới bên ngoài hệ thống tệp gốc của bộ chứa. Trước khi thực hiện init của container, LXC yêu cầu chuyển sang cấu hình của container. Theo mặc định, cấu hình này là chính sách mặc định lxc-container được xác định trong /etc/apparmor.d/lxc/lxc-default. Cấu hình này ngăn không cho container truy cập vào nhiều đường dẫn nguy hiểm và gắn hầu hết các hệ thống tệp.

Nếu bạn thấy rằng lxc-start bị lỗi do quyền truy cập hợp pháp bị từ chối bởi chính sách Apparmor của nó, bạn có thể vô hiệu hóa hồ sơ bắt đầu lxc bằng cách thực hiện:

sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/

Điều này sẽ làm cho lxc-start chạy không được kiểm soát, nhưng tiếp tục giới hạn chính container. Nếu bạn cũng muốn tắt chức năng giam cầm của container, ngoài việc vô hiệu hóa usr.bin.lxc-starthồ sơ, bạn phải thêm:

lxc.aa_profile = unconfined

vào tập tin cấu hình của bộ chứa. Nếu bạn muốn chạy một container trong một cấu hình tùy chỉnh, bạn có thể tạo một cấu hình mới bên dưới /etc/apparmor.d/lxc/. Tên của nó phải bắt đầu bằng lxc- để lxc-start được phép chuyển sang cấu hình đó. Sau khi tạo chính sách, tải nó bằng cách sử dụng:

sudo apparmor_parser -r /etc/apparmor.d/lxc-containers

Hồ sơ sẽ tự động được tải sau khi khởi động lại, bởi vì nó có nguồn gốc từ tệp /etc/apparmor.d/lxc-containers. Cuối cùng, để làm cho CN container sử dụng mới này lxc-CN-profile, hãy thêm dòng sau vào tệp cấu hình của nó:

lxc.aa_profile = lxc-CN-profile

lxc-execute không nhập vào hồ sơ Apparmor, nhưng thùng chứa nó sinh ra sẽ bị giới hạn.


Rất cám ơn câu trả lời của bạn. Vì vậy, bạn có nói rằng nó an toàn nếu tôi sử dụng AppArmor?
iCode

@iCode, Có appArmor được thiết kế để bảo vệ các ứng dụng Ubuntu và LXC cũng nhận được sự hỗ trợ tuyệt vời về mặt bảo mật nếu bạn sử dụng AppArmor.
rdʒɑ

AppArmor không phải là tất cả, ví dụ tôi thấy dmesgcó thể được gọi từ bất kỳ vùng chứa nào (ít nhất là trong cấu hình mặc định). Tôi sợ đó không phải là rủi ro bảo mật duy nhất ...
Daniel Alder
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.