Bảo mật các tệp ứng dụng web và mật khẩu cơ sở dữ liệu trong môi trường lưu trữ chia sẻ linux


0

Tôi có một ứng dụng web trên một máy chủ lưu trữ chia sẻ linux. Hãy nói rằng tôi có một .htpasswdtệp, một số cấu hình lưu mật khẩu cơ sở dữ liệu và thường không muốn mọi người rình mò mã nguồn của tôi để tìm lỗ hổng.

Máy chủ web (apache) cần truy cập đọc (và ghi trong một số trường hợp) vào các tệp trên. Tuy nhiên tôi không muốn những người khác trên cùng một máy chủ được chia sẻ có quyền truy cập.

Tôi chưa bao giờ hiểu làm thế nào là nó hoạt động. Câu hỏi ở đây tương tự nhưng dường như chỉ ra nhiều hơn về việc ngăn ứng dụng web lưu trữ tệp mật khẩu một cách tình cờ.

AFAIK, tất cả những gì tôi phải làm việc là các quyền linux cơ bản. Trên một máy chủ, tôi dự kiến ​​sẽ cấp quyền "cho người khác" cho apache. Sau đó xóa quyền của nhóm, tất cả người dùng khác đang ở, từ chối họ truy cập. Điều này có vẻ khá bùng binh. Trên một máy chủ khác, có một nobodynhóm được thiết lập public_htmlchỉ với quyền nhóm được đặt.

Một mối quan tâm là nếu người dùng apache có quyền truy cập vào tệp của tôi, một tập lệnh đơn giản có thể được viết và thực thi để có quyền truy cập bởi người dùng khác:

<?php
header("Content-Type: text/plain");
include $_GET['f'];
?>

TLDR: Tôi cần apache để có quyền truy cập vào các tệp và mật khẩu nguồn, nhưng không phải người dùng khác trên cùng một máy (ngoại trừ quản trị viên ofc).

Một thiết lập phổ biến là gì?

Câu hỏi liên quan:


Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì nó thuộc về WebApps SE hoặc SuperUser.
RoraΖ

@raz chúc mừng. Tôi sẽ đăng lại ở đó.
jozxyqk

Các mod sẽ di chuyển nó cho bạn.
RoraΖ

@raz ok, tôi sẽ đợi.
jozxyqk

Câu trả lời:


0

Tạo một nhóm, thêm apache / www-data vào nhóm. Sau đó:

chown -R apache: tên nhóm / var / www / mywebapp / && \ chmod -R 640 / var / www / mywebapp

Điều này sẽ cấp cho chủ sở hữu đọc và viết (6), và nhóm đọc (4) quyền cho thư mục và tất cả các thư mục con và tệp. Người dùng apache sẽ có thể truy cập các tệp, cũng như chủ sở hữu, nhưng những người khác sẽ không thể. Bạn nên đảm bảo họ không thể su cho người dùng apache.

Sử dụng các khối Thư mục trong cấu hình vhost để hạn chế quyền truy cập ở cấp thư mục. http://httpd.apache.org/docs/2.0/misc/security_tips.html #See Bảo vệ tệp máy chủ http://www.anchor.com.au/hosting/docate/Security_Hardening_of_an_Apache_Virtual_host


Nhưng điều gì xảy ra khi họ đúng một đoạn mã php ngắn cố gắng truy cập các tệp đó? Điều đó sẽ được chạy như người dùng apache và sẽ thấy mọi thứ ngay lập tức.
jozxyqk

Tôi đã thêm các liên kết trên các khối Thư mục. Các tập lệnh trong thư mục vhost của khách hàng sẽ không có quyền truy cập vào các thư mục khác trên máy chủ lưu trữ được chia sẻ.
Alex Atkinson

Cảm ơn. Tôi đã xem qua các trang đó, nhưng tôi chưa thấy (hoặc ít nhất là chưa hiểu) bất cứ điều gì cụ thể sẽ giới hạn quyền truy cập tập lệnh của người dùng vào các thư mục của người dùng khác. Bạn có thể chỉ ra nó?
jozxyqk

Tạo một vhost thử nghiệm và một người dùng thử nghiệm. Áp dụng các khối thư mục cho các cấu hình vhost và kiểm tra kịch bản của bạn. Đây là cách duy nhất bạn sẽ có được sự hiểu biết thực tế. Bạn sẽ có nó.
Alex Atkinson
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.