3 lý do tại sao bạn không nên chạy Docker mà không có sudo
Docker là một trong những nền tảng container hóa được sử dụng nhiều nhất và rất được các kỹ sư phần mềm yêu thích. Nó đi kèm với một công cụ CLI mạnh mẽ để quản lý các thùng chứa Docker và các tác vụ liên quan khác.
Theo mặc định, bạn cần có quyền root để chạy bất kỳ lệnh nào liên quan đến Docker trên Linux. Tất nhiên, bạn có thể thay đổi điều này để thuận tiện và chạy các lệnh Docker mà không cần quyền root, nhưng bạn nên biết về các tác động bảo mật.
Mục Lục
Docker Attack Surface là gì?
Bề mặt tấn công là số lượng điểm tấn công, giống như số lượng cửa sổ, mà người dùng độc hại có thể sử dụng để xâm nhập vào hệ thống của bạn và gây ra sự tàn phá. Theo nguyên tắc thông thường, các hệ thống CNTT nên có bề mặt tấn công tối thiểu để giảm rủi ro bảo mật.
Nói chung, bề mặt tấn công của Docker là rất nhỏ. Các vùng chứa chạy trong một môi trường biệt lập an toàn và không ảnh hưởng đến hệ điều hành máy chủ trừ khi có các trường hợp khác. Ngoài ra, bộ chứa Docker chỉ chạy các dịch vụ tối thiểu giúp nó an toàn hơn.
Bạn có thể định cấu hình hệ thống Linux của mình để kiểm soát Docker mà không cần đặc quyền sudo. Điều này có thể thuận tiện trong môi trường phát triển nhưng có thể là một lỗ hổng bảo mật nghiêm trọng trong các hệ thống sản xuất. Và đây là lý do tại sao bạn không bao giờ nên chạy Docker mà không có sudo.
1. Khả năng kiểm soát Docker Container
Nếu không có đặc quyền sudo, bất kỳ ai có quyền truy cập vào hệ thống hoặc máy chủ của bạn đều có thể kiểm soát mọi khía cạnh của Docker. Họ có quyền truy cập vào các tệp nhật ký Docker của bạn và có thể dừng và xóa các vùng chứa theo ý muốn hoặc vô tình. Bạn cũng có thể mất dữ liệu quan trọng cần thiết cho hoạt động kinh doanh liên tục.
Nếu bạn đang sử dụng bộ chứa Docker trong môi trường sản xuất, thời gian ngừng hoạt động sẽ dẫn đến việc mất đi hoạt động kinh doanh và niềm tin.
2. Giành quyền kiểm soát các thư mục hệ điều hành máy chủ
Docker Volumes là một dịch vụ mạnh mẽ cho phép bạn chia sẻ và duy trì dữ liệu bộ chứa bằng cách ghi dữ liệu đó vào một thư mục được chỉ định trên Hệ điều hành máy chủ.
Một trong những mối đe dọa lớn nhất khi chạy Docker mà không có sudo là bất kỳ ai trên hệ thống của bạn đều có thể giành quyền kiểm soát các thư mục của hệ điều hành máy chủ, bao gồm cả thư mục gốc.
Tất cả những gì bạn phải làm là chạy một hình ảnh Linux Docker, chẳng hạn như hình ảnh Ubuntu và gắn nó vào thư mục gốc bằng lệnh sau:
docker run -ti -v /:/hostproot ubuntu bash
Và vì các bộ chứa Linux Docker chạy với tư cách là người dùng root, nên về cơ bản, điều đó có nghĩa là bạn có quyền truy cập vào toàn bộ thư mục gốc.
Lệnh nói trên sẽ tải xuống và chạy hình ảnh Ubuntu mới nhất và gắn nó vào thư mục gốc.
Trên thiết bị đầu cuối bộ chứa Docker, hãy chuyển đến /hostproot thư mục sử dụng lệnh cd:
cd /hostproot
Liệt kê nội dung của thư mục này bằng lệnh ls hiển thị tất cả các tệp của Hệ điều hành máy chủ hiện có sẵn trong vùng chứa của bạn. Giờ đây, bạn có thể thao tác với tệp, xem tệp bí mật, ẩn và bỏ ẩn tệp, thay đổi quyền, v.v.
3. Cài đặt phần mềm độc hại
Hình ảnh Docker được tạo thủ công tốt có thể chạy trong nền và điều khiển hệ thống của bạn hoặc thu thập dữ liệu nhạy cảm. Tệ hơn nữa, một người dùng độc hại có thể phát tán mã độc hại trên mạng của bạn thông qua bộ chứa Docker.
Có một số trường hợp sử dụng thực tế của bộ chứa Docker và với mỗi ứng dụng sẽ có một loạt các mối đe dọa bảo mật khác nhau.
Bảo mật các Docker Container của bạn trên Linux
Docker là một nền tảng mạnh mẽ và an toàn. Chạy Docker mà không có sudo làm tăng bề mặt tấn công của bạn và khiến hệ thống của bạn dễ bị tấn công. Trong môi trường sản xuất, bạn nên sử dụng sudo với Docker.
Với rất nhiều người dùng trên một hệ thống, việc gán quyền cho từng người dùng trở nên vô cùng khó khăn. Trong những trường hợp như vậy, việc tuân theo các biện pháp kiểm soát truy cập tốt nhất có thể giúp bạn duy trì tính bảo mật cho hệ thống của mình.