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.