Tại sao chúng ta 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 Docker container và những 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 hãy chú ý tới những tác động bảo mật.
Docker Attack Surface là gì?
Attack Surface là số đ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ó Attack Surface tối thiểu để giảm rủi ro bảo mật.
Nói chung, Attack Surface của Docker rất nhỏ. Các container 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 host trừ khi có các trường hợp khác. Ngoài ra, Docker container chỉ chạy các service tối thiểu giúp nó an toàn hơn.
Bạn có thể 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.
Tai sao không nên chạy Docker mà không có sudo?
Và dưới đây là lý do tại sao bạn không bao giờ nên chạy Docker mà không có sudo.
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 file nhật ký Docker của bạn, có thể dừng và xóa các container 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 Docker container trong môi trường sản xuất, thời gian ngừng hoạt động sẽ dẫn đến việc ảnh hưởng đến hoạt động kinh doanh và mất đi niềm tin của khách hàng.
Giành quyền kiểm soát các thư mục hệ điều hành host
Docker Volumes là một service mạnh mẽ cho phép bạn chia sẻ và duy trì dữ liệu container 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 host.
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 host, bao gồm cả thư mục root.
Tất cả những gì bạn phải làm là chạy một image Linux Docker, chẳng hạn như image Ubuntu và mount nó vào thư mục root bằng lệnh sau:
docker run -ti -v /:/hostproot ubuntu bash
Và vì các Linux Docker container 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 root.
Lệnh nói trên sẽ tải xuống và chạy image Ubuntu mới nhất và mount nó vào thư mục root.
Trên Docker container terminal, hãy chuyển đến thư mục /hostproot bằ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 file của hệ điều hành host hiện có sẵn trong container của bạn. Giờ đây, bạn có thể thao tác với file, xem file bí mật, ẩn và bỏ ẩn file, thay đổi quyền, v.v…
Cài đặt phần mềm độc hại
Image 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 Docker container.
Có một số trường hợp sử dụng thực tế của Docker container 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 trên Linux bằng cách nào?
Docker là một nền tảng mạnh mẽ và bảo mật. Chạy Docker mà không có sudo làm tăng Attack Surface 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.
Trên đây là những lý giải tại sao bạn không nên chạy Docker mà không có sudo. Hãy đọc kỹ trước khi thực hiện nhé.
Nguồn bài: Quantrimang
Mọi người cùng tìm kiếm: attack surface là gì