OneFS Restricted Shell—Xem và phục hồi nhật ký

Bổ sung cho shell bị hạn chế đã được đề cập trong bài viết trước của loạt bài này , OneFS 9.5 còn bổ sung thêm trình xem nhật ký mới cùng tùy chọn shell phục hồi.

 

Tiện ích CLI isi_log_access mới cho phép người dùng SSH đọc, phân trang và truy vấn các tệp nhật ký trong thư mục /var/log  . Khả năng chạy công cụ này được điều chỉnh bởi vai trò của người dùng được cấp quyền kiểm soát truy cập dựa trên vai trò (RBAC) ISI_PRIV_SYS_SUPPORT .

OneFS RBAC được sử dụng để giới hạn rõ ràng những ai có quyền truy cập vào phạm vi cấu hình và hoạt động của cụm. Kiểm soát chi tiết này cho phép tạo ra các vai trò quản trị, có thể tạo và quản lý các thành phần cốt lõi OneFS và dịch vụ dữ liệu khác nhau, cô lập từng thành phần cho các vai trò bảo mật cụ thể hoặc chỉ cho quản trị viên, v.v.

Trong trường hợp này, quản trị viên bảo mật cụm sẽ chọn vùng truy cập, tạo vai trò nhận biết vùng trong vùng đó, chỉ định quyền ISI_PRIV_SYS_SUPPORT  để sử dụng isi_log_access , sau đó chỉ định người dùng vào vai trò đó.

Lưu ý rằng vai trò RBAC OneFS AuditAdmin tích hợp không chứa các đặc quyền ISI_PRIV_SYS_SUPPORT  theo mặc định. Ngoài ra, các vai trò RBAC tích hợp không thể được cấu hình lại:

# vai trò xác thực isi sửa đổi AuditAdmin --add-priv=ISI_PRIV_SYS_SUPPORT
Quyền của vai trò tích hợp AuditAdmin không thể được sửa đổi

Do đó, vai trò ISI_PRIV_SYS_SUPPORT phải được thêm vào vai trò tùy chỉnh.

Ví dụ, cú pháp CLI sau đây sẽ thêm người dùng usr_admin_restricted vào vai trò rl_ssh và thêm đặc quyền ISI_PRIV_SYS_SUPPORT vào vai trò rl_ssh:

# vai trò xác thực isi sửa đổi rl_ssh --add-user=usr_admin_restricted
# vai trò xác thực isi sửa đổi rl_ssh --add-priv=ISI_PRIV_SYS_SUPPORT
# isi vai trò xác thực xem rl_ssh
        Tên: rl_ssh
 Sự miêu tả: -
     Thành viên: u_ssh_restricted
              u_admin_restricted
  Quyền lợi
              Mã số: ISI_PRIV_LOGIN_SSH
      Quyền: r
             Mã số: ISI_PRIV_SYS_SUPPORT
      Quyền: r

Người dùng usr_admin_restricted cũng có thể được thêm vào vai trò AuditAdmin:

# isi auth roles sửa đổi AuditAdmin --add-user=usr_admin_restricted
# isi auth vai trò xem AuditAdmin | grep -i thành viên
     Thành viên: usr_admin_restricted

Công cụ isi_log_access hỗ trợ các tùy chọn lệnh và đối số sau:

Lựa chọn Sự miêu tả
–grep So khớp một mẫu với tệp và hiển thị trên stdout
-giúp đỡ Hiển thị mô tả lệnh và thông báo sử dụng
-danh sách Liệt kê tất cả các tập tin trong cây /var/log
-ít hơn Hiển thị tệp trên stdout với bộ phân trang trong secure_mode
-hơn Hiển thị tệp trên stdout với bộ phân trang trong secure_mode
-xem Hiển thị tệp trên stdout
-đồng hồ Hiển thị phần cuối của tệp và nội dung mới khi nó được viết
–zgrep So khớp mẫu với nội dung tệp đã giải nén và hiển thị trên stdout
–zview Hiển thị phiên bản đã giải nén của tệp trên stdout

Tại đây, người dùng u_admin_restricted đăng nhập vào SSH và chạy tiện ích isi_log_access để liệt kê tệp nhật ký /var/log/messages :

# ssh u_admin_restricted@10.246.178.121
 (u_admin_restricted@10.246.178.121) 
 Mật khẩu:
 Lần đăng nhập cuối: Thứ 4, ngày 3 tháng 5 năm 18:02:18 năm 2023 từ 10.246.159.107
 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
 # isi_log_access –danh sách
 THỜI GIAN SỬA ĐỔI CUỐI CÙNG KÍCH THƯỚC TẬP TIN
 Thứ Hai ngày 10 tháng 4 14:22:18 2023 56 cảnh báo.log
 Thứ sáu, ngày 5 tháng 5 năm 2023 00:30:00 62 all.log
 Thứ sáu, ngày 5 tháng 5 năm 2023 00:30:00 99 all.log.0.gz
 Thứ sáu, ngày 5 tháng 5 năm 2023 00:00:00 106 all.log.1.gz
 Thứ năm 4 tháng 5 00:30:00 2023 100 all.log.2.gz
 Thứ năm 4 tháng 5 00:00:00 2023 107 all.log.3.gz
 Thứ tư ngày 3 tháng 5 năm 2023 00:30:00 99 all.log.4.gz
 Thứ tư ngày 3 tháng 5 năm 2023 00:00:00 107 all.log.5.gz
 Thứ ba ngày 2 tháng 5 năm 2023 00:30:00 100 all.log.6.gz
 Thứ Hai 10/04/2023 14:22:18 56 audit_config.log
 Thứ Hai 10/04/2023 14:22:18 56 audit_protocol.log
 Thứ sáu, ngày 5 tháng 5 năm 17:23:53 2023 82064 auth.log
 Thứ bảy, 22 tháng 4, 12:09:31 2023 10750 auth.log.0.gz
 Thứ hai ngày 10 tháng 4 15:31:36 2023 0 bam.log
 Thứ Hai ngày 10 tháng 4 14:22:18 2023 56 boxend.log
 Thứ hai ngày 10 tháng 4 14:22:18 2023 56 bwt.log
 Thứ Hai 10/04/2023 14:22:18 56 cloud_interface.log
 Thứ Hai ngày 10 tháng 4 14:22:18 2023 56 console.log
 Thứ sáu, ngày 5 tháng 5 năm 18:20:32 2023 23769 cron
 Thứ sáu, ngày 5 tháng 5 năm 15:30:00 2023 8803 cron.0.gz
 Thứ sáu, ngày 5 tháng 5 năm 2023 03:10:00 9013 cron.1.gz
 Thứ năm 4 tháng 5 15:00:00 2023 8847 cron.2.gz
 Thứ sáu, ngày 5 tháng 5 năm 2023 03:01:02 3012 daily.log
 Thứ sáu, ngày 5 tháng 5 năm 2023 00:30:00 101 daily.log.0.gz
 Thứ sáu ngày 5 tháng 5 00:00:00 2023 1201 daily.log.1.gz
 Thứ năm 4 tháng 5 00:30:00 2023 102 daily.log.2.gz
 Thứ năm ngày 4 tháng 5 năm 2023 00:00:00 1637 daily.log.3.gz
 Thứ tư ngày 3 tháng 5 năm 2023 00:30:00 101 daily.log.4.gz
 Thứ tư ngày 3 tháng 5 năm 2023 00:00:00 1200 daily.log.5.gz
 Thứ ba ngày 2 tháng 5 năm 2023 00:30:00 102 daily.log.6.gz
 Thứ Hai 10/04/2023 14:22:18 56 debug.log
 Thứ ba 11 tháng 4 12:29:37 2023 3694 diskpools.log
 Thứ sáu ngày 5 tháng 5 03:01:00 2023 244566 dmesg.today
 Thứ năm 4 tháng 5 03:01:00 2023 244662 dmesg.yesterday
 Thứ ba 11 tháng 4 11:49:32 2023 788 drive_purposing.log
 Thứ Hai ngày 10 tháng 4 14:22:18 2023 56 ethmixer.log
 Thứ hai ngày 10 tháng 4 14:22:18 2023 56 gssd.log
 Thứ sáu, ngày 5 tháng 5 năm 2023 00:00:35 41641 hardening.log
 Thứ Hai 10 tháng 4 15:31:05 2023 17996 hardening_engine.log
 Thứ Hai 10/04/2023 14:22:18 56 hdfs.log
 Thứ sáu, ngày 5 tháng 5 năm 15:51:28 2023 31359 hw_ata.log
 Thứ sáu ngày 5 tháng 5 15:51:28 2023 56527 hw_da.log
 Thứ hai ngày 10 tháng 4 14:22:18 2023 56 hw_nvd.log
 Thứ hai ngày 10 tháng 4 14:22:18 2023 56 idi.log

Ngoài việc phân tích toàn bộ tệp nhật ký với các cờ more và less , tiện ích isi_log_access cũng có thể được sử dụng để theo dõi (tức là theo dõi) nhật ký. Ví dụ, tệp nhật ký /var/log/messages :

% isi_log_access --theo dõi tin nhắn
 2023-05-03T18:00:12.233916-04:00 <1.5> h7001-2(id2) limited[68236]: Đã gọi ['/usr/bin/isi_log_access', 'messages'], trả về 2.
 2023-05-03T18:00:23.759198-04:00 <1.5> h7001-2(id2) limited[68236]: Đang gọi ['/usr/bin/isi_log_access'].
 2023-05-03T18:00:23.797928-04:00 <1.5> h7001-2(id2) limited[68236]: Đã gọi ['/usr/bin/isi_log_access'], trả về 0.
 2023-05-03T18:00:36.077093-04:00 <1.5> h7001-2(id2) limited[68236]: Đang gọi ['/usr/bin/isi_log_access', '--help'].
 2023-05-03T18:00:36.119688-04:00 <1.5> h7001-2(id2) limited[68236]: Đã gọi ['/usr/bin/isi_log_access', '--help'], trả về 0.
 2023-05-03T18:02:14.545070-04:00 <1.5> h7001-2(id2) limited[68236]: Lệnh không có trong danh sách các lệnh được phép.
 2023-05-03T18:02:50.384665-04:00 <1.5> h7001-2(id2) limited[68594]: Đang gọi ['/usr/bin/isi_log_access', '--list'].
 2023-05-03T18:02:50.440518-04:00 <1.5> h7001-2(id2) limited[68594]: Đã gọi ['/usr/bin/isi_log_access', '--list'], trả về 0.
 2023-05-03T18:03:13.362411-04:00 <1.5> h7001-2(id2) limited[68594]: Lệnh không có trong danh sách các lệnh được phép.
 2023-05-03T18:03:52.107538-04:00 <1.5> h7001-2(id2) limited[68738]: Đang gọi ['/usr/bin/isi_log_access', '--watch', 'messages'].

Như mong đợi, một vài dòng cuối cùng của tệp nhật ký tin nhắn được hiển thị. Các mục nhật ký này bao gồm các mục kiểm tra lệnh cho người dùng usr_admin_secure đang chạy tiện ích isi_log_access với cả đối số –help , –list và –watch .

Tiện ích isi_log_access cũng cho phép đọc ( –zview ) hoặc tìm kiếm ( –zgrep ) các tệp nhật ký đã nén mà không cần giải nén chúng. Ví dụ, để tìm tất cả các mục nhập usr_admin  trong tệp vmlog.0.gz đã nén :

# isi_log_access --zgrep usr_admin vmlog.0.gz
0.0 64468 usr_admin_restricted /usr/local/bin/zsh 
    0.0 64346 usr_admin_restricted python /usr/local/restricted_shell/bin/restricted_shell.py (python3.8)
    0.0 64468 usr_admin_restricted /usr/local/bin/zsh
    0.0 64346 usr_admin_restricted python /usr/local/restricted_shell/bin/restricted_shell.py (python3.8)
    0.0 64342 usr_admin_restricted sshd: usr_admin_restricted@pts/3 (sshd)
    0.0 64331 root sshd: usr_admin_restricted [priv] (sshd)
    0.0 64468 usr_admin_restricted /usr/local/bin/zsh
    0.0 64346 usr_admin_restricted python /usr/local/restricted_shell/bin/restricted_shell.py (python3.8)
    0.0 64342 usr_admin_restricted sshd: usr_admin_restricted@pts/3 (sshd)
    0.0 64331 root sshd: usr_admin_restricted [priv] (sshd)
    0.0 64468 usr_admin_restricted /usr/local/bin/zsh
    0.0 64346 usr_admin_restricted python /usr/local/restricted_shell/bin/restricted_shell.py (python3.8)
    0.0 64342 usr_admin_restricted sshd: usr_admin_restricted@pts/3 (sshd)
    0.0 64331 root sshd: usr_admin_restricted [priv] (sshd)
    0.0 64468 usr_admin_restricted /usr/local/bin/zsh
    0.0 64346 usr_admin_restricted python /usr/local/restricted_shell/bin/restricted_shell.py (python3.8)
    0.0 64342 usr_admin_restricted sshd: u_admin_restricted@pts/3 (sshd)
    0.0 64331 root sshd: usr_admin_restricted [priv] (sshd)

Vỏ khôi phục OneFS

Mục đích của shell phục hồi là cho phép người dùng shell bị hạn chế truy cập shell UNIX thông thường và tập lệnh liên quan, nếu cần. Do đó, shell phục hồi chủ yếu được thiết kế và dành cho các hoạt động phục hồi cụm phản ứng và các vấn đề hỗ trợ không lường trước khác. Lưu ý rằng lệnh CLI isi_recovery_shell chỉ có thể chạy và shell phục hồi được nhập từ bên trong shell bị hạn chế.

Quyền ISI_PRIV_RECOVERY_SHELL là bắt buộc để người dùng nâng shell của họ từ chế độ bị hạn chế lên chế độ phục hồi. Cú pháp sau có thể được sử dụng để thêm quyền này vào một vai trò, trong trường hợp này là vai trò rl_ssh:

% vai trò xác thực isi sửa đổi rl_ssh --add-priv=ISI_PRIV_RECOVERY_SHELL
% isi vai trò xác thực xem rl_ssh
        Tên: rl_ssh
 Sự miêu tả: -
     Thành viên: usr_ssh_restricted
              usr_admin_restricted
  Quyền lợi
              Mã số: ISI_PRIV_LOGIN_SSH
      Quyền: r
             Mã số: ISI_PRIV_SYS_SUPPORT
      Quyền: r
             Mã số: ISI_PRIV_RECOVERY_SHELL
      Quyền: r

Tuy nhiên, lưu ý rằng tham số bảo mật –-restricted-shell-enabled phải được đặt thành true trước khi người dùng có đặc quyền ISI_PRIV_RECOVERY_SHELL có thể vào shell phục hồi. Ví dụ:

% isi thiết lập bảo mật xem | grep -i restr
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ó

Người dùng shell bị hạn chế phải nhập mật khẩu gốc của cụm để vào shell khôi phục thành công. Ví dụ:

% isi_recovery_shell -h
 Sự miêu tả:
         Lệnh này được sử dụng để vào Recovery shell tức là shell zsh bình thường từ PowerScale Restricted shell. Lệnh này chỉ được hỗ trợ trong PowerScale Restricted shell.
Quyền bắt buộc:
         Vỏ_PHỤC_PHỤC_RIÊNG_ISI
Cách sử dụng:
         vỏ phục hồi isi
            [{--trợ giúp | -h}]

Nếu nhập sai mật khẩu gốc, lỗi sau sẽ hiển thị:

% isi_recovery_shell
 Nhập thông tin đăng nhập 'root' để vào Recovery shell
 Mật khẩu:
 Thông tin đăng nhập không hợp lệ.
 isi_recovery_shell: Xác thực PAM không thành công

Quá trình phóng đạn phục hồi thành công diễn ra như sau:

$ ssh u_admin_restricted@10.246.178.121
 (u_admin_restricted@10.246.178.121) Mật khẩu:
 Lần đăng nhập cuối: Thứ năm, ngày 4 tháng 5 năm 2023 lúc 17:26:10 từ 10.246.159.107
 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
% isi_recovery_shell
 Nhập thông tin đăng nhập 'root' để vào Recovery shell
 Mật khẩu:
 %

Tại thời điểm này, các lệnh shell/UNIX thông thường (bao gồm cả trình soạn thảo vi) lại khả dụng:

% ai là ai
 u_admin_restricted
% mật khẩu
 /ifs/home/u_admin_restricted
% trên cùng | đầu -n 10
 pid cuối cùng: 65044; tải trung bình: 0,12, 0,24, 0,29 lên 24+04:17:23 18:38:39
 118 tiến trình: 1 đang chạy, 117 đang ngủ
 CPU: 0,1% người dùng, 0,0% tốt, 0,9% hệ thống, 0,1% ngắt, 98,9% nhàn rỗi
 Bộ nhớ: 233M Hoạt động, 19G Không hoạt động, 2152K Giặt ủi, 137G Có dây, 60G Buf, 13G Trống
 Tráo đổi:
   PID TÊN NGƯỜI DÙNG THR PRI NICE KÍCH THƯỚC TRẠNG THÁI C THỜI GIAN WCPU LỆNH
  3955 gốc 1 -22 r30 50M 14M chọn 24 142:28 0,54% isi_drive_d
  5715 gốc 20 20 0 231M 69M kqđọc 5 55:53 0,15% isi_stats_d
  3864 gốc 14 20 0 81M 21M kqđọc 16 133:02 0,10% isi_mcp

Thông tin chi tiết về shell phục hồi (ZSH) dành cho người dùng u_admin_restricted được báo cáo như sau:

% printenv $SHELL
 _=/usr/bin/printenv
 PAGER=ít hơn
 LƯU LẠI LỊCH SỬ=2000
 HISTFILE=/ifs/home/u_admin_restricted/.zsh_history
 KÍCH THƯỚC LỊCH SỬ=1000
 OLDPWD=/ifs/home/u_admin_restricted
 PWD=/ifs/home/u_admin_restricted
 SHLVL=1
 TÊN ĐĂNG NHẬP=u_admin_restricted
 TRANG CHỦ=/ifs/home/u_admin_restricted
 RECOVERY_SHELL=ĐÚNG
 TERM=xterm
 ĐƯỜNG DẪN=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin

Có thể chạy các điều kiện và tập lệnh logic của Shell. Ví dụ:

% while true; do uptime; sleep 5; xong
  5:47PM hoạt động 24 ngày, 3:26, 5 người dùng, tải trung bình: 0,44, 0,38, 0,34
  5:47PM hoạt động 24 ngày, 3:26, 5 người dùng, tải trung bình: 0,41, 0,38, 0,34

Có thể chạy lệnh ISI và thực hiện các tác vụ quản lý cụm.

% danh sách làm cứng isi
 Tên Mô tả Trạng thái
 -------------------------------------------------- -
 STIG Bật tất cả các cài đặt bảo mật STIG Không áp dụng
 -------------------------------------------------- -
 Tổng cộng: 1

Ví dụ: tạo và xóa ảnh chụp nhanh:

% isi snap danh sách snap
 ID Tên Đường dẫn
 ------------
 ------------
 Tổng cộng: 0
% isi snap snap tạo /ifs/data
% isi snap danh sách snap
 ID Tên Đường dẫn
 --------------------
 2 s2 /ifs/dữ liệu
 --------------------
 Tổng cộng: 1
% isi snap snap xóa 2
 Bạn có chắc chắn không? (có/[không]): có

Sysctl có thể được đọc và quản lý:

% hệ thống efs.gmp.group
efs.gmp.group: <10539754> (4) :{ 1:0-14, 2:0-12,14,17, 3-4:0-14, smb: 1-4, nfs: 1-4, all_enabled_protocols: 1-4, isi_cbind_d: 1-4, lsass: 1-4, external_connectivity: 1-4 }

Có thể vô hiệu hóa shell bị hạn chế:

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

Tuy nhiên, các lệnh gạch dưới isi ( isi_* ), chẳng hạn như isi_for_array , vẫn không được phép chạy:

% /usr/bin/isi_for_array -s thời gian hoạt động
 zsh: quyền bị từ chối: /usr/bin/isi_for_array
% isi_gather_thông tin
 zsh: quyền bị từ chối: isi_gather_info
% isi_cstats
 isi_cstats: Syscall ifs_prefetch_lin() không thành công: Hoạt động không được phép

Khi hoàn tất, người dùng có thể kết thúc phiên hoàn toàn bằng lệnh đăng xuất hoặc thoát khỏi shell khôi phục thông qua lệnh thoát và quay lại shell bị hạn chế:

% thoát
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ác giả : Nick Trimbee