GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Menginstal dan Mengonfigurasi Fail2Ban di CentOS 8 dan Fedora 33

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

  1. Server berbasis Fedora 33 atau CentOS 8 dengan pengguna non-root dengan hak sudo.

  2. 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:

  1. /etc/fail2ban/jail.conf
  2. etc/fail2ban/jail.d/*.conf , Sesuai abjad
  3. /etc/fail2ban/jail.local
  4. /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.


Cent OS
  1. Cara menginstal dan mengkonfigurasi Redis 6 di Fedora 34

  2. Bagaimana Cara Menginstal dan Mengkonfigurasi Fail2ban di CentOS 8?

  3. Cara Menginstal dan Mengkonfigurasi CyberPanel di CentOS 8

  1. Cara Menginstal dan Mengkonfigurasi Nginx di CentOS 7

  2. Cara Menginstal dan Mengonfigurasi Fail2ban di CentOS 8

  3. Cara Menginstal dan Mengonfigurasi Redis di CentOS 7

  1. Cara Menginstal dan Mengonfigurasi GitLab di CentOS 7

  2. Cara Instal dan Konfigurasi Redmine di CentOS 7

  3. Cara Menginstal dan Mengonfigurasi Redis di CentOS 8