Cara yang relatif mudah untuk memblokir semua lalu lintas dari negara tertentu?

16

Saya memiliki aplikasi web yang tidak memiliki pengguna di Filipina, tetapi terus-menerus dibombardir oleh spammer, kartu pengujian carder, dan aktivitas lain yang tidak diinginkan dari sana. Saya dapat melihat di log bahwa mereka memiliki IP di Filipina dan pada awalnya menemukan situs saya melalui google.ph atau .phsitus lainnya .

Saya memiliki filter dan pemeriksaan keamanan yang cukup bagus, sehingga tidak benar-benar menyebabkan banyak kerusakan, tetapi saya sangat bosan. Mereka menggunakan bandwidth, mengisi basis data saya, log penyalahgunaan, dan log keamanan dengan omong kosong, buang-buang waktu saya menyebut akun, dll.

Sementara sebagian besar warga negara Filipina bukan spammer, dan saya tidak bisa hanya memblokir setiap negara yang mengganggu saya, pada titik ini, saya pikir solusinya adalah dengan memblokir semua lalu lintas dari Filipina ke webapp saya. (Saya tahu memblokir blok IP seluruh negara bukan praktik yang bagus, dan memiliki banyak masalah, tetapi untuk negara ini, saya ingin membuat pengecualian.)

(Saya tahu mereka bisa memalsukan alamat IP mereka, tetapi setidaknya saya bisa membuatnya sedikit bekerja.)

Saya tahu ada beberapa layanan geoip di luar sana. Adakah yang tahu layanan gratis atau tidak mahal? Atau cara lain untuk menyaring lalu lintas dari negara tertentu?

Saya menjalankan PHP di Apache 2, jika itu penting.

anon
sumber
2
Pertanyaan yang valid
crashmstr
crashmstr: Saya kira begitu. Mengambil jenis tindakan ini untuk mencoba dan memblokir seluruh negara hanya akan menyebabkan Anda memotong lebih banyak pengguna potensial daripada Anda memotong potensi spammer. Dan ketika spammer mulai datang dari daerah yang tidak ingin Anda blokir (seperti negara Anda sendiri), Anda akan berada di doodoo yang dalam karena semua metode Anda sebelumnya akan sia-sia.
TheTXI
Mungkin tidak ada - keamanan saya saat ini baik-baik saja. Silakan baca pertanyaannya sebelum menjawab.
<p> Jadi apa yang akan Anda lakukan ketika spammer mulai datang dari negara lain (atau lebih baik lagi mulai merutekan lalu lintas mereka melalui AS?) </p>
TheTXI
1
Filipina adalah salah satu negara berbahasa Inggris utama di dunia, di sebelah AS, Inggris, Kanada, dan Australia. Saya sangat menyarankan untuk tidak melarang mereka, sama seperti Anda akan melarang Australia. Kecuali tentu saja, situs Anda khusus untuk negara. Tetapi jika ya, itu harus memiliki TLD khusus negara, daripada dot-com, maka orang akan tahu Anda tidak berurusan dengan mereka, dan bisa pergi ke similarname.com, yang melakukannya.
Lee B

Jawaban:

8

Anda dapat melakukan ini berdasarkan alamat IP menggunakan IP Locatin API gratis seperti IPInfoDB http://ipinfodb.com/index.php.

Zachary
sumber
28

Tidak seperti kebanyakan poster lain di sini, saya tidak akan memberi tahu Anda bahwa ini adalah ide yang buruk, bahwa Anda tidak boleh melakukannya, bahwa itu tidak akan menyelesaikan masalah Anda, atau bahwa Anda harus melakukan sesuatu yang lain. Inilah yang terjadi pada kami:

Orang-orang dari Cina dan Korea (atau menggunakan proxy di Cina dan Korea, tetap) mengganggu kami. Portscanning, merayapi situs web kami mencari kerentanan, membuat upaya masuk, dll. Saya mencoba mengabaikannya (fail2ban merawatnya biasanya) tetapi pada beberapa titik mereka memukul kami begitu keras sehingga secara efektif berubah menjadi serangan DoS. Ketika Anda memiliki ratusan koneksi sekaligus dari orang-orang yang mencoba menggunakan server web Anda sebagai proxy, mencoba SSH ke mesin Anda, mencoba nama pengguna dan kata sandi acak, itu cenderung membebani situs. Saya akhirnya muak.

Kami tidak mendapatkan lalu lintas yang sah dari Cina atau Korea; perusahaan kami tidak menjual di sana (kami adalah e-commerce) sehingga tidak ada risiko kehilangan lalu lintas yang sah, jadi saya pikir lebih mudah untuk memblokir mereka terlebih dahulu daripada menunggu mereka menjadi orang bodoh.

  1. Mengunjungi http://ip.ludost.net/ dan mengunduh basis data negara <-> IP mereka.
  2. Ekstrak semua rentang alamat IP Cina dan Korea.
  3. Menginstal modul ipset untuk netfilter
  4. Tempat pembuangan ipset yang dibangun untuk Cina dan Korea (lihat di bawah)
  5. Aturan yang ditambahkan ke iptables untuk secara diam-diam menghentikan lalu lintas dari set tersebut.

Dan itu saja. Pengguna masalah kami pergi, memuat di jaringan dan server menurun, dan kami melewati musim Natal tanpa kesulitan.

Catatan 1 : Anda dapat melakukan ini dengan iptables biasa (yaitu tanpa ipset) tetapi lebih mahal secara komputasi daripada menggunakan ipset.

Catatan 2 : Ini adalah bagaimana tampilan dump (ipset akan menghasilkan ini untuk Anda jika Anda mau):

# Generated by ipset 2.3.3 on Sat Oct  4 18:02:57 2008
-N china nethash --hashsize 5184 --probes 4 --resize 50
-A china 203.207.128.0/17
-A china 221.176.0.0/13
-A china 58.154.0.0/15
-A china 114.54.0.0/15
...etc...

Catatan 3 : Kami menggunakan nethash karena semua rentang kami disimpan sebagai blok CIDR. Jika Anda tidak ingin mengonversinya menjadi CIDR, Anda dapat menggunakan iptreemap sebagai gantinya, tetapi saya membayangkan itu mungkin kurang efisien jika Anda mendapatkan banyak lalu lintas.

Dan Udey
sumber
2
Yang ingin saya sampaikan adalah bahwa gagasan memblokir negara seperti Cina atau Korea atau di mana pun dalam hal ini tidak hanya menghalangi sekelompok orang yang berbicara bahasa yang berbeda dari Anda. Saya seorang warga negara Amerika Serikat dan jika saya ingin membeli sesuatu dari perusahaan Anda, Anda kehilangan saya sebagai pelanggan karena saya melayani di Korea Selatan. Jadi ya, ada yang sah lalu lintas di sana.
GNUix
16
Benar, kecuali bahwa karena kami tidak mengirim ke Korea Selatan, kami tidak dapat menjual apa pun kepada Anda, jadi tidak ada gunanya Anda mengunjungi situs web kami. Kami tidak pernah meminta siapa pun dari Tiongkok atau Korea membeli apa pun dan mengirimkannya ke AS, sehingga jumlah penjualan yang hilang mungkin mencapai sepuluh dalam setahun berdasarkan analisis kami.
Dan Udey
2

Bagaimana Anda memperbaiki bug dalam kode?

Seperti begitu?

Bug: Tambahkan (2,2) pengembalian 0, harus kembali 4.

Kode tetap:

int Add(int x, int y)
{
   if (x == 2 && y == 2)
      { return 4; }
   return 0;
}

Tentu saja tidak. Anda tidak hanya membuat kebuntuan kasus-kasus khusus, itu sangat rapuh dan resep untuk bencana. Anda juga tidak hanya menambal gejala HARI INI dari masalah yang mendasarinya.

Alih-alih, cari tahu penyebabnya, dan perbaiki itu. Ini jauh lebih kuat daripada tambalan kasus khusus yang bisa Anda terapkan.

Mengapa aplikasi web Anda rentan terhadap spam? Karakteristik apa yang membuatnya rentan? Karakteristik apa yang menjadikannya target yang berharga? Adakah cara Anda dapat mengubah karakteristik itu untuk membuat aplikasi Anda lebih kuat melawan spam dan mengurangi target yang menggoda? Hampir pasti jawaban untuk pertanyaan ini adalah ya. Tambahkan rantai validasi ke formulir Anda, gunakan captcha secara cerdas, acakkan url dan / atau nama parameter untuk membuatnya tidak bersahabat dengan bot. Ada jutaan cara untuk mendekati masalah ini, maaf saya katakan Anda telah memilih salah satu solusi yang paling tidak berharga, paling tidak berguna, dan paling rapuh di luar sana.

Baji
sumber
15
Saya memiliki semua itu, terima kasih. Apakah Anda benar-benar membaca posting sebelum merumuskan jawaban Anda?
Eli
1
@Eli, jelas sudah. Itu sebabnya Anda kembali ke langkah radikal. Karena usaha Anda sebelumnya sangat efektif.
Wedge
1

Pertama, saya sangat menyarankan untuk tidak melakukan ini.

Seperti yang orang lain katakan dengan jauh lebih fasih, memblokir negara tertentu tidak memperbaiki masalah, tetapi justru sedikit membantahnya. Juga, ketika pengguna dari negara itu melihat Anda telah memblokirnya secara khusus, itu hanya akan memotivasi mereka untuk menyebabkan Anda lebih banyak masalah.

Yang mengatakan, jika Anda benar - benar ingin melakukan ini, IPinfoDB menyediakan basis data geolokasi IP gratis,

Pertama, akan menemukan IP hanya dengan negara.

Anda akan mencari dengan cara ini:

SELECT * FROM `ip_group_country` where `ip_start` <= INET_ATON('74.125.45.100') order by ip_start desc limit 1;

Atau

SELECT * FROM `ip_group_country` where `ip_start` <= 1249717504 order by ip_start desc limit 1;

Kedua, Anda mungkin ingin mendapatkan IP dari negara tertentu untuk menghasilkan daftar blokir dengan file iptable, htaccess atau apa pun yang Anda gunakan. Itu akan dilakukan seperti ini:

SELECT `ip_cidr` FROM `ip_group_country` WHERE `country_code` = 'AF' order by ip_start;

yang akan memberi Anda:

63.243.149.0/24
67.212.160.0/24
dbr
sumber
0

Anda harus menggunakan produk seperti fail2ban untuk mengunci kesalahan yang Anda masukkan ke dalam aplikasi web Anda yang menunjukkan upaya spam sedang dilakukan. Ini akan memblokir IP untuk jangka waktu tertentu, membuat situs Anda tahan, tetapi tidak menutup seluruh blok IP.

Kevin Kuphal
sumber
3
Seperti yang saya katakan di posting, yang penampilannya tidak dibaca, saya memiliki sistem yang sangat baik untuk memblokir dan mencegah spam. Saya ingin meringankan beban kerja yang harus dilakukan, dan waktu yang saya habiskan untuk memonitornya.
Eli
Karena itulah saya menyarankan fail2ban. Secara otomatis melarang IP masalah untuk Anda tanpa kekuatan kasar memblokir blok IP besar.
Kevin Kuphal
0

Beberapa solusi:

Solusi ini cukup mudah dan cepat untuk diterapkan, dan gratis.

Solusi jangka panjang adalah mendeteksi spam dari aplikasi web Anda, mencatat IP dan memberi makan iptables Anda untuk memblokirnya secara otomatis.

Julien
sumber
0

Apakah Anda mempertimbangkan untuk menemukan siapa yang mengoperasikan jaringan tempat Anda diserang? Temukan kontak "penyalahgunaan" menggunakan whois dan laporkan kepada mereka. Tentu saja itu mungkin berasal dari beberapa jaringan, tetapi juga mungkin layak jika Anda melihat beberapa alamat berulang / blok jaringan.

MatthieuP
sumber
4
Jika Anda pernah mencoba berurusan dengan ISP di Asia (terutama Cina, Korea, dll), Anda akan menemukan bahwa satu-satunya hal yang tidak pernah mereka lakukan adalah peduli terhadap beberapa orang asing yang mengeluh tentang sesuatu. Tidak sepadan dengan waktu mereka untuk melakukan hal-hal dengan benar sehingga mereka tidak melakukannya. Melaporkan penyalahgunaan menjadi buang-buang waktu Anda.
Dan Udey
Saya berbasis di Korea dan saya tidak memiliki pengalaman yang menyenangkan dengan ISP Korea.
GNUix
0

Anda memiliki setiap hak untuk memblokir alamat IP dari alasan apa pun yang Anda bisa membenarkan untuk diri sendiri. Andalah yang menyediakan layanan dan Andalah yang memutuskan siapa yang bisa memilikinya atau tidak. Mungkin dipertanyakan apakah ini bermoral tetapi itu adalah sesuatu yang hanya dapat Anda putuskan sendiri.

Namun memblokir segmen IP karena memiliki beberapa aspek geografis untuk itu bagi saya lebih mirip pendekatan panik.

Apa yang telah saya lakukan di masa lalu adalah memiliki crawler menelusuri log terbaru saya dan berdasarkan larangan individu IP yang mengganggu selama 24 jam. Jika IP spesifik itu bermasalah lagi, itu diblokir selama 2 hari, maka 3 hari, dll.

IP yang diblokir lebih dari seminggu akan dikirimkan kepada saya dan saya mengirim email penyalahgunaan ke penyedia layanan tersebut (siapa tahu itu mungkin bisa membantu).

Martin P. Hellwig
sumber
0

Saya akan memilih solusi Snort + OSSEC yang dapat mempertahankan sesuatu seperti ini secara dinamis.

GNUix
sumber
Ini adalah untuk apa VPN aman.
Andrew Ensley