Cara Install Fail2ban pada server / vps Ubuntu

Fail2Ban adalah kerangka kerja perangkat lunak pencegahan intrusi sumber terbuka dan gratis yang dapat digunakan untuk melindungi server Anda dari serangan brute-force. Fail2Ban bekerja dengan terus memantau file log (SSH, Apache, Auth) dan melarang alamat IP yang memiliki tanda-tanda berbahaya seperti seringnya terjadi kegagalan kata sandi.

Silahkan login Vps / Server anda menggunakan Putty, kemudian setelah anda login lanjutkan dengan

apt-get update -y

Instal Apache dan Fail2Ban
Pertama, Anda perlu menginstal server web Apache dan Fail2Ban ke server Anda. Anda dapat menginstalnya dengan menjalankan perintah berikut:

apt-get install apache2 fail2ban -y

Setelah penginstalan selesai, Anda dapat melanjutkan ke langkah berikutnya.

Konfigurasikan Fail2Ban

Secara default, semua file konfigurasi Fail2Ban terletak di dalam direktori / etc / fail2ban /. Anda dapat mencantumkan semuanya dengan perintah berikut:

ls -l /etc/fail2ban

Outputnya adalah sebagai berikut:

drwxr-xr-x 2 root root 4096 Nov 7 12:04 action.d
-rw-r–r– 1 root root 2328 Aug 1 2015 fail2ban.conf
drwxr-xr-x 2 root root 4096 Aug 2 2015 fail2ban.d
drwxr-xr-x 3 root root 4096 Nov 7 12:04 filter.d
-rw-r–r– 1 root root 18562 Aug 1 2015 jail.conf
drwxr-xr-x 2 root root 4096 Nov 7 12:04 jail.d
-rw-r–r– 1 root root 1939 Aug 1 2015 paths-common.conf
-rw-r–r– 1 root root 642 Aug 1 2015 paths-debian.conf

Dari file yang terdaftar di atas, jail.conf adalah file konfigurasi utama yang berisi sekumpulan filter yang telah ditentukan sebelumnya. Kami menyarankan Anda membuat file terpisah /etc/fail2ban/jail.local.

nano /etc/fail2ban/jail.local

Tambahkan baris berikut:

##Block the remote host that is trying to request suspicious URLs.
[apache-overflows] enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/apache2/*error.log
maxretry = 4
bantime = 300
ignoreip = 192.xxx.xxx.xxx

##Block the remote host that is trying to search for scripts on the website to execute.
[apache-noscript] enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/apache2/*error.log
maxretry = 4
bantime = 300
ignoreip = 192.xxx.xxx.xxx

##Block the remote host that is trying to request malicious bot.
[apache-badbots] enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/apache2/*error.log
maxretry = 4
bantime = 300
ignoreip = 192.xxx.xxx.xxx

##Stop DOS attack from remote host.
[http-get-dos] enabled = true
port = http,https
filter = http-get-dos
logpath = /var/log/apache*/access.log
maxretry = 400
findtime = 400
bantime = 200
ignoreip = 192.xxx.xxx.xxx
action = iptables[name=HTTP, port=http, protocol=tcp]

##Block the failed login attempts on the SSH server.
[ssh] enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
bantime = 300
ignoreip = 192.xxx.xxx.xxx

Simpan dan tutup file, setelah Anda selesai.

ignoreip : Opsi ini memungkinkan kami untuk memasukkan alamat IP yang tidak dapat diblokir oleh Fail2ban ke daftar putih.
bantime : Jumlah detik di mana host jarak jauh dilarang.
findtime : Opsi ini menentukan periode waktu (dalam detik) di mana percobaan masuk kembali dihitung.
maxretry : Opsi ini menentukan jumlah kegagalan sebelum sebuah host diblokir.
logpath : Opsi ini menentukan lokasi file log layanan.

Selanjutnya, buat file filter /etc/fail2ban/filter.d/http-get-dos.conf.

nano /etc/fail2ban/filter.d/http-get-dos.conf

Tambahkan baris berikut:

# Fail2Ban configuration file
[Definition]

# Option: failregex
# Note: This regex will match any GET entry in your logs, so basically all valid and not valid entries are a match.
# You should set up in the jail.conf file, the maxretry and findtime carefully in order to avoid false positives.
failregex = ^<HOST> -.*”(GET|POST).*
# Option: ignoreregex
ignoreregex =

Setelah selesai, simpan dan tutup file tersebut. Selanjutnya, mulai ulang Fail2Ban untuk menerapkan perubahan:

systemctl restart fail2ban

Selanjutnya, periksa status semua banned:

fail2ban-client status

Outputnya adalah sebagai berikut:

Status
|- Number of jail: 7
`- Jail list: apache, apache-badbots, apache-noscript, apache-overflows, http-get-dos, ssh, sshd

Anda juga dapat memeriksa status pelarangan Fail2Ban dengan menjalankan perintah berikut:

fail2ban-client status http-get-dos

Anda akan melihat bahwa Fail2Ban telah memblokir alamat IP host jarak jauh:

Status for the jail: http-get-dos

|- Filter
| |- Currently failed: 2
| |- Total failed: 650
| `- File list: /var/log/apache2/access.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 192.168.43.4

counter easy hit