it-swarm-id.com

Haruskah IP secara otomatis masuk daftar hitam untuk jangka waktu tertentu setelah begitu banyak permintaan buruk dalam satu menit?

Ini sepertinya situs terbaik untuk mengajukan pertanyaan ini berdasarkan tur, jadi begini. Saya memiliki situs blog WordPress yang telah saya kembangkan untuk tema khusus dan ketika seseorang mendarat di file 404.php dari permintaan yang buruk, ia akan mengirim email dengan permintaan, alamat jarak jauh, identitas jarak jauh dan agen pengguna (agen pengguna tidak pernah mesin pencari/bot) yang dikirim ke kotak lama yang memiliki cron yang membuat file CSV untuk ditinjau. Kadang-kadang saya bisa mendapatkan 50-200 permintaan dari IP yang sama pada waktu itu dalam waktu dua menit. Beberapa permintaan ini adalah:

url/wp-content/uploads/bc.php
url/wp-content/themes/THEME/style.php?act=1
url/wp-content/themes/THEME/adodb.class.php
url/wp-content/themes/b374k-2.8.php
url/wp-content/plugins/onleinsfay.php
url/wp-content/plugins/bc.php
url/wp-content/plugins/cache/adodb.class.php
url/wp-content/languages/cache/adodb.class.php
url/templates/_hash.php
url/templates/adodb.class.php
url/SocketIontrol.php
url/wp-content/plugins/hungred-post-thumbnail/js/hpt_ini.js
url/wp-content/plugins/invit0r/lib/php-ofc-library/ofc_upload_image.php
url/wp-content/plugins/mailpress/mp-includes/action.php
url/septii.php
url/wp-content/login.php?login=cmd
url/wp-cache.php
url/wp-content/error-log.php
url/upgrade-network.php

Saya tidak memiliki plugin di situs langsung, saya telah memeriksa untuk melihat apakah error_Log sedang dibuat di server dan tidak. Sebelum setiap pembaruan WP saya menguji secara lokal tema saya dengan Debug Bar untuk memastikan tidak ada kesalahan PHP. Saya telah memeriksa alamat IP dengan arin dan lokasinya terkadang berbeda. Saya pernah mendengar ada beberapa situs yang dapat menguji untuk melihat tema dan plugin apa yang Anda jalankan, tetapi saya tidak pernah menggunakannya juga saya tidak tahu bagaimana cara mengidentifikasi satu jadi saya tidak yakin apakah itu yang mereka lakukan tetapi harus Saya mengatasi ini sebagai masalah?

Salah satu solusi yang saya renungkan dengan PHP adalah mengatur alamat IP ke suatu variabel, mendapatkan waktu saat ini dan menghitung berapa kali IP mencapai 404.php dalam satu menit. Jika mereka menekan file 404.php 10 kali, tambahkan IP mereka ke file txt dan biarkan .htaccess referensi . Untuk mencegah situs saya mengalami masalah kinerja, saya akan skrip peristiwa berulang setiap 24 jam yang menggunakan file_get_content() untuk menghapus file .txt.

Namun, saya tidak yakin apakah ini masalah atau apakah saya mendekati masalah dengan benar. Haruskah saya melakukan sesuatu tentang permintaan buruk ini dan apakah ada cara saya bisa melakukan ini yang akan lebih baik daripada solusi saya?

Beberapa waktu yang lalu, saya melihat banyak klik ke situs web saya (Drupal) yang melibatkan jalur Wordpress yang jelas dapat diabaikan (tidak ada yang terjadi selain pemborosan waktu besar yang menghasilkan 404 halaman yang akan dibuang oleh peretas dengan segera ...)

Untuk situs web tersebut, saya akan menjalankan alat yang saya tulis (masih memilikinya, jelas) bernama iplock Sumbernya ada di github.com di sini .

Idenya adalah untuk mendeteksi jalur yang salah dengan segala cara yang Anda miliki dan kemudian memanggil iplock dengan IP itu untuk memblokirnya. iplock dapat memblokir semua akses atau port tertentu (yaitu 80 dan 443 untuk HTTP [S], tetapi orang jahat dapat dimatikan 100% ... mengapa Anda membiarkannya masuk ke server email, DNS, dll. jika Anda sudah tahu mereka adalah peretas ?!)

Penyiapan Apache2 membutuhkan PHP atau skrip lain yang dapat dieksekusi di jalur tertentu. Misalnya, Anda dapat mengirim orang-orang itu ke "halaman khusus", tetapi secara internal (mis. Tidak ada 301 redirect yang sebenarnya)

RewriteEngine On
RewriteRule "^/wp-" "/iplock.php" [passthrough]

Sekarang iplock.php dapat menjadi pemanggilan sistem ke biner iplock dengan parameter yang tepat (silakan tes untuk memastikan itu benar, saya tidak menguji diri saya di sini ...)

<?php
system("iplock --scheme all --block " . $_SERVER["REMOTE_ADDR"]);

Ini akan dengan cepat memblokir alamat IP tersebut sehingga Anda tidak akan melihat lebih dari 2 hit dari IP yang sama sebelum Anda melihat daftar iptables -nvx -L Anda menunjukkan penghitung yang tumbuh cepat (setidaknya itulah pengalaman saya dengan mereka).

Perhatikan bahwa alat iplock adalah tidak lebih selain panggilan ke iptables untuk menambahkan aturan di sana. Anda bisa menggunakan iptables hanya sedikit lebih rumit dan tidak mengelola banyak kemungkinan dan mengharuskan Anda untuk menjadi root untuk menjalankannya. Banyak hal yang bisa rumit untuk dilakukan tergantung pada tingkat kompetensi Anda.

Perintah iptables terlihat seperti ini di all.conf dari iplock:

block=[command] -I [chain] [num] -i [interface] -p tcp -m tcp -s [ip] -j DROP
  • [command] adalah iptables
  • [chain] adalah INPUT atau rantai yang Anda buat hanya untuk tujuan itu
  • [num] adalah posisi di mana aturan baru akan dimasukkan, dalam kebanyakan kasus kami ingin menambahkan aturan baru di awal, itu lebih lambat untuk ditambahkan, tetapi jauh lebih cepat untuk memblokir pengguna saat ini (akan muncul terlebih dahulu jadi itu memblokir IP dengan cepat)
  • [interface] adalah sesuatu seperti eth0
  • [ip] adalah alamat $_SERVER["REMOTE_ADDR"] itu

Hanya ingat bahwa untuk alasan keamanan, memberi Apache izin untuk menjalankan iptables secara langsung adalah ide yang sangat buruk. Alat iplock menyembunyikan bagian itu dan itu karena ia menggunakan file aman untuk menjalankan perintah yang aman.

Sekarang ... jika situs Anda adalah situs Wordpress, memblokir semua jalur /wp-* tidak akan bekerja untuk Anda, walaupun jika Anda memiliki alamat IP statis, maka Anda dapat mengizinkan IP Anda lakukan dan blokir orang lain seperti yang ditunjukkan di sini. Ini berarti satu aturan tambahan dalam pengaturan Apache Anda:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4$
RewriteRule "^/wp-" "/iplock.php" [passthrough]

Aturan RewriteCond ini mengatakan: jalankan perintah Rewrite... berikut hanya jika REMOTE_ADDR TIDAK cocok dengan 1.2.3.4 jadi jika Anda membuat 1.2.3.4 alamat IP statis Anda, Anda tidak akan diblokir, tetapi semua orang akan melakukannya.

Anda juga dapat melakukan itu untuk pelanggan, tetapi kemudian menjadi rumit karena mereka mungkin ingin mengakses situs web mereka dari kantor, rumah, di perjalanan ... Meskipun jika Anda seorang pengembang, Anda bisa mengatasinya dengan meminta mereka untuk mendaftarkan IP. alamat dengan cara otomatis terlebih dahulu (yaitu pergi ke halaman blah.com dan itu akan membuka pintu untuk alamat IP Anda saat ini, Anda bahkan bisa membuat pintu terbuka itu sementara, setelah seperti 8 jam, tutup lagi ...)

PERINGATAN: orang harus memiliki akses ke /wp-content dan /wp-plugins sehingga pola di atas mungkin perlu lebih ketat seperti ^/wp-admin.

Terakhir, mungkin ada jalur /wp-... yang tidak Anda gunakan (yaitu akan membutuhkan plugin yang tidak Anda instal). Mereka dapat diblokir bahkan tanpa trik alamat IP statis di atas. Dengan demikian Anda dapat memiliki sesuatu seperti:

RewriteEngine On
RewriteRule "^/wp-(language|remote)" "/iplock.php" [passthrough]

yang akan memblokir "/ wp-language" dan "/ wp-remote". Namun, saya kira hal seperti itu tidak banyak terjadi. Bisa juga jalur yang lebih rumit seperti jalur konten tertentu atau jalur plugin.

1
Alexis Wilke

Ini terlihat seperti profil kerentanan. Pada dasarnya, mereka mencari kerentanan untuk dieksploitasi.

Jika Anda dapat memblokir ini, Anda harus.

Ini kemungkinan berasal dari proxy terbuka. Daripada menghapus file log "peretas" Anda, saya sarankan menggunakan model maaf. Ini berarti bahwa setiap alamat IP yang berperilaku untuk suatu periode, periode yang panjang (hari), maka Anda dapat menghapusnya dari file. Sisanya tetap selama mereka tetap aktif dalam periode pengampunan. Ingat, Anda tidak memblokir alamat IP di blok pengguna. Ini adalah komputer yang dikompromikan kemungkinan pada jaringan Host. Jadi tidak ada bahaya dalam memblokir pengguna. Peretas tidak lagi menggunakan blok pengguna. Terlalu mudah ditangkap dan dengan skrip otomatis (skrip kiddie), terlalu mudah untuk memadamkan retasan dan membiarkannya berjalan sendiri tanpa melacak kembali ke peretas.

Saya melakukan sesuatu yang sedikit lebih canggih, namun, sepertinya Anda memiliki solusi yang solid.

4
closetnoc

Anda dapat menggunakan atau membuat file teks berdasarkan alamat IP yang dapat Anda ambil dengan bantuan bahasa backend seperti PHP dan kemudian memeriksa apakah permintaan dengan alamat IP tertentu datang dalam waktu yang sangat singkat juga Anda dapat mengatur jangka waktu sekitar 300 milidetik maka Anda hanya dapat Memblokir situs itu untuk digunakan oleh alamat IP tertentu

Anda dapat melakukan ini dengan hanya memberikan pesan peringatan kepada pengguna atau bot yang hanya mengirimkan permintaan Anda dalam waktu yang sangat singkat

1
Saurabh Sharma