Fail2Ban adalah utilitas penguraian log yang memindai file log dari berbagai proses dan melarang alamat IP yang membuat terlalu banyak kegagalan kata sandi. Ketika percobaan login ditemukan, Fail2Ban akan menambahkan aturan baru ke iptables untuk memblokir alamat IP penyerang, baik sementara atau permanen. Itu juga dapat mengingatkan Anda melalui email untuk hal yang sama.
Ini terutama difokuskan untuk mendeteksi intrusi melalui SSH tetapi dapat dikonfigurasi untuk bekerja dengan layanan apa pun yang menggunakan file log.
Prasyarat
-
Server berbasis Fedora 33 atau CentOS 8 dengan pengguna non-root dengan hak sudo.
-
Instal editor Nano karena itulah yang akan kita gunakan.
$ sudo dnf install nano -y
Instal Fail2Ban
Untuk menginstal Fail2Ban di CentOS 8, Anda harus menginstal repositori EPEL Yum terlebih dahulu.
$ sudo dnf install epel-release
Fedora 33 dikirimkan dengan Fail2Ban.
Jalankan perintah berikut untuk menginstal Fail2Ban di Fedora 33 dan CentOS 8.
$ sudo dnf install fail2ban
Setelah terinstal, kita perlu mengaktifkan layanan.
$ sudo systemctl enable fail2ban
Selanjutnya, mulai layanan fail2ban.
$ sudo systemctl start fail2ban
Sekarang Anda dapat memeriksa status layanan untuk melihat apakah layanan berfungsi dengan benar.
$ sudo systemctl status fail2ban
? fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-11-02 21:15:59 UTC; 5s ago
Docs: man:fail2ban(1)
Process: 19031 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
Main PID: 19032 (f2b/server)
Tasks: 3 (limit: 1125)
Memory: 11.0M
CPU: 96ms
CGroup: /system.slice/fail2ban.service
??19032 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Starting Fail2Ban Service...
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Started Fail2Ban Service.
Nov 02 21:15:59 howtoforge-tutorial fail2ban-server[19032]: Server ready
Konfigurasikan Fail2Ban
Layanan Fail2Ban menyimpan file konfigurasinya di /etc/fail2ban
direktori. Anda akan menemukan file jail.conf
di dalamnya. File ini biasanya ditimpa selama peningkatan paket sehingga tidak boleh diedit.
Sebagai gantinya, semua konfigurasi harus dilakukan dalam file baru yang akan kita sebut jail.local
. Pengaturan dalam 2 file ini dapat diganti lebih lanjut melalui file dari /etc/fail2ban/jail.d/
direktori.
Konfigurasi diterapkan dalam urutan berikut:
/etc/fail2ban/jail.conf
etc/fail2ban/jail.d/*.conf
, Sesuai abjad/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
, Sesuai abjad
jail.conf
berisi [DEFAULT]
bagian diikuti oleh bagian untuk layanan individu. Setiap bagian ini dapat diganti dengan mendefinisikannya di .local
file.
Konfigurasi jail.local
Kami akan membuat jail.local
baru berkas.
$ sudo nano /etc/fail2ban/jail.local
Tempelkan kode berikut di dalamnya.
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override backend=auto in /etc/fail2ban/jail.conf
backend = systemd
[sshd]
enabled = true
Tekan Ctrl + X untuk menutup editor dan tekan Y ketika diminta untuk menyimpan file. Ini menetapkan bantime
default baru untuk semua layanan, ubah backend menjadi systemd
dan mengaktifkan `sshd
penjara.
Mulai ulang Fail2ban untuk menerapkan perubahan baru.
$ sudo systemctl restart fail2ban
Kami dapat mengonfirmasi pengaturan yang baru diterapkan menggunakan fail2ban-client
utilitas.
$ sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
Kami juga bisa mendapatkan detail status masing-masing penjara secara khusus dengan cara berikut.
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
Setelan Lainnya
jail.conf
menyediakan lebih banyak pengaturan yang dapat disesuaikan menggunakan /jail.local
mengajukan. Kami akan membahas beberapa pengaturan selanjutnya.
IP yang Masuk Daftar Putih
Anda dapat membuat daftar putih/mengabaikan IP agar tidak diblokir oleh Fail2ban menggunakan kode berikut.
[DEFAULT]
ignoreip = 127.0.0.1/8 123.45.67.89
Jika Anda ingin memasukkan IP ke daftar putih hanya untuk jail tertentu, Anda dapat melakukannya melalui fail2ban-client
.
$ sudo fail2ban-client set JAIL addignoreip 123.45.67.89
Ganti JAIL
pada perintah di atas dengan nama jail, Anda ingin mengedit pengaturannya.
Waktu Larangan dan jumlah Coba Lagi
Ada 3 pengaturan yang dapat mengatur waktu dan jumlah percobaan ulang untuk larangan.
bantime
- adalah lamanya waktu dalam detik di mana IP dilarang. Untuk menetapkan larangan permanen, setel nilai ini ke angka negatif. Nilai defaultnya adalah 10 menit atau 600 detik.
findtime
- adalah lamanya waktu antara upaya login sebelum larangan ditetapkan. Nilai ini selalu beberapa detik. Misalnya, jika Fail2ban diatur untuk memblokir IP setelah 5 upaya login yang gagal, 5 upaya tersebut harus dilakukan dalam bantime
10 menit yang ditetapkan. batas.
maxretry
- adalah jumlah percobaan ulang dari satu alamat IP sebelum larangan diberlakukan. Nilai defaultnya adalah 3.
Untuk menyesuaikan pengaturan ini, rekatkan baris berikut di \etc\fail2ban\jail.local
file di bawah [DEFAULT]
bagian.
bantime = 3600
findtime = 300
maxretry = 4
Peringatan Email
Untuk mengirim peringatan email, Anda harus menginstal Mail Transfer Agent (MTA) terlebih dahulu. Untuk tujuan kami, kami akan menginstal sendmail
.
$ sudo dnf install sendmail
Untuk menerima email, tambahkan kode berikut di \etc\fail2ban\jail.local
file di bawah [DEFAULT]
bagian.
destemail = [email protected]
sendername = Fail2Ban
mta = sendmail
action = %(action_mw)s
destemail
mengacu pada Id email Tujuan yang merupakan id tempat Anda ingin menerima surat, sendername
mengacu pada nama pengirim jadi kami menggunakan Fail2Ban untuk itu. mta
mengacu pada Agen Transfer Surat yang digunakan yaitu sendmail
di sini. Jika Anda menggunakan Postfix
, lalu gunakan nilai mail
untuk mta
variabel.
action
mengacu pada tindakan default yang dilakukan setelah intrusi terdeteksi. Nilai defaultnya adalah %(action_)s
yang hanya melarang pengguna. %(action_mw)s
akan melarang dan mengirim email dengan laporan Whois; sementara %(action_mwl)s
akan melarang dan mengirim email dengan laporan Whois bersama dengan informasi dari file log yang relevan. Ini juga dapat diubah berdasarkan penjara tertentu.
Setelan untuk Penjara Individual
Seperti yang sudah kita ketahui, [DEFAULT]
berlaku untuk semua Penjara, sekarang saatnya untuk melihat beberapa Penjara tertentu dan pengaturannya.
Penjara SSHD
Kami telah mendefinisikan [sshd]
sebelumnya di jail.local
. kami mengajukan. Kita dapat menyesuaikannya sedikit lebih banyak dengan kode berikut.
[sshd]
enabled = true
port = ssh
logpath = %(ssh_log)s
Dalam hal ini, kami menggunakan variabel yang telah ditentukan sebelumnya ssh
untuk port yang merupakan port SSH default. Jika Anda menggunakan port SSH yang berbeda, Anda harus mengubahnya. logpath
mengacu pada lokasi file log yang akan dipantau. %(ssh_log)s
menggunakan nilai yang ditentukan dalam file konfigurasi standar Fail2ban (/etc/fail2ban/paths-common.conf
).
Penjara Nginx
Nginx memiliki beberapa Jail yang dapat digunakan di Fail2Ban. Misalnya, jika bagian situs Anda yang dilindungi sandi diserang berulang kali, Anda dapat menggunakan bagian [nginx-http-auth]
di jail.local
file untuk itu.
[nginx-http-auth]
enabled = true
Kami juga dapat menambahkan bagian yang disebut [nginx-botsearch]
untuk menghentikan permintaan ke folder atau lokasi yang tidak ada.
[nginx-badbots]
enabled = true
Ada juga jail Nginx lainnya tetapi tidak dilengkapi dengan Fail2Ban. Mereka perlu dibuat secara manual dan sebagian besar dapat didasarkan pada Apache yang dikirimkan oleh Fail2Ban.
Filter Fail2Ban dan Failregex
Ada pengaturan lain dalam konfigurasi Fail2Ban yang disebut filter. Filter memutuskan apakah sebuah baris dalam file log menunjukkan autentikasi yang gagal.
Nilai filter dalam file konfigurasi adalah referensi ke file yang terletak di /etc/fail2ban/filter.d
direktori dengan .conf
ekstensi dihapus.
Anda dapat melihat jenis filter yang tersedia dengan memeriksa direktori.
$ ls /etc/fail2ban/filter.d
Anda akan melihat 2 file log untuk Nginx di dalamnya; nginx-badbots.conf
dan nginx-http-auth.conf
.
File konfigurasi ini menggunakan ekspresi Reguler (regex) untuk mengurai file log. Ini disebut Failregex. Anda dapat menyesuaikan atau membuat filter baru dengan menulis ekspresi reguler Anda sendiri. Kami tidak akan membahas ekspresi reguler ini secara mendalam karena mereka berada di luar cakupan tutorial ini.
Memantau Log dan Firewall Fail2Ban
Anda dapat memeriksa status Fail2Ban dengan menggunakan systemctl
seperti yang dinyatakan sebelumnya.
$ sudo systemctl status fail2ban
Untuk mendapatkan sedikit lebih detail, Anda dapat menggunakan journalctl
perintah.
$ sudo journalctl -b -u fail2ban
Anda juga dapat menggunakan fail2ban-client
untuk menanyakan status fail2ban-server
atau dan penjara individu.
$ sudo fail2ban-client status
$ sudo fail2ban-client status jail_name
Anda juga dapat menanyakan file log Fail2ban.
$ sudo tail -F /var/log/fail2ban.log
Anda dapat membuat daftar aturan saat ini yang dikonfigurasi untuk iptables.
$ sudo iptables -L
Anda juga dapat membuat daftar aturan iptables dalam format yang mencerminkan perintah yang diperlukan untuk mengaktifkan aturan tersebut.
$ sudo iptables -S
Kesimpulan
Ini mengakhiri tutorial kami tentang menginstal dan mengkonfigurasi Fail2Ban pada server berbasis Fedora 33 atau CentOS 8. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.