Người dùng ssh của tôi có được cung cấp sudo không mật khẩu cho `apt-get update` và` apt-get Nâng cấp không?


7

Tôi có tài khoản người dùng chuẩn SSH trên máy chủ cá nhân của mình và nó có quyền truy cập sudo (thông qua mật khẩu của nó).

Tôi sử dụng khóa công khai, vì vậy tôi không phải nhập mật khẩu tài khoản để đăng nhập. Tôi có an toàn khi cho phép người dùng này truy cập sudo không mật khẩu để chỉ chạy các lệnh apt-get updateapt-get upgrade(hoặc apt-get dist-upgrade) không? Tôi đang hỏi từ quan điểm bảo mật, không phải từ quan điểm 'cập nhật bị hỏng / lỗi'. Tôi là người duy nhất đăng nhập và nếu tôi phá vỡ thứ gì đó bằng bản cập nhật, tôi luôn có thể sudo (bằng mật khẩu) để sửa lỗi.

Điểm chính là để có thể chạy các bản cập nhật kịp thời trên máy chủ của tôi mà không cần nhập mật khẩu. Nhưng, nếu ai đó có quyền truy cập vào tài khoản này, tôi không muốn họ có thể cài đặt bất cứ thứ gì và tôi không biết nếu có những mối quan tâm khác mà tôi nên có với hai lệnh này.

Đây là dòng chính xác trong sudoerstập tin của tôi :

stephen ALL=(root) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade, /usr/bin/apt-get dist-upgrade


3
Mối quan tâm duy nhất tôi thấy là đôi khi các bản nâng cấp cho phép chạy một lớp vỏ phụ tương tác bất cứ khi nào tệp cấu hình thay đổi va chạm.

1
Hãy nghĩ về nó như thế này: bạn có thể đánh lừa các apt-get updatebản cập nhật từ một kho lưu trữ giả không? Nói, với một chút ngộ độc bộ đệm DNS?
lcd047

1
@ lcd047 Các gói không được ký bởi canonical, hoặc kho lưu trữ nâng cấp đến từ đâu? Ngay cả khi DNS bị nhiễm độc, tôi nghĩ các gói bị can thiệp sẽ không hoạt động vì nó có một người ký khác. Nhưng đó là một điểm tốt nếu họ không ký.
Stephen Schrauger

@Nasha Đó là một điểm rất tốt! Tôi không nghĩ đến việc giải quyết va chạm.
Stephen Schrauger

1
Ngay cả khi các gói được ký, bạn không cần phải thực sự cài đặt chúng để làm cho cuộc sống thú vị cho sysadmin. Hãy xem xét việc đánh lừa hệ thống để lấy tệp 10TB từ kho lưu trữ giả của bạn (và một lần nữa, bạn không cần tệp 10TB thực tế để phục vụ 10TB trích đoạn được chọn từ /dev/urandomtrên HTTP). Chữ ký không thể ngăn chặn điều đó, vì chúng chỉ có thể được xác minh sau khi tệp đã được tải xuống.
lcd047

Câu trả lời:


8

Cho phép một người dùng ít tin cậy hơn để chạy apt-get updatelà ok. Điều tồi tệ nhất họ có thể làm là tiêu thụ rất nhiều băng thông và lấp đầy một số dung lượng đĩa, và họ có rất nhiều phương tiện khác để làm điều này trừ khi bạn đã thực hiện các biện pháp nghiêm ngặt để ngăn chặn điều này.

Cho phép người dùng chạy apt-get upgradecó khả năng cung cấp cho họ quyền truy cập root. Một số gói truy vấn người dùng và có thể cho phép thoát vỏ; ví dụ: người dùng có quyền truy cập vào thiết bị đầu cuối apt-get upgrade(hoặc bất kỳ dpkg -icuộc gọi nào ) đang chạy có thể được nhắc phải làm gì nếu tệp cấu hình đã được cập nhật và một trong các tùy chọn là chạy shell để kiểm tra tình huống.

Bạn cần hạn chế thêm một số lệnh:

#!/bin/sh
set -ex
exec </dev/null >"/var/log/automatic-apt-upgrade-$(date +%Y%m%d-%H%M%S)-$SUDO_USER.log" 2>&1
apt-get --assume-no upgrade

Điều này không nên cung cấp cho người dùng một cách để trở thành root, vì họ không thể tương tác với trình quản lý gói. Vì các bản nâng cấp đôi khi có thể phá vỡ một hệ thống và người dùng chỉ có các quyền này sẽ không thể sửa chữa bất cứ điều gì, điều này chỉ nên được thực hiện với một bản phát hành ổn định, chỉ có các bản cập nhật bảo mật đang chờ xử lý. Nếu đó là bản cập nhật kernel, hãy để người dùng có quyền truy cập root đầy đủ quyết định khi nào kích hoạt khởi động lại.

Nhân tiện, người dùng sẽ không thể tiêm nội dung gói - để làm điều đó, họ cần kiểm soát máy chủ phân phối gói và ngoài máy chủ ký gói nếu gói được ký ( đó là trường hợp cho tất cả các nguồn chính thức). Nó không liên quan đến vectơ tấn công này, người chỉ huy cỗ máy tại thời điểm nâng cấp.

Tất cả điều này được nói là sử dụng nâng cấp không giám sát , nếu đó là những gì bạn muốn.


Tôi có thể không chỉ sử dụng NOEXEC? Các tài liệu ubfox cho các trạng thái sudoers ...you can also use NOEXEC to prevent any programs launching shells themselves (as once a program is running with sudo it has full root privileges so could launch a root shell to circumvent any restrictions in the sudoers file. - help.ubfox.com/community/Sudoers
trình viên

@Programster Nếu bạn sử dụng NOEXEC, việc cài đặt hầu hết các gói sẽ thất bại vì postinst của chúng và các tập lệnh khác sẽ không chạy.
Gilles 'SO- ngừng trở nên xấu xa'

Rất tốt để biết, nếu tôi sử dụng tập lệnh của bạn, quản trị viên có thể chạy nâng cấp sau đó và đưa ra các lựa chọn nâng cấp hay các gói đó sẽ được coi là "cài đặt" và được chọn không làm gì?
Chương trình

@Programster Quá trình cài đặt sẽ thất bại, các gói sẽ vẫn ở trạng thái được cài đặt một nửa (với các tệp được đặt, nhưng không thể sử dụng được).
Gilles 'SO- ngừng trở nên xấu xa'

Tôi đoán rằng "quy tắc của ngón tay cái" là không cho phép người dùng không sudo truy cập vào chức năng nâng cấp, sau đó sudo apt-get update, và có thể xem xét thêm unattended-upgrades.
Chương trình
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.