Bạn có thể thiết lập `sudo` không mật khẩu trên máy chủ đám mây không?


58

Tôi thích ý tưởng truy cập máy chủ qua khóa, vì vậy tôi không phải nhập mật khẩu mỗi lần sshvào hộp, tôi thậm chí còn khóa rootmật khẩu ( không phải ) của người dùng ( passwd -l username) để không thể đăng nhập mà không có khóa.

Nhưng tất cả điều này sẽ phá vỡ nếu tôi bắt buộc phải nhập mật khẩu cho sudocác lệnh. Vì vậy, tôi muốn thiết lập không có mật khẩusudo để làm cho mọi thứ phù hợp với đăng nhập không có mật khẩu.

Tuy nhiên, tôi luôn có cảm giác ruột thịt rằng nó có thể gây tác dụng ngược với tôi theo một cách bất ngờ nào đó, nó chỉ có vẻ không an toàn. Có bất kỳ cảnh báo với thiết lập như vậy? Bạn có đề nghị / không khuyến nghị làm điều này cho tài khoản người dùng trên máy chủ không?

Làm rõ

  1. Tôi đang nói về việc sử dụng sudotrong một phiên người dùng tương tác ở đây, không phải cho các dịch vụ hoặc tập lệnh quản trị
  2. Tôi đang nói về việc sử dụng máy chủ đám mây (vì vậy tôi không có quyền truy cập cục bộ vào máy và chỉ có thể đăng nhập từ xa)
  3. Tôi biết rằng sudođã hết thời gian mà tôi không phải nhập lại mật khẩu. Nhưng buổi hòa nhạc của tôi không thực sự lãng phí thêm thời gian để nhập mật khẩu. Mặc dù vậy, ý tưởng của tôi là không phải xử lý mật khẩu, vì tôi cho rằng:
    • Nếu tôi phải ghi nhớ tất cả, rất có thể nó quá ngắn để được bảo mật hoặc tái sử dụng
    • Nếu tôi tạo một mật khẩu dài và duy nhất cho tài khoản từ xa của mình, tôi sẽ phải lưu nó ở đâu đó (chương trình quản lý mật khẩu cục bộ hoặc dịch vụ đám mây) và tìm nạp nó mỗi khi tôi muốn sử dụng sudo. Tôi hy vọng tôi có thể tránh điều đó.

Vì vậy, với câu hỏi này, tôi muốn hiểu rõ hơn về rủi ro, hãy cẩn thận và đánh đổi một cấu hình có thể có so với các cấu hình khác.

Theo dõi 1

Tất cả các câu trả lời đều nói rằng không có mật khẩu sudolà không an toàn vì nó cho phép leo thang các đặc quyền "dễ dàng" nếu tài khoản người dùng cá nhân của tôi bị xâm phạm. Tôi hiểu điều đó. Nhưng mặt khác, nếu tôi sử dụng mật khẩu, chúng tôi sẽ chịu mọi rủi ro kinh điển với mật khẩu (chuỗi quá ngắn hoặc phổ biến, lặp đi lặp lại trên các dịch vụ khác nhau, v.v.). Nhưng tôi đoán rằng nếu tôi vô hiệu hóa xác thực mật khẩu /etc/ssh/sshd_configđể bạn vẫn phải có khóa để đăng nhập, tôi có thể sử dụng mật khẩu đơn giản sudohơn để dễ nhập hơn không? Đó có phải là một chiến lược hợp lệ?

Theo dõi 2

Nếu tôi cũng có một khóa để đăng nhập rootthông qua ssh, nếu ai đó truy cập vào máy tính của tôi và đánh cắp các khóa của tôi (mặc dù chúng vẫn được bảo vệ bằng mật khẩu khóa của OS!), Họ cũng có thể truy cập trực tiếp vào roottài khoản , bỏ qua sudocon đường. Điều gì nên là chính sách để truy cập vào roottài khoản sau đó?


2
Hoàn toàn không khuyến nghị điều đó, vì thường có nhiều cách để lấy shell như người dùng (vì tất cả các dịch vụ đều vi phạm bảo mật, nhưng họ thường chạy như người dùng để tránh truy cập đầy đủ vào hệ thống), nhưng có mật khẩu để đăng nhập như root ngăn chặn người trái phép để có quyền truy cập root. Nếu không có, hãy nghĩ rằng bất kỳ ai có quyền truy cập vào tài khoản người dùng của bạn bằng mọi cách đều có quyền truy cập đầy đủ vào máy chủ. Đặt mật khẩu có thể không nhiều, nhưng nó giúp.
piernov

Xin vui lòng xem các câu hỏi tiếp theo của tôi
Dmitry Pashkevich

1
sudo không bao giờ nên được mật khẩu. root nên bị vô hiệu hóa từ đăng nhập từ xa thông qua SSH, cổng ssh không được mặc định (để bỏ các bot ngu ngốc) và bất kỳ tài khoản nào cần sudo chỉ nên được giới hạn ở mức tối thiểu sudo cho bất cứ điều gì chúng cần (khởi động lại dịch vụ chỉ, vv), và cũng có mật khẩu rất mạnh.
SnakeDoc

@SnakeDoc Cảm ơn, đó là một loại trả lời tôi đang mong đợi. Muốn viết một câu trả lời chi tiết? Tôi rất vui được học!
Dmitry Pashkevich

2
@EEAA nó thực sự khá dễ dàng trong linux. Các tài khoản duy nhất được phép không có mật khẩu trong sudo, sẽ là các tài khoản hệ thống mà người ta không thể đăng nhập và do đó không thể nâng cao tài khoản đó và sử dụng các quyền đó đối với bạn. Đặt vỏ không có thật cho tài khoản /etc/passwdnhư nologin, không đặt mật khẩu và sau đó đặt mật khẩu không hiển thị trong visudo. Nếu bạn làm điều này, bạn cũng nên đảm bảo rằng cài đặt visudo chỉ dành cho những gì tài khoản hệ thống đó thực sự cần, tức là khóa nó xuống các lệnh duy nhất mà nó sẽ chạy.
SnakeDoc

Câu trả lời:


48

Tôi thích ý tưởng truy cập máy chủ qua các khóa, vì vậy tôi không phải nhập mật khẩu mỗi khi tôi vào hộp, tôi thậm chí còn khóa mật khẩu (không phải root) của người dùng (tên người dùng passwd) để không thể đăng nhập mà không cần khóa ... Bạn có đề nghị / không khuyên bạn nên làm điều này cho tài khoản người dùng trên máy chủ không?

Bạn đang đi về việc vô hiệu hóa đăng nhập dựa trên mật khẩu sai cách. Thay vì khóa tài khoản người dùng, hãy đặt PasswordAuthentication notrong tài khoản của bạn /etc/ssh/sshd_config.

Với bộ đó, xác thực mật khẩu bị vô hiệu hóa cho ssh, nhưng bạn vẫn có thể sử dụng mật khẩu cho sudo.

Lần duy nhất tôi khuyên bạn nên cài đặt NOPASSWDtrong sudo là cho các tài khoản dịch vụ, nơi các quy trình cần có khả năng chạy các lệnh thông qua sudo theo lập trình. Trong những trường hợp đó, hãy đảm bảo rằng bạn chỉ liệt kê danh sách trắng các lệnh cụ thể mà tài khoản cần chạy. Đối với các tài khoản tương tác, bạn phải luôn để lại mật khẩu được kích hoạt.

Trả lời các câu hỏi tiếp theo của bạn:

Nhưng tôi đoán rằng nếu tôi tắt xác thực mật khẩu trong / etc / ssh / sshd_config để bạn vẫn phải có khóa để đăng nhập, tôi có thể sử dụng mật khẩu đơn giản hơn chỉ để sudo dễ nhập hơn không? Đó có phải là một chiến lược hợp lệ?

Vâng đúng rồi. Tôi vẫn khuyên bạn nên sử dụng mật khẩu tài khoản cục bộ tương đối mạnh, nhưng không mạnh mẽ một cách lố bịch. ~ 8 ký tự, được tạo ngẫu nhiên là đủ.

Nếu tôi cũng có khóa để đăng nhập bằng root thông qua ssh, nếu ai đó truy cập vào máy tính của tôi và lấy cắp khóa của tôi (họ vẫn được bảo vệ bằng mật khẩu khóa của OS!), Họ cũng có thể truy cập trực tiếp vào tài khoản root, bỏ qua đường dẫn sudo.

Quyền truy cập root thông qua ssh nên bị vô hiệu hóa. Giai đoạn = Stage. Đặt PermitRootLogin notrong của bạn sshd_config.

Điều gì nên là chính sách để truy cập vào tài khoản root sau đó?

Bạn phải luôn có một phương tiện để có được quyền truy cập ngoài băng vào bảng điều khiển của máy chủ của bạn. Một số nhà cung cấp VPS cung cấp điều này, cũng như các nhà cung cấp phần cứng chuyên dụng. Nếu nhà cung cấp của bạn không cấp quyền truy cập bảng điều khiển thực (ví dụ EC2), bạn vẫn có thể khôi phục quyền truy cập bằng cách sử dụng quy trình như những gì tôi phác thảo trong câu trả lời này .


2
+1 nên để lại mật khẩu ...
Chris S

6
+1 mật khẩu sudo không thực sự ở đó để bảo mật (theo như tôi có thể thấy) nhưng nhiều hơn là một kiểm tra ngốc. Không có ở đó có thể gây ra havok chưa được kể.
Boris the Spider

1
nếu bạn mất chìa khóa, bạn đã hoàn thành, trừ khi bạn có cửa hậu, nhưng kẻ tấn công cũng vậy. cách duy nhất để sửa khóa bị mất nếu được thực hiện đúng cách, là tự mình ngồi ở thiết bị đầu cuối thực tế. Nếu bạn cần loại khóa ssh bảo vệ cung cấp, bạn nên biết về những cạm bẫy và đơn giản là ... đừng để mất chìa khóa.
SnakeDoc

1
Một nhận xét về đoạn cuối cùng của bạn và liên quan đến việc mất quyền truy cập nói chung đối với bất kỳ VPS nào ... một số nhà cung cấp VPS thực sự sẽ giúp bạn nếu bạn bị khóa. Tôi đã khởi động máy ảo của mình vào chế độ Người dùng đơn và thực hiện một số việc cho tôi khi tôi tự khóa (điều đó xảy ra ... quy tắc tường lửa xấu lol). Tùy thuộc vào máy chủ của bạn, họ có thể tính phí cho bạn cho dịch vụ; , sau tất cả, dành sự quan tâm đặc biệt cho bạn. Ngoài ra, một số người sẽ thực hiện sao lưu / chụp nhanh với giá nhỏ hoặc đôi khi miễn phí, có thể đáng giá nếu bạn sắp thực hiện một thay đổi lớn, có thể gây gián đoạn.
SnakeDoc

1
@DmitryPashkevich - liên quan đến việc PasswordAuthenticationảnh hưởng đến tất cả người dùng, bạn luôn có thể sử dụng Matchcác phần trong sshd_config để bật lại cho một số người dùng hoặc nhóm nhất định.
Matt Thomason

11

Tôi thường hạn chế sử dụng các NOPASSWORDlệnh được chạy bởi một quy trình tự động. Tốt nhất là có một tài khoản dịch vụ cho các lệnh này và hạn chế sử dụng sudo cho các lệnh được yêu cầu.

Cho phép NOPASSWORDcác lệnh chung, cho phép bất kỳ ai có quyền truy cập vào userid của bạn để chạy bất kỳ lệnh nào. Điều này có thể dẫn đến sự thỏa hiệp về thông tin đăng nhập của bạn, nhưng có thể đơn giản như ai đó ngồi ở bàn làm việc của bạn khi bạn bước đi trong một giây.

Tôi thấy tôi không phải nhập mật khẩu thường xuyên. Khi bạn nhập mật khẩu, bạn có thể chạy một số lệnh nếu bạn không đợi quá lâu giữa chúng. Thời gian chờ là cấu hình.


8

Tôi sẽ chỉ sử dụng điều này trong hai trường hợp:

  • Khi nó hoàn toàn cần thiết cho một tập lệnh tự động đang chạy như một người dùng cụ thể
  • Đối với các tác vụ quản trị cụ thể (chỉ đọc các tác vụ quản trị viên, không phải các tác vụ thay đổi hệ thống) và sau đó chỉ dành cho người dùng cụ thể

Theo mặc định, hầu hết các sudocấu hình sẽ không yêu cầu bạn một lần nữa trong cùng một phiên (nếu bạn mở một vỏ mới không có bất kỳ ảnh hưởng nào). Bạn có thể kiểm soát hành vi này ở một mức độ nào đó với timestamp_timeoutcài đặt.

Không có mật khẩu sudogần như không nguy hiểm như sshcác khóa không có mật khẩu , vì kẻ tấn công từ xa cần thông tin đăng nhập của bạn ngay từ đầu, nhưng nếu chúng xâm nhập bằng cách nào đó xâm phạm khóa riêng của bạn (hoặc nếu chúng là địa phương đối với bạn và bạn đã để lại cho mình đăng nhập và mở khóa trong khi rời khỏi máy), sau đó yêu cầu mật khẩu là một sự bảo vệ bổ sung có giá trị giữa chúng và quyền truy cập đặc quyền.

Về theo dõi 2:

Nếu tôi cũng có một khóa để đăng nhập với quyền root thông qua ssh

Điều này tốt nhất nên tránh quá, vì chính xác lý do bạn mô tả. Nếu một kết nối từ xa phải có quyền truy cập đặc quyền, hãy đăng nhập thông qua tài khoản dịch vụ và cung cấp cho nó quyền kiểm soát vừa đủ để thực hiện công việc của mình thông qua sudo. Đây là nhiều faf để cấu hình tất nhiên vì vậy nhiều người không bận tâm (điều này có lợi cho bạn nếu bạn làm thế, vì có rất nhiều trái cây treo thấp hơn bạn để những kẻ tấn công dành thời gian cho nó!), Vì vậy nó đi xuống tuổi thỏa hiệp giữa bảo mật và thuận tiện (pro tip: chọn bảo mật!).


Cảm ơn đã giải quyết theo dõi # 2 của tôi. Mặc dù vậy, tôi vẫn bối rối: Tôi cố gắng tránh đăng nhập roottrực tiếp nhưng tôi cần MỘT SỐ cách để truy cập vào tài khoản, phải không? Vậy làm thế nào để tôi làm điều đó sau đó? Với mật khẩu, không phải khóa ssh? Nhưng không phải khóa tốt hơn mật khẩu?
Dmitry Pashkevich

Bạn luôn có thể đăng nhập cục bộ với quyền root, nhưng bạn nên tắt hoàn toàn thông tin đăng nhập vào root từ máy chủ từ xa (thông qua ssh hoặc tương tự). Nếu bạn có một tài khoản có thể trở thành root thông qua sudo (tất nhiên là có mật khẩu) thì bạn sẽ không bao giờ mất tất cả quyền truy cập vào tài khoản.
David Spillett

7

Bạn có thể có thứ tốt nhất của cả hai thế giới: xác thực SSH cho cả đăng nhập và sudo. Nếu bạn tích hợp mô-đun pam_ssh_agent_auth, bạn có thể sử dụng các khóa SSH để xác thực mà không cần cung cấp mật khẩu khi bạn sudo.

Tôi đã sử dụng điều này trong sản xuất trong hơn năm năm.

Để định cấu hình, hãy cài đặt mô-đun PAM, sau đó thêm một dòng vào /etc/pam.d/sudohoặc tương đương với hệ thống của bạn:

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

Nếu bạn làm điều này, hãy chắc chắn bảo vệ các phím của bạn trên máy tính bằng cụm mật khẩu. Bằng cách đó, ai đó sẽ phải đột nhập vào máy tính của bạn và lấy cắp chìa khóa để vào. Họ có thể làm điều đó bằng cách kéo chúng khỏi bộ nhớ trong khi chúng được mở khóa nếu chúng có quyền truy cập vào tài khoản của bạn, bằng cách bẻ khóa mật khẩu của bạn hoặc đánh cắp mật khẩu của bạn một keylogger hoặc vai lướt nó trong khi bạn gõ nó (nhìn phía sau bạn!).

Bạn có thể sử dụng cùng một khóa SSH như bạn làm để đăng nhập hoặc bạn có thể thiết lập một khóa riêng mà bạn chỉ thêm vào đại lý của mình khi bạn sudo. Vì vậy, nếu bạn muốn cẩn thận hơn, bạn có thể duy trì một tệp ủy quyền riêng có khóa SSH riêng mà bạn chỉ thêm vào đại lý của mình khi bạn cần sudo:

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

Wow, nghe thật tuyệt! Vậy tôi có tạo một khóa riêng để thực thi sudocác lệnh hay tôi sử dụng cùng một khóa được sử dụng để xác thực SSH?
Dmitry Pashkevich

1
Thật đáng kinh ngạc. Tôi sẽ nâng bạn lên nhiều lần nếu tôi có thể.
nyuszika7h

Bạn có thể sử dụng cùng một khóa như bạn sử dụng để xác thực SSH thông thường hoặc để tăng cường bảo mật, bạn có thể tạm thời thêm khóa bạn sử dụng để sudo-ing vào tác nhân xác thực SSH của mình. Điều này sẽ yêu cầu bạn chỉ định một tệp ~/.ssh/authorized_keyskhác, ~/.ssh/authorized_keys_sudoví dụ, bạn có thể quản lý một tệp khác hoặc /etc/ssh/authorized_keys_sudo.
obscurerichard

6

Vì bạn đã hỏi, đây là lời khuyên chung của tôi về cách giải quyết sudovấn đề.

Sudo không được thiết kế để cung cấp bảo mật hơn (mặc dù về mặt nào đó có thể) ... mà là cung cấp một bản kiểm toán tốt về việc ai đang làm gì trên hệ thống của bạn với những đặc quyền gì.

Sudo thiết lập đúng sẽ không sử dụng ALL=(ALL) ALLcài đặt mà thay vào đó là một cái gì đó giới hạn hơn đối với bất cứ thứ gì cụ thể mà người dùng cần. Ví dụ: nếu bạn cần người dùng có thể đăng nhập và khởi động lại dịch vụ bị kẹt, họ có thể không cần khả năng cài đặt phần mềm mới hoặc tắt máy chủ của bạn, thay đổi quy tắc tường lửa, v.v.

Đôi khi mọi người thường sử dụng sudo để nâng chính họ lên tài khoản root, tức là. sudo su -. Khi họ làm điều đó, bạn sẽ ngừng xem ai đang làm gì từ tài khoản root (root có thể được đăng nhập đồng thời nhiều lần). Vì vậy, đôi khi mọi người muốn vô hiệu hóa sudo su -lệnh là tốt. Nhưng, vì lý do thực tế, nếu bạn cần một tài khoản đặc quyền gốc hoàn toàn để quản trị, ít nhất là có ai đó đưa ra sudo su -lệnh sẽ ghi nhật ký ai nâng lên root và khi nào.

Làm thế nào tôi bảo mật các hộp của mình:

Thay đổi cổng SSH thành một cái gì đó khác với mặc định. Điều này là để tránh các bot ngu ngốc tìm kiếm số cổng sau đó bỏ đi cho đến khi chúng vào (hoặc không).

Không cho phép đăng nhập Root qua SSH bằng cách sử dụng AllowRootLogin nocài đặt trong sshd_config của bạn. Điều này ngăn người nào đó cưỡng bức vào tài khoản root của bạn. Nói chung, đó là cách thực hành tốt để không bao giờ cho phép ai đó đăng nhập trực tiếp vào tài khoản root / quản trị viên vì lý do kiểm toán cũng như bảo mật. Nếu bạn cho phép đăng nhập root trực tiếp, bạn không biết ai đã đăng nhập, họ lấy mật khẩu từ ai, v.v. Nhưng, nếu ai đó đăng nhập vào tài khoản của Jimmy, sau đó nâng quyền của họ lên root, bạn nên biết cách bắt đầu từ đâu tìm kiếm kiểm toán (và tài khoản của ai để thiết lập lại).

Chỉ cho phép người dùng SSH yêu cầu nó Sử dụng AllowUserscài đặt và khám phá chỉ định tài khoản nào cần truy cập SSH. Theo mặc định, điều này sẽ chặn tất cả các tài khoản khác khỏi SSH.

Chỉnh sửa Sudoers thông qua visudo và chỉ cho phép các lệnh người dùng cần. Có rất nhiều hướng dẫn chuyên sâu về cách làm điều này, vì vậy tôi sẽ không chi tiết ở đây. Đây là một khởi đầu: http://ubuntuforums.org/showthread.php?t=1132821

Ý chính của việc này là để ngăn chặn tài khoản bị xâm nhập gây nguy hiểm cho máy của bạn. I E. nếu tài khoản của Sally bị xâm nhập và Sally chỉ có thể sử dụng sudo để khởi động lại máy chủ web, thì kẻ tấn công có thể vui vẻ khởi động lại máy chủ web của bạn trong một vòng lặp, nhưng ít nhất họ không thể rm -rf /your/webserver/directoryhoặc mở tất cả các cổng tường lửa của bạn, v.v.

Thiết lập các quy tắc tường lửa tốt chỉ cho phép các cổng cần thiết cho hộp của bạn hoạt động. Nói chung, bạn muốn bỏ mọi thứ và chỉ cho phép rõ ràng những gì bạn cần. Có rất nhiều iptables phong nha và các tường lửa khác bắt đầu trực tuyến, đây là một cái tôi sử dụng (nó là một bộ khởi động cơ bản):

# Generated by iptables-save v1.4.7 on Mon Mar  3 17:55:02 2014
*filter
:INPUT DROP [4528:192078]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [39845:27914520]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4254 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8443 -m state --state NEW -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Mon Mar  3 17:55:02 2014

Ngoài ra một mật khẩu mạnh là chìa khóa.Ngay cả khi bạn sử dụng các khóa SSH để truy cập từ xa, bạn vẫn nên yêu cầu mật khẩu để sử dụng Sudo. Đây là một trường hợp mà sudo có thể cung cấp một số bảo mật hơn. Nếu ai đó đã đánh cắp các khóa ssh của bạn, họ vẫn sẽ bị ngăn không cho làm bất cứ điều gì quan trọng trên hộp của bạn nếu họ vẫn phải ép buộc mật khẩu tài khoản của bạn để sử dụng sudo. Mật khẩu không nên là một từ, mà là một cụm từ Pass. Hãy nghĩ về một câu, và sử dụng nó. Điều này thường sẽ giúp bạn có một cái gì đó dài hơn 8 ký tự, cung cấp nhiều entropy, nhưng cũng dễ nhớ hơn một số mật khẩu ngẫu nhiên. Tất nhiên, các thực hành mật khẩu tốt cho biết sử dụng mật khẩu ngẫu nhiên do máy tạo để đánh lừa các công cụ bẻ khóa như John the Ripper, công cụ này sẽ trích xuất ngay qua hầu hết các cụm mật khẩu và mật khẩu. Không, thay đổi E bằng 3 không hoạt động, John cũng có được những hoán vị đó.


Cảm ơn cho một câu trả lời toàn diện! Tôi chắc chắn cần phải sử dụng tất cả các lời khuyên này để bảo đảm các hộp của tôi. Tôi vẫn sẽ chấp nhận câu trả lời của EEAA mặc dù nó cụ thể hơn một chút với những gì tôi đang hỏi.
Dmitry Pashkevich

1
@DmitryPashkevich không sao, EEAA có câu trả lời hay và phù hợp. Bạn yêu cầu tôi để chi tiết nhận xét của tôi ở trên, vì vậy tôi đã làm.
Đừng

Đối với sudo su -và các biến thể, sudoreplaycó thể có ích.
nyuszika7h

3

Trong một số trường hợp cần phải làm điều này. ví dụ: một số API của trình ảo hóa cần đăng nhập không mật khẩu và không mật khẩu sudo. Nhưng bạn vẫn có thể hạn chế điều đó mà không phá vỡ.

Đối với những gì bạn đang cố gắng để đạt được. Tôi muốn nói, hãy làm quen với việc nhập mật khẩu. An ninh thuận tiện hơn mà tiện lợi ở đây. Ngoài ra, nếu bạn thực sự cần quyền truy cập root, bạn có thể sử dụng sudovà nó sẽ lưu thông tin đăng nhập trong một thời gian để nếu bạn chạy một số lệnh sudo liên tiếp, nó sẽ chỉ nhắc mật khẩu lần đầu tiên. Vì vậy, nó không phải là một sự bất tiện lớn như bạn nghĩ.

Ngoài ra, nếu bạn đang gõ rất nhiều lệnh đặc quyền gốc và không muốn đặt sudo lên phía trước chúng mọi lúc bạn có thể suhoặc sudo -sđể lấy shell gốc. Bạn sẽ nhập mật khẩu của bạn một lần và sau đó là mật khẩu.


2

Tôi đã bị cắn bởi mật khẩu sudo một lần. Đó là một kịch bản shell, một số trình cài đặt được gọi là sudo thay cho tôi, trái lại, chỉ yêu cầu sudo hoặc lỗi.

Nhập hình ảnh 'tạo' và tập lệnh thực hiện phần 'sudo make install' cho bạn, mà không cài đặt hoặc hiển thị đường dẫn cơ sở, và tập lệnh được đặt ở vị trí đầu tiên mà bạn không chắc họ biết về / usr / local và vì vậy bạn bắt đầu kiểm tra / usr để sửa đổi ...

Tôi thề sẽ không bao giờ sử dụng NOPASSWD nữa và cũng thay đổi cài đặt thời gian chờ đó thành 0.


1

Mặc dù không trả lời đúng câu hỏi của bạn, một tùy chọn khác có thể là đặt lâu hơn timestamp_timeoutđể bạn không cần phải nhập mật khẩu thường xuyên. Điều này sẽ ngăn chặn bất cứ ai có được quyền quản trị, nhưng làm giảm sự khó chịu của bạn.

Từ trang người đàn ông sudoers :

timestamp_timeout

Số phút có thể trôi qua trước khi sudo sẽ yêu cầu một mật khẩu một lần nữa. Thời gian chờ có thể bao gồm một thành phần phân đoạn nếu độ chi tiết phút không đủ, ví dụ 2.5. Mặc định là 5. Đặt giá trị này thành 0 để luôn nhắc nhập mật khẩu. Nếu được đặt thành giá trị nhỏ hơn 0, dấu thời gian của người dùng sẽ không bao giờ hết hạn. Điều này có thể được sử dụng để cho phép người dùng tạo hoặc xóa dấu thời gian của riêng họ thông qua "sudo -v" và "sudo -k" tương ứng.

Bài đăng trên blog này cho thấy một số ví dụ sử dụng visudođể đặt thời gian chờ tính bằng phút, chẳng hạn như:

Defaults timestamp_timeout=60

Có lẽ đây là một trung gian hạnh phúc giữa bảo mật và dễ sử dụng?


Cảm ơn các đầu vào! Câu hỏi ban đầu của tôi là về việc không cần phải sử dụng (và nhớ) mật khẩu vì bạn có thể sử dụng các phím để ssh vào máy, chứ không phải về tần suất tôi yêu cầu nhập mật khẩu. Những người khác nói rõ rằng đó là một ý tưởng tồi.
Dmitry Pashkevich

1

Các câu trả lời khác ở đây là tuyệt vời, và chạm vào hầu hết các điểm quan trọng. Một điều mà tôi chưa thấy đề cập đến là thực tế là bất kỳ loại xác thực nào bạn thực hiện khi đăng nhập chính mình đều có thể bị bắt bởi một kẻ tấn công từ xa đã tạo được chỗ đứng trong tài khoản của bạn. Họ có thể sửa đổi các tệp đăng nhập shell của bạn hoặc PATH để cài đặt keylogger để mọi thứ bạn nhập, bao gồm cả mật khẩu sudo của bạn, được gửi đến chúng. Họ có thể thêm một nhị phân sudo đã hack vào PATH của bạn để thu thập mật khẩu của bạn. Họ có thể chiếm quyền điều khiển kết nối đại lý ssh trở lại máy kết nối của bạn để đánh bại pam_ssh_agent_auth và tự mình root ngay khi bạn kết nối. Vì vậy, về mặt bảo mật tuyệt đối, tôi không thấy sự khác biệt giữa việc sử dụng mật khẩu cho sudo và không. Tất nhiên, nó làm cho nó trở thành một cuộc tấn công phức tạp hơn,

Tóm lại, tôi tin rằng cách duy nhất để ngăn chặn tuyệt đối tài khoản người dùng bị xâm nhập trở thành root nếu bạn có quyền truy cập sudo là xóa quyền truy cập sudo khỏi chính bạn hoặc không bao giờ sử dụng nó. Nếu bạn không đồng ý, hãy cho tôi biết, vì tôi rất thích bị sai!

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.