Người dùng linux có thể thay đổi mật khẩu mà không cần biết mật khẩu hiện tại không?


25

Tôi đang thiết lập một vài ubuntuhộp và sử dụng opscode cheflàm công cụ cấu hình. Sẽ khá dễ dàng để cài đặt các khóa công khai cho mỗi người dùng trên mỗi máy chủ này và vô hiệu hóa xác thực mật khẩu.

Tuy nhiên, người dùng cũng nên có các sudođặc quyền, theo mặc định, yêu cầu mật khẩu.

Nếu tôi muốn sử dụng khóa công khai của người sử dụng như một phương pháp quản lý truy cập và cho phép người sử dụng sudođặc quyền, đó có nghĩa là tôi cũng nên thiết lập cho người dùng với NOPASSWD: ALLtrong visduo, hoặc là có một cách mà người dùng có thể thay đổi mật khẩu của họ nếu họ chỉ có xác thực khóa công khai?



@sr - không giống như đây là một cách làm chính thống ...
cwd

Tại sao bạn muốn người dùng của bạn có sudo privateeleges? Tôi hy vọng bạn biết rằng bạn cung cấp quyền truy cập root bằng cách này. Có thể có một cơ hội ở đây để đầu tư một chút thời gian và chỉ cho phép một tập hợp con các lệnh được sử dụng liên quan đến sudo (có thể sẽ không an toàn hơn). Go man sudoerssẽ mang lại thông tin về việc có một số lệnh nhất định có thể chạy với sudo mà không cần mật khẩu người dùng. Bạn thậm chí có thể thêm shellscript vào / etc / sudoers, điều này sẽ cho phép cài đặt "tự mật khẩu" cho mỗi người dùng mà không cần mật khẩu trước.
nhân loạiANDpeace

@humanityANDpeace - Tôi nhận ra điều này. Tất cả các thành viên trong nhóm của chúng tôi đều yêu cầu quyền truy cập root vào các máy chủ đám mây mà chúng tôi duy trì. Chúng tôi hiện đang sử dụng đầu bếp để quản lý khóa công khai của người dùng và chúng tôi có một nhóm sysadmin với NOPASSWD: ALLcác thành viên trong nhóm là một phần của. Nếu bạn có thể đề xuất một giải pháp tốt hơn xin vui lòng gửi nó như một câu trả lời.
cwd

Câu trả lời:


21

Sudo, trong cấu hình phổ biến nhất của nó, yêu cầu người dùng nhập mật khẩu của mình. Thông thường, người dùng đã sử dụng mật khẩu của mình để xác thực tài khoản và nhập lại mật khẩu là cách để xác nhận rằng người dùng hợp pháp đã không từ bỏ bảng điều khiển của mình và bị tấn công.

Trong thiết lập của bạn, mật khẩu người dùng sẽ chỉ được sử dụng để xác thực thành sudo. Cụ thể, nếu khóa SSH của người dùng bị xâm phạm, kẻ tấn công sẽ không thể nâng cấp lên quyền root trên máy chủ. Kẻ tấn công có thể đưa một trình ghi nhật ký khóa vào tài khoản, nhưng trình ghi nhật ký khóa này sẽ được phát hiện bởi những người dùng khác và thậm chí có thể được theo dõi tự động.

Một người dùng thường cần biết mật khẩu hiện tại của mình để thay đổi nó thành một mật khẩu khác. Các passwdchương trình thẩm tra này (nó có thể được cấu hình không, nhưng đây là không hữu ích hoặc ở tất cả mong muốn trong kịch bản của bạn). Tuy nhiên, root có thể thay đổi bất kỳ mật khẩu người dùng nào mà không cần biết mật khẩu cũ; do đó người dùng có quyền sudo có thể thay đổi mật khẩu của mình mà không cần nhập mật khẩu tại passwddấu nhắc bằng cách chạy sudo passwd $USER. Nếu sudođược cấu hình để yêu cầu mật khẩu của người dùng, thì dù sao người dùng cũng phải gõ mật khẩu sudo.

Bạn có thể vô hiệu hóa xác thực mật khẩu một cách chọn lọc. Trong tình huống của bạn, bạn sẽ vô hiệu hóa xác thực mật khẩu trong ssh và có thể trong các dịch vụ khác. Hầu hết các dịch vụ trên hầu hết các đơn vị hiện đại (bao gồm Ubuntu) đều sử dụng PAM để định cấu hình phương thức xác thực. Trên Ubuntu, các tệp cấu hình PAM tồn tại /etc/pam.d. Để vô hiệu hóa xác thực mật khẩu, nhận xét auth … pam_unix.sodòng trong /etc/pam.d/common-auth. Bên cạnh đó, hãy chắc chắn rằng bạn có PasswordAuthentication notrong /etc/ssh/sshd_configđể xác thực mật khẩu built-in vô hiệu hóa sshd của.

Bạn có thể muốn cho phép một số người dùng quản trị đăng nhập bằng mật khẩu hoặc cho phép xác thực mật khẩu trên bảng điều khiển. Điều này là có thể với PAM (nó khá linh hoạt), nhưng tôi không thể nói cho bạn biết làm thế nào ra khỏi đỉnh đầu của tôi; hỏi một câu hỏi riêng nếu bạn cần giúp đỡ


một cách thuận tiện để sử dụng PAM kết hợp với xác thực khóa SSH là thông qua pam_ssh_agent_auth , có lợi thế thay thế lời nhắc mật khẩu bằng cách xác thực khóa (về mặt lý thuyết thậm chí an toàn hơn) mà SSH có thể sử dụng
Tobias Kienzler

Vì vậy, bạn đang nói sudo passwdsẽ thay đổi mật khẩu cho người dùng hiện tại, không phải cho người dùng sudo?
still_dreaming_1

1
@ still_dreaming_1 Không, tôi đang nói rằng người dùng có thể chạy các lệnh có sudothể thay đổi mật khẩu của riêng họ. Lệnh chính xác không thực sự quan trọng, nhưng để đi vào chi tiết hơn, nó sẽ là sudo passwd bobnơi boblà tên của người dùng, hoặc một cái gì đó tương đương. Không có đối số, sudo passwdthực sự sẽ thay đổi mật khẩu cho root.
Gilles 'SO- ngừng trở thành ác quỷ'

7

Bạn có thể sử dụng mô-đun pam_ssh_agent_auth . Nó khá đơn giản để biên dịch, và sau đó chỉ cần thêm mục

auth       sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys

trước các mục khác auth(hoặc include) trong/etc/pam.d/sudo

Defaults    env_keep += "SSH_AUTH_SOCK"

đến /etc/sudoers(thông qua visudo).

Giờ đây, mọi người dùng đều có thể xác thực sudothông qua một tác nhân SSH (được chuyển tiếp hoặc cục bộ) hoặc mật khẩu của họ. Có thể là khôn ngoan khi yêu cầu người dùng của bạn sử dụng ssh-add -csao cho mỗi sudocuộc gọi ít nhất sẽ yêu cầu một số xác nhận.


Về một vấn đề liên quan, có pam_ssh , cho phép sử dụng cụm mật khẩu SSH của bạn thay vì unix để đăng nhập, tự động bắt đầu một tác nhân và thêm khóa - do đó cung cấp cho bạn khả năng đăng nhập một lần.
Tobias Kienzler

1

Có, nó cực kỳ không an toàn và cũng cho phép người dùng truy cập mật khẩu của người dùng khác, nhưng vì họ có sudo, bạn không thể làm gì nhiều.

Về cơ bản, bạn làm như sau:

$ sudo -i

Bây giờ, chúng tôi đã root. Chúng tôi có quyền truy cập vào tất cả mọi thứ.

# passwd $username

Tên người dùng $ có thể là tên người dùng.

Nhập mật khẩu UNIX mới:

Nhập lại mật khẩu UNIX mới: passwd: mật khẩu được cập nhật thành công

Bùng nổ, mật khẩu thay đổi. Một lần nữa, vô cùng không an toàn bởi vì bạn có thể thay đổi bất kỳ ai, nhưng nó hoạt động, nhưng nó hoạt động. Tôi không khuyên bạn, nhưng nên đưa ra câu trả lời này như một ví dụ về những việc không nên làm.


có vẻ tốt nhưng bạn có thể giải thích những gì đang diễn ra ở đây?
cwd

4
Không thể làm gì sudo -inếu không có mật khẩu người dùng hiện tại.
kravemir

@Miro. Đó là như bạn nói. Vẫn sudo bashcó thể là mật khẩu do thiết lập trong /etc/sudoerstệp. Tôi nghĩ rằng @jrg như đã nói tập trung nhiều hơn vào vấn đề không an toàn với sudo ở đây
nhân

1
Thành thật mà nói, bạn không cần phải làm sudo -i, bạn có thể chuyển thẳng đến sudo passwd $username@Miro, bạn không cần biết mật khẩu người dùng hiện tại. Bạn chỉ cần biết mật khẩu gốc để sử dụng sudo
Antony

0

Điểm chính của mật khẩu là đảm bảo rằng các tin tặc lấy được khóa của người dùng hoặc tìm thấy thiết bị đầu cuối không giám sát không thể có quyền truy cập root. Vì lý do này, tôi sẽ không đề xuất bất kỳ giải pháp nào liên quan đến sudo không mật khẩu.

Tôi đề nghị bạn giữ nó đơn giản: có lẽ gửi email cho một người sử dụng mật khẩu mặc định với các hướng dẫn nghiêm ngặt để thay đổi nó càng sớm càng tốt, nếu không chèn một kịch bản trong họ .profilehoặc .loginhoặc một cái gì đó như vậy mà nó đòi hỏi một mật khẩu mới trong lần đăng nhập đầu tiên của họ. Nó có thể tự vô hiệu hóa khi hoàn thành và bạn có thể sử dụng expectđể nhập mật khẩu hiện có để họ không bao giờ phải biết.


0
#% useradd -g somegroup someuser
#% usermod -p "" someuser
#% chage -d 0 someuser
#% sed -i "s/^.*PasswordAuthentication .*/PasswordAuthentication no/" /etc/sshd/sshd_config
#% /sbin/service sshd restart
#% cp -r ~/.ssh `echo ~someuser`
#% chown -R someuser `echo ~someuser`/.ssh
#% chgrp -R somegroup `echo ~someuser`/.ssh
#% echo "%somegroup  ALL=(ALL)   ALL" >> /etc/sudoers

> Điều này sẽ cho phép bạn có những người dùng chỉ có thể đăng nhập bằng khóa chung và không thể sử dụng mật khẩu để đăng nhập. Tuy nhiên, anh ta sẽ bị buộc phải thay đổi mật khẩu ngay lần đầu tiên đăng nhập ... nhưng không cần phải nói trước với anh ta mật khẩu nào đó ... Người dùng sẽ được yêu cầu đặt lại mật khẩu và sau đó họ chỉ có thể sử dụng nó cho sudo nhưng sẽ không thể đăng nhập (ssh) bằng mật khẩu đó. Lưu ý rằng mẹo ở đây là không nói với người dùng một số mật khẩu giả mà sau đó họ sẽ được yêu cầu nhập vào thời điểm đăng nhập một khi họ được yêu cầu thay đổi mật khẩu của họ ... Trong vỏ ốc không có giao tiếp từ quản trị viên (root) cho người dùng thực tế là bắt buộc.

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.