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.
Untuk CentOS
yum install epel-release fail2ban -y
Untuk Debian/Ubuntu
apt install fail2ban
systemctl start fail2ban systemctl enable 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 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.
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 :
/etc/fail2ban/filter.d/sshd.conf
)m
) dan jam (h
) dimana ketiganya saya contohkan di bawah ini :127.0.0.1/8 192.168.2.3 1.1.1.1
dan seterusnya.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
[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
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.
/etc/fail2ban/filter.d
systemctl restart fail2ban
fail2ban-client status
Daftar perintahnya bisa dilihat di man fail2ban-client
Misalnya melihat IP apa saja yang diblokir di SSH.
fail2ban-client status sshd
Misalnya ada user yang mencoba login SSH dan masuk list banned.
fail2ban-client set sshd unbanip IP-CLIENT
systemctl stop fail2ban
Selesai.
berikut adalah cara mengatasi error ImunifyAV has not detected any compatible hosting panel as well…
CentOS 7 tidak akan mendapatkan pembaruan apa pun setelah Juni 2024. Selain itu, mirrorlist.centos.org tidak…
DNS di server cyberpanel tidak mau bekerja, di cek pada error log keluar pesan seperti…
saat upgrade cyberpanel, keluar pesan error seperti berikut: django.db.utils.OperationalError: (1045, "Access denied for user 'cyberpanel'@'localhost'…
Untuk melakukan restart cyberpanel lewat SSH silahkan jalankan perintah berikut: systemctl restart lscpd
Di Linux, chown digunakan untuk mengubah izin pemilik file dan direktori. Namun, saat menggunakan perintah…