Bir kullanıcı aracısını sunucumdaki tüm sitelerden nasıl engelleyebilirim?


9

Aslında bu webmasters.stackexchange.com yayınlanan , ama burada daha iyi bir resepsiyon alacağı söylendi.


Son birkaç gündür, (muhtemelen yanlışlıkla) bir DDOS saldırısı gibi görünen şeylerden acı çekiyorum. "Mozilla / 4.0 (uyumlu; ICS)" olarak tanımlanan bir ajandan apache'nin tüm kullanılabilir bellek boyunca yediği çok fazla istek alıyorum.

Sonuç olarak, bu kullanıcı aracısı eşliğinde tüm istekleri engellemek istiyorum, bu yüzden httpd.conf bunu yapmayı denedim:

SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user

Ama apache'yi yeniden başlattığımda denyburada kullanmaktan şikayet ediyor . Bir locationveya directorybloğa sarmak zorunda kalmadan, her site için yeni bir blok eklemek zorunda kalacağım anlamına gelir, tüm sunucuya erişimi reddedebileceğim bir yol var mı?


GÜNCELLEME: Aldığım hata


  • /Etc/apache2/httpd.conf: satır 4'teki web sunucusu apache2 sözdizimi hatası yeniden başlatılıyor: burada reddedilemez [başarısız]

Yanıtlar:


7

Şimdi eski bir soruya benziyor, ama aynı şeyi yapmak istedim ve yukarıdaki sinirin cevabını buldum. Oldukça doğru değil - öyle olması gerektiği gibi görünüyor <Location "/">ve SetEnvIfdüzenli bir ifadeye ihtiyaç duyuyor, bu nedenle parantezlerin alıntılanması gerekiyor.

Bu, erişim denetimini tüm hayaletlere uygulamak için benim için çalıştı:

SetEnvIfNoCase User-Agent "^Mozilla/4.0 \(compatible; Synapse\)" bad_ua
<Location "/">
    Deny from env=bad_ua
</Location>

Sadece vhost tanımlarından önce ekleyin.


(Apache 2.4'teki eşdeğeri için) Eklemediğiniz sürece, <Location>diğer yetkilendirme kısıtlamalarını geçersiz kıldığından emin olun . Apache dokümanlarındaki güvenlik uyarısına bakın : httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require<Directory>AuthMerging AndRequire
Cedric Knight

4

mod_rewrite, dokümanlara göre sunucu düzeyinde yapılandırılabilir:

RewriteCond %{HTTP_USER_AGENT} "Mozilla/4\.0 \(compatible; ICS\)" [nocase]
RewriteRule ^.*$ - [forbidden,last]

İçinde regex kaçmayı unutmayın RewriteCond


1
Dikkat: çizgi kopyalandığında gerçek bir çizgi değildir. Düzenlemeyi denedim, ancak SF düzenlememin çok küçük olduğundan şikayet edecek. Yine de teşekkürler, bir tedavi çalışıyor!
Thibaut Barrère

@ ThibautBarrère Eğer gerçekten gerekiyorsa, şunları yapabilirsiniz görünmez bir ekleyerek küçük düzenlemek sınırı baypas <!-- -->düzenlemek için
hanshenrik

1

SetEnv satırlarındaki sözdiziminin doğru olması şartıyla, bunu conf'e şöyle atabilirsiniz:

<Location *>
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
</Location>

Tüm sanal ana bilgisayarlar üzerinde çalışmasına izin vermelidir - 2.2.24'te test edildi, bir cazibe gibi çalıştı.


Bu, herhangi bir hata olmaması nedeniyle daha iyidir, ancak kullanıcı aracımı taklit ederken reddedilmem. Bunun neden olabileceğine dair bir fikrin var mı?
Tom Wright
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.