Người dùng và cấp phép phù hợp nhất cho các trang web Drupal trên lưu trữ được chia sẻ là gì?


14

Mặc dù trang web Drupal đi sâu vào chi tiết về quyền và bảo mật, nhưng chỉ có các tham chiếu mơ hồ / không rõ ràng về lưu trữ được chia sẻ . Từ quan điểm của Drupal, thiết lập an toàn nhất (mức sở hữu và cấp phép) cho một trang web trên lưu trữ được chia sẻ là gì?

Như một ví dụ về loại thông tin tôi đang tìm kiếm, WordPress gợi ý các cài đặt lưu trữ được chia sẻ sau đây:

  • Tất cả các tệp phải được sở hữu bởi tài khoản người dùng thực tế, không phải tài khoản người dùng được sử dụng cho quy trình httpd.
  • Quyền sở hữu nhóm là không liên quan, trừ khi có yêu cầu nhóm cụ thể để kiểm tra quyền truy cập quy trình máy chủ web. Đây không phải là thường.
  • Tất cả các thư mục nên là 755 hoặc 750.
  • Tất cả các tệp phải là 644 hoặc 640. Ngoại lệ: wp-config.php phải là 600 để ngăn người dùng khác trên máy chủ đọc nó.
  • Không có thư mục nào nên được đưa ra 777, thậm chí tải lên các thư mục. Vì quá trình php đang chạy với tư cách là chủ sở hữu của các tệp, nó có quyền của chủ sở hữu và có thể ghi vào thư mục 755.

2
Tôi nghĩ rằng bạn đã gặp một số hack trong Wordpress;) Ít có khả năng những điều như vậy trong Drupal.
niksmac


Vẫn không thực sự hiểu. Nếu tên của bạn là Johnny và nhà cung cấp dịch vụ lưu trữ chia sẻ của bạn đã cung cấp cho bạn tên người dùng johnny99, điều đó có nghĩa là bạn nên chọn các tệp thành "johnny99: www-data" trước khi tải lên? Hoặc nó không liên quan trên chia sẻ lưu trữ?
Simon Hoare

Câu trả lời:


9

Tùy chọn lưu trữ

Tùy chọn lưu trữ cho một trang web thường là một trong những điều sau đây:

  • máy chủ chuyên dụng
  • máy chủ riêng ảo (VPS)
  • chia sẻ lưu trữ

Với một máy chủ chuyên dụng, chỉ có một trang web được lưu trữ trên một máy tính vật lý và cấu hình cũng an toàn như chính máy tính đó.

Với VPS, phần mềm của bạn chạy trên cùng một máy tính vật lý như các máy ảo của người dùng khác. Tuy nhiên, nó có chức năng tương đương với một máy chủ chuyên dụng. Quan trọng nhất, VPS có quyền riêng tư và bảo mật của một máy chủ chuyên dụng.

Với lưu trữ được chia sẻ, trang web của bạn nằm trên một hệ thống tệp được chia sẻ với những người dùng khác. Thật không may, điều này làm cho nó kém an toàn hơn so với khi nó đang chạy trên một máy chủ chuyên dụng hoặc VPS. Phần còn lại của bài viết này thảo luận về tính bảo mật của WCMS trong môi trường lưu trữ được chia sẻ.

Môi trường

Một môi trường lưu trữ được chia sẻ có thể được coi là bao gồm một máy chủ web, một hệ thống tệp, tệp cài đặt, cơ sở dữ liệu và một số người dùng.

Trong các ví dụ sau, giả định rằng tài khoản chủ sở hữu là "tom" và tệp cài đặt (giữ thông tin cơ sở dữ liệu) được đặt tên là "settings.php".

Quá trình máy chủ web có thể chạy với quyền người dùng của tài khoản chủ sở hữu "tom" hoặc với quyền của nhóm "www", tùy thuộc vào cấu hình.

Ngoài ra, một môi trường Gnu / Linux hoặc Unix tiêu chuẩn được giả định và giả định rằng người đọc hiểu hệ thống kiểm soát truy cập Unix với các quyền đọc (r), write (w) và thư mục thực thi / truy cập (x) được chia thành ba khối (người dùng, nhóm, khác).

Trước khi tôi tiếp tục thảo luận về các cài đặt cụ thể, có thể hữu ích để liệt kê các điều kiện chúng tôi muốn đáp ứng:

  1. Để một trang web hoạt động, máy chủ web phải đọc quyền truy cập vào tất cả các tệp tạo nên trang web và truy cập thư mục truy cập vào tất cả các thư mục tạo nên trang web.
  2. Để hoạt động an toàn, máy chủ web không được ghi quyền vào bất kỳ tệp nào mà nó xử lý.
  3. Để hoạt động an toàn, tập lệnh web được chạy bởi người dùng giả mạo không được đọc quyền truy cập vào các tệp do người dùng khác sở hữu.
  4. Để chủ sở hữu làm việc trên trang web của chính mình bằng CLI, người dùng phải đọcviết quyền truy cập vào các tệp của chính mình.
  5. Để bảo vệ các tệp khỏi bị người dùng khác truy cập bằng CLI, khối "khác" không được đặt quyền.

Thật không may, trên một máy chủ được chia sẻ, bạn chỉ có thể có 4 trên 5. Tôi biết không có cách nào bạn có thể đáp ứng tất cả năm điều kiện trên một máy chủ được chia sẻ.

Theo tôi biết, hai cấu hình khác nhau được sử dụng bởi các nhà cung cấp máy chủ chia sẻ. Cả hai đều được thảo luận dưới đây, cùng với các quyền sử dụng để bảo vệ tốt nhất các tệp và thư mục và điều kiện cấu hình không đáp ứng.

Cấu hình 1: Máy chủ web đang chạy với tư cách là chủ sở hữu

Đây là AFAIK cấu hình được sử dụng rộng rãi nhất. Máy chủ web đang chạy với tư cách là chủ sở hữu của các tệp. Điều này có nghĩa là người dùng lừa đảo không thể sử dụng người dùng máy chủ web của mình để chạy tập lệnh để đọc các tệp của người dùng khác. Kiểu cấu hình này cũng bảo vệ người dùng khỏi nhau trong CLI.

Tuy nhiên, điều đó cũng có nghĩa là chúng tôi không thể có quyền riêng cho chủ sở hữu và máy chủ web. Để đáp ứng điều kiện 2 với kiểu thiết lập này, bạn cần hạn chế quyền ghi cho chủ sở hữu để ngăn truy cập ghi cho máy chủ web vào mọi thứ trừ thư mục tải lên.

Quyền:

Directories:  500 r-x --- --- tom.tom
Files:        400 r-- --- --- tom.tom
settings.php: 400 r-- --- --- tom.tom
Upload Dir.:  700 rwx --- --- tom.tom

Thật không may, điều này có nghĩa là điều kiện 4 không thể được thỏa mãn. Tức là trang web không thể được duy trì thông qua CLI. Chủ sở hữu sẽ bị hạn chế sử dụng một số loại bảng điều khiển dựa trên web để truy cập trang web (khuyến nghị của tôi là chủ sở hữu duy trì một bản sao trên một số máy chủ dàn dựng nơi anh ta có quyền truy cập không hạn chế và thay đổi nhân bản được thực hiện trên máy chủ chia sẻ cho máy chủ chia sẻ ).

Cấu hình 2: Máy chủ web đang chạy như một thành viên của nhóm www

Cấu hình này được sử dụng bởi một số nhà cung cấp ít chuyên nghiệp hơn (IMHO) của một giải pháp máy chủ dùng chung. Máy chủ web đang chạy như một thành viên của nhóm www và được cấp quyền truy cập đọc yêu cầu thông qua khối nhóm:

Quyền:

Directories:  750 rwx r-x --- tom.www
Files:        640 rw- r-- --- tom.www
settings.php: 640 rw- r-- --- tom.www
Upload Dir.:  770 rwx rwx --- tom.www

Các cài đặt này có lợi thế là cung cấp cho chủ sở hữu quyền truy cập đầy đủ vào các tệp của mình thông qua CLI và hạn chế máy chủ web chỉ đọc quyền truy cập.

Tuy nhiên, nó cũng không thỏa mãn điều kiện 3. Tức là nó cho phép người dùng lừa đảo trên máy chủ được chia sẻ (hoặc một hacker đã xâm phạm trang web của một người dùng khác đang chia sẻ máy chủ) để chạy tập lệnh để đọc bất kỳ tệp nào có thể đọc được bởi máy chủ web. Điều này cho phép tập lệnh giả mạo truy cập vào tệp settings.php với thông tin xác thực cơ sở dữ liệu, điều này khiến cho việc chiếm lĩnh hoàn toàn trang web trở nên tầm thường.

Đề nghị của tôi là để tránh loại cấu hình này.

Phụ lục: Sử dụng máy chủ dùng chung nguy hiểm như thế nào?

Tôi chắc chắn sẽ không đặt bất cứ điều gì nhạy cảm, chẳng hạn như số thẻ tín dụng hoặc hồ sơ y tế, trên một máy chủ được chia sẻ. Nhưng lưu trữ chia sẻ là giá rẻ, và có một sự hấp dẫn trong đó. Tôi sử dụng lưu trữ chia sẻ bản thân cho một số trang web của tôi. Tôi chưa bị hack, nhưng tôi biết rằng rủi ro tồn tại và tôi đã chuẩn bị cho ngày xảy ra. Nếu tôi bị hack, tôi sẽ xóa mọi thứ trên máy chủ được chia sẻ và cài đặt lại trang web từ một bản sao nhân bản mà tôi giữ trên một máy chủ dàn an toàn.

Với "config 2", vấn đề chính là những vấn đề khác . Nếu một số trang web khác mà bạn chia sẻ máy chủ bị xâm phạm, trang web của bạn cũng đang ăn trưa. Bảo mật phụ thuộc vào một bên khác mà bạn không biết và không kiểm soát được không phải là một ý tưởng hay. Đây là lý do tại sao khuyến nghị của tôi là tránh sắp xếp lưu trữ "cấu hình 2".

Với "config 1", bạn một mình kiểm soát bảo mật trang web của mình. Điều này tốt hơn (đặc biệt nếu bạn biết những gì bạn đang làm). Nhưng nó không phải là bằng chứng ngu ngốc. Không ai hoàn hảo, và nếu bạn truy cập và trang web của bạn bị xâm phạm, kẻ tấn công sẽ có quyền truy cập vào mọi tệp được lưu trữ trên máy chủ đó thuộc về bạn. Nói cách khác, để giảm thiểu damange khi bạn bị hack, đừng giữ bất cứ thứ gì trên máy chủ đó sẽ gây hại nếu người khác có quyền truy cập vào nó. Cụ thể, không giữ email của bạn trên máy chủ được chia sẻ đó. Thường có rất nhiều dữ liệu nhạy cảm trong email, vì vậy bạn không muốn nó ở bất cứ đâu gần máy chủ web thực thi là "bạn".

Và nếu ứng dụng web của bạn đang xử lý dữ liệu nhạy cảm, hãy đảm bảo ngân sách của bạn cho phép một máy chủ chuyên dụng hoặc VPS.

Bạn cũng có thể muốn xem hướng dẫn này để Đảm bảo quyền và quyền sở hữu tệp tại Drupal.org.


Ok, tôi đã cho bạn 50 điểm. Cảm ơn câu trả lời chi tiết của bạn. Điều này có nghĩa là lưu trữ chia sẻ về cơ bản là phải tránh, vì nó không thể được bảo mật?
Simon Hoare

Thực tế bây giờ tôi đã đọc lại, bạn thực sự nói rằng theo cách sắp xếp này, các tệp không nên được sửa đổi / sửa đổi trong môi trường sống và chỉ cần làm việc trong môi trường giai đoạn mà các tệp đã sửa đổi sẽ thay thế các tệp của trang web trực tiếp khi cần . Nói cách khác, không ai có thể sửa đổi trang web trực tiếp.
Simon Hoare
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.