Seperti kebanyakan server (saya berasumsi), kami memiliki orang yang mencoba memaksa layanan kami 24/7. Saya memiliki cpHulk daftar hitam IP mereka, tetapi sepertinya akan lebih baik jika mereka tidak sampai sejauh itu di tempat pertama. Saya dan tuan rumah saya adalah satu-satunya yang terhubung ke server pada port selain 80, jadi saya ingin memblokir koneksi dari semua negara di luar AS, kecuali untuk port 80. Saya menghubungi host saya untuk mengatur ini, tetapi mereka ragu-ragu karena mereka mengatakan itu akan membuat beban server yang sangat tinggi. Ini adalah server khusus Xeon 1230 dengan RAM 32GB yang menjalankan CentOS 6.6 dan iptables.
Pertama, ada alasan untuk tidak melakukan ini? Kedua, apakah yang dikatakan oleh tuan rumah saya kepada saya benar? Ketiga, apakah ada cara untuk mencapai ini tanpa dampak kinerja tinggi?
Jawaban:
Menyiapkan aturan khusus untuk memblokir setiap rentang IP (dengan mendaftar setiap rentang) adalah pendekatan yang salah.
Tetapkan aturan default di iptables untuk menjatuhkan semua lalu lintas ke port manajemen Anda. Kemudian tambahkan aturan untuk hanya mengizinkan akses dari IP tepercaya Anda (milik Anda dan host Anda).
Memblokir semuanya secara default, dan hanya mengizinkan lalu lintas yang disetujui biasanya disebut "eksplisit deny all", dan dianggap sebagai praktik terbaik. Dalam hal ini juga tidak membantu untuk menghindari dampak kinerja host Anda khawatir.
sumber
Untuk melakukan ini, Anda harus menambahkan puluhan ribu aturan firewall, satu untuk setiap netblock, di mana suatu negara mungkin memiliki antara satu hingga beberapa ribu netblock yang terkait dengannya.
Ketika permintaan masuk, itu harus diperiksa terhadap setiap aturan tunggal , yang membutuhkan waktu sangat sedikit untuk beberapa lusin atau bahkan mungkin beberapa ratus aturan, tetapi dengan sebanyak mungkin aturan yang perlu Anda gunakan, (1) setiap permintaan akan melambat secara signifikan dan (2) akan menggunakan banyak CPU.
Cara untuk melakukan ini tanpa dampak kinerja yang signifikan adalah dengan melakukan apa yang sudah Anda lakukan: memblokir hanya alamat-alamat spesifik yang bermasalah.
sumber
Yang Anda butuhkan adalah alat yang disebut ipsets
hal penting yang perlu diperhatikan di sini adalah cepat kilat! Itu karena sejumlah besar jaringan ip dapat diwakili oleh hash tunggal, bukan ratusan atau ribuan baris aturan iptables.
Untuk negara yang memblokir lihat contoh ini :
sumber
Mengabaikan sedikit tentang apakah melakukannya dengan cara ini adalah ide yang baik, Anda dapat melakukan apa yang Anda minta dengan modul GeoIP untuk iptables.
Setelah membangun dan memasang modul (dan membuat daftar IP Anda diperbarui setiap bulan), Anda dapat melakukan hal-hal seperti ini untuk memblokir masing-masing negara:
Atau gunakan
--src-cc US -j ACCEPT
dan seterusnya jika Anda lebih suka menentukan negara-negara yang ingin Anda pertahankan.sumber
Jika Anda ingin mempertahankan kemampuan untuk terhubung dari mana saja tanpa mempertahankan daftar hitam / daftar putih geo-location, Anda dapat menerapkan port-knocking . Ini akan menghentikan sebagian besar upaya otomatis sambil memungkinkan Anda tetap terhubung dari alamat apa pun.
Catatan: Jangan menempatkan port untuk mengetuk berdampingan dengan port untuk membuka, jika tidak, pemindaian port sekuensial akan mengaktifkan aturan Anda.
sumber
Jika Anda memiliki satu atau dua router yang diaktifkan BGP di tumpukan Anda DAN memiliki semacam gagasan apa yang sedang Anda lakukan / bekerja dengan seseorang yang tahu apa yang sedang mereka lakukan, atau apakah mungkin di balik penyedia pencegahan DDoS cukup keren untuk membantu dalam pelaksanaan ini, ada metode yang relatif segar untuk membatasi lalu lintas ke wilayah geografis yang disebut blackholing selektif yang menurut saya layak untuk dilihat.
https://ripe68.ripe.net/presentations/176-RIPE68_JSnijders_DDoS_Damage_Control.pdf
http://mailman.nanog.org/pipermail/nanog/2014-Februari/064381.html
http://www.internetsociety.org/deploy360/blog/2014/07/video-selective-blackholing-at-ripe-68/
Karena metode ini bekerja pada manipulasi rute, ia mem-bypass masalah server load.
sumber