fail2ban adalah paket klien, server, dan file konfigurasi yang digunakan untuk melindungi sistem dari berbagai serangan berbahaya. Ini mengamankan layanan server Linux terhadap Denial of Service (DoS) juga. Padahal, fungsi dasar lainnya adalah memantau file log, mencari pola yang telah ditentukan, dan memblokir alamat IP untuk sementara. Ini diterbitkan di bawah GNU General Public License Versi 2 dan didasarkan pada Python.
Itu dapat berjalan di latar belakang (sebagai iblis) serta di latar depan. Program ini berguna, misalnya, di server ssh Anda ingin membatasi jumlah upaya login. Program fail2ban memeriksa file log sistem untuk upaya login yang gagal dan kemudian memblokir alamat Internet (IP) penyerang untuk jangka waktu tertentu.
Di sini kita mempelajari langkah-langkah untuk menginstal Fail2ban pada Debian 11 Bulleyes dan proses konfigurasinya.
Fail2ban instalasi di Debian 11
Paket untuk menginstal dan mengkonfigurasi Fail2ban tersedia di repo resmi Debian 11, jadi kita hanya perlu menggunakan perintah apt untuk instalasinya.
Pertama, jalankan perintah pembaruan untuk membangun kembali cache repo-
sudo apt update
Dan kemudian perintah utama untuk mendapatkan alat keamanan ini-
sudo apt install fail2ban
Dengan menjalankan perintah di atas, program berikut akan tersedia setelah instalasi:
- fail2ban-server – server
- fail2ban-client – Program klien untuk konfigurasi dan evaluasi server
- fail2ban-regex- Program untuk menguji ekspresi reguler
Aktifkan dan periksa status layanannya-
sudo systemctl enable fail2ban sudo systemctl status fail2ban
Konfigurasi pada Debian 10/11
fail2ban membaca jenis file konfigurasi dengan ekstensi .conf
dan .local
. File dengan ekstensi .conf
dibuat selama penginstalan dan akan ditimpa selama peningkatan versi paket, jadi semua perubahan harus dilakukan di .local
yang sesuai file. Jadi, hanya tambahkan atau ubah nilai dalam file ini yang berbeda dari pengaturan default atau global.
Fail2ban memiliki tiga jenis file konfigurasi:
/etc/fail2ban/action.d/*.conf/*
/etc/fail2ban/filter.d/*.conf/*
/etc/fail2ban/jail.conf /etc/fail2ban/jail.d/*.conf
Actions.d
File dalam direktori /etc/fail2ban/action.d/ berisi perintah untuk (membuka blokir) alamat IP. File tindakan berisi dua bagian: [Definition]
dan [Init]
. Entri dalam [Init]
bagian digunakan untuk menimpa aturan yang didefinisikan di penjara. Contoh dalam tabel berikut diambil dari iptables-multiport-conf tindakan. Semua perintah dijalankan dengan hak pengguna fail2ban.
Ikhtisar opsi | ||
entri | deskripsi | contoh |
[Definition] | ||
actionstart | Perintah yang dijalankan saat fail2ban dimulai. | actionstart = iptables -N fail2ban-<name> iptables -A fail2ban-<name> -j RETURN iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> |
actionstop | Perintah yang dijalankan saat keluar dari fail2ban. | actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> iptables -F fail2ban-<name>[[BR]]iptables -X fail2ban-<name> |
actioncheck | Perintah yang dieksekusi sebelum setiap larangan tindakan. Ini digunakan untuk memeriksa fungsionalitas lingkungan saat ini. | actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]' |
actionban | Perintah yang dijalankan saat IP diblokir. Kondisinya selalu maxretry harus terlampaui dan findtime jatuh kurang. | actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype> |
actionunban | Perintah yang akan digunakan untuk membatalkan pemblokiran. | actionunban = iptables -D fail2ban-<name> -s <ip> -j <blocktype> |
[Init] | ||
name | Nama default rantai | name = default |
port | pelabuhan | port = ssh |
protocol | Digunakan secara internal oleh pembaca konfigurasi. Nilai yang memungkinkan: tcp , udp , icmp , all . | protocol = tcp |
chain | Rantai iptables tempat aturan fail2ban harus ditambahkan. Standarnya adalah INPUT . | rantai =INPUT |
Tag tindakan | Tag tindakan adalah placeholder yang dapat digunakan di actionban , actionunban dan actioncheck . | |
ip | Alamat IPv4 yang akan diblokir. | |
failures | Jumlah percobaan yang gagal dihitung. | |
time | Stempel waktu Unix (detik) dari larangan. | |
matches | Entri berantai dari baris file log yang mengarah ke larangan. Banyak karakter shell yang lolos. |
Filter.d
File dalam direktori /etc/fail2ban/filter.d/ berisi ekspresi reguler untuk menganalisis file log dan untuk mengekstrak alamat IP atau jika bekas digunakan, nama host. Hanya ada dua bagian dalam file ini: [Definition]
dan [Includes]
. Yang terakhir dapat digunakan untuk membaca di file konfigurasi lain.
Contoh dalam tabel berikut diambil dari iptables-multiport-conf tindakan. Semua perintah dijalankan dengan hak pengguna fail2ban.
Ikhtisar opsi | ||
entri | deskripsi | contoh |
[Definition] | ||
failregex | Dengan bantuan ekspresi reguler ini, file log dicari untuk mendapatkan klik. Tagnya adalah HOST tersedia di sini,yang digunakan sebagai bagian dari regex dan berisi nama host atau alamat IP. Perbedaan antara alamat IP dan nama host ditentukan secara otomatis oleh fail2ban. | failregex =^%(__prefix_line)sFAIL:\S+ address from= ^%(__prefix_line)sFAIL:\S+ libwrap from= |
ignoreregex | Pengecualian dapat didefinisikan di sini, meskipun valid untuk pengecualian di atas. abaikanregex mendukung interpolasi string sehingga Anda dapat menggunakan variabel Anda sendiri dengan %(variablenname)s . | ignoreregex = |
[INCLUDES] | ||
before | Gunakan untuk membuat file dibaca sebelum file yang disetel. Contohnya adalah common.conf | sebelum =common.conf |
after | File dibaca setelah disetel | setelah =example_after.local |
contoh | Setelah mengintegrasikan common.conf adalah _daemon tersedia.Lihat /etc/fail2ban/filter.d/common.conf untuk lebih jelasnya. | _daemon =xinetd |
Jail.conf
Sedangkan jail.conf
file menggabungkan Tindakan dan membuat Filter ke dalam penjara. Pengguna perlu menyimpan file ini dengan ekstensi.loca
l untuk mulai menambahkan aturannya sendiri atau menyesuaikannya.
jail.conf dan tabel berikut memberikan ikhtisar tentang kemungkinan nilai default.
Ikhtisar opsi | ||
entri | deskripsi | contoh |
[DEFAULT] | ||
ignoreip | Daftar IP atau jaringan yang dipisahkan spasi untuk diabaikan. | ignoreip = 127.0.0.1/8 192.168.1.33 |
bantime | Larang waktu dalam hitungan detik. Nilai negatif adalah larangan permanen. | bantime = 86400 |
findtime | Jumlah detik setelah penghitung untuk maxretry adalah setel ulang. | findtime = 660 |
maxretry | Jumlah maksimum percobaan yang gagal sebelum fail2ban memblokir IP. | maxretry = 2 |
backend | Backend, seperti systemd, dapat disetel di sini. Defaultnya adalah auto (disarankan). | backend = systemd |
usedns | Setelan untuk perilaku pencarian terbalik dari fail2ban. Nilai yang memungkinkan adalah yes , no dan warn .Yang terakhir berarti bahwa entri dengan nama host memberikan peringatan di file log, yang dapat menyebabkan entri dalam jumlah besar. | usedns = warn |
[myJail] | Nama penjara dapat ditetapkan di sini. | [ssh] |
enabled | (De-) mengaktifkan penjara | enabled = true |
port | Definisi port, bisa numerik. Beberapa nilai dipisahkan dengan koma. | port = ssh |
filter = sshd | Nama file filter | /etc/fail2ban/filter.d/sshd.conf |
logpath | File log yang akan dipantau, yang diperiksa filternya. | logpath = /var/log/auth.log |
maxretry, bantime,... | Nilai yang berbeda untuk opsi default juga dapat ditentukan. | maxretry = 3 |
Buat file konfigurasi Jail Anda sendiri
Jadi, sekarang mari kita salin jail.conf file untuk membuat jail.local file untuk menambahkan pengaturan khusus yang akan tetap ada bahkan setelah memutakhirkan fail2ban.
sudo cp /etc/fail2ban/jail.{conf,local}
Untuk mengonfigurasi berbagai setelan, edit file jail lokal yang dibuat
sudo nano /etc/fail2ban/jail.local
Beberapa contoh-
Masukkan beberapa alamat IP, rentang IP, atau host ke daftar putih
Sekarang, saat file terbuka, katakanlah Anda ingin memasukkan beberapa alamat IP, rentang IP, atau host agar tidak diblokir oleh layanan File2ban. Untuk wasiat itu, kami mendefinisikan hal yang sama di Jail.local . yang baru dibuat file.
Lihat :Cara memeriksa alamat IP di terminal Perintah Linux
Dalam file, temukan #igonreip baris dan hapus # dari itu. Setelah itu tambahkan alamat IP atau rentang yang ingin Anda daftar putih.
Bantime, findtime, dan percobaan ulang maksimal
Demikian pula, kami juga dapat menambah atau mengurangi waktu larangan alamat IP dengan mengubah nilai opsi bantime yang diberikan dalam file.
[Default] bantime = 10m
Untuk mengurangi atau menambah periode waktu, cukup ubah default 10 menit menjadi apa pun yang Anda inginkan. Sedangkan untuk memblokir Ip-address secara permanen menggunakan beberapa nilai negatif.
maxretry
Berapa banyak percobaan maksimal yang harus dilakukan alamat IP agar diblokir? Secara default adalah lima dan dideklarasikan menggunakan maxretry
pilihan di jail.local
mengajukan. Jika Anda ingin menguranginya, katakanlah hanya setelah dua upaya jahat, IP harus mendapatkan pemblokir, lalu ubah angka dari 5 menjadi 2. Dengan cara yang sama, Anda juga dapat meningkatkan jumlah percobaan maksimum.
maxretry = 5
waktu mencari
Ini adalah waktu antara percobaan ulang maksimum yang harus terjadi untuk setiap login berbahaya atau pada sistem sebelum Fail2Ban memblokir alamat IP tertentu. Misalnya , seseorang mencoba masuk, jika dia melakukan 5 upaya dalam 10 menit yang ditentukan, maka IP-nya akan diblokir. Namun, Anda dapat mengubah findtime nilai untuk menambah atau mengurangi periode waktu ini.
findtime = 10m
Fail2ban dapat mengirim peringatan email
Ya, jika beberapa IP diblokir maka Anda dapat menerima pemberitahuan email untuk hal yang sama. Namun, Anda harus mengaktifkan dan menentukan alamat email yang ingin Anda gunakan untuk menerima pemberitahuan.
Instal Sendmail- Agen transfer surat (MTA) sumber terbuka
sudo apt install sendmail
Sekarang, ada dua pengaturan utama yang harus kita lakukan di jail.local file untuk mendapatkan notifikasi email.
- destemail – alamat email yang akan digunakan untuk mendapatkan notifikasi.
- pengirim – alamat email dari mana fail2ban akan mengirim email.
Jadi, dalam file temukan dua pengaturan di atas dan tambahkan alamat email Anda-
Selanjutnya, temukan baris di bawah ini
action = %(action_)s
Dan ubah dengan salah satu dari yang berikut-
action = %(action_)s
– Yang ini akan mengirimkan pemberitahuan email ketika beberapa alamat IP diblokir.
atau
action = %(action_mwl)s
– Jika Anda menginginkan pemberitahuan email untuk IP host yang diblokir termasuk informasi log, gunakan opsi tindakan ini.
Selanjutnya, Anda dapat melihat daftar aplikasi klien email terbaik kami untuk Ubuntu atau Debian Linux.
Aktifkan Layanan di file Fail2ban Jail
Seperti yang saya sebutkan sebelumnya bahwa membuat jail.local terdiri dari Tindakan dan Filter yang dapat digunakan untuk menonaktifkan/mengaktifkan layanan default yang diizinkan atau membuat layanan Anda sendiri.
Misalnya – Secara Default, SSH diaktifkan di Jail.local dari Fail2ban.
Sebenarnya, di file Fail2ban Jail, Anda akan melihat banyak layanan yang menyertainya. Namun, Anda harus mengaktifkannya untuk digunakan. ATAU Anda dapat membuatnya sendiri.
Di bawah /etc/fail2ban/filters.d folder Anda dapat melihat semua konfigurasi filter file untuk setiap layanan Fai2ban Jail yang tersedia di sana.
Sebelum menunjukkan cara MENGAKTIFKANnya, mari kita periksa layanan jails apa saja yang diaktifkan-
sudo fail2ban-client status
Outputnya akan seperti ini-
Status |- Number of jail: 1 `- Jail list: sshd
Sekarang, jika kita ingin MENGAKTIFKAN beberapa layanan Jail, kita perlu menambahkan enabled = true
di jail.conf
file setelah judul layanan penjara. Contoh berikut menunjukkan cara mengaktifkan apache-auth penjara:
Contoh- Mari Aktifkan Fail2ban Apache-auth Service
Edit jail.local
dan temukan Apache-Auth . yang telah ditentukan sebelumnya Layanan Penjara
Simpan File menggunakan Ctrl+X , Y, dan dengan menekan Enter Kunci.
Mulai ulang server Fail2ban
sudo systemctl restart fail2ban
Sekarang , sekali lagi gunakan klien Fail2ban untuk memeriksa berapa banyak layanan Penjara yang diaktifkan-
sudo fail2ban-client status
Kali ini hasilnya adalah-
Status |- Number of jail: 2 `- Jail list: apache-auth, sshd
Untuk mengetahui informasi lebih lanjut tentang layanan gunakan namanya dengan perintah di atas-
sudo fail2ban-client status apache-auth
Keluaran:
Status for the jail: apache-auth |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/apache2/error.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
Kesalahan:
Jika Anda mendapatkan kesalahan berikut, itu berarti layanan tertentu yang ingin Anda aktifkan belum diinstal pada sistem atau server Anda. Misalnya, Jika saya telah mengaktifkan Apache Jail tetapi Apache sendiri tidak tersedia di server saya, maka kesalahan seperti ini akan muncul.
fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION [6613]: ERROR Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?
Fail2ban Client Usage
Bahkan kita dapat menggunakan alat perintah klien Fail2ban untuk menangani berbagai layanannya- untuk melihat semua perintah yang terkait dengannya, Anda dapat menggunakan tanda Bantuan-
fail2ban-client -h
Misalnya untuk melarang atau membuka blokir beberapa IP untuk beberapa layanan, gunakan sintaks berikut
Untuk melarang
fail2ban-client set <JAIL-service> banip <IP>
Untuk membatalkan pemblokiran
fail2ban-client set <JAIL-service> unbanip <IP>
Contoh-
sudo fail2ban-client set sshd banip 192.168.0.6
Catatan Akhir-
Jadi, ini adalah gambaran singkat tentang instalasi dan Konfigurasi Fail2ban pada Debian 11 Bullseye atau 10 Buster. Meskipun, dokumentasi alat Fail2ban tidak luas, tetap saja jika ada yang ingin melihat, periksa situs web resminya. Berikut tautannya:Halaman proyek, Dokumentasi, halaman GitHub untuk Kode sumber