Shell bị hạn chế OneFS

Ngược lại với nhiều thiết bị lưu trữ khác, PowerScale luôn bao gồm một dòng lệnh mở rộng, phong phú và có khả năng, lấy từ di sản FreeBSD của nó. Do đó, nó kết hợp một lựa chọn các shell UNIX đầy đủ (tức là ZSH), khả năng viết kịch bản bằng nhiều ngôn ngữ khác nhau (Perl, Python, v.v.), quyền truy cập dữ liệu đầy đủ, nhiều công cụ quản lý và giám sát hệ thống và mạng, cùng với bộ lệnh OneFS isi toàn diện . Tuy nhiên, những gì là phần thưởng cho khả năng sử dụng cũng có thể gây ra rủi ro từ quan điểm bảo mật.

Với điều này trong tâm trí, trong số các tính năng bảo mật ra mắt trong bản phát hành OneFS 9.5 là việc bổ sung một shell bị hạn chế cho CLI. Shell này hạn chế đáng kể quyền truy cập vào các tiện ích dòng lệnh cụm, loại bỏ các khu vực mà lệnh và tập lệnh có thể chạy và các tệp bị sửa đổi một cách độc hại và không được kiểm tra.

Lớp vỏ hạn chế mới có thể giúp cả các tổ chức khu vực công và tư nhân đáp ứng nhiều yêu cầu về tuân thủ quy định và kiểm toán, bên cạnh việc giảm thiểu bề mặt đe dọa bảo mật khi quản lý OneFS.

Được viết bằng Python, shell bị hạn chế giới hạn người dùng vào một tập hợp con chặt chẽ các lệnh có sẵn trong shell dòng lệnh OneFS thông thường, cùng với một vài tiện ích bổ sung. Bao gồm:

Tiện ích CLI Sự miêu tả
Lệnh ISI Các lệnh isi hoặc “isi space”. Bao gồm các lệnh như isi status , v.v. Để biết toàn bộ lệnh isi, hãy chạy isi –help .
Lệnh Shell Các lệnh shell được hỗ trợ bao gồm clear , exit , logout và CTRL+D.
Truy cập nhật ký Công cụ isi_log_access có thể được sử dụng nếu người dùng sở hữu đặc quyền ISI_PRIV_SYS_SUPPORT .
Vỏ phục hồi Có thể sử dụng shell khôi phục isi_recovery_shell nếu người dùng sở hữu ISI_PRIV_RECOVERY_SHELL và thiết lập bảo mật Restricted shell Enabled được cấu hình thành true.

Để lệnh OneFS CLI được kiểm tra, trình xử lý của lệnh này cần gọi qua API nền tảng (pAPI). Điều này xảy ra với các lệnh isi thông thường nhưng không nhất thiết phải với các lệnh “isi underscore” như isi_for_array , v.v. Trong khi một số lệnh isi_* này ghi vào tệp nhật ký, thì không có kiểm tra hoặc ghi nhật ký thống nhất hoặc nhất quán.

Về phía truy cập dữ liệu, kiểm toán hệ thống tệp /ifs hoạt động thông qua nhiều đầu giao thức OneFS khác nhau (NFS, SMB, S3, v.v.). Vì vậy, nếu CLI được sử dụng với shell không bị hạn chế để truy cập và sửa đổi trực tiếp /ifs , mọi quyền truy cập và thay đổi đều không được ghi lại và không được kiểm toán.

Trong OneFS 9.5, shell bị hạn chế mới được bao gồm trong danh sách shell được phép ( /etc/shells ):

# grep -i restr /etc/shells
/usr/local/restricted_shell/bin/restricted_shell.py

Có thể dễ dàng thiết lập cho người dùng thông qua CLI. Ví dụ, để cấu hình tài khoản quản trị viên sử dụng shell bị hạn chế, thay vì mặc định là ZSH:

# isi auth users view admin | grep -i shell
                   Vỏ: /usr/local/bin/zsh
# isi auth users sửa đổi admin --shell=/usr/local/restricted_shell/bin/restricted_shell.py
# isi auth users view admin | grep -i shell
                   Vỏ: /usr/local/restricted_shell/bin/restricted_shell.py

OneFS cũng có thể được cấu hình để giới hạn người dùng không phải root chỉ sử dụng shell an toàn:

  Shell bị hạn chế Đã bật: Không
# isi thiết lập bảo mật sửa đổi --restricted-shell-enabled=true
# isi thiết lập bảo mật xem | grep -i restr
  Shell bị hạn chế Đã bật: Có

Những thay đổi cấu hình cơ bản để hỗ trợ điều này bao gồm chỉ cho phép người dùng không phải root có shell được chấp thuận trong /etc/shells đăng nhập thông qua bảng điều khiển hoặc SSH và chỉ có /usr/local/restricted_shell/bin/restricted_shell.py trong tệp cấu hình /etc/shells  .

Lưu ý rằng không có shell nào của người dùng bị thay đổi khi các lệnh cấu hình ở trên được ban hành. Nếu người dùng có ý định truy cập shell, shell đăng nhập của họ phải được thay đổi trước khi họ có thể đăng nhập. Người dùng cũng sẽ cần các đặc quyền ISI_PRIV_LOGIN_SSH và/hoặc ISI_PRIV_LOGIN_CONSOLE để có thể đăng nhập thông qua SSH và bảng điều khiển.

Trong khi WebUI trong OneFS 9.5 không cung cấp trang cấu hình shell an toàn, shell bị hạn chế có thể được bật từ API nền tảng, ngoài CLI. Cài đặt bảo mật pAPI hiện bao gồm khóa restricted_shell_enabled , có thể được bật bằng cách đặt thành value=1 , từ giá trị mặc định là 0 .

Xin lưu ý rằng, khi cấu hình cụm OneFS 9.5 để chạy ở chế độ tăng cường bảo mật với cấu hình STIG (tức là isi hardening enable STIG ), thiết lập bảo mật restricted-shell-enable sẽ tự động được đặt thành true . Điều này có nghĩa là chỉ root và người dùng có đặc quyền ISI_PRIV_LOGIN_SSH và/hoặc ISI_PRIV_LOGIN_CONSOLE và restricted shell là shell của họ mới được phép đăng nhập vào cụm. Chúng tôi sẽ tập trung vào việc tăng cường bảo mật OneFS trong một bài viết trong tương lai.

Vậy hãy cùng xem xét một số ví dụ về cấu hình và hoạt động của shell bị hạn chế. 

Đầu tiên, chúng ta đăng nhập với tư cách là người dùng quản trị và sửa đổi tệp và kiểu băm mật khẩu của nhà cung cấp xác thực cục bộ thành SHA512 an toàn hơn từ giá trị mặc định là  NTHash :

# ssh 10.244.34.34 -l quản trị viên
# isi auth file view Hệ thống | grep -i hash
     Kiểu băm mật khẩu: NTHash
# isi auth local view Hệ thống | grep -i hash
      Kiểu băm mật khẩu: NTHash
# isi auth file sửa đổi Hệ thống –-password-hash-type=SHA512
# isi auth local sửa đổi Hệ thống –-password-hash-type=SHA512

Lưu ý rằng quản trị viên người dùng mặc định của cụm sử dụng kiểm soát truy cập dựa trên vai trò (RBAC), trong khi root thì không. Do đó, lý tưởng nhất là tài khoản root nên được sử dụng ít thường xuyên nhất có thể và lý tưởng nhất là chỉ được coi là tài khoản cuối cùng.

Tiếp theo, mật khẩu quản trị viên và root được thay đổi để tạo mật khẩu mới bằng cách sử dụng hàm băm SHA512:

# isi auth users change-password root
# isi auth users change-password admin

Vai trò rl_ssh được tạo và quyền truy cập SSH được thêm vào vai trò đó:

# isi auth roles tạo rl_ssh
# vai trò xác thực isi sửa đổi rl_ssh –-add-priv=ISI_PRIV_LOGIN_SSH

Sau đó, một người dùng thông thường (usr_ssh_restricted) và một người dùng quản trị (usr_admin_restricted) được tạo với các quyền shell bị hạn chế:

# isi auth users tạo usr_ssh_restricted –-shell=/usr/local/restricted_shell/bin/restricted_shell.py –-set-password
# isi auth users tạo usr_admin_restricted –shell=/usr/local/restricted_shell/bin/restricted_shell.py –-set-password

Sau đó, chúng tôi chỉ định vai trò cho người dùng mới. Đối với người dùng SSH bị hạn chế, chúng tôi thêm vào vai trò rl_ssh mới tạo của mình:

# vai trò xác thực isi sửa đổi rl_ssh –-add-user=usr_ssh_restricted

Sau đó, người dùng quản trị được thêm vào vai trò quản trị bảo mật và quản trị hệ thống:

# isi auth roles sửa đổi SecurityAdmin –-add-user=usr_admin_restricted
# isi auth roles sửa đổi SystemAdmin –-add-user=usr_admin_restricted

Tiếp theo, chúng ta kết nối tới cụm thông qua SSH và xác thực với tư cách là người dùng usr_ssh_restricted:

$ ssh usr_ssh_restricted@10.246.178.121
 (usr_ssh_restricted@10.246.178.121) Mật khẩu:
 Bản quyền (c) 2001-2023 của Dell Inc. hoặc các công ty con của Dell. Bảo lưu mọi quyền.
 Bản quyền (c) 1992-2018 Dự án FreeBSD.
 Bản quyền (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
         Hội đồng quản trị Đại học California. Mọi quyền được bảo lưu.
 PowerScale OneFS 9.5.0.0
Các lệnh được phép là
         thông thoáng ...
         đây là ...
         isi_recovery_shell ...
         truy cập nhật ký isi ...
         ra
         đăng xuất
%

Tài khoản này không có quyền RBAC cụm nào ngoài quyền truy cập SSH nên không thể chạy các lệnh isi khác nhau . Ví dụ, cố gắng chạy isi status không trả về dữ liệu và thay vào đó, cảnh báo về nhu cầu về quyền event, job engine và statistics:

% isi status
 Tên cụm:  h7001
  __
  *** Thông tin về dung lượng và tình trạng hoạt động yêu cầu ***
 *** quyền lợi: ISI_PRIV_STATISTICS. ***
Sự kiện quan trọng:
*** Yêu cầu quyền: ISI_PRIV_EVENT. ***
Trạng thái công việc của cụm:
 __
*** Yêu cầu quyền: ISI_PRIV_JOB_ENGINE. ***
Các lệnh được phép là
         thông thoáng ...
         đây là ...
         isi_recovery_shell ...
         truy cập nhật ký isi ...
         ra
         đăng xuất
%

Tương tự như vậy, các lệnh shell UNIX chuẩn, chẳng hạn như pwd và whoami, cũng bị cấm:

% mật khẩu
Các lệnh được phép là
        thông thoáng ...
        đây là ...
        isi_recovery_shell ...
        truy cập nhật ký isi ...
        ra
        đăng xuất
% ai là ai
Các lệnh được phép là
        thông thoáng ...
        đây là ...
        isi_recovery_shell ...
        truy cập nhật ký isi ...
        ra
        đăng xuất

Thật vậy, nếu không có các đặc quyền OneFS RBAC bổ sung, các lệnh duy nhất mà người dùng usr_ssh_restricted có thể chạy trong shell bị hạn chế là clear , exit và logout :

Lưu ý rằng shell bị hạn chế sẽ tự động đăng xuất phiên không hoạt động sau một thời gian ngắn không hoạt động.

Tiếp theo, chúng ta đăng nhập bằng tài khoản usr_admin_restricted:

$ ssh usr_admin_restricted@10.246.178.121
(usr_admin_restricted@10.246.178.121) Mật khẩu:
Bản quyền (c) 2001-2023 của Dell Inc. hoặc các công ty con của Dell. Bảo lưu mọi quyền.
Bản quyền (c) 1992-2018 Dự án FreeBSD.
Bản quyền (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        Hội đồng quản trị Đại học California. Mọi quyền được bảo lưu.
PowerScale OneFS 9.5.0.0
Các lệnh được phép là
         thông thoáng ...
         đây là ...
         isi_recovery_shell ...
         truy cập nhật ký isi ...
         ra
         đăng xuất
 %

Lệnh isi hiện hoạt động vì người dùng có vai trò và quyền SecurityAdmin và SystemAdmin:

% danh sách vai trò xác thực isi
Tên
---------------
Kiểm toánQuản trị
Sao lưuQuản trị viên
Vai trò người dùng cơ bản
Quản trị viên bảo mật
Thống kêAdmin
Quản trị hệ thống
Quản trị VMware
bảng điều khiển rl
rl_ssh
---------------
Tổng cộng: 9
Các lệnh được phép là
        thông thoáng ...
        đây là ...
        isi_recovery_shell ...
        truy cập nhật ký isi ...
        ra
        đăng xuất
% isi người dùng xác thực xem usr_admin_restricted
                    Tên: usr_admin_restricted
                      DN: CN=usr_admin_restricted,CN=Người dùng,DC=H7001
              Tên miền DNS: -
                  Tên miền: H7001
                Nhà cung cấp: lsa-local-provider:System
        Tên tài khoản Sam: usr_admin_restricted
                     Mã số nhận dạng: 2003
                     Mã số thuế: S-1-5-21-3745626141-289409179-1286507423-1003
                 Đã bật: Có
                 Đã hết hạn: Không
                   Ngày hết hạn: -
                  Đã khóa: Không
                   Thư điện tử: -
                   GECO: -
           GID đã tạo: Không
           UID đã tạo: Không
           Đã tạo UPN: Có
           Nhóm chính
                          Mã số: GID:1800
                        Tên: Người dùng Isilon
          Thư mục trang chủ: /ifs/home/usr_admin_restricted
        Tuổi mật khẩu tối đa: 4W
        Mật khẩu hết hạn: Không
         Ngày hết hạn mật khẩu: 2023-05-30T17:16:53
       Mật khẩu được thiết lập lần cuối: 2023-05-02T17:16:53
        Mật khẩu hết hạn: Có
              Lần đăng nhập cuối cùng: -
                   Vỏ: /usr/local/restricted_shell/bin/restricted_shell.py
                     UPN: usr_admin_restricted@H7001
Người dùng có thể thay đổi mật khẩu: Có
   Tắt khi không hoạt động: Không
Các lệnh được phép là
        thông thoáng ...
        đây là ...
        isi_recovery_shell ...
        truy cập nhật ký isi ...
        ra
        đăng xuất
%

Tuy nhiên, lệnh “isi underscore” của OneFS không được hỗ trợ trong shell bị hạn chế. Ví dụ, khi cố gắng sử dụng lệnh isi_for_array :

% isi_for_array -s uname -a
Các lệnh được phép là
        thông thoáng ...
        đây là ...
        isi_recovery_shell ...
        truy cập nhật ký isi ...
        ra
        đăng xuất

Lưu ý rằng, theo mặc định, các vai trò SecurityAdmin và SystemAdmin không cấp cho người dùng usr_admin_restricted các quyền cần thiết để chạy các lệnh isi_log_access và isi_recovery_shell mới .

Trong bài viết tiếp theo của loạt bài này, chúng ta sẽ xem xét các tiện ích isi_log_access và  isi_recovery_shell có liên quan cũng được giới thiệu trong OneFS 9.5.

Tác giả : Nick Trimbee