Khi nào tôi nên tạo tài khoản người dùng mới để chạy phần mềm trên máy chủ?


14

Nói chung, khi nào nên tạo một tài khoản người dùng mới để chạy một phần mềm truy cập internet trên máy chủ?

Ví dụ: giả sử tôi đang sử dụng máy chủ Debian được chia sẻ (ví dụ: qua Dreamhost) và tôi muốn chạy một số trang web bằng WordPress, một số sử dụng Redmine, một số sử dụng Ruby on Rails, có thể một số sử dụng Django và tôi muốn phục vụ Mercurial kho lưu trữ quá.

Trên các máy chủ Dreamhost và nhiều máy chủ thiết lập tương tự khác, tất cả có thể được thực hiện trong một tài khoản người dùng , nhưng tôi có thể thấy một số nhược điểm đối với phương pháp đó:

  • Một .bashrc dài hơn
  • Nếu một tài khoản đó bị xâm phạm, thì tất cả các trang web đang chạy theo nó.

Mặt khác, việc có nhiều tài khoản người dùng có thể trở thành một chút khó khăn để theo dõi, đặc biệt là nếu một số trong số họ có các yêu cầu giống hệt nhau về phần mềm được cài đặt. Chẳng hạn, có một tài khoản cho mỗi trang web chạy WordPress có thể là quá mức cần thiết.

Thực hành tốt nhất là gì? Có phải nó chỉ đơn giản là một câu hỏi về việc giảm số lượng các trang web được lưu trữ (hoặc các kho lưu trữ được lưu trữ, v.v.) trên mỗi tài khoản người dùng tương ứng với mức độ hoang tưởng của một người?

Xin vui lòng gửi ý kiến ​​của bạn về điều này, đưa ra lý do của bạn cho họ.

Ngoài ra, nếu bạn có bất kỳ lý do nào để nghĩ rằng cách tiếp cận được thực hiện trên máy chủ riêng hoặc VPS nên khác với cách tiếp cận được thực hiện trên máy chủ dùng chung, vui lòng phác thảo chúng là gì và, một lần nữa, lý do của bạn dành cho chúng.

Câu trả lời:


11

Tôi nói chung là một người hâm mộ của "Một người dùng cho bất kỳ thứ gì mở ổ cắm nghe trên mạng" - Một cho Apache, một cho Mail, một cho DNS, v.v.

Đây là (như tôi đã nghe) vẫn là Thực tiễn tốt nhất hiện tại và lý do đằng sau điều này là sự hoang tưởng đơn giản và đơn giản: Các dịch vụ này được đưa ra Internet Lớn, nếu ai đó tìm thấy lỗ hổng và khai thác nó trước khi tôi có cơ hội vá ít nhất là phần mềm tôi giới hạn chúng vào một tài khoản người dùng, chỉ có các đặc quyền cần thiết để chạy dịch vụ duy nhất mà nó chịu trách nhiệm.
Nói chung, tôi coi mức độ cô lập này là đủ để bảo vệ hệ thống, mặc dù mỗi ứng dụng là một lỗ hổng (ví dụ: nếu ai đó cài đặt plugin WordPress dễ bị tổn thương, tất cả những thứ mà Apache có quyền truy cập (tức là tất cả các trang web) đều dễ bị tổn thương trong trường hợp thỏa hiệp

Do đó, một phiên bản mở rộng của đối số đó có thể được tạo cho các trang web của máy khách Shared Hosting với cấu hình và người dùng Apache riêng của nó (bạn không nhất thiết phải cài đặt một ngăn xếp web đầy đủ cho mỗi trang web, chỉ là một cấu hình apache riêng biệt chỉ định một người dùng khác ), nhược điểm là mỗi trang web hiện đang chạy một loạt các quy trình Apache, do đó, việc sử dụng RAM của bạn tăng lên đáng kể và những thứ có thể đọc được trên thế giới vẫn dễ bị tổn thương nếu bất kỳ cá nhân / người dùng Apache nào bị xâm phạm.

Mở rộng hơn nữa đối số để đặt mỗi Apache vào một chroot (hoặc bỏ tù nếu bạn trên các hệ thống BSD) có thể được tạo ra để bảo mật hơn nữa, nhưng bây giờ bạn đang nói về không gian đĩa bổ sung vì mỗi chroot / jail sẽ cần tất cả phần mềm cần thiết chạy trang web chứa nó (và nhu cầu cập nhật phần mềm này cho mọi trang web thay vì chỉ một bản sao chính trên máy chủ khi bản vá xuất hiện), cộng với yêu cầu RAM giống như khi bạn có các trường hợp người dùng / apache riêng biệt.
Điều này giảm thiểu mọi thứ trừ lỗi OS / Kernel cho phép người dùng thoát khỏi chroot (trở thành đối số để chạy mọi trang trên một máy chủ vật lý riêng biệt - sau đó trở thành đối số để tách các trang web thành các vlans / mạng con khác nhau, v.v.)


Như với tất cả các rủi ro, bạn không thể loại bỏ nó: bạn chỉ có thể giảm thiểu đến mức chấp nhận được dựa trên tác hại / chi phí của thỏa hiệp, khả năng thỏa hiệp và chi phí cho mỗi mức giảm thiểu.
Đối với tiền của tôi, đối với môi trường lưu trữ chia sẻ không quan trọng, không thương mại điện tử, cơ bản "Một người dùng cho Apache, một cho DNS, một cho thư, v.v." lưới an toàn là đủ. Nếu có nhu cầu bảo mật vượt quá mức đó, người dùng của bạn nên nghiêm túc xem xét phần cứng của chính họ.


1
Ngoài ra còn có một mô-đun cho Apache (tôi nghĩ là mod_su?) Cho phép Apache thay đổi người dùng mà nó đang chạy một cách linh hoạt dựa trên yêu cầu đến; trong môi trường lưu trữ được chia sẻ, bạn sẽ đặt nó để thay đổi thành người dùng sở hữu trang web đang được truy cập. Điều này cung cấp sự ngăn cách của các loại vi phạm phổ biến nhất (tiêm mã, v.v.) để chỉ một người dùng cài đặt plugin WordPress xấu bị ảnh hưởng bởi nó. Nó cũng cung cấp một số bảo vệ chống lại sự vi phạm hoàn toàn của chính quy trình Apache và chống lại các cuộc tấn công leo thang đặc quyền, nhưng phải thừa nhận rằng đó không phải là mục đích thực sự của nó.
Kromey

@Kromey, tôi không thể tìm thấy nhiều thông tin về mod_su. Ý bạn là mod_suexec ?
sampablokuper

1
@sampablokuper Yup, đó sẽ là một, xin lỗi vì thông tin sai lệch.
Kromey

1
@ Vấn đề lớn mod_suexeclà "Các yêu cầu không phải CGI vẫn là các quy trình với người dùng được chỉ định trong Chỉ thị người dùng" - vì vậy, nếu PHP là một mô-đun, nó vẫn chạy như là người dùng apache "chính". Đó là một giải pháp tuyệt vời nếu mọi thứ bạn đang thực hiện là CGI.
voretaq7

@voretaq Ah, tôi đã không nhận ra giới hạn đó. Tuy nhiên, có thể hữu ích trong một số môi trường, nhưng điều đó thực sự làm cho nó ít áp dụng hơn tôi nghĩ.
Kromey

6

Nói chung, những gì tôi làm là có một người dùng cho các dịch vụ đối mặt bên ngoài không được phép đăng nhập (chẳng hạn "không có ai") và một tài khoản được phép đăng nhập và su hoặc sudo. Đương nhiên đảm bảo tên người dùng của bạn khác nhau và không dễ đoán.

Tôi không thấy có một người dùng cho mỗi dịch vụ là cần thiết trừ khi bạn đang chạy một môi trường lưu trữ được chia sẻ nơi mỗi khách hàng có thông tin đăng nhập. Nếu bạn thực sự thấy mình là một mục tiêu rất hấp dẫn để hack, bạn cũng có thể cô lập càng nhiều càng tốt. Tuy nhiên, trừ khi bạn đang làm điều gì đó gây tranh cãi hoặc lưu trữ dữ liệu tài chính, bạn không thực sự hấp dẫn về mục tiêu.


+1 mức độ phân tách cần phải phù hợp với tình huống hiện tại - và thông thường một khi bạn nhận được "rất nhiều tranh cãi" hoặc "dữ liệu tài chính", bạn sẽ muốn mức độ phân tách máy chết tiệt của riêng tôi :-)
voretaq7
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.