Tại sao su vào root thay vì đăng nhập bằng root?


33

Tôi thường nghe nói rằng tốt hơn là nên root để thay vì đăng nhập trực tiếp với tư cách là người dùng root (và tất nhiên mọi người cũng nói rằng sử dụng sudo thậm chí còn tốt hơn). Tôi chưa bao giờ thực sự hiểu tại sao cái này tốt hơn cái kia, cái nhìn sâu sắc?


2
Bạn đang nghĩ về đăng nhập ssh hoặc cũng đăng nhập từ máy vật lý?
Telemachus

Câu trả lời:


43

Suy luận là chỉ suhoặc sudokhi được yêu cầu.

Hầu hết các tác vụ hàng ngày không yêu cầu vỏ gốc. Vì vậy, cách tốt nhất là sử dụng shell không có đặc quyền làm hành vi mặc định của bạn và sau đó chỉ nâng lên root khi bạn cần thực hiện các tác vụ đặc biệt.

Bằng cách đó, bạn sẽ giảm phạm vi cho các lỗi nguy hiểm (tập lệnh xấu, ký tự đại diện sai, v.v.) và lỗ hổng từ bất kỳ ứng dụng nào bạn sử dụng. Đặc biệt là những người kết nối với Internet - xem câu ngạn ngữ cũ "Đừng IRC là root" .

sudo thường được đề xuất bởi vì nó cho phép bạn sử dụng tốt và kiểm tra việc sử dụng các đặc quyền đó.

Bằng cách quan sát các thực hành này, bạn cũng có thể vô hiệu hóa đăng nhập gốc từ xa. Điều này làm tăng thanh mục nhập cho bất kỳ kẻ tấn công nào, vì họ sẽ cần phải thỏa hiệp cả tài khoản người dùng thông thường là thành viên của nhóm "bánh xe" và lý tưởng chỉ được ủy quyền bởi các khóa công khai SSH, sau đó là chính tài khoản gốc.


1
Bạn có thể hiểu tại sao đăng nhập root từ xa là "lỗ hổng khá lớn".
thepocketwade

5
Bởi vì cả thế giới đều biết tên người dùng ('root'), đó chỉ là một câu hỏi để tìm ra mật khẩu. Và họ có thể làm điều đó bằng vũ lực và chiếm lấy máy tính của bạn.
Shalom Craimer

2
Một ưu điểm khác của sudo: Ghi nhật ký các lệnh đã thực hiện.
Manuel Faux

Đó là kiểm toán;)
Dan Carley

1
Trong khi sudoưu việt hơn, sucũng cho phép bạn sử dụng -mcờ để giữ các biến môi trường giống nhau trong khi ở một thiết bị đầu cuối gốc. Không có gì thúc đẩy tôi nhiều bonkers sau đó để suroot một chút, chỉ để làm một cái gì đó với ~tên thư mục và nó không hoạt động.
tj111

27

Bạn nên vô hiệu hóa quyền truy cập root từ xa để kẻ tấn công không thể thỏa hiệp root mà không ảnh hưởng đến người dùng trước khi leo thang lên root. Chúng tôi chỉ cho phép truy cập root tại bàn điều khiển.

Thêm vào đó nó tạo ra trách nhiệm. :)


+1 ngắn và đến điểm
lexu

15

Lý do chính là để tạo ra một dấu vết kiểm toán. Nếu bạn cần đăng nhập vào một hệ thống như một người dùng thông thường và sau đó su, có thể theo dõi ai chịu trách nhiệm cho các hành động nhất định.


Sau khi ai đó đã chạy su - root, làm thế nào để bạn xác định những lệnh họ đã chạy? Đây có phải là đăng nhập ở đâu đó?
Dobes Vandermeer

10

sudo cũng tự động ghi nhật ký mọi lệnh vào syslog và bạn có thể xác định các lệnh mà mỗi người dùng có thể sử dụng.


3
Đối với việc ghi nhật ký: Đây là trường hợp cho mọi lệnh có trước 'sudo', nhưng trong trường hợp sudo được sử dụng để nâng lên một vỏ gốc, các lệnh chỉ được ghi vào các khu vực truyền thống (cụ thể là lịch sử shell).
Zenham

2
Thật vậy, sudo vim foo.txtsau đó thả vào một vỏ từ bên trong vim sẽ cung cấp cho bạn một vỏ gốc mà không cần đăng nhập sudo thông thường.
Ophidian

Hoặc chỉ sudo -iđể có được một phiên tương tác ...
Kamil Kisiel

Tôi không hiểu vấn đề với sudo vim foo.txt. Tôi chạy nó, rồi thoát vim và vẫn là chính tôi, tôi còn thiếu điều gì không?
thepocketwade

bạn có thể "lừa" sudo để cung cấp cho bạn một shell bằng cách gõ sudo su - hoặc sudo vim và sau đó đi vào một subshell mới. Nhưng nếu bạn sử dụng sudo vì bạn muốn mọi thứ được đăng nhập vào syslog (tập trung) và bạn biết rằng nó cũng có thể được sử dụng để có được một subshell khác thì tôi không thấy có gì sai với nó, đó chỉ là một phần thưởng miễn là tôi không chỉ phụ thuộc vào nó.
Jure1873

9

Một lý do chính đáng khác: Khi nâng lên root thông qua sudo, người dùng sẽ xác thực bằng thông tin đăng nhập của riêng họ, nghĩa là họ không nhất thiết phải được cung cấp mật khẩu gốc, giúp dễ dàng khóa mọi thứ khi ai đó rời khỏi tổ chức của bạn.


4

Nếu bạn muốn tạo một dấu vết kiểm toán và không muốn trở thành nạn nhân của các vấn đề "sudo su -" hoặc "sudo vim foo.txt" được đề cập ở đây, bạn có thể sử dụng "sudosh". Phát quyền truy cập root thông qua sudo, nhưng thực hiện lệnh duy nhất được phép để chạy "sudosh".

sudosh là một vỏ ghi nhật ký và bạn có thể phát lại toàn bộ phiên cuối vào một ngày sau đó, hiển thị chính xác những gì người dùng đã thấy trên thiết bị đầu cuối của họ.


Tất nhiên, đó là giả sử rằng sudosh có sẵn trên hệ thống. Tôi mới kiểm tra và tôi không có nó trên bất kỳ hộp Linux nào của tôi.
John Gardeniers

Bạn cũng có thể sử dụng ksh93 mới với tính năng ghi nhật ký đường dẫn kiểm toán được bật. Kiểm tra bài viết này tại IBM trên mạng: ibm.com/developerworks/aix/l Library / au
Mei

Khá dễ dàng để bỏ qua bằng cách chỉ chạy một kịch bản shell (mà sau đó bạn xóa sạch sau đó). Tạo tập lệnh dưới một tên vô hại là người dùng không được kiểm toán (hoặc lấy nó từ máy trạm của bạn), sau đó sudo và chạy nó. Bạn thậm chí có thể thực sự che giấu nó bằng cách đặt tên nó là 'ls' hoặc somesuch và đặt nó vào $ PATH (thay đổi $ PATH nếu cần), và làm cho nó thực hiện công việc bẩn thỉu của nó trong khi gọi / bin / ls để nó trông bình thường. Lau nó sau đó Nhật ký kiểm toán sẽ không biết rằng / home / anthony / bin được sử dụng để chứa 'ls'.
derobert

Vâng, nó không hoàn hảo; chúng tôi biết điều này - nhưng đó là một trang web tốt hơn so với "sudo su -" IMHO đơn giản. Và vâng, nó không được cài đặt theo mặc định ở bất cứ đâu AFAIK. Tuy nhiên, nó chạy trên Solaris và Linux khá dễ dàng.
mibus

1

Bạn nên thực hành bảo mật chuyên sâu.

Không cho phép truy cập root từ xa (hoặc ít nhất là truy cập root thông qua mật khẩu). (nếu bạn cho phép truy cập root thông qua các phím, kiểm soát cẩn thận các phím đó hoặc tốt hơn là sử dụng thứ gì đó như kerberos cho phép thu hồi khóa tập trung).

Tôi sẽ tắt su và sử dụng sudo. Bằng cách đó, người dùng sử dụng các khóa (tốt nhất là được mã hóa) để truy cập hệ thống sau đó họ chỉ sử dụng mật khẩu của mình để leo thang đặc quyền. Bạn có thể hạn chế những chương trình mọi người truy cập bằng sudo, nhưng chủ yếu bạn chỉ hạn chế quyền truy cập vào những người biết mật khẩu gốc.

Trong một thế giới lý tưởng, bạn sẽ có thể xuất bản mật khẩu gốc của mình trên internet và điều đó không thành vấn đề, ngay cả khi bạn đã cho mọi người truy cập vào máy của bạn (nhưng không đưa chúng vào tệp / etc / sudoers). Tất nhiên, bạn không nên xuất bản mật khẩu gốc, nhưng ý tưởng là bạn bảo vệ hệ thống của mình bằng các lớp bảo vệ đồng tâm.


0

Ý tưởng là để vô hiệu hóa đăng nhập root và do đó không có tài khoản quản trị mặc định. Bằng cách đó, kẻ tấn công phải đoán cả tên người dùng và mật khẩu (và không chỉ mật khẩu).


0

Nếu bạn đang sử dụng root một cách thường xuyên thì quyền của bạn có thể sai hoặc bạn có thể cần cấp quyền sudo hoặc quyền nhóm mới cho r / w / x các tệp hoặc thư mục.

Các lược đồ cấp phép tốt là điều mà ngay cả những người dùng Linux lâu năm cũng mắc sai lầm hoặc không nhận ra phạm vi họ có.

Đừng để tôi bắt đầu với những gì Ubuntu đã làm!


-2

Nó ngăn bạn chạy rm -r -f / Tôi mới chạy cách đây 2 ngày (với tư cách là một người dùng không có quyền, tôi có nghĩa là chạy rm -r -f *)


Câu trả lời được chấp nhận đã có tất cả thông tin trong đó.
Theuni
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.