Apache của Apache Yêu cầu tất cả những gì được cấp thực sự làm gì?


95

Tôi vừa cập nhật máy chủ Apache của mình lên Apache / 2.4.6 đang chạy trên Ubuntu 13.04. Tôi đã từng có một tệp vhost có các mục sau:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
</Directory>

Nhưng khi tôi chạy, tôi nhận được "Cấm. Bạn không có quyền truy cập /"

Sau khi thực hiện một chút googling tôi phát hiện ra rằng để trang web của tôi hoạt động trở lại, tôi cần thêm dòng sau "Yêu cầu tất cả được cấp" để vhost của tôi trông như thế này:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
    Require all granted
</Directory>

Tôi muốn biết nếu điều này là "an toàn" và không mang lại bất kỳ vấn đề bảo mật nào. Tôi đã đọc trên trang của Apache rằng "bắt chước chức năng mà trước đây được cung cấp bởi 'Cho phép từ tất cả' và 'Từ chối tất cả các chỉ thị'. Nhà cung cấp này có thể đưa ra một trong hai đối số được 'cấp' hoặc 'từ chối'. ví dụ sẽ cấp hoặc từ chối quyền truy cập vào tất cả các yêu cầu. "

Nhưng nó không nói nếu đây là một vấn đề bảo mật nào đó hoặc tại sao bây giờ chúng ta phải làm điều đó khi trước đây bạn không phải làm vậy.


1
Các tài liệu nâng cấp giải thích các thay đổi 'Kiểm soát truy cập' một cách chi tiết. httpd.apache.org/docs/2.4/upgrad.html
John Magnolia

Câu trả lời:


87

Cấu hình kiểm soát truy cập đã thay đổi trong 2.4 và các cấu hình cũ không tương thích mà không có một số thay đổi. Xem tại đây .

Nếu cấu hình cũ của bạn là Allow from all(không có địa chỉ IP nào bị chặn truy cập dịch vụ), thì đó Require all grantedlà tương đương chức năng mới.


4
Chưa kể, phương pháp cũ rất khó hiểu và đã quá hạn để được thay thế bằng một cái gì đó hợp lý hơn.
Michael Hampton

4
Đối với một thay đổi lớn như vậy, tôi mong muốn một số loại hỗ trợ sẽ tự động di chuyển các tệp cấu hình hoặc ít nhất hiển thị tất cả các điểm cần thay đổi.
Wolfgang Fahl

1
Sẽ rất tốt để xem một cuộc biểu tình làm việc của Require all denied.
Kraang Prime

5
Tôi không nghĩ rằng nó tương đương với Allow from all. Bạn phải "hợp nhất" Require all grantedvới các Requirequy tắc hiện có khác . Trong trường hợp của tôi, hiện tại Require valid-userđã bị bỏ qua khi chuyển đổi cấu hình một cách mù quáng như nó được đề xuất ở mọi nơi. Đây là điều tồi tệ nhất có thể xảy ra ...
rudimeier

1
Thật tuyệt khi có câu trả lời thích đáng cho câu hỏi của OP. "Cho phép từ tất cả tương đương" không phải là rất thỏa mãn.
Sharcoux

15

Tôi biết đó là một bài viết cũ nhưng tôi nghĩ rằng tôi có thể giúp nhiều hơn với một ví dụ chức năng mà tôi luôn sử dụng!

Trong apache 2.2 sẽ như thế nào:

    <Location />
       Order deny, allow
       allow from all
    </Location>
    <Location /adm>
        Order deny, allow
        deny from all
        allow from myniceip
    </Location>
    <Location /disabled>
        Order deny, allow
        deny from all
    </Location>

Trong apache 2.4 sẽ như sau:

   <Location />
       require all granted
    </Location>
   #Note that you dont need to use require all denied
   #to require only a group of ips.. 
    <Location /adm>
        require ip myniceip
    </Location>
    <Location /disabled>
        Require all denied
    </Location>

Hãy cẩn thận khi sử dụng xác thực htacess , cú pháp mới này có thể làm một số điều xấu và bất ngờ , nếu đó là trường hợp của bạn, vui lòng đọc: https://unix.stackexchange.com/questions/413309/apache-2-4-wants-me- to-quyết-yêu cầu-hợp lệ-ip-hoặc-yêu cầu-hợp lệ người dùng và bạn sẽ ổn thôi!


Đối với tôi, sự hiện diện của require all grantedxác thực HTTP bị ngăn chặn hoạt động vì vậy cảm ơn thông tin.
xác thực

@authentictech Không chỉ yêu cầu tất cả được cấp có thể phá vỡ nó. Xác thực dự kiến ​​có thể bị phá vỡ hoàn toàn với cú pháp mới này nếu bạn không sử dụng RequireAll hoặc RequireAny đúng cách. Vui lòng đọc: unix.stackexchange.com/questions/413309/ . Cảm ơn bạn đã phản hồi.
Luciano Andress Martini
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.