Apache'nin “İstenilen tüm gerekli” ne gerçekten?


95

Apache sunucumu sadece Ubuntu 13.04 altında çalışan Apache / 2.4.6 olarak güncelledim. Eskiden aşağıdakilere sahip bir vhost dosyası vardı:

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

Ancak koştuğumda "Yasaklı. Erişim / izniniz yok" aldım.

Biraz googling yaptıktan sonra, sitemin tekrar çalışmasını sağlamak için vhost'umun şöyle görünmesi için "İstenilenleri iste" satırını eklemek zorunda olduğumu öğrendim:

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

Bunun "güvenli" olup olmadığını ve herhangi bir güvenlik sorunu yaratmadığını bilmek istiyorum. Apache'nin sayfasında "daha önce 'Tümünden izin ver' ve 'Tümünden reddet' yönergeleri tarafından sağlanan işlevselliği taklit ettiğini okudum . Bu sağlayıcı, 'verilen' veya 'reddedilen' iki argümandan birini alabilir. örnekler tüm isteklere erişim izni verecek veya vermeyecektir. "

Ancak, bunun bir tür güvenlik sorunu olup olmadığı veya geçmişte bunu yapmak zorunda olmadığınız zamanlarda neden şimdi yapmak zorunda olduğumuz söylenmedi.


1
Yükseltme dokümanları 'Erişim kontrolü' değişikliklerini ayrıntılı olarak açıklar. httpd.apache.org/docs/2.4/upgrading.html
— John Magnolia

Yanıtlar:


87

Erişim kontrolü yapılandırması 2.4'te değişti ve eski yapılandırmalar bazı değişiklikler olmadan uyumlu değil. Buraya bakınız .

Eski konfigürasyonunuz Allow from all(hizmete erişimin engellenmesi IP adresi yoksa), o zaman Require all grantedyeni işlevsel eşdeğerdir.


4
Bahsetmiyorum, eski yöntem çok kafa karıştırıcıydı ve daha mantıklı bir şeyle değiştirilmek için çoktan gecikmişti.
— Michael Hampton

4
Bu kadar büyük bir değişiklik için, yapılandırma dosyalarını otomatik olarak geçirmek veya en azından bir değişikliğin gerekli olduğu tüm noktaları göstermek için bir tür destek beklerdim.
— Wolfgang Fahl

1
Çalışan bir gösteri görmek güzel olurdu Require all denied.
— Kraang Prime

5
Bunun eşdeğer olduğunu sanmıyorum Allow from all. Require all grantedDiğer mevcut Requirekurallarla "birleştirmek" zorundasınız . Benim durumumda, Require valid-userher yerde tavsiye edildiği gibi konfigürasyonu kör bir şekilde dönüştürürken bir mevcut göz ardı edildi. Bu kötü olabilirdi şey ... oldu
— rudimeier

1
OP'nin sorusuna doğru bir cevap almak iyi olurdu. "Tüm eşdeğerlerinden izin ver" çok tatmin edici değil.
— Sharcoux

15

Eski bir yazı olduğunu biliyorum ama her zaman kullandığım işlevsel bir örnekle daha fazla yardımcı olabileceğimi düşünüyorum!

Apache'de 2.2 şöyle olurdu:

    <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>

Apache'de 2.4 şöyle olurdu:

   <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>

Htacess kimlik doğrulaması kullanırken dikkatli olun , bu yeni sözdizimi bazı kötü ve beklenmedik şeyler yapabilir , eğer durum buysa lütfen okuyun: https://unix.stackexchange.com/questions/413309/apache-2-4-wants-me- karar vermek-gerek-geçerli-ip-veya-gerek-geçerli-kullanıcı ve iyi olmalısın!


Benim için, require all grantedengellenen HTTP kimlik doğrulamasının varlığı bilgi için çok teşekkürler.
— authentictech

@authentictech Sadece verilen tüm izin bozabilir, onu bozabilir. RequireAll veya RequireAny düzgün kullanmazsanız, beklenen kimlik doğrulama bu yeni sözdizimiyle tamamen bozulabilir. Lütfen okuyunuz: unix.stackexchange.com/questions/413309/… . Geri bildirim için teşekkürler.
— Luciano Andress Martini
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.