Apache httpd: Nasıl hepsinden reddedebilirim, Alt ağdan izin ver, ama bu alt ağ içinde IP'den reddetmek nasıl?


26

CentOS 5.5 ile Apache httpd-2.2.3 hisse senedini çalıştırıyorum.

Mod_status'u Konum / sunucu statüsünde etkinleştirdim . Bu tek Konum'a erişime aşağıdaki şekilde izin vermek istiyorum:

  1. Tümünden reddet
  2. Alt ağdan izin ver 192.168.16.0/24
  3. 192.168.16.0/24 alt ağında bulunan IP 192.168.16.100'den reddet.

1 & 2 kolaydır. Ancak, "192.168.16.0/24 izin ver" yaptığım için, 192.168.16.100 den reddetmek mümkün müdür?

192.168.16.100 için bir Deny ifadesi eklemeye çalıştım ama işe yaramadı. İlgili yapılandırma:

<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  all
    Deny from  192.168.16.100 # This does not deny access from 192.168.16.100
    Allow from 192.168.16.0/24
</Location>

Veya:

<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  all
    Deny from  192.168.16.100 # This does not deny access from 192.168.16.100
    Allow from 192.168.16.0/24
</Location>

Ancak, Erişim günlüklerinde gösterildiği gibi bu belirli sayfaya erişimi engellemez:

www.example.org 192.168.16.100 - - [11/Mar/2011:16:01:14 -0800] "GET /server-status HTTP/1.1" 200 9966 "-" "

Mod_authz_host kılavuzuna göre :

Reddetmesine izin ver

İlk olarak, tüm İzin verilen direktifler değerlendirilir; en az birinin eşleşmesi gerekir veya istek reddedilir. Daha sonra, tüm Reddet direktifleri değerlendirilir. Herhangi bir eşleşme olursa, istek reddedilir

IP adresi, Reddet yönergesine uyuyor, bu nedenle istek reddedilmemeli mi?

Mod_authz_host sayfasındaki tabloya göre, bu IP adresinin "Her ikisine de Eşle & Reddet" ile eşleşmesi ve "Son eşleşme kontrolleri: Reddedildi" kuralı uygulanmalıdır.

    Eşleşme İzin Ver, Sonuç reddet
    Eşleşme Sadece izin ver İsteğe izin ver İsteğe izin ver
    Maç sadece reddetme isteği reddedildi İstek reddedildi
    Eşleşme yok Varsayılan - ikinci direktif: Reddedildi Varsayılan - ikinci direktif
    Her ikisi de eşleştir İzin Ver & Reddet Final maçı denetimleri: Reddedildi Final maçı denetimleri: İzin verildi

192.168.16.100'den reddetme - Burada "tümü" kullandığınızdan, tüm isteklerin herhangi bir IP adresinden reddedilmesini beklerim. Burada başka bir şey olduğunu düşünün.
micah

@Michah: Ben de yapıyorum Allow from 192.168.16.0/24. Belgeleri anladığım gibi, 192.168.16.0/24 ağındaki istekte bulunan IP'ler bu İzin Ver deyimiyle eşleşecek, isteğe izin verilebilir.
Stefan Lasiewski

Yukarıda yapıştırılan belgelere uyun. "İlk olarak, tüm İzin Verme yönergeleri değerlendirilir; en az birinin eşleşmesi gerekir veya istek reddedilir" ==> Bu, "192.168.16.0/24 İzin Ver" seçeneğiyle eşleşmelidir, ancak "Sonraki, tüm Reddetme yönergeleri" nin ikinci kısmı Herhangi bir eşleşme olursa, istek "Tümünden reddet" ile reddedilirse, her istek bu ikinci bölümle eşleşir ve bu nedenle reddedilmez mi?
micah

IP adresinin sisteminize tam erişimini mi yoksa sadece httpd'den mi reddetmek istediğinizi gerçekten düşünmelisiniz. Eski apache direktiflerini kullanma konusundaki yaklaşımınıza devam ederse. İkincisi ise bu güvenlik duvarında yapılmalıdır.
Andrew Case

Teşekkürler ACase. Sadece bu özel sayfaya 192.168.16.100’den erişimi reddetmek istiyorum. 192.168.16.100’ün bu web sunucusundaki diğer tüm sayfalara erişebilmesini istiyorum.
Stefan Lasiewski

Yanıtlar:


35

Test yapmadım, ama sanırım neredeyse ordasın.

<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  192.168.16.100
    Allow from 192.168.16.0/24
</Location>

Deny from allGerek yok. Aslında her şey eşleşecek allve böylece reddedileceği için berbat edecek (ve Apache'nin akıllı olmaya ve aptalca bir şey yapmaya çalıştığını düşünüyorum). Hep Apache en bulduk Order, Allowve Denydirektifler bu nedenle her zaman (alınan tablodaki şeyler görselleştirmek, kafa karıştırıcı docs ):

Maç | İzin Ver, Sonucu reddet | Reddet, Sonuca izin ver
-------------------------------------------------- -----
Yalnızca izin ver | İzin Verildi | İzin
Sadece reddet | Reddedildi | Reddedildi
Eşleşme yok | Varsayılan: Reddedildi | Varsayılan: İzin verildi
İkisini de eşleştirin | Son maç: Reddedildi | Son maç: İzin verildi

Yukarıdaki ayarlarla:

  • 192.168.16.100’den gelen istekler "her ikisini de eşleştirin" ve böylece reddedildi.
  • 192.168.16.12'den gelen istekler "Yalnızca izin ver" alır ve böylece izin verilir.
  • 123.123.123.123'ten gelen istekler "eşleşme yok" olur ve bu nedenle reddedilir.

1

Ayrıca, 80 numaralı bağlantı noktasındaki tek ana bilgisayarı reddetmek, tümünden reddetmek ve alt ağa izin vermek için bunun için IPTables kuralları eklemeye de bakardım.

Alt ağa izin verdikten sonra, belirli bir adresten reddetme kuralı ayarlamada sorun yaşamazsınız. Sadece bu sırayla yap.


Cevabımı güncelledim. "192.168.16.100'den Reddet" kuralını dahil ettim, ancak hala 192.168.16.100
Stefan Lasiewski'den 11.01

Bu ana bilgisayardan diğer tüm konumlara erişime izin vermek istiyorum. Ancak, belirli yerleri reddetmek istiyorum. IPTables burada bana yardımcı olmuyor.
Stefan Lasiewski

IPTable'lar, siz söylemediğiniz sürece, giden trafiği özellikle reddetmez. Bununla birlikte, dünyadan gelen trafiği ve belirli bir adresi reddedebilirsiniz, ancak hepsi bir alt ağa izin verir.
Mike

Sanırım isteğimi yanlış anladın. Bu erişim kontrolünü tüm sunucuya değil, sadece / sunucu durumuna uygulamak istiyorum. IPtables bu bilgiyi kolayca yapamaz.
Stefan Lasiewski

-4

PHP kullanabilir misiniz? Öyleyse, belirli bir IP adresi için çıkış / yönlendirme için bir php ifadesi ekleyin.

Örnek:

$ deny = dizi ("111.111.111", "222.222.222", "333.333.333");

if (in_array ($ _SERVER ['REMOTE_ADDR'], $ reddetti))

{header ("konum: http://www.google.com/ ");

çıkış();

Kaynak: http://perishablepress.com/press/2007/07/03/how-to-block-ip-addresses-with-php/


2
Bunun, web sunucusu tarafından barındırılan her sayfada olması gerekir. Bu çözüm pratik değildir ve bir web sunucusuna erişimi filtrelemek istediğiniz yerde değildir.
Andrew Case
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.