Memblokir akses apache melalui string agen pengguna

8

Saya punya penulis skenario yang menggunakan proxy untuk menyerang situs web yang saya layani.

Saya perhatikan bahwa mereka cenderung mengakses situs melalui perangkat lunak dengan string agen pengguna umum tertentu (yaitu http://www.itsecteam.com/en/projects/project1_page2.htm "Perangkat lunak injeksi sql lanjutan yang canggih" dengan string user_agent dari Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij). Saya sadar bahwa setiap peranti lunak yang bernilai garam mungkin akan dapat memodifikasi string agen pengguna itu, tapi saya baik-baik saja dengan scripter yang harus berurusan dengan fitur itu di beberapa titik.

Jadi, apakah ada perangkat lunak di luar sana untuk secara otomatis memblokir akses & daftar hitam secara permanen dengan mencocokkan string agen pengguna?

Kzqai
sumber

Jawaban:

18

Anda dapat menolak akses oleh BrowserMatch dan Deny dari Contoh SetEnvIf:

SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
<Directory "/var/www">
        Order Allow,Deny
        Allow from all
        Deny from env=bad_bot
</Directory>

Untuk memblokir mereka secara permanen, Anda harus menulis file log khusus dan menggunakan fail2ban misalnya untuk melarangnya dengan iptables

Misalnya membuat LogFormat

LogFormat "%a %{User-agent}i" ipagent

Tambahkan logging ke vhost / seluruh server Anda

CustomLog /var/log/apache2/useragent.log ipagent

/etc/fail2ban/filter.d/baduseragent.conf

[Definition]
failregex = ^<HOST> Mozilla/4\.0 \(compatible; MSIE 7\.0; Windows NT 5\.1; SV1; \.NET CLR 2\.0\.50727\) Havij$

/etc/fail2ban/jail.conf

[apache-bad-user-agent]

enabled  = true
port     = 80,443
protocol = tcp
filter   = baduseragent
maxretry = 1
bantime  = 86400
logpath  = /var/log/apache2/useragent.log
Dmytro Leonenko
sumber
Ya, itu akan memblokir string agen pengguna yang buruk, tapi saya ingin mengambil langkah lebih lanjut dan larangan otomatis terkait dengan string agen pengguna yang buruk, sehingga penggunaan string agen pengguna membuat Anda dilarang dari titik itu dan seterusnya pada ip itu. Saya akan menggunakan fail2ban tetapi saya belum menemukan cara untuk menerapkannya pada permintaan http pada saat ini.
Kzqai
Coba saran saya di pos yang diedit
Dmytro Leonenko
6

Saya pikir saya mengerti pertanyaan Anda. Saya akan memberikan penjelasan yang lebih rinci jika ini yang Anda cari. (Ini akan berfungsi sebagai jebakan untuk hal-hal lain juga)

  • Aktifkan mesin mod_rewrite di apache2
  • Buat trap.php, mengunjungi dapat melakukan apa pun yang Anda suka. Sebagai contoh, saya membuatnya menambahkan semua pengunjung ke daftar hitam yang menolak akses ke web saya.
  • Buat file agen pengguna yang tidak Anda sukai, satu per baris seperti
    bas_useragent ini [tab] black
    useragent_bad [tab} hitam
  • Sekarang, tambahkan mod_rewrite Anda yang cocok dengan peta dari agen pengguna yang buruk, lalu minta kembali ke perangkap Anda jika ada peta. Aturannya mungkin terlihat seperti ini:

    RewriteMap badlist txt:~/bad_useragent_list
    RewriteCond %{HTTP_USER_AGENT} .* [NC]
    RewriteCond ${badlist:%1|white} ^black$ [NC]
    RewriteRule (.*) "/trap.php" [L]

  • Ini pada dasarnya cocok dengan agen pengguna ke kunci dalam file Anda, jika tidak ditemukan itu dianggap "putih" dan permintaan tersebut tidak dimodifikasi. Jika ditemukan, dan nilai terkait adalah "hitam" permintaan ditulis ulang untuk pergi ke file trap.php Anda, yang melakukan apa pun yang Anda suka.
  • Beberapa kemungkinan ide. Minta skrip lain menonton file umum yang trap.php menulis IP. Jika file umum ini berubah, pengamat ini membaca info baru, mem-parsing alamat IP, dan menambahkan aturan ke tabel IP yang memblokir semua lalu lintas dari alamat itu. Saya harap ini membantu! Sekali lagi, jika Anda ingin lebih detail, cukup balas di sini.
blerbl
sumber
hampir lupa, Anda dapat membaca tentang mod_rewrite di sini: httpd.apache.org/docs/current/mod/mod_rewrite.html
blerbl