Fail2ban: tiga angka yang menentukan cubaan masuk berulang benar-benar disekat, dan semakan 15 minit
Fail2ban menyekat alamat selepas 5 kegagalan dalam 10 minit dan ia hanya membaca log, bukan menampal kelemahan. Ini angka lalai, apa yang berubah dalam versi 1.1.1 pada 15 Ogos 2026, dan semakan 15 minit yang tidak menyekat diri sendiri.
Cubaan log masuk berulang jarang menjadi berita, tetapi ia berlaku setiap hari di mana-mana pelayan yang bersambung ke internet. Laporan suku tahunan MyCERT untuk Oktober hingga Disember 2025 mencatatkan 1,881 insiden siber, dan 73 daripadanya berkategori cubaan masuk. Sebanyak 31 insiden dilaporkan khusus sebagai cubaan log masuk cara brute force: 15 kes pada Oktober, 10 pada November dan 6 pada Disember.
Fail2ban dibina untuk satu corak yang mudah dikira: satu alamat IP yang gagal beberapa kali dalam tempoh yang pendek. Ia membaca log teks atau jurnal systemd, memadankan baris dengan ungkapan biasa, dan apabila ambang dilepasi, ia menulis peraturan firewall untuk menyekat alamat itu. Pos ini tidak menjual alat itu; ia menyusun angkanya supaya anda tahu bila sekatan berlaku, bila ia tidak berlaku, dan apa yang perlu disemak sendiri.
10 minit, 10 minit dan 5 kali: tiga angka lalai yang menjalankan seluruh sistem
Fail jail.conf rasmi menetapkan tiga nilai asas: bantime = 10m, findtime = 10m dan maxretry = 5. Bacaannya mudah. Kalau satu alamat mengumpul 5 kegagalan dalam 600 saat, alamat itu disekat selama 600 saat juga. Angka ini sengaja rendah supaya pelawat yang tersalah taip kata laluan tidak hilang akses terlalu lama.
- bantime = 10m: alamat disekat 10 minit. Bukan sehari dan bukan selamanya.
- findtime = 10m: tingkap kiraan 600 saat. Kegagalan yang tersebar sepanjang dua jam tidak mencetuskan sekatan.
- maxretry = 5: ambang kegagalan sebelum sekatan. Jail apache-badbots dalam fail yang sama memakai maxretry = 1 dengan bantime = 48h kerana sasarannya pengesan alamat e-mel.
- recidive: jail pesalah berulang. Ia membaca /var/log/fail2ban.log dengan findtime = 1d, maxretry = 5 dan bantime = 1w, iaitu 7 hari.
Dua tetapan teknikal menentukan sama ada jail itu benar-benar melihat apa-apa. Pertama, tapis sshd mempunyai parameter mode dengan nilai normal, ddos, extra dan aggressive; nilai lalai ialah normal. Kedua, padanan jurnal lalai bagi sshd ialah _SYSTEMD_UNIT=sshd.service + _COMM=sshd + _COMM=sshd-session. Kalau unit perkhidmatan SSH dinamakan lain, jail akan berjalan tanpa satu pun baris dipadankan, dan fail2ban-client status tidak akan menunjukkan sebarang kegagalan.
Ada satu pilihan yang mengubah kesan jangka panjang: bantime.increment. Apabila dihidupkan, tempoh sekatan naik mengikut pendarab 1, 2, 4, 8, 16, 32 dan seterusnya melalui formula lalai ban.Time * (1<<ban.Count) * banFactor. Silingnya dikawal oleh bantime.maxtime. Fail yang sama juga menyediakan bantime.rndtime, iaitu tambahan masa rawak supaya rangkaian bot tidak boleh mengira tepat bila sekatan tamat.
Apa angka MyCERT tunjukkan, dan apa yang ia tidak tunjuk
Dalam laporan suku keempat 2025 itu, jumlah insiden turun 7 peratus daripada 2,020 pada suku ketiga kepada 1,881. Penipuan kekal paling besar dengan 1,471 insiden. Kebocoran data naik 20 peratus daripada 142 kepada 171. Insiden kemasukan turun 42 peratus daripada 173 kepada 101. Pecahan bulanan menunjukkan November paling tinggi dengan 693 insiden, diikuti Disember 618 dan Oktober 570.
Tiga perkara praktikal boleh diambil daripada nombor ini. Pertama, cubaan log masuk brute force ialah sebahagian kecil daripada laporan rasmi, jadi bilangannya tidak mengukur jumlah imbasan yang berlaku di internet. Kedua, cubaan masuk turun 6 peratus sementara kebocoran data naik 20 peratus, iaitu dua masalah berbeza yang memerlukan tindak balas berbeza. Ketiga, log sebuah pelayan awam biasanya menyimpan lebih banyak cubaan daripada yang pernah dilaporkan kepada mana-mana pihak. Kalau anda belum pernah membuka log pelayan sendiri, mulakan dengan panduan membaca log pelayan, kerana fail2ban hanya berguna apabila format log benar-benar difahami.
Untuk rujukan Malaysia, saluran aduan insiden Cyber999 CyberSecurity Malaysia boleh dihubungi di 1-300-88-2999 pada waktu pejabat, dan talian mudah alih +60 19 2665850 sepanjang masa. Nombor ini berguna apabila sekatan perlu diselaraskan dengan pihak luar, bukan hanya dalam fail konfigurasi sendiri.
Versi 1.1.1 pada 15 Ogos 2026 lawan 1.0.2 pada Ubuntu 24.04
Keluaran terbaru fail2ban ialah versi 1.1.1 yang bertarikh 15 Ogos 2026. Ia membetulkan satu masalah yang layak difahami: ungkapan biasa dalam tapis domino-smtp boleh dipaksa berjalan terlalu lama. Nasihat keselamatan GHSA-33wh-ccjc-p397 menyebut input ujian 24 token mengambil masa kira-kira 10 hingga 13 saat untuk diproses, dan benang tapis yang tersekat itu berhenti menyekat serangan lain. Tampalan masuk melalui permintaan tarik nombor 4221. Jail domino-smtp tidak dihidupkan secara lalai, jadi risiko sebenar terhad kepada pemasangan yang mengaktifkannya.
Ada juga perubahan yang boleh memecahkan tetapan lama. Fail action.d/iptables.conf ditulis semula untuk menyokong berbilang rantaian firewall, jadi tindakan tersuai yang dibina daripada fail itu mungkin perlu dilaraskan. Tapis exim juga memindahkan beberapa peraturan ke mod more. Sesiapa yang pernah menyunting fail tindakan sendiri akan berjumpa masalah ini dahulu.
Pada Ubuntu 24.04 LTS, pakej rasmi masih 1.0.2-3ubuntu0.1. Halaman manual fail2ban-client untuk edaran noble sendiri menyebut Fail2Ban v1.0.2. Jarak antara 1.0.2 dan 1.1.1 ialah dua keluaran besar, dan sebab paling kerap orang tidak menaik taraf ialah tetapan jail yang ditulis bertahun-tahun lalu dan tidak ada masa untuk mengujinya semula.
Kesan jarak versi ini boleh diuji dalam beberapa saat. Perintah fail2ban-client stats, yang memaparkan bilangan kegagalan dan sekatan bagi setiap jail dalam bentuk jadual, diperkenalkan dalam 1.1.0. Pada pemasangan 1.0.2 ia menjawab dengan mesej Invalid command, dan sesiapa yang tidak tahu bezanya akan menyangka tetapan sendiri yang rosak.
fail2ban-client -V # versi pelayan yang sedang berjalan
apt-cache policy fail2ban # versi pakej dipasang dan calon naik taraf
fail2ban-client -t # uji fail konfigurasi, tiada perubahan dibuat
Semakan 15 minit pada pemasangan sendiri
fail2ban-client status # senarai jail yang benar-benar hidup
fail2ban-client status sshd # Currently failed, Total failed, Banned IP list
fail2ban-client banned # semua jail yang sedang menyekat alamat
fail2ban-client -t # uji konfigurasi sebelum dimuat semula
fail2ban-client reload # muat semula tanpa memutuskan sambungan
fail2ban-client set sshd unbanip 203.0.113.45 # buka satu alamat tertentu
Dua baris yang perlu dibaca ialah Currently banned dan Total banned. Total failed yang terus naik sementara Currently banned kekal pada 0 bermakna ambang terlalu tinggi atau tapis tidak padan dengan format log sebenar. Sebaliknya, kalau Currently banned naik tetapi peraturan tidak muncul dalam senarai firewall, kemungkinan besar lapisan hadapan seperti nftables atau UFW memintas tindakannya. Kedua-dua keadaan ini lebih biasa daripada kegagalan fail2ban itu sendiri.
Empat perkara yang fail2ban tidak selesaikan
- Ia tidak menampal kelemahan. Sekatan berlaku hanya selepas ada baris kegagalan dalam log. Perkhidmatan yang terdedah tanpa pengesahan langsung tidak menghasilkan baris untuk dipadankan.
- Sekatan lalai hanya 10 minit. Penyerang kembali selepas 600 saat itu tamat; sebab itulah jail recidive dan bantime.increment wujud.
- Di belakang proksi atau penyampai kandungan, permintaan tiba dari sedikit alamat sahaja. Menyekat alamat itu sebenarnya menyekat pembaca lain yang melintasi jalan yang sama.
- Rekod tidak kekal lama. Fail /var/lib/fail2ban/fail2ban.sqlite3 menyimpan sejarah sekatan, tetapi dbpurgeage lalai ialah 1d, jadi ia tidak sesuai dijadikan bukti jangka panjang.
Had kadar peringkat pelayan juga berbeza daripada fail2ban. Had kadar bertindak atas jumlah permintaan, bukan atas baris kegagalan log, jadi ia boleh memperlahankan banjir permintaan walaupun tiada kata laluan yang salah. Kedua-duanya menjawab soalan yang berbeza dan biasanya dipasang bersama.
Satu lagi had yang jarang disebut: setiap perkhidmatan memerlukan tapisnya sendiri. Jail untuk log masuk panel aplikasi dalaman hanya berfungsi kalau format log aplikasi itu padan dengan tapis yang ditulis. Format log yang berubah selepas kemas kini aplikasi adalah punca paling biasa sesuatu jail berhenti menyekat tanpa sesiapa perasan.
Satu lapisan dalam senarai, bukan baris terakhir
Fail2ban paling berguna apabila ia diletak bersama langkah lain, bukan menggantikannya. Kunci SSH menggantikan kata laluan, jadi kegagalan yang dikira berkurang. Kemas kini perisian menutup pintu yang tidak akan ditutup oleh sekatan firewall. Sandaran laman web memastikan sekatan yang terlepas tidak berakhir dengan kehilangan data. Dan semakan berkala ke atas sistem yang terjejas oleh kelemahan lama menentukan sama ada peraturan yang anda rasa sudah kuat itu masih berfungsi.
Kalau anda sudah memasang fail2ban tetapi belum pernah melihat mesej sekatan, itu bukan tanda selamat. Ia tanda sistem itu belum disemak. Mula dengan fail2ban-client status dan status sshd hari ini; dua perintah itu mengambil masa kurang daripada satu minit dan memberi gambaran sebenar sama ada gerbang anda benar-benar menutup pintu atau hanya dipasang dan dilupakan.
Halaman ini dicetak tanpa menu, borang langgan dan jalur sisi.
Baca juga di laman ini
- Lima perubahan kecil pada sshd_config yang menutup pintu SSH Langkah sebelum fail2ban: kurang pendedahan bermakna kurang kegagalan untuk dikira.
- Membaca log pelayan nginx tanpa menjadi jurutera Fail2ban membaca log; kalau format log tidak difahami, tapis tidak akan padan.
- Cara semak sama ada sistem anda terjejas Sekatan firewall tidak menutup kelemahan yang belum ditampal.
- Sandaran laman web: apa yang patut disandarkan Lapisan pemulihan yang fail2ban tidak boleh gantikan.
Sumber yang disemak
Maklumat dalam tulisan ini disemak dengan sumber di bawah. Bila keadaan berubah (harga, waktu, terma), sumber inilah yang paling tepat - bukan halaman ini.
- fail2ban releases - versi 1.1.1 (15 Ogos 2026)
- fail2ban config/jail.conf - nilai lalai bantime, findtime, maxretry
- MyCERT SR-033.042026 - Cyber Incident Quarterly Summary Report Q4 2025
- Nasihat keselamatan GHSA-33wh-ccjc-p397 - ReDoS dalam tapis domino-smtp
- Manual fail2ban-client pada Ubuntu 24.04 LTS (noble)
Dapat tulisan baharu terus ke e-mel
Sekali sekala sahaja: panduan web, berita AI, dan tempat menarik di Kelantan. Tiada iklan, dan e-mel encik tidak dikongsi dengan sesiapa.