Server

Panduan Lengkap Cara Install & Konfigurasi Fail2ban di Linux

Panduan cara install dan konfigurasi Fail2ban di Linux. Firewall dan Fail2ban sangat direkomendasikan untuk meningkatkan keamanan server.

Cara kerjanya siapa saja (IP) yang mencoba mengakses ke server akan diblokir apabila terindikasi flooding dan masalah autentikasi, jika melebihi batas percobaan (maxretry) yang telah ditetapkan di dalam aturan yang telah dibuat. Berikut tutorial.

Install Fail2ban

Untuk CentOS

yum install epel-release fail2ban -y

Untuk Debian/Ubuntu

apt install fail2ban

Start Fail2ban

systemctl start fail2ban
systemctl enable fail2ban

Konfigurasi Fail2ban

Buat konfigurasi berdasarkan aturan dasar fail2ban yang telah ada

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

Kemudian

nano /etc/fail2ban/fail2ban.local

Edit LogLevel menjadi ERROR

Membuat file untuk mengaktifkan aturan Fail2ban

Membuat file jail.local, file ini akan dideteksi oleh Fail2ban sebagai konfigurasi jail yang di dalamnya akan kita atur sesuai kebutuhan, jika status enabled = true.

nano /etc/fail2ban/jail.local

Kemudian, di dalam file jail.local tambahkan baris berikut untuk mengaktifkan aturan.

Perhatian : Ambil yang perlu saja, misalnya kalau pakai Nginx, aturan Apachenya tidak perlu.

1. Aktifkan aturan untuk proteksi SSH

Contoh pengaturan Fail2ban untuk SSH

[sshd] 
enable = true 
port = ssh 
filter = sshd 
logpath = /var/log/auth.log 
maxretry = 5 
bantime = 1h 
ignoreip = 127.0.0.1/8

Keterangan :

  • filter = sshd (link ke file pengaturan /etc/fail2ban/filter.d/sshd.conf)
  • maxretry = jika ada yang mencoba login SSH dan gagal sebanyak 5 kali akan dibanned selama 1 jam ke depan (bantime = 1h). Waktu banned bisa dalam satuan detik (tanpa akhiran satuan), menit (m) dan jam (h) dimana ketiganya saya contohkan di bawah ini :
  • ignoreip = bisa ditambah sendiri (whitelist), IP, SUBNET maupun DNS contoh: 127.0.0.1/8 192.168.2.3 1.1.1.1 dan seterusnya.

2. Aktifkan aturan untuk Apache

Jika Debian dan Ubuntu logpathnya /var/log/apache2/, berhubung saya pakai CentOS jadi /var/log/httpd, silahkan disesuaikan.

[apache] 
enabled = true 
port = http, https 
filter = apache-auth 
logpath = /var/log/httpd/error.log 
maxretry = 5 
bantime = 30m
[apache-overflows] 
enabled = true 
port = http, https 
filter = apache-overflows 
logpath = /var/log/httpd/error.log 
maxretry = 5 
bantime = 30m
[apache-noscript] 
enabled = true 
port = http, https 
filter = apache-noscript 
logpath = /var/log/httpd/error.log 
maxretry = 5 
bantime = 30m
[apache-badbots] 
enabled = true 
port = http, https 
filter = apache-badbots 
logpath = /var/log/httpd/error.log 
maxretry = 5 
bantime = 30m

3. Aktifkan aturan untuk Nginx

[nginx-http-auth] 
enabled = true 
filter = nginx-http-auth 
port = http,https 
logpath = /var/log/nginx/error.log 
maxretry = 5 
bantime = 30m
[nginx-badbots] 
enabled = true 
filter = nginx-badbots 
port = http,https 
logpath = /var/log/nginx/access.log 
maxretry = 5 
bantime = 30m
[nginx-noscript] 
enabled = true 
filter = nginx-noscript 
port = http,https 
logpath = /var/log/nginx/access.log 
maxretry = 5 
bantime = 600
[nginx-noproxy] 
enabled = true 
filter = nginx-noproxy 
port = http,https 
logpath = /var/log/nginx/access.log 
maxretry = 5 
bantime = 600

Untuk Nginx, selain nginx-http-auth file konfigurasi Nginx lainnya belum ada, maka harus dibuat terlebih dahulu di dalam direktori /etc/fail2ban/filter.d

Konfigurasi nginx-noscript

nano /etc/fail2ban/filter.d/nginx-noscript.conf

Isi baris berikut :

[Definition] 
failregex = ^<HOST> -.*GET.*(\.php|\.asp|\.exe|\.pl|\.cgi|\.scgi) 
ignoreregex =

Konfigurasi nginx-noproxy

nano /etc/fail2ban/filter.d/nginx-noproxy.conf

Isi baris berikut :

[Definition] 
failregex = ^<HOST> -.*GET http.* 
ignoreregex =

File konfigurasi untuk nginx-badbots, bisa mencontoh dari apache-badbots

cp /etc/fail2ban/filter.d/apache-badbots.conf /etc/fail2ban/filter.d/nginx-badbots.conf

4. Aktifkan aturan untuk WordPress

Setiap log virtual host biasanya berbeda-beda, harus diarahkan ke path yang tepat (bisa wilcard).

Tambahkan baris berikut ke file /etc/fail2ban/jail.local

[wordpress] 
enabled = true 
filter = wordpress 
port = http,https 
logpath = /var/log/nginx/access*.log 
maxretry = 5 
bantime = 1h

File konfigurasi Fail2ban untuk [wordpress]

nano /etc/fail2ban/filter.d/wordpress.conf

Isi baris berikut :

[Definition] 
failregex = <HOST> - - \[(\d{2})/\w{3}/\d{4}:\1:\1:\1 - \d{4}\] "Post /wp-login.php HTTP/1.1" 200 
ignoreregex =

Simpan.

Catatan :

  1. Di semua aturan bisa ditambahkan pengecualian, misalnya IP kita sendiri (ignnoreip = IPnya)
  2. Semua konfigurasi aturan umum Fail2ban sebenarnya sudah siap, hanya saja belum diaktifkan, bisa dicek di direktori /etc/fail2ban/filter.d
  3. Tambahan: HTTP DOS dan Nginx DOS.

Restart Fail2ban

systemctl restart fail2ban

Cek status Fail2ban

fail2ban-client status

Daftar perintahnya bisa dilihat di man fail2ban-client

Cek list banned IP

Misalnya melihat IP apa saja yang diblokir di SSH.

fail2ban-client status sshd

Cara Unban client Fail2ban

Misalnya ada user yang mencoba login SSH dan masuk list banned.

fail2ban-client set sshd unbanip IP-CLIENT

Stop Fail2ban

systemctl stop fail2ban

Selesai.

Jadilah yang pertama untuk memberi nilai
Risa Y

Recent Posts

Mengamankan Server Cyberpanel dengan Fail2ban dan Firewalld

setelah firewalld berhasil di aktifkan di cyberpanel. dan untuk mengantisipasi serangan dari luar terhadap server…

1 week ago

Cara Mengaktifkan Firewalld di Server Cyberpanel

bagi pengguna CSF yang ingin beralih firewall dari CSF ke FirewallD berikut langkah-langkahnya. Silahkan uninstall…

1 week ago

Cara menghapus CSF (ConfigServer Security & Firewall) dari server cyberpanel

saat ini CSF sudah tidak di kembangkan lagi, sehingga sudah tidak kompatibel dengan cyberpanel versi…

1 week ago

Cara mengatasi Errors during downloading metadata for repository ‘gf’ saat menjalankan update linux

saat menjalankan perintah: yum update -y Keluar pesan error seperti berikut: [root@server ~]# yum update…

1 week ago

Mengatasi error ‘tech_domains’ array in /etc/cpanel/ea4/ea4-metainfo.json contained only invalid or empty entries pada cpanel

Saat akses file manager ataupun DNS Zone Manager, keluar error seperti berikut: A warning occurred…

9 months ago

Cara Secure Partisi /tmp di WHM/Cpanel

cPanel & WHM juga menawarkan skrip bawaan yang memaksimalkan keamanan partisi /tmp. Hal ini dilakukan…

1 year ago