Có phải không an toàn khi có một người dùng vô hình với sudo không mật khẩu?


10

Tôi mới biết về Ansible. Hầu hết các hướng dẫn cung cấp VPS mà tôi đã thấy cho đến nay đều làm điều này:

  1. vô hiệu hóa root từ đăng nhập
  2. tạo người dùng mới chỉ có thể đăng nhập bằng ssh(không phải mật khẩu)
  3. thêm người dùng mới vào wheelnhóm, với quyền sudo không mật khẩu

Tôi hiểu (1) và (2), nhưng không (3).

Chắc chắn sudolà không có mật khẩu giống như đăng nhập như root? Tôi hiểu lợi ích (tiện lợi), nhưng điều này không an toàn?

Tôi nhận ra rằng các quản trị viên điều hành mạng của họ theo nhiều cách khác nhau và vì vậy điều này có thể được coi là "chủ quan", nhưng đây là một thông lệ RẤT phổ biến, nó thậm chí còn được thể hiện trong các tài liệu chính thức khác nhau cũng như các hướng dẫn được xuất bản bởi các công ty lưu trữ. Nó đi ngược lại với lẽ thường. Logic đằng sau nó là gì?


1
Ansible được thiết kế để tự động hóa các tác vụ quản trị, do đó thường cần quyền truy cập cấp cao nhất (root) do đó "mật khẩu sudo". Nếu bạn chỉ cần nó để chạy một tập hợp con các lệnh có sẵn trên hệ thống của mình, bạn có thể khóa nó xuống chỉ với các lệnh đó với cấu hình sudo chi tiết hơn. Mật khẩu sudo không nhất thiết có nghĩa là quyền truy cập vào mọi thứ gốc có thể làm được (mặc dù điều này trở nên khó thực thi khi bạn nhận ra người dùng có thể sửa đổi cấu hình sudo của bạn thông qua sudo để tự kiểm soát tốt hơn ...).
David Spillett

@DavidSpillett Tôi đã tự hỏi về điều đó - tức là xác định lệnh sudo nào sẽ cho phép trong tệp sudoers ... nhưng tôi đã đọc ở đâu đó rằng ansible thực hiện mọi thứ bằng cách diễn giải thông qua các lệnh python phức tạp và cách tiếp cận đó sẽ trở nên lộn xộn nhanh chóng.
lonix

Câu trả lời:


18

Nếu tài khoản dịch vụ có thể thực hiện sudo không mật khẩu, thì bạn phải bảo vệ quyền truy cập vào tài khoản đó.

Có tài khoản không có mật khẩu và chỉ sử dụng các khóa ssh để đăng nhập vào nó, thực hiện điều này, miễn là bạn có thể giữ khóa riêng của ssh an toàn.


Vì vậy, tôi "sắp xếp" ngay khi cảm thấy bị xáo trộn bởi quy ước này - tuy nhiên, đây là quy ước cho sự không rõ ràng, không cần thiết / thực dụng.
lonix

Vì vậy, bạn đang nói rằng về cơ bản tôi "chuyển" bảo mật cốt lõi từ VPS sang hệ thống cục bộ của mình, nơi chứa khóa ssh của tài khoản ansible? Trong trường hợp đó, điểm yếu không phải là chính VPS, đúng hơn là tôi! Và tôi cần phải thận trọng hơn trong việc bảo vệ khóa ssh đó, đổi lại sự tiện lợi mà tự động hóa có thể mang lại cho tôi.
lonix

6
Khóa ssh, cụm mật khẩu được bảo vệ bằng ssh-agent, là một thông tin hợp lý tốt.
John Mahowald

@lonix Tất cả các hệ thống bảo mật cần thông tin đăng nhập. Các hệ thống được bảo mật nhiều nhất là an toàn như các biện pháp bạn đưa ra để bảo mật các thông tin này, vì các hệ thống đó cung cấp quyền truy cập 100% cho chúng. Vì vậy, có, bạn không thể mong đợi bảo mật VPS của mình nếu bạn không bảo mật chính xác khóa SSH của mình (hoặc mật khẩu gốc hoặc bất cứ điều gì). Việc bạn định cấu hình sudo không mật khẩu có nghĩa là không có gì từ quan điểm này, cho phép sudo với mật khẩu không thay đổi thực tế rằng điều quan trọng là bạn phải bảo mật khóa SSH.
Giacomo Alzetta

@GiacomoAlzetta Tôi biết rằng, điều tôi muốn nói ở trên là trách nhiệm đang được chuyển từ điều khiển từ xa sang máy cục bộ. Vì leo thang sudo được thực hiện mà không có mật khẩu, điểm yếu trở thành cục bộ.
lonix

4

Người dùng mới được tạo trong (2) chỉ có thể đăng nhập bằng khóa SSH, không có mật khẩu. Khóa SSH cho phép truy cập root gián tiếp. Vì vậy, điều này tương đương với việc chỉ cho phép đăng nhập root bằng một khóa.

Vì tài khoản không có mật khẩu, nên không thể sudoyêu cầu mật khẩu. Ngoài ra Ansible cần để có thể thực hiện các lệnh. Có một mật khẩu bổ sung để cung cấp tại cùng một nơi với khóa sẽ không tăng tính bảo mật.


2

Vấn đề là ansible dành cho quản trị viên và tự động hóa, vì vậy nếu bạn cần nhập mật khẩu để chạy tập lệnh không thực sự là cách tốt nhất. Ngoài ra, không an toàn để lưu mật khẩu cho sudo trong một tệp hoặc cơ sở dữ liệu và có thể lấy được mật khẩu mỗi khi nó chạy playbook. Vì vậy, sự kết hợp giữa sudo không mật khẩu và xác thực với Khóa ssh là phương pháp tốt nhất để đảm bảo an ninh và không có vấn đề đúng bằng cách chạy playbook. Ngoài ra, bạn là một quản trị viên và biết những gì bạn lập trình trong playbook. Vì vậy, playbook không thể phá hủy máy chủ của bạn.


Playbook có thể phá hủy hệ thống của bạn, nhưng nếu bạn sử dụng các khóa chỉ môi trường thử nghiệm riêng biệt, điều đó sẽ không phá hủy các máy chủ sản xuất.
John Mahowald

Chính xác, đây hy vọng là điều kiện tiên quyết khi làm việc trên các hệ thống sản xuất.
NicoKlaus

1
Ansible có 'ansible-vault' và các plugin / mô-đun / thư viện cho phép lưu trữ bí mật trong nhiều hệ thống lưu trữ bí mật của bên thứ 3 như bitwarden, hashicorp vault, keepass, v.v.
Zoredache
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.