chroot là gì? Cách chroot hoạt động trong Linux | Học CNTT cùng FUNiX

chroot là gì? Cách chroot hoạt động trong Linux

Chia sẻ kiến thức 26/06/2023

Lệnh chroot tạo ra một môi trường biệt lập trên Linux bằng cách thay đổi thư mục gốc cho tất cả các tiến trình đang chạy.

 

Bạn đang muốn chạy một số ứng dụng hoặc dịch vụ trong một không gian biệt lập trên Linux? Bạn muốn kiểm tra và gỡ lỗi một ứng dụng mà không ảnh hưởng đến phần còn lại của hệ thống? Nếu vậy, bạn sẽ muốn tìm hiểu về chroot, một cơ chế mạnh mẽ được tích hợp trong Linux cho phép bạn tạo một môi trường riêng biệt trong hệ thống của mình.
 

Hãy cùng FUNiX tìm hiểu về chroot một cách chi tiết, các lợi ích của nó, các trường hợp sử dụng, cách thiết lập nó trên hệ thống Linux cũng như cách thoát khỏi nó nếu cần.

Chroot trong Linux là gì?

trình diễn lệnh chroot

chroot hoặc change-root được cho là một trong những dạng phần mềm lâu đời nhất cho phép người dùng sử dụng các ứng dụng và dịch vụ sandbox (hộp cát) một cách an toàn. Sandboxing, theo thuật ngữ điện toán, là quá trình cô lập một chương trình trong một không gian hạn chế với các tài nguyên được xác định trước.

Nếu bạn đã quen thuộc với Docker và cách thức hoạt động của nó, bạn có thể coi chroot là một phiên bản rút gọn nhiều của nó. chroot hoạt động bằng cách thay đổi thư mục gốc của chương trình, hạn chế quyền truy cập và khả năng hiển thị, đồng thời cung cấp thêm một lớp cách ly và bảo mật.

Về cơ bản, bạn tạo một thư mục riêng, sao chép tất cả các  phần phụ thuộc (dependencies) của chương trình vào thư mục mới, sau đó chạy lệnh chroot. Điều này cho phép chương trình hoạt động bình thường nhưng không có quyền truy cập vào hệ thống tệp cơ sở.

 

chroot một chương trình là một cách tuyệt vời để kiểm tra độ tin cậy của nó trong một không gian an toàn mà không làm thay đổi các tệp của hệ thống thực tế. Ngoài ra, bạn cũng có thể giảm rủi ro bảo mật do gói bị chỉnh sửa gây ra vì trong môi trường chroot, gói sẽ không thể truy cập và sửa đổi các tệp hệ thống nhạy cảm.

Chương trình sẽ chỉ có thể truy cập và xem các tệp được nhập vào thư mục chroot, còn được gọi là “chroot jail” (nghĩa đen là nhà tù chroot). Điều này giữ cho chương trình và các quy trình phụ của nó không can thiệp vào hệ thống cơ sở.

chroot jail là gì?

chroot jail là một môi trường biệt lập nơi các chương trình chroot cư trú và được thực thi. Thuật ngữ chroot jail bắt nguồn từ khái niệm rằng quy trình và các quy trình con của nó bên trong môi trường chroot không có quyền truy cập hoặc được hiển thị với hệ thống tệp cơ sở và bị mắc kẹt trong giới hạn của chroot với các tài nguyên được xác định trước.

Bây giờ, hãy cùng tìm hiểu cách bạn có thể tạo một chroot jail và tạo ra các quy trình trong đó.

Cách tạo một chroot jail và thực thi các chương trình trong đó

chroot một thư mục và sinh ra bash-1

chroot jail về cơ bản là một thư mục chứa tất cả các tài nguyên, tệp, tệp nhị phân cần thiết và các phụ thuộc khác mà chương trình sẽ cần để hoạt động bình thường.

Tuy nhiên, không giống như trong môi trường Linux thông thường, môi trường của chroot jail rất hạn chế và chương trình không thể truy cập các tệp và tài nguyên hệ thống bên ngoài hoặc bổ sung.

Chẳng hạn, để chạy shell Bash trong chroot jail, bạn sẽ cần sao chép tệp nhị phân Bash và tất cả các phụ thuộc của nó vào thư mục chroot.

Dưới đây là các bước để tạo một chroot jail và sinh ra một shell Bash:

  1. Để chương trình chạy thành công, bạn cần sao chép tất cả các phụ thuộc của nó vào thư mục chroot. Hãy tìm tệp nhị phân, trong trường hợp này là Bash và vị trí của tất cả các phụ thuộc của nó bằng lệnh which và ldd:
    which bash
    ldd /usr/bin/bash
  2. Bây giờ bạn đã biết vị trí của tệp nhị phân và các phần phụ thuộc của nó, hãy sao chép chúng vào thư mục mà bạn muốn chuyển thành chroot jail. Sử dụng lệnh mkdir để tạo các thư mục cần thiết và sử dụng lệnh cp để sao chép tất cả các tệp vào các thư mục tương ứng:
    mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
  3. Cuối cùng, với chương trình và các phần phụ thuộc của nó đã được sao chép, bạn có thể chạy lệnh chroot với các đặc quyền nâng cao bằng cách sử dụng tiền tố sudo để sinh ra môi trường chroot trong thư mục đã chọn. Theo mặc định, nó sẽ sinh ra shell Bash . Đây là lệnh để gõ vào:
    sudo chroot directory_name
 

Đó là tất cả các bước để sinh ra một chroot jail và chạy một chương trình bên trong nó.

Cách thoát khỏi chroot jail

Các chroot jail rất hiệu quả để kiểm tra phần mềm không ổn định và cũng hữu ích khi xử lý các kết nối SSH vì chroot người dùng được kết nối là một trong nhiều cách để bảo mật máy chủ SSH của bạn .

Mặt khác, nếu bạn là người kiểm thử thâm nhập và đã đăng nhập vào máy chủ SSH của mục tiêu, thì việc nhận thấy môi trường đó là một môi trường chroot có thể gây khó chịu.

Tuy nhiên, có khá nhiều cách để thoát khỏi chroot jail bị định cấu hình sai, một số cách yêu cầu kỹ năng lập trình C trong khi những cách khác có thể được tự động hóa bằng công cụ. Tìm hiểu thêm về các phương pháp thoát này bằng cách truy cập kho lưu trữ GitHub của chw00t, một công cụ tự động thoát chroot.

Bây giờ bạn đã biết về chroot trong Linux

Bây giờ bạn đã biết chroot là gì, cách thức hoạt động và cách triển khai nó, bạn sẽ có thể dễ dàng tạo các ứng dụng hộp cát từ terminal. Hãy nhớ rằng, như bạn đã biết, có nhiều cách để thoát ra khỏi môi trường chroot.

Điều này chứng tỏ rằng chroot không hề được thiết kế để triển khai như một tính năng bảo mật. Vì vậy, bạn nên thận trọng khi sử dụng chroot vì cấu hình không phù hợp có thể gây tác dụng ngược và ảnh hưởng đến sự an toàn của hệ thống.

Tốt nhất là nên sử dụng các giải pháp hộp cát chuyên dụng như phần mềm container hóa (containerization) hoặc máy ảo. Cả hai đều tập trung vào hộp cát và bảo mật, vì vậy bạn sẽ không cần phải lo lắng về tính bảo mật và toàn vẹn của hệ thống của mình.

Nếu không chắc nên chọn giữa phần mềm container hóa và phần mềm ảo hóa, bạn nên dùng thử cả hai để xem lựa chọn nào tốt hơn.

>>> Nếu bạn đang có nhu cầu học lập trình trực tuyến, tìm hiểu ngay tại đây:

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/chroot-in-linux/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!