Wednesday, September 18, 2013

CHROOT Linux

Hiện nay an toàn thông tin đang là một vấn đề được nhiều người quan tâm, đặc biệt là trong lĩnh vực công nghệ thông tin. Trong lĩnh vực quản trị hệ thống nói riêng, công việc bảo mật cho hệ thống là rất quan trọng và cần tiến hành thực thi các chính sách bảo mật được đề ra trong đó có việc bảo mật cho các dịch vụ chạy trên Server như dịch vụ Web, dịch vụ FTP, dịch vụ DNS ... là một trong số các dịch vụ có tính bảo mật không cao.

Chúng ta có thể tưởng tượng toàn bộ hệ thống của chúng ta bị gián đoạn, trường hợp xấu nhất có thể bị sụp đổ hoàn toàn chỉ vì 1 dịch vụ nào đó đang chạy trên hệ thống bị Attacker xâm nhập và tấn công. Nếu Attacker đã giống như người quản trị trực tiếp hệ thống của bạn thì anh ta có quyền thực thi một số công việc rất nguy hiểm như xóa file, stop các dịch vụ đang chạy... Điều này tất cả chúng ta đều không muốn xảy ra với hệ thống của mình.

Bài viết này tôi sẽ giới thiệu với các bạn ý nghĩa của việc sử dụng chroot (nhà tù hóa) các dịch vụ có tính bảo mật kém trên hệ thống.

Chroot trên các hệ điều hành Unix là một công đoạn thay đổi thư mục root cho các tiến trình đang chạy hiện tại và các tiến trình con của nó.

Các chương trình (gói phần mềm) trên hệ thống Unix/Linux muốn chạy được cần phải gọi đến các chương trình khác đã được cài đặt trên hệ thống gọi là các gói dependencies và các thư viện cần thiết (libraries) phục vụ cho việc chạy chương trình đó. Như vậy khi chúng ta thay đổi môi trường làm việc cho một chương trình (thay đổi đường dẫn đến một chương trình) thì chương trình đó chỉ chạy được trong môi trường đã được thay đổi và không thể gọi đến các chương trình khác hoặc các thư viện khác ở ngoài thư mục đang chứa chương trình đó. 

Môi trường đã được thay đổi cho một chương trình được gọi là một nhà tù chroot “chroot jail” hay còn được gọi là “chroot prison”.

Như vậy trước khi chúng ta “giam” một chương trình nào đó chúng ta cần tiến hành kiểm tra xem chương trình đó khi chạy cần gọi đến các chương trình nào khác (trên hệ thống Unix/Linux thường là các file cấu hình cho chương trình) và các thư viện cần thiết để chạy chương trình đó.

Nếu một Attacker tấn công vào một chương trình đã được “giam” (chroot) trên hệ thống (/chroot/<thư mục chứa chương trình>) Attacker chỉ có quyền hạn làm bất kỳ việc gì trong thư mục đã được chroot và không thể vượt ra ngoài thư mục chroot. Như vậy chương trình có thể bị Attacker tấn công nhưng hệ thống của chúng ta không bị ảnh hưởng và vẫn hoạt động bình thường. 

Chroot được giới thiệu trong quá trình phát triển phiên bản thứ 7 của hệ điều hành Unix năm 1969 và sau đó chroot được Bill Joy tích hợp vào hệ thống BSD năm 1982. 

Với những ưu điểm của chroot, các dịch vụ cần tính bảo mật cao chạy trên các máy chủ đều được chạy trong nhà tù chroot. Ví dụ dịch vụ FTP Server và DNS Server là 2 trong một số dịch vụ có tính bảo mật không cao. 

Mô hình mình họa CHROOT trên hệ thống Unix/Linux

Hình ảnh

Related Posts:

  • Midnight Commander color schemeMidnight Commander (or "mc") can have transparent panels instead of the ugly, dull default blue. So can "mcedit", its text editor. Here's how to do it. Edit the file ~/.mc/ini and add at the end the following: [Colors] b… Read More
  • Install Apache, MySQL, phpMyAdmin on CentOS1. Install Apache: yum install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext/sbin/chkconfig httpd --level 345 on/etc/init.d/httpd st… Read More
  • Log rotate Log files are the most valuable tools available for Linux system security. The logrotate program is used to provide the administrator with an up-to-date record of events taking place on the system. The logrota… Read More
  • Debugging PHP Scripts Using slow_log and more If you are an old PHP programmer, you must have used PHP’s error_log function sometime. But PHP itself does not provide a way to find out slowly executing scripts. Slow scripts are not the ones whi… Read More
  • Compiling Software With Debian LinuxThere is a lot of free software out there that is written for Linux/UNIX that's only available in source code format. As explained on the Basics page, this is the most efficient way for the developers to distribute … Read More