Cara Menggunakan Fail2ban untuk Mengamankan Server Linux Anda


Meningkatkan keamanan server Anda harus menjadi salah satu prioritas utama Anda ketika mengelola server linux. Dengan meninjau log server Anda, Anda mungkin sering menemukan berbagai upaya login brute force, banjir web, pencarian eksploitasi, dan banyak lainnya.

Dengan perangkat lunak pencegahan intrusi seperti fail2ban, Anda dapat memeriksa log server Anda dan menambahkan aturan iptables tambahan untuk memblokir alamat IP yang bermasalah.

Baca Juga: Cara Menginstal Fail2Ban untuk Melindungi SSH di CentOS/RHEL 8

Tutorial ini akan menunjukkan cara menginstal fail2ban dan menyiapkan konfigurasi dasar untuk melindungi sistem Linux Anda dari serangan brute force.

Persyaratan

Fail2ban ditulis dengan python dan satu-satunya persyaratan adalah menginstal python:

  • Cabang Fail2ban 0.9.x memerlukan Python >=2.6 atau Python >=3.2
  • Cabang Fail2ban 0.8.x membutuhkan Python >=2.4
  • Akses root ke sistem Anda
  • Opsional, iptables atau showewall dan sendmail

Cara Menginstal Fail2Ban di Sistem Linux

Pemasangan fail2ban relatif mudah:

Instal Fail2Ban di CentOS/RHEL

Pertama, perbarui paket Anda, aktifkan repositori Epel dan instal fail2ban seperti yang ditunjukkan.

yum update
yum install epel-release
yum install fail2ban

Instal Fail2Ban di Debian/Ubuntu

Pertama, perbarui paket Anda dan instal fail2ban seperti yang ditunjukkan.

apt-get update && apt-get upgrade -y
apt-get install fail2ban

Secara opsional, jika Anda ingin mengaktifkan dukungan email (untuk pemberitahuan email), Anda dapat menginstal sendmail.

yum install sendmail                   [On CentOS/RHEL]
apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

Untuk mengaktifkan fail2ban dan sendmail gunakan perintah berikut:

systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail

Cara Mengonfigurasi Fail2ban di Sistem Linux

Secara default, fail2ban menggunakan file .conf yang terletak di /etc/fail2ban/ yang dibaca terlebih dahulu. Namun, hal tersebut dapat ditimpa oleh file .local yang terletak di direktori yang sama.

Oleh karena itu, file .local tidak perlu menyertakan semua pengaturan dari file .conf, namun hanya pengaturan yang ingin Anda timpa. Perubahan harus dilakukan pada file .local, bukan pada .conf. Ini akan mencegah penimpaan perubahan saat memutakhirkan paket fail2ban.

Untuk keperluan tutorial ini, kami akan menyalin file fail2ban.conf yang ada ke fail2ban.local.

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

Sekarang Anda dapat melakukan perubahan pada file .local dengan menggunakan editor teks favorit Anda. Nilai yang dapat Anda edit adalah:

  • loglevel – ini adalah tingkat detail yang harus dicatat. Opsi yang mungkin adalah:

    • KRITIS
    • KESALAHAN
    • PERINGATAN
    • MELIHAT
    • INFORMASI
    • DEBUG
  • logtarget – mencatat tindakan dalam file tertentu. Nilai defaultnya adalah /var/log/fail2ban.log. Namun Anda dapat mengubahnya menjadi:

    • STDOUT – mengeluarkan data apa pun
    • STDERR – menampilkan kesalahan apa pun
    • SYSLOG – pencatatan berbasis pesan
    • File – keluaran ke file
  • socket – direktori tempat file soket akan ditempatkan.
  • pidfile – lokasi pidfile.

Konfigurasikan Fail2ban jail.local

Salah satu file terpenting di fail2ban adalah jail.conf yang mendefinisikan jail Anda. Di sinilah Anda menentukan layanan yang fail2bannya harus diaktifkan.

Seperti yang kami sebutkan sebelumnya, file .conf dapat diubah selama peningkatan versi, oleh karena itu Anda harus membuat file jail.local di mana Anda dapat menerapkan modifikasi Anda.

Cara lain untuk melakukannya adalah dengan menyalin file .conf dengan:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Jika Anda menggunakan CentOS atau Fedora, Anda perlu mengubah backend di jail.local dari "auto" ke "systemd".

Jika Anda menggunakan Ubuntu/Debian, modifikasi ini tidak perlu dilakukan, meskipun mereka juga menggunakan systemd.

File jail akan mengaktifkan SSH secara default untuk Debian dan Ubuntu, namun tidak pada CentOS. Jika Anda ingin mengaktifkannya, cukup ubah baris berikut di /etc/fail2ban/jail.local:

[sshd]
enabled = true
Larangan dan Coba Ulang Waktu

Anda dapat mengonfigurasi keadaan setelah alamat IP diblokir. Untuk tujuan tersebut, fail2ban menggunakan bantime, findtime dan maxretry.

  • bantime – ini adalah jumlah detik di mana alamat IP akan tetap diblokir (default 10 mnt).
  • findtime – jumlah waktu antara upaya login, sebelum host diblokir. (default 10 mnt). Dengan kata lain, jika fail2ban diatur untuk memblokir alamat IP setelah 3 upaya login yang gagal, 3 upaya tersebut harus dilakukan dalam periode waktu pencarian (10 menit).
  • maxretry – jumlah percobaan yang harus dilakukan sebelum larangan diterapkan. (standarnya 3).
Daftar Putih Alamat IP

Tentu saja, Anda ingin memasukkan alamat IP tertentu ke daftar putih. Untuk mengonfigurasi alamat IP tersebut, buka /etc/fail2ban/jail.local dengan editor teks favorit Anda dan hapus komentar pada baris berikut:

ignoreip = 127.0.0.1/8  ::1

Kemudian, Anda dapat memasukkan alamat IP yang ingin Anda abaikan. Alamat IP harus dipisahkan dari spasi atau koma.

Peringatan Email

Jika Anda ingin menerima pemberitahuan email saat acara berlangsung, Anda harus mengonfigurasi pengaturan berikut di /etc/fail2ban/jail.local:

  • destemail – alamat email tempat Anda akan menerima notifikasi.
  • Nama Pengirim – pengirim yang akan Anda lihat saat menerima pesan.
  • pengirim – alamat email dari mana fail2ban akan mengirim email.

mta (agen transfer email) default disetel ke sendmail.

Untuk menerima pemberitahuan email, Anda juga perlu mengubah pengaturan “tindakan” dari:

Action = %(action_)s

Untuk salah satu dari ini:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s – akan memblokir host dan mengirim email berisi laporan whois.
  • %(action_mwl)s – akan memblokir host, memberikan info whois dan semua informasi relevan dari file log.

Konfigurasi Penjara Fail2ban Tambahan

Sejauh ini kita telah melihat opsi konfigurasi dasar. Jika Anda ingin mengkonfigurasi jail, Anda harus mengaktifkannya di file jail.local. Sintaksnya cukup sederhana:

[jail_to_enable]
. . .
enabled = true

Dimana sebaiknya Anda mengganti jail_to_enable dengan jail sebenarnya, misalnya “sshd ”. Dalam file jail.local, nilai berikut akan ditentukan sebelumnya untuk layanan ssh:

[sshd]

port = ssh
logpath = %(sshd_log)s

Anda dapat mengaktifkan filter yang akan membantu mengidentifikasi apakah suatu baris di log gagal. Nilai filter sebenarnya adalah referensi ke file dengan nama layanan yang diikuti dengan .conf. Misalnya: /etc/fail2ban/filter.d/sshd.conf.

Sintaksnya adalah:

filter = service

Misalnya:

filter = sshd

Anda dapat meninjau filter yang ada di direktori berikut: /etc/fail2ban/filter.d/.

Gunakan klien fail2ban

Fail2ban hadir dengan klien yang dapat digunakan untuk meninjau dan mengubah konfigurasi saat ini. Karena menyediakan banyak pilihan, Anda dapat membaca manualnya dengan:

man fail2ban-client 

Di sini Anda akan melihat beberapa perintah dasar yang dapat Anda gunakan. Untuk meninjau status fail2ban saat ini atau untuk jail tertentu, Anda dapat menggunakan:

fail2ban-client status

Hasilnya akan terlihat seperti ini:

Untuk penjara individual, Anda dapat menjalankan:

fail2ban-client status sshd

Pada tangkapan layar di bawah, Anda akan melihat bahwa saya sengaja gagal melakukan beberapa login sehingga fail2ban dapat memblokir alamat IP yang saya coba sambungkan:

Kesimpulan

Fail2ban adalah sistem pencegahan intrusi yang luar biasa dan terdokumentasi dengan baik, yang memberikan keamanan ekstra pada sistem Linux Anda. Dibutuhkan beberapa waktu untuk membiasakan diri dengan pengaturan dan sintaksisnya, tetapi setelah Anda terbiasa dengannya, Anda akan merasa bebas untuk mengubah dan memperluas aturannya.