Quyền lực root và vấn đề an toàn hệ thống

Thảo luận trong 'Thảo luận chung' bắt đầu bởi adamdj, 29/10/16, 03:10 PM.

  1. adamdj

    adamdj VIP Members

    Tham gia: 24/08/16, 06:08 AM
    Bài viết: 128
    Đã được thích: 91
    Điểm thành tích:
    28
    Trong Unix/Linux, tài khoản root là người dùng có quyền lực cao nhất, root có thể làm rất nhiều điều mà ngay cả tài khoản Administrator trên Windows cũng không thể có được. Nhưng quyền lợi luôn đi kèm trách nhiệm: bạn có được sức mạnh của root nhưng cũng cần có ý thức bảo mật tài khoản này tránh khỏi sự lạm dụng của kẻ xấu.
    Bài viết hôm nay sẽ làm rõ vấn đề lợi – hại khi sử dụng tài khoản root.

    1- Những ý nghĩa khác nhau của thuật ngữ root

    Khi đặt vào 3 ngữ cảnh sau, từ root sẽ mang 3 ý nghĩa khác nhau:
    • File system: Trong cấu trúc cây thư mục của Linux, thì root directory có ký hiệu là dấu / , là thư mục cấp cao nhất – nó không có thư mục cha.
    • Home directory: Mỗi người dùng đều có thư mục chủ (home) để lưu trữ những dữ liệu, thiết lập cá nhân của họ. Thư mục home của người dùng root là /root , còn những người dùng bình thường (normal user) khác có thư mục home nằm tại /home/user_name
    [​IMG]
    • User account: root là tên tài khoản có đặc quyền cao nhất trong các hệ thống *nix (tên gọi chung của các HĐH Linux và các HĐH khác tựa Unix). Và đây cũng là ngữ cảnh sẽ được sử dụng trong bài viết này.
    2- Tài khoản root và những vấn đề liên quan đến an toàn hệ thống

    a) User ID (UID) của root

    Mỗi một user được tạo ra trên hệ thống đều phải có một số nhận dạng gọi là UID. Linux sẽ quản lý các tài khoản người dùng thông qua UID, còn Username chỉ là tên gọi thân thiện, giúp con người dễ dàng phân biệt các user.
    Tài khoản root được Linux tự động tạo ra và mặc định, root luôn có UID=0. Bạn có thể thay đổi UID của root nhưng điều này không hề được khuyến khích vì nó ảnh hưởng tới an ninh, ổn định của hệ thống. Để xem UID của một user, bạn gõ lệnh sau trong giao diện dòng lệnh
    Mã:
    id user_name
    Một điều thú vị là bạn hoàn toàn có thể cho phép nhiều user có cùng UID và các user này sẽ có quyền hạn ngang nhau. Như vậy, để tạo thêm các user có quyền hạn ngang bằng root, bạn gán cho user đó có UID=o.
    Và để leo thang đặc quyền cho một user thông thường, hacker sẽ tìm cách để thay đổi UID của user trở thành o.

    b) Root privilege

    Root có quyền lực lớn nhất và tuyệt đối, nó có quyền truy cập tới bất kỳ file nào và thực thi được mọi câu lệnh. Ngoài ra, root trao cho người đang sử dụng nó khả năng chỉnh sửa hệ thống rất sâu theo bất kỳ cách nào, ngay cả việc chỉnh sửa các module của hệ điều hành và biên dịch lại Linux kernel – một điều không thể trên hệ thống Windows…
    root cũng có quyền cấp phát và thu hồi các quyền hạn truy cập file cho các user khác, bao gồm các file mặc định chỉ dành riêng cho root.
    Thưở ban đầu thì các hệ điều hành *nix được thiết kế để chạy trên các mainframe (siêu máy tính), dành cho các hệ thống đa người dùng bởi vì lúc đó các dòng máy tính cá nhân (PC) chưa phổ biến như bây giờ và mỗi người dùng sẽ sử dụng các thiết bị đầu cuối đơn giản để kết nối vào các siêu máy tính và thực hiện công việc cần làm.
    Vì vậy mà cần có 1 cơ chế để ngăn chia và bảo vệ các file của từng user trong khi vẫn cho phép các user sử dụng hệ thống đồng thời, và ý niệm về home directory ra đời từ đây. Bên cạnh đó, cũng cần có giải pháp giúp cho người quản trị hệ thống thực thi các tác vụ như là: truy cập vào file, thư mục các user khác để sửa lỗi; cấp và thu quyền hạn cho các user; truy cập các file quan trọng để sửa chữa, khôi phục và cập nhật hệ thống… những yêu cầu này dẫn tới việc hình thành tài khoản root.

    c) Permission System

    Hệ thống phân quyền trong *nix mặc định cấm các normal user truy cập, thay đổi cấu hình các khu vực trọng yếu trên hệ thống và dữ liệu cá nhân thuộc về các user khác. Thường thì user chỉ có thể đọc file mà không có quyền ghi bất cứ gì vào root directory (/), ngoài ra user có tự do quyền hạn với home direcroty của mình.
    Chính vì sự ngăn cấm này đã gây ra sự tò mò, khó chịu cho những người dùng mới làm quen với các hệ thống như *nix, đặc biệt là những người đã quen với các hệ thống có cơ chế phân quyền yếu hoặc bỏ ngỏ quyền hạn Admin như Windows, một số phiên bản Macintosh cũ… Bắt đầu từ Windows Vista thì Microsoft đã cải tiến toàn diện vấn đề bảo mật với hy vọng lấy lại niềm tin từ các nhà quản trị hệ thống luôn phàn nàn rằng: Windows chưa lúc nào thật sự an toàn!
    Những tay “vọc sĩ” sẽ cố gắng vượt qua hệ thống phân quyền này trên các máy tính cá nhân bằng cách đang nhập trực tiếp bằng tài khoản root và… ngồi lì ở đó! Mặc dù điều này mang lại sự thoải mái và thuận tiện trong xử lý công việc, nhưng giải pháp an toàn hơn là bạn nên có một normal user để làm các việc bình thường như: chat, duyệt web, sử dụng mail, các nhu cầu văn phòng, giải trí… Tất cả đều hoạt động trơn tru trong môi trường của normal user.
    Nếu bạn là người dùng mới làm quen với *nix, một lời khuyên luôn được nhắc tới là tránh lạm dụng đặc quyền root bởi thật dễ dàng để phá hủy hệ thống *nix hơn là phá hủy các hệ thống khác với quyền hạn root. Để bù đắp phần nào những sơ hở trong cơ chế phân quyền thiếu chặt chẽ, các kỹ sư thiết kế Windows đã xây dựng các tính năng và đặt ra các phương thức nhằm bảo vệ dữ liệu và hệ điều hành như: Data Execution Protection (DEP), Kernel Patch Protection (KPP), Encrypting File System (EFS),…
    Tuy nhiên, 1 nguyên tắc quan trọng của hệ điều hành *nix là cung cấp tối đa độ linh động trong cho việc cấu hình hệ thống, vì vậy mà tài khoản root được có được quyền hạn vô đối. Hệ thống *nix giả định rằng người quản trị biết chính xác điều anh (cô) ấy đang làm vì 1 sơ sót nhỏ cũng có thể dẫn đến toàn bộ hệ thống ngừng hoạt động.
    Đặt trường hợp, nếu đã làm quen với dòng lệnh Linux hẳn bạn đã biết câu lệnh này
    Mã:
    rm -rf /
    Ngay khi thực thi lệnh trên với quyền root và khởi động lại máy, toàn bộ dữ liệu trong phân vùng dành cho thư mục gốc (/) bị xóa bỏ… Bạn đã tự sát chính mình!
    Thêm 1 nguy cơ nữa khi sử dụng hệ thống với quyền root là tất cả các tiến trình (process) do root khởi động sẽ được cấp quyền hạn root. Vì thậm chí các chương trình ứng dụng có sự kiểm duyệt tốt và được sử dụng rộng rãi cũng ẩn chứa nhiều lỗi nên 1 attacker thực thụ có thể dò tìm và khai thác vài trong các lỗi đó và chiếm quyền điều khiển hệ thống khi ứng dụng đó được chạy với quyền root.
    Dưới đây là 1 ví dụ với ứng dụng Web Server Apache để minh họa cho mối nguy trên:
    Trích “Những cuộc đối thoại với Rookie – Phần 14” của tác giả Hoàng Ngọc Diêu.

    d) Delegate Authority

    Nếu bạn đang ở normal user mà vẫn muốn chạy các lệnh cần tới quyền root thì 1 số công cụ như gksu (ứng dụng GNOME), kdesu (ứng dụng KDE), su, sudo (trong console/terminal) tạm thời trao cho bạn quyền root mà không cần mất công đăng xuất (log out) khỏi normal user rồi đăng nhập (log in) lại bằng root.
    Ví dụ, bạn đang ở normal user và muốn trở thành root mà không cần logout khỏi normal user, trong môi trường dòng lệnh (console) bạn gõ lệnh sau:
    Mã:
    su –
    sau đó nhấn Enter và gõ vào mật khẩu của root.
    Với su, bạn sẽ luôn “ngồi trên ghế” của root cho tới khi bạn nhấn Ctrl+D hoặc gõ exit để nhảy khỏi “chiếc ghế quyền uy” này và trở lại là “công dân nghèo” trước đó
    [​IMG]
    .
    Nếu sử dụng sudo thì bạn cần cung cấp mật khẩu của user chạy lệnh sudo, không phải mật khẩu của root như là với lệnh su. Cú pháp cơ bản của sudo:
    Mã:
    sudo command
    Bằng cách chỉnh sửa file cấu hình của sudo là /etc/sudoers bạn có thể làm rất nhiều thứ như:
    Tất cả các lệnh sử dụng sudo đều được ghi lại vào file log /var/log/secure
    Xem xét kỹ thì sudo là con dao 2 lưỡi:
    • “Lưỡi cùn” (vô hại): normal user sẽ chỉ được quyền chạy 1 số lệnh quản trị do bạn ấn định trước trong file /etc/sudoers. Đồng thời, mật khẩu của root được giữ bí mật.
    • “Lưỡi sắc” (nguy cơ): nếu bạn kiểm soát vấn đề ủy quyền thông qua sudo không chặt chẽ thì normal user dễ dàng chiếm quyền điều khiển hệ thống với đặc quyền root.
    Ví dụ, nếu cho phép normal user manthang được phép sudo lệnh su thì user manthang chỉ cần gõ:
    Mã:
    sudo su –
    rồi cung cấp mật khẩu của mình là có ngay quyền root mà không cần biết mật khẩu để đăng nhập vào root.
    Để hiểu rõ hơn về bạn gõ man sudo để xem tài liệu hướng dẫn về nó.
    Đối với gksu, kdesu thì thường được dùng khi chạy các chương trình có giao diện đồ họa mà yêu cầu quyền root. Ví dụ, khi bạn chạy công cụ Synaptics – trình quản lý gói .DEB thì sẽ hiện ra 1 của sổ yêu cầu nhập mật khẩu của bạn, đây chính là gksu. [​IMG]


    3. Kết Luận

    Nhìn chung trong môi trường tổ chức và doanh nghiệp, mỗi quản trị viên nên tạo riêng 1 normal user để làm các công việc thông thường. Mọi hoạt động này đều được hệ thống ghi nhận và lưu thành các file log dành cho mục đích giám sát hoạt động và khắc phục sự cố trên hệ thống. Ngoài ra, để giảm tải công việc, người quản trị hệ thống cấp cao cũng cần có cơ chế ủy quyền thích hợp cho các nhân viên phía dưới.

    Nguồn: manthang wordpress
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    du0n9 thích bài này.
  2. DiepNV88

    DiepNV88 VIP Members

    Tham gia: 24/09/13, 03:09 AM
    Bài viết: 1,544
    Đã được thích: 367
    Điểm thành tích:
    83
    Để đảm bảo an toàn hơn quản trị viên nên sử dụng 1 user khác thay cho root và disable tài khoản root đi. Cách này có thể hạn chế được tỉ lệ thành công khi bị tấn công brute force vào cổng ssh.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  3. D.Villa

    D.Villa W-------

    Tham gia: 09/05/15, 12:05 PM
    Bài viết: 13
    Đã được thích: 3
    Điểm thành tích:
    18
    Nếu lộ user này có thể lợi dụng lỗ hổng Dirty Cow để leo lên quyền root :x
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  4. hatrongvu

    hatrongvu Member

    Tham gia: 29/04/17, 11:04 PM
    Bài viết: 6
    Đã được thích: 0
    Điểm thành tích:
    1
    cho mk hỏi là nếu mà đã lỡ nhập tài khaorn ng dùng vào rồi bây giờ muốn trở về root thì làm ntn vậy ạ !! giờ máy chỉ đăng nhập bằng tài khoản người dùng đó chứ không vào đc bằng root. mình mới dùng chưa lâu mong đc giải đáp
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  5. adamdj

    adamdj VIP Members

    Tham gia: 24/08/16, 06:08 AM
    Bài viết: 128
    Đã được thích: 91
    Điểm thành tích:
    28
    Ở Ubuntu mặc định tài khoản Root không có password và cũng không được đăng nhập vào môi trường Desktop.
    Để đăng nhập vào tài khoản root trên môi trường desktop (ở đây tôi sử dụng GNOME) ta làm như sau:

    1. Đặt password cho root bằng cách vào Terminal chạy lệnh sau:

    $ sudo passwd root

    và nhập password của tài khoản hiện tại, sau đó hệ thống sẽ hỏi bạn (nhập và nhập lại) "New Unix password" thì bạn nhập password cho root. Sau khi hoàn tất bạn dùng lệnh:

    $ su

    để chuyển sang root với password vừa set.


    2. Để đăng nhập vào root ở môi trường Desktop, bạn làm như sau:

    - Vào menu System > Administration > Login Window
    - Chọn thẻ Security và check vào Allow local system administrator login

    Giờ bạn đã có thể đăng nhập vào tài khoản root với môi trường desktop GNOME.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  6. NgMSon

    NgMSon Well-Known Member

    Tham gia: 22/03/17, 10:03 AM
    Bài viết: 657
    Đã được thích: 746
    Điểm thành tích:
    93
    Thanks bác
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  7. hatrongvu

    hatrongvu Member

    Tham gia: 29/04/17, 11:04 PM
    Bài viết: 6
    Đã được thích: 0
    Điểm thành tích:
    1
    mk cảm on nhiều ạ !! như v thì mình có thể cập nhật và làm mọi thứ như dùng root đúng không ạ
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  8. NgMSon

    NgMSon Well-Known Member

    Tham gia: 22/03/17, 10:03 AM
    Bài viết: 657
    Đã được thích: 746
    Điểm thành tích:
    93
    chỉ những điều đã nêu trên
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan