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.