Lewati ke isi

Mencegah Serangan Brute Force SSH dengan Fail2Ban

General Description

Fail2Ban is an utility designed to prevent malicious access to a machine

Fail2ban operates by monitoring log files (e.g. /var/log/auth.log, /var/log/apache/access.log, etc.) for selected entries and running scripts based on them. Most commonly this is used to block selected IP addresses that may belong to hosts that are trying to breach the system's security.

It can ban any host IP address that makes too many login attempts or performs any other unwanted action within a time frame defined by the administrator. Includes support for both IPv4 and IPv6. Optionally longer bans can be custom-configured for "recidivist" abusers that keep coming back.

Fail2ban is typically set up to unban a blocked host within a certain period, so as to not "lock out" any genuine connections that may have been temporarily misconfigured. However, an unban time of several minutes is usually enough to stop a network connection being flooded by malicious connections, as well as reducing the likelihood of a successful dictionary attack

Install Fail2ban

sudo apt update
sudo apt install fail2ban

Fail2ban will automatically set up a background service after being installed. However, it is disabled by default, because some of its default settings may cause undesired effects. You can verify this by using the systemctl command:

agungsurya@fail2ban:~$ systemctl status fail2ban.service
Output
○ fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:fail2ban(1)

Start Fail2ban

sudo systemctl start fail2ban

sudo systemctl enable fail2ban

sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.conf.bak

sudo nano /etc/fail2ban/fail2ban.conf

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.

sudo nano /etc/fail2ban/jail.local

Contoh pengaturan Fail2ban untuk SSH

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

Konfigurasi fail2ban ini digunakan untuk melindungi server SSH dari serangan brute force dan dicontohkan untuk penggunaan dengan layanan SSH, yang menggunakan port default ssh (22).

[sshd] - Nama layanan yang diatur, yaitu sshd yang merujuk pada layanan SSH.

enable = true - Menentukan apakah layanan yang diatur akan diaktifkan atau tidak.

port = ssh - Port yang akan dipantau untuk aktivitas mencurigakan, yaitu port ssh yang merupakan port standar untuk layanan SSH.

filter = sshd - Nama filter yang akan digunakan untuk mencocokkan pola aktivitas mencurigakan pada log.

logpath = /var/log/auth.log - Lokasi file log yang akan diperiksa oleh fail2ban untuk mencari aktivitas mencurigakan.

maxretry = 2 - Jumlah percobaan login yang diizinkan sebelum alamat IP terkena ban oleh fail2ban.

bantime = 1h - Jumlah waktu yang dibutuhkan untuk menjebloskan alamat IP yang ditemukan melakukan aktivitas mencurigakan ke dalam daftar hitam (blacklist).

ignoreip = 127.0.0.1/8 - Daftar IP yang diabaikan oleh fail2ban, yang merupakan daftar IP yang diizinkan untuk melakukan akses ke server tanpa terkena ban.

Dengan konfigurasi fail2ban ini, server SSH akan dilindungi dari serangan brute force, di mana alamat IP yang mencoba login dengan kombinasi username dan password yang salah sebanyak maxretry kali akan terkena ban selama bantime yang ditentukan. Selain itu, alamat IP yang ada pada daftar ignoreip tidak akan terkena ban oleh fail2ban.

sudo systemctl restart fail2ban
sudo fail2ban-client status

Cek list banned IP Misalnya melihat IP apa saja yang diblokir di SSH

fail2ban-client status sshd

baru install sudah ada yg kena ban

Cara Unban client Fail2ban Misalnya ada user yang mencoba login SSH dan masuk list banned

fail2ban-client set sshd unbanip IP-CLIENT

pengetesan

ssh ke server

tes gagal login gunakan ip lain agar tidak ke ban pada saat percobaan testing failban

ip yang tadi di gunakan untuk ssh kena ban

pada saat terahkir saya membuat tutorial ini ip real saya gak sengaja ke ban karena typo beberapa kali pada saat ssh ke server lalu saya langsung saja destroy vm ny kerena sudah selesai, maka dari itu penting menggunakan authentikasi publik key dan private key atau membatasi ip mana saja yg boleh login ssh sebagai tambahan keamannan