Saya baru saja masuk pada server GitLab dan memperhatikan bahwa itu gagal login 18.974 sejak saya terakhir memeriksa server - hampir 5 hari. Saya memeriksa Ip dan sepertinya hampir semuanya berasal dari China dan mencoba untuk mendapatkan akses dengan SSH dan Brute Force. Saya mulai memblokir beberapa Ip tetapi kemudian saya menyadari bahwa itu adalah buang-buang waktu dan ide yang lebih baik adalah memblokir seluruh negara.
Apakah ada cara saya bisa memblokir SEMUA China atau negara lain dengan iptables?
Saya menemukan beberapa artikel di internet tetapi hampir semuanya adalah skrip bash. Saya seorang pemula di Linux jadi saya tidak begitu mengerti semua skrip itu. Saya menemukan iptables sangat menarik dan saya ingin belajar lebih banyak tentang itu.
Ada ide? Terima kasih!
Jawaban:
Menggunakan iptables untuk secara otomatis mengidentifikasi, dan setelah itu memblokir, orang jahat untuk ssh dapat dilakukan dengan menggunakan
recent
modul. Segmen berikut harus muncul setelahESTABLISHED,RELATED
garis generik Anda :Sekarang, masalah terakhir (satu atau dua tahun terakhir) dengan China adalah bahwa mereka menjadi sangat pintar dan sangat sering begitu mereka diblokir dari satu alamat IP mereka hanya beralih ke yang lain di sub-net yang sama dan melanjutkan. Ini menjalankan risiko kehabisan entri tabel terkini standar (saya pikir standarnya adalah 200). Saya memonitor ini dan kemudian mencari segmen IP yang sebenarnya, dan secara permanen memblokir seluruh segmen. Dalam kasus saya, saya tidak peduli dengan kerusakan jaminan, yaitu memblokir seseorang yang tidak bersalah:
Di mana di atas:
Anda bisa mendapatkan seluruh daftar alamat IP untuk China, atau negara mana saja, dalam format iptables, atau lainnya, di sini . Namun daftar itu panjangnya mengejutkan dan agak dinamis. Saya sendiri, saya memutuskan untuk tidak memblokir seluruh daftar.
sumber
Blok China menggunakan ipset
Anda tidak dapat secara manual menambahkan beberapa ribu alamat IP ke iptables Anda, dan bahkan melakukannya secara otomatis adalah ide yang buruk karena dapat menyebabkan banyak beban CPU (atau jadi saya sudah baca). Sebaliknya kita dapat menggunakan ipset yang dirancang untuk hal semacam ini. ipset menangani daftar besar alamat ip; Anda cukup membuat daftar dan kemudian kirim iptables untuk menggunakan daftar itu dalam aturan.
Catatan; Saya berasumsi bahwa keseluruhan hal berikut dilakukan sebagai root. Sesuaikan sesuai jika sistem Anda didasarkan pada sudo.
Selanjutnya, saya menulis skrip Bash kecil untuk melakukan semua pekerjaan, yang Anda harus bisa mengerti dari komentar di dalamnya. Buat file:
Inilah yang ingin Anda rekatkan ke dalamnya:
Simpan file. Jadikan itu dapat dieksekusi:
Ini belum melakukan apa-apa, tetapi akan dalam semenit ketika kita menjalankan skrip. Pertama, kita perlu menambahkan aturan ke iptables yang merujuk ke daftar ipset baru yang ditentukan oleh skrip di atas:
Tambahkan baris berikut:
Simpan file. Supaya jelas, iptables.firewall.rules lengkap saya sekarang terlihat seperti ini:
Saat ini, tidak ada yang berubah dengan server karena tidak ada aturan baru yang diterapkan; untuk melakukannya, jalankan skrip block-china.sh:
Ini akan menunjukkan beberapa output karena menarik daftar baru IP berbasis Cina dan kemudian, setelah beberapa detik, itu akan menyelesaikan dan menjatuhkan Anda kembali ke command prompt.
Untuk menguji apakah itu berhasil, jalankan:
Anda seharusnya sekarang melihat aturan baru yang memblokir Cina - hasilnya akan terlihat seperti ini:
Hampir selesai! Ini berfungsi, dan akan terus bekerja pada boot ulang. Tapi, alamat IP berubah dan daftar itu akan menjadi basi seiring waktu. Jika Anda ingin menarik dan menerapkan daftar IP yang diperbarui, Anda dapat menjalankan skrip block-china.sh lagi.
Kami juga dapat mengatur mesin untuk melakukan itu secara otomatis melalui tugas cron:
Tambahkan baris seperti ini:
Ini akan menjalankan /etc/block-china.sh pukul 5 pagi setiap hari. Pengguna yang menjalankan skrip harus root atau memiliki hak akses root.
sumber
sumber
wget http://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
Anda mungkin ingin menginstal sesuatu seperti fail2ban sehingga ia memblokir ips yang mencoba masuk ke server Anda dan gagal.
sumber
Anda dapat menggunakan modul geoip untuk iptables: https://linoxide.com/linux-how-to/block-ips-countries-geoip-addons/
sumber
Anda gunakan untuk Daftar Firewall IP2Location untuk menghasilkan iptables untuk Cina.
File ini dalam format berikut. Jalankan di shell dan Anda harus memblokir semua alamat IP China.
sumber