Pertama sekali, saya tidak membantah orang lain merangkak kandungan tapak web saya. Saya tidak semestinya mengehadkan perayapan orang lain secara ketat, tetapi beberapa orang merangkak tidak mempunyai garis bawah sama sekali laman web tertentu secara serentak Kandungan pelayan tidak berbeza dengan ddos.
Pelayan saya sedang mengalami situasi sedemikian pada masa ini Merangkak berniat jahat tanpa jeda telah menjejaskan analisis log kami dengan serius dan juga meningkatkan beban pada pelayan.
Bagaimana untuk mengelakkan tingkah laku seperti ini? Saya menggunakan pelayan nginx Setakat yang saya tahu, ia hanya boleh menggunakan IP tertentu, tetapi penafian masih akan muncul dalam log pada masa hadapan, tetapi ia akan menjadi 403. Selain itu, penafian manual terlalu pasif Bolehkah anda dengan bijak menentukan bahawa bilangan lawatan ke IP tertentu telah meningkat dengan mendadak, dan kemudian mengharamkannya? deny
1. ngx_http_limit_conn_module boleh digunakan untuk mengehadkan bilangan sambungan untuk satu IP
http://nginx.org/en/docs/http/ngx_htt...
2. ngx_http_limit_req_module boleh digunakan untuk mengehadkan bilangan permintaan sesaat untuk satu IP
http://nginx.org/en/docs/http/ngx_htt...
3. nginx_limit_speed_module boleh digunakan untuk mengehadkan kelajuan IP
https://github.com/yaoweibin/nginx_li...
Saya juga akan menyediakan penyelesaian, terutamanya menggunakan fail2ban (http://www.fail2ban.org/). fail2ban secara tak segerak menentukan sama ada untuk melarang menggunakan iptable dengan mengimbas log, jadi ia mempunyai kesan yang agak kecil pada sistem asal dan tidak memerlukan konfigurasi semula nginx. Tetapi saya tidak tahu sama ada bilangan lawatan akan terlalu besar.
Tambah dahulu
/etc/fail2ban/jail.conf
里加入然后找到
/etc/fail2ban/filter.d/nginx-bansniffer.conf
,把里面针对404的判断改成最后重启
Kemudian carifail2ban
dalam/etc/fail2ban/jail.conf
rrreee/etc/fail2ban/filter.d/nginx-bansniffer.conf
dan tukar penghakiman untuk 404 kepada 🎜 rrreee 🎜Akhirnya mulakan semula perkhidmatanfail2ban
Dalam konfigurasi di atas, kami melarang IP dengan lebih daripada 120 lawatan setiap 120 saat selama 1 jam. 🎜1. Cegah merangkak labah-labah berdasarkan Ejen Pengguna
2. Cipta peraturan dalam Firewall sistem pengendalian untuk mengehadkan bilangan sambungan serentak dari IP yang sama
Mengambil iptables di bawah Linux sebagai contoh, konfigurasi berikut akan mengehadkan penubuhan maksimum 15 sambungan untuk IP yang sama dalam satu minit yang melebihi sambungan akan dibuang oleh iptables dan tidak akan mencapai nginx
3 Tulis skrip bash untuk mengira kekerapan akses setiap IP, dan secara automatik membuang IP yang kekerapannya melebihi had atas yang anda tetapkan ke dalam senarai hitam
. Untuk IP dalam senarai hitam, gunakan skrip untuk menulisnya secara automatik ke dalam iptables atau nginx.conf, sekatnya selama beberapa minit atau kurangkan kekerapan akses yang dibenarkan
Saya pernah menggunakan modul apache yang dipanggil YDoD (Yahoo! Department of Defense) semasa saya berada di Yahoo, saya boleh menyesuaikan peraturan untuk mengelakkan penyalahgunaan perkhidmatan WEB kami Selepas saya datang ke Taobao, saya menukar nama saya kepada tdod mencari di sekeliling, saya tidak menemuinya. Cari sumber terbuka. Tetapi prinsipnya sama dengan apa yang saya katakan di atas.
Cuba ngx_lua_waf
https://github.com/loveshell/ngx_lua_waf
Fungsi: