Lompat ke kandungan utama
6 minit bacaan

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.

Webmaster fail2bankeselamatan SSHlog pelayanMyCERTkata laluan
Gembok besar pada pintu kabinet keluli dalam koridor gelap, lambang sekatan cubaan masuk berulang
Imej dijana AI.

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.

Sebelum menukar apa-apa, buka satu sesi SSH kedua dan biarkan ia terbuka, kemudian masukkan alamat sendiri dalam ignoreip, contohnya 127.0.0.1/8, ::1 dan rangkaian pejabat. Tanpa langkah ini, tiga atau lima cubaan yang tersalah boleh menyekat anda sendiri, dan anda terpaksa masuk melalui konsol penyedia.

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.

Baca juga di laman ini

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.

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.

Berhenti langgan bila-bila masa, satu klik.

Komen pembaca

Belum ada komen pada artikel ini. Jadilah yang pertama.

Tinggalkan komen

Emel tidak akan dipaparkan.

Komen disemak dahulu sebelum dipaparkan.

Kongsi WhatsApp Facebook

Berkaitan halaman ini

Pautan afiliasi Shopee - saya mungkin menerima komisen, harga awak tetap sama.

Senarai penuh ada di kedai afiliasi.

Rujukan yang mungkin berguna

Pautan rujukan - anda dapat ganjaran pendaftaran, saya juga dapat ganjaran. Tiada kos tambahan untuk anda.

Afiliasi

Shopee Affiliate - Jana komisen dengan berkongsi pautan produk Shopee

Program afiliasi rasmi Shopee. Kongsi pautan produk, dan anda menerima komisen bagi setiap jualan yang berlaku melalui pautan anda. Daftar melalui pautan ini dan masukkan kod rujukan 7FZB2E9, saya menerima ganjaran rujukan, dan anda tidak dikenakan sebarang kos tambahan.

Ganjaran: Komisen bagi setiap jualan melalui pautan anda (kadar ditetapkan Shopee mengikut kategori produk)

Bank

GXBank, FlexiCredit - Had kredit peribadi sehingga RM150,000

GXBank ialah bank digital di Malaysia yang beroperasi sepenuhnya dalam aplikasi. FlexiCredit memberi had kredit peribadi sehingga RM150,000 yang boleh dikeluarkan serta-merta ke akaun GX apabila diperlukan. Memohon tidak dikenakan caj.

Ganjaran: Sehingga RM100 untuk anda selepas permohonan FlexiCredit diluluskan dan penarikan dibuat (tertakluk syarat GXBank)

Senarai penuh (bank digital, minyak, penghantaran) ada di halaman rujukan. Maklumat di atas ialah ringkasan terma penyedia - sila semak terma penuh di laman rasmi mereka.