Điểm:0

sudo để cho phép apt-get cài đặt các gói từ xa, nhưng cấm các lệnh tùy ý

lá cờ cn

Tôi đang tìm cách cho phép người dùng cài đặt các gói (chỉ từ xa) qua apt-get (hoặc cơ chế khác?) nhưng không cho phép chúng chạy các lệnh tùy ý với quyền root.

tôi co thể lây một số trên đường đến đó thông qua /etc/sudoers. Giả sử tôi có cái này trong tệp /etc/sudoers của mình

gốc TẤT CẢ=(TẤT CẢ: TẤT CẢ) TẤT CẢ
john ALL=NOPASSWD:/usr/bin/apt,/usr/bin/apt-get

Sau đó, John xuất hiện giới hạn để chạy đúng cáchapt-get qua sudo. Nhưng... dường như có nhiều cách để trốn thoát apt-get vào Shell với quyền root (https://blog.ikuamike.io/posts/2021/package_managers_privesc/):

  • Loại sudo apt-get nhật ký thay đổi apt và nhấn nhập
  • Nhập dấu chấm than ! và nhấn nhập
  • Bây giờ bạn đang ở trong trình bao với quyền root và có thể làm bất cứ điều gì

Hoặc chạy dưới đây:

sudo apt update -o APT::Update::Pre-Invoke::="/bin/bash"

Nếu nó tạo ra bất kỳ sự khác biệt nào, thì đây là trong Docker


đã được đăng tại https://superuser.com/q/1698692/315568, nhưng tôi nghĩ đó là trang web sai, vì trang này không (chỉ) dành cho máy của tôi mà dành cho những người khác

lá cờ cn
Bob
Nếu bạn không tin tưởng người dùng john, anh ta sẽ không nhận được bất kỳ quyền sudo nào. Bạn đang cố gắng ngăn chặn một hành vi lạm dụng duy nhất, nhưng thực tế là john chẳng hạn vẫn có thể tạo một gói tùy chỉnh để cài đặt bất kỳ công cụ nào mà anh ấy cần để phá vỡ các biện pháp kiểm soát truy cập của bạn bằng `sudo apt install ./my-rootkit.deb`
Điểm:1
lá cờ cn
Bob

Các sudoers sách hướng dẫn cũng có cả một phần về cách một chính sách phù hợp trong /etc/sudoers tệp cấu hình (hoặc tất nhiên là các tệp chính sách thả vào đi kèm) có thể cung cấp giới hạn bảo vệ chống thoát vỏ với HẠN CHẾNOEXEC tùy chọn.

Điều đó có thể chung chung hơn tạo tập lệnh bao bọc cho một tiện ích cụ thể.

hạn chế Tránh cấp cho người dùng quyền truy cập vào các lệnh cho phép người dùng chạy các lệnh tùy ý. Nhiều trình chỉnh sửa có chế độ hạn chế trong đó các trình bao bị vô hiệu hóa, mặc dù sudoedit là một giải pháp tốt hơn để chạy trình chỉnh sửa thông qua sudo. Do số lượng lớn các chương trình cung cấp khả năng thoát shell, nên việc hạn chế người dùng đối với tập hợp các chương trình không cung cấp khả năng thoát shell thường không khả thi.

noexec
Nhiều hệ thống hỗ trợ thư viện dùng chung có khả năng ghi đè các chức năng thư viện mặc định bằng cách trỏ một biến môi trường (thường là LD_PRELOAD) vào một thư viện dùng chung thay thế. Trên các hệ thống như vậy, sudo's noexec chức năng có thể được sử dụng để ngăn chương trình do Sudo chạy thực thi bất kỳ chương trình nào khác. Ghi chú, ... ...
Để kích hoạt noexec cho một lệnh, sử dụng NOEXEC thẻ như được ghi lại trong phần Đặc tả người dùng ở trên. Đây là ví dụ đó một lần nữa:
aaron shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
Điều này cho phép người dùng aaron chạy /usr/bin/thêm/usr/bin/vi với noexec được kích hoạt. Điều này sẽ ngăn hai lệnh đó thực thi các lệnh khác (chẳng hạn như trình bao).

Vì vậy, trong ví dụ của bạn:

john ALL=NOEXEC:NOPASSWD: /usr/bin/apt,/usr/bin/apt-get

phải đủ để vẫn cho phép người dùng John chạy đúng cáchapt-get với các đặc quyền nâng cao, không bị nhắc nhập mật khẩu và không có khả năng sử dụng trình thoát vỏ hoặc thủ thuật khác vượt quá giới hạn quyền hạn của anh ta.

Lưu ý rằng làm như vậy cũng có thể có kết quả ngoài ý muốn. Ví dụ sau khi cài đặt một dịch vụ mới, apt có thể không khởi động được dịch vụ liên quan.

Điểm:0
lá cờ cn

Đây là nỗ lực của tôi, vì vậy người dùng sẽ được sử dụng sudo để chạy tập lệnh này, nhưng không có tập lệnh nào khác.

#!/bin/bash

# Tập lệnh này kết thúc `apt update` và `apt install`, nhưng cố gắng cấm
# lệnh tùy ý có thể được chạy bởi người dùng với quyền root. Nó có tồn tại
# vì cho phép người dùng `Sudo apt` sẽ cho phép
# `sudo apt changelog apt`, chạy `less` sau đó sẽ cho phép
# người dùng thoát vào vỏ.

# Tuy nhiên, vẫn không thể cấp quyền truy cập đầy đủ vào `apt update` và `apt install`,
# vì có 3 cách chúng có thể được sử dụng để chạy các lệnh tùy ý
#
# 1. Thông qua các tùy chọn trong biến môi trường APT_CONFIG
# 2. Thông qua các tùy chọn dòng lệnh, chẳng hạn như '-o' để chỉ định tập lệnh sẽ chạy
# 3. Thông qua gói cục bộ chứa (các) tập lệnh cài đặt tùy chỉnh
#
# Vì vậy, tập lệnh này cố gắng cấm 3 khả năng trên

# 1. Xóa mọi tùy chọn trong biến môi trường APT_CONFIG
xuất APT_CONFIG=''

# 2. và 3. Cấm tùy chọn dòng lệnh hoặc gói cục bộ
cho var bằng $*
làm
   nếu [[ ${var::1} == "/" || ${var::1} == "." || ${var::1} == "-" ]]
   sau đó
     echo "E: Cấm cài đặt gói cục bộ hoặc chuyển tùy chọn"
     thoát 1
   fi
xong

# Cập nhật và cài đặt các gói được yêu cầu
cập nhật apt
cài đặt apt -y $*

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.