Chúng ta có nên vô hiệu hóa người dùng root?


21

Chúng ta có nên xóa mật khẩu gốc, vô hiệu hóa đăng nhập từ xa và về cơ bản yêu cầu quản trị viên sử dụng sudo để thực hiện các hành động quản trị?

văn bản thay thế

Câu trả lời:


16

Tất cả các máy chủ của tôi có tài khoản root bị vô hiệu hóa ( sp_pwdpđược đặt thành *). Điều này là để yêu cầu sudotất cả quyền truy cập root. [1] Mục đích của việc này là để kiểm tra tất cả các hoạt động siêu người dùng, vì vậy mọi người có thể thấy những gì đã được thực hiện cho hệ thống.

Đối với một tùy chọn khó hơn, bạn có thể sudoghi vào tệp nhật ký (trái ngược với syslog) và làm cho tệp chỉ được nối thêm (sử dụng chattrtrên Linux hoặc chflagstrên BSD). Bằng cách này, không ai có thể chỉnh sửa kiểm toán sau đó.

[1] Tôi cũng có chính sách không chạy shell root hoặc thực hiện shell thoát khỏi tiến trình root. (Tuy nhiên, sử dụng sudo sh -c '...'để thực hiện các đường ống hoặc chuyển hướng là được.)


3
"Không chạy đạn pháo!" Uhm, bạn có biết có bao nhiêu chương trình có lệnh "drop to shell" trong đó không? Ngay cả trước khi bạn bắt đầu xem xét kiểm soát công việc vỏ ...
womble

Tôi đang nói về "không vỏ" như một chính sách, không phải là một tùy chọn sudo. (sudo không có tùy chọn noexec, nhưng rõ ràng đó không phải là kín nước trừ khi bạn hạn chế các chương trình cụ thể mà người dùng có thể chạy.)
Chris Jester-Young

Có thể định cấu hình sudo để "sudo -s" không thể được sử dụng không? Tôi chỉ sử dụng sudoers để cấu hình các lệnh riêng lẻ.

@Graham: Bạn có thể. Tuy nhiên, như bạn có thể thấy từ các ý kiến ​​trên, điều đó không dừng lại bất cứ điều gì, nếu người dùng của bạn có thể chạy bất cứ thứ gì khác. Giải pháp kín nước duy nhất là cách tiếp cận danh sách trắng, trong đó bạn liệt kê chương trình cụ thể mà người dùng có thể chạy và tất cả chúng phải được liên kết động (để tùy chọn "noexec" có thể thực hiện được).
Chris Jester-Young

Là một chính sách mà bạn tin tưởng quản trị viên, điều này là tốt. Bạn có thể thấy những lệnh mà mọi người chạy có thể thực sự hữu ích khi cố gắng tìm ra những gì đã thay đổi.
Hamish Downer

15

Tôi dứt khoát khuyên chống lại việc vô hiệu hóa người dùng root. Đăng nhập root vô hiệu hóa hoặc hạn chế (thông qua securetty qua sshd_config qua PAM qua những gì có bạn) Nếu hệ thống của bạn cho phép nó, quyền hạn gốc hoặc chia tay vai trò root (giống như cách RSBAC hiện nó.) Nhưng xin vui lòng, xin vui lòng , làm không vô hiệu hóa tài khoản root bằng cách xóa mật khẩu, nếu không sẽ không thể đăng nhập vào hệ thống thông qua sulogin. suloginđược sử dụng bởi tất cả các bản inits tôi biết trong trường hợp lỗi nghiêm trọng được báo cáo bởi fsck - và điều đó có nghĩa là bạn sẽ bị khóa khỏi hệ thống nếu hệ thống tệp gốc bị hỏng.

Để làm rõ: Bằng cách "vô hiệu hóa tài khoản root bằng cách xóa mật khẩu", ý tôi là các cơ chế khác nhau kết thúc bằng a! hoặc * trong trường mật khẩu của / etc / bóng hoặc tương tự. Tôi không có nghĩa là "thay đổi cơ chế đăng nhập root để bạn không được nhắc nhập mật khẩu."


Đây có phải là vấn đề trong các hệ thống như Ubuntu không bao giờ đặt mật khẩu gốc không? Tôi dường như có thể thực hiện "sudo sulogin", nhưng có lẽ tôi không hiểu được khía cạnh quan trọng.
jldugger

Thật không may, tôi không quen với cách Ubuntu xử lý root. Nhưng nếu bạn có thể thực hiện "sudo sulogin" và lấy shell gốc mà không được nhắc nhập mật khẩu gốc, thì không, đó không phải là vấn đề, vì có thể hình dung cơ chế tương tự sẽ được áp dụng khi khởi động. Bạn có thể thử tìm kiếm gogpping cho sulogin thông qua các bản inits để kiểm tra xem nó được gọi khi nào và như thế nào.
Mihai Limbăşan

1
Ubuntu không sử dụng sulogin. Nếu bạn chuyển sang chế độ một người dùng, bạn sẽ nhận được một vỏ gốc ngay lập tức. Tuy nhiên, hãy đọc bình luận của tôi (trong bài viết của tôi) để biết tại sao điều này không phải là vấn đề, trong hầu hết các trường hợp.
Chris Jester-Young

Bên cạnh đó, có những tuyên bố rằng việc có suhoặc sudotrong hệ thống của bạn có sẵn cho người dùng đồng nghĩa với nhiều rủi ro bảo mật hơn bạn có thể tránh nếu bạn chỉ có người dùng root chuyên dụng. Đó là một vị trí được ủng hộ bởi các tác giả của phân phối bảo mật Owl (và nhà thiết kế Solar trong số họ) - unix.stackexchange.com/questions/8581/, cố gắng trình bày vị trí của họ với các tài liệu tham khảo.
imz - Ivan Zakharyaschev

Tôi chỉ gặp vấn đề này: Tôi đã khóa người dùng root của mình và một fsck bị buộc vì thiết lập lại cứng. May mắn thay, tôi có thể khởi động Linux bị lỗi của mình bằng fastboottùy chọn, mở khóa tài khoản root và khởi động lại để cuối cùng chạy fsckthủ công.
tommyd

3

Tôi đã kích hoạt tài khoản root trên tất cả các máy chủ của mình. Tất cả các quản trị viên có người dùng riêng của họ và phải đăng nhập thông qua đó. Từ đó họ chuyển sang root. (ssh gốc bị vô hiệu hóa)

Giữ cho quản trị viên đếm thấp. Chỉ những người thực sự cần quyền truy cập root trên máy chủ đó mới có mật khẩu.

Tôi không phải là một fan hâm mộ của sudo. Thật quá dễ dàng để làm 'sudo bash' cho một vỏ gốc. Tôi biết điều này có thể bị vô hiệu hóa nhưng tại sao phải bận tâm? Chỉ cần giới hạn người dùng có thể thực hiện các nhiệm vụ quản trị viên và nói chuyện với nhau. Chúng tôi có một chính sách không để các thiết bị đầu cuối gốc mở không giám sát. Vì vậy, nó đăng nhập, su, làm việc, đăng xuất.

Lưu ý: Tôi làm việc tại một công ty khá nhỏ (50 nhân viên) và chúng tôi xung quanh chỉ với 2 quản trị viên bán thời gian (1 windows / 1 linux). Cách làm này có thể không phải là tốt nhất khi bạn có nhiều đơn hàng hơn. Cá nhân tôi vẫn sẽ không sử dụng sudo. Có nhiều cách khác để đăng nhập hoạt động root.


Nếu bạn muốn root shell từ bảng điều khiển, bạn chỉ có thể thực hiện 'sudo -i' thay vì mở nó từ sudo bash. Cá nhân tôi thực sự không thích ý tưởng đăng nhập trực tiếp với tư cách người dùng root vì nó quá rủi ro cho việc truy cập độc hại (tức là vô tình để máy tính mở khóa khi mở vỏ gốc).
Spoike

Bạn mất đăng nhập / kiểm toán với điều đó, mặc dù. Làm cho mọi người sử dụng sudo và cấm mọi người thực hiện sudo bash, hoặc sudo -i hoặc sudo -s với chính sách của công ty. Điều đó cung cấp cho bạn một dấu vết kiểm toán và nếu bạn đang đẩy tất cả các bản ghi của mình đến một loghost trung tâm, thì điều đó dễ dàng để xác minh rằng mọi người đang tuân theo các chính sách.
Christopher Cashell

Đó là cách tiếp cận được thực hiện và ủng hộ bởi các tác giả của phân phối bảo mật Owl (và nhà thiết kế Solar trong số họ) - unix.stackexchange.com/questions/8581/. Cố gắng trình bày vị trí của họ với các tài liệu tham khảo.
imz - Ivan Zakharyaschev

2

Vô hiệu hóa mật khẩu root là một "ý tưởng tốt" sai. Ngày bạn sẽ cần nó, bạn sẽ thực sự cần nó. (theo cấu hình của bạn, bạn có thể cần nó để đăng nhập ở chế độ người dùng đơn lẻ)

Vô hiệu hóa đăng nhập từ xa gốc có thể có liên quan nhưng chỉ khi bạn có thể đăng nhập cục bộ.

Và vâng, sudo nên được cài đặt trên mỗi máy chủ của bạn. Nó rất hữu ích và dễ dàng để cấu hình. Tại sao bạn muốn không sử dụng nó?


Điều gì nếu khởi động vào chế độ người dùng duy nhất là một tùy chọn grub?
jldugger

Mục đích của việc vô hiệu hóa tài khoản root là gì? Bạn sẽ làm gì nếu phanh hệ thống nhị phân hoặc cấu hình sudo của bạn (hoặc bất kỳ công cụ nào bạn sử dụng)?
Benoit

Disabling root remote login might be relevant but only if you are able to log on locally.Đây chỉ là sai lầm trắng trợn. Bạn có thể đăng nhập từ xa với bất kỳ tài khoản nào ; vô hiệu hóa đăng nhập từ xa không giới hạn bạn truy cập cục bộ.
Dan

2

Tôi chỉ vô hiệu hóa quyền truy cập SSH cho root và yêu cầu người dùng (thường chỉ là nhà phát triển) sử dụng khóa ssh. Có quá nhiều cuộc tấn công từ điển và thay đổi cổng SSH không phải là một lựa chọn cho chúng tôi.

Bằng cách đó, bạn không cần phải tin tưởng vào khả năng viết mật khẩu tốt của bất kỳ ai. Một khi bên trong chỉ có quản trị viên có quyền cho sudo.


Thay đổi cổng SSH là vô nghĩa. Một portscan đơn giản cho nó đi dễ dàng. Khi tôi telnet đến cổng 22 trên máy của mình, tôi nhận được SSH-2.0-OpenSSH_4.7p1 Debian-8ubfox1.2
Matt Simmons

@MattSimmons Có, nhưng hầu hết các cuộc tấn công từ điển là tự động và rất cơ bản. Họ không bận tâm với việc quét cổng; họ cố gắng kết nối với các địa chỉ IP ngẫu nhiên trên cổng 22 và nếu hết thời gian, họ sẽ chuyển sang IP tiếp theo trong danh sách của mình. Đây không phải là một biện pháp bảo mật, nó chỉ giúp loại bỏ các cuộc tấn công cổng 22 tự động. Rõ ràng một cuộc tấn công được nhắm mục tiêu là một trò chơi bóng hoàn toàn khác nhau.
Dan

2

Tôi biết chủ đề này thực sự cũ nhưng có một số sai sót lớn trong logic bài viết được liên kết và tôi cảm thấy "rant'ie" - sudo cho phép cả danh sách trắng và danh sách đen. Không chỉ màu đen như họ chỉ định trong bài viết được liên kết - Điều này bỏ qua ý tưởng về AAA (Xác thực, Ủy quyền & Kiểm toán) - su & sudo cho phép cả xác thực được phân loại và trách nhiệm.

Kịch bản 1 Một quản trị viên vô tình giới thiệu một số mã giả mạo cho một hệ thống, đăng nhập với quyền root, mã này có quyền truy cập đầy đủ và quản trị viên có thể không bao giờ biết chuyện gì đã xảy ra. Ít nhất với các thông tin đăng nhập được phân loại (ví dụ su / sudo), quản trị viên sẽ được nhắc xác thực nếu mã giả mạo cố gắng sử dụng quyền nâng cao ... Nếu nó không nâng cao thì việc giới hạn quyền của người dùng sẽ dẫn đến thiệt hại tối thiểu.

Kịch bản 2 Một quản trị viên lừa đảo muốn nhận thông tin / thực hiện thay đổi. Họ kết nối với bảng điều khiển (truy cập bảng điều khiển vật lý, HP iLo / tương tự hoặc truy cập bảng điều khiển vGuest), đăng nhập với quyền root và làm bất cứ điều gì họ muốn. Trừ khi có một tài khoản / thẻ truy cập được đặt tên được sử dụng để có quyền truy cập bảng điều khiển, có lẽ không có nhiều dấu vết kiểm toán.

  1. Hãy chắc chắn rằng họ thực sự là người mà họ nói. Trộm cắp danh tính không phải là vấn đề, xác minh danh tính là.
  2. Kiểm tra ủy quyền của họ, chỉ cung cấp cho họ những gì họ cần tại thời điểm đó. Ủy quyền được phân loại cho phép họ nâng lên khi họ cần.
  3. Kiểm tra tất cả, có một bản ghi để bạn biết ai, đã làm gì, khi nào và ở đâu. Tốt nhất là tại sao

1

Bạn nên yêu cầu mọi người sử dụng sudo cho mọi lệnh gốc làm chính sách. Không bao giờ có một lý do để chạy "sudo bash" hoặc tương tự, nó chỉ để thuận tiện, do sự thiếu hiểu biết hoặc để che dấu vết của một người.

Nếu bạn vô hiệu hóa đăng nhập trực tiếp vào tài khoản root, bạn sẽ làm tê liệt khả năng sửa lỗi hệ thống khi có sự cố nghiêm trọng.

Nếu bạn không thể thuyết phục quản trị viên của mình đăng nhập như chính họ và chạy sudo cho mọi lệnh chạy dưới quyền root và không thoát ra khỏi vỏ, bạn có vấn đề nghiêm trọng mà không có giải pháp kỹ thuật.


1

Các tác giả của Owl distribuion an toàn (và nhà thiết kế Solar) có quan điểm ngược lại được chứng minh cẩn thận; xem, ví dụ: câu trả lời /unix/8581/which-is-the-safest-way-to-get-root-privileges-sudo-su-or-login/8660#8660 cho một bài trình bày về tuyên bố của họ. Vấn đề kiểm toán các hành động siêu người dùng (người đã làm gì) cũng được giải quyết theo quan điểm của họ (về cơ bản, giải pháp là có một số người dùng root với các tên khác nhau).

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.