Prevent Brute Force Attack with Fail2ban
Good afternoon
sudah lama gak nulis blog nih.. jadi buat merefreshkan kembali blog ini, saya mau sharing-sharing ni gimana caranya buat mencegah brute force menggunakan Fail2ban.. Saya sudah berhasil mempraktekannya di Centos 5.6 dan Fedora Lovelock saya.. langsung saja yaa…..
Fail2ban adalah software intrusion prevention framework yang ditulis menggunakan python, fail2ban bekerja dengan cara membaca log file dari ssh, apache dan lainnya kemudian secara otomatis menerapkannya pada iptables untuk memblok brute force.
Langsung saja untuk instalasinya :
1. Download fail2ban
#wget http://downloads.sourceforge.net/project/fail2ban/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2?use_mirror=transact
2. Ekstrak file tar-nya
#tar -xf fail2ban-0.8.4.tar.bz2
3. Menuju direktori fail2ban
#cd fail2ban-0.8.4
4. Install
#python setup.py install
5. Copy file files/redhat-initd ke /etc/init.d/fail2ban
#cp files/redhat-initd /etc/init.d/fail2ban
6. Set agar fail2ban berjalan pada saat boot
#chkconfig --add fail2ban
#chkconfig fail2ban on
Proses instalasi telah selesai, selanjutnya untuk testing kita bisa mencobanya, misalnya disini saya akan mencobanya melalui tes SSH dan FTP.
Semua file konfigurasi fail2ban ada di folder /etc/fail2ban. File utama yang mengatur bagaimana fail2ban bekerja secara default ada di file /etc/fail2ban/jail.conf . Jadi untuk mengedit jail kita ketikkan :
#nano -w /etc/fail2ban/jail.conf
Bagian utama dari jail ini secara default adalah sebagai berikut, anda bisa merubah2nya sesuai keinginan anda :
File: jail.conf[DEFAULT] ignoreip = 127.0.0.1 192.168.1.0/24 bantime = 600 findtime = 600 maxretry = 5 backend = auto
Review bagian [ssh-iptables], dan rubah bagian enable nya menjadi ‘= true’
[ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] logpath = /var/log/sshd.logmaxretry = 5
Maksud dari baris2 diatas kalo gak ngerti ini nih tabel deskripsinya :
| Name | Default | Description |
|---|---|---|
| filter | Name of the filter to be used by the jail to detect matches. Each single match by a filter increments the counter within the jail | |
| logpath | /var/log/messages | Path to the log file which is provided to the filter |
| maxretry | 3 | Number of matches (i.e. value of the counter) which triggers ban action on the IP. |
| findtime | 600 sec | The counter is set to zero if no match is found within “findtime” seconds. |
| bantime | 600 sec | Duration (in seconds) for IP to be banned for. |
Kita juga perlu mengganti email dan lokasi log seperti ini:
s
endmail-whois[name=SSH, dest=you@mail.com, sender=fail2ban@mail.com]
logpath = /var/log/sshd.log
dan rubah menjadi (contoh):
sendmail-whois[name=SSH, dest=you@yourdomain.com, sender=fail2ban@yourserversdomain.net]
logpath = /var/log/secure
Ketika semuanya telah selesai dikonfigurasi maka start fail2ban :
#service fail2ban start
Lalu tes rules per service menggunakan:
#fail2ban-regex /var/log/secure "Failed [-/\w]+ for .* from <HOST>"
#fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/sshd.conf
Lalu untuk melihat apa saja yang terjadi di log bisa dilihat di fail2ban.log:
#tail /var/log/fail2ban.log2010-10-20 23:06:54,770 fail2ban.server : INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.4 2010-10-20 23:06:54,771 fail2ban.jail : INFO Creating new jail 'ssh-iptables' 2010-10-20 23:06:54,772 fail2ban.jail : INFO Jail 'ssh-iptables' uses poller 2010-10-20 23:06:54,808 fail2ban.filter : INFO Added logfile = /var/log/messages 2010-10-20 23:06:54,809 fail2ban.filter : INFO Set maxRetry = 5 2010-10-20 23:06:54,810 fail2ban.filter : INFO Set findtime = 600 2010-10-20 23:06:54,811 fail2ban.actions: INFO Set banTime = 600
Sekarang fail2ban seharusnya sudah ready to use, pada contoh dibawah ini ditampilkan success output dari host yang dibanned:
#tail -f /var/log/fail2ban.log2010-10-20 23:06:54,770 fail2ban.server : INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.4 2010-10-20 23:06:54,771 fail2ban.jail : INFO Creating new jail 'ssh-iptables' 2010-10-20 23:06:54,772 fail2ban.jail : INFO Jail 'ssh-iptables' uses poller 2010-10-20 23:06:54,808 fail2ban.filter : INFO Added logfile = /var/log/messages 2010-10-20 23:06:54,809 fail2ban.filter : INFO Set maxRetry = 5 2010-10-20 23:06:54,810 fail2ban.filter : INFO Set findtime = 600 2010-10-20 23:06:54,811 fail2ban.actions: INFO Set banTime = 600 2010-10-21 18:01:08,099 fail2ban.actions: WARNING [ssh-iptables] Ban 24.8.222.211 2010-10-21 18:01:21,138 fail2ban.actions: WARNING [ssh-iptables] Ban 71.17.240.82 2010-10-21 18:01:47,190 fail2ban.actions: WARNING [ssh-iptables] Ban 71.94.162.198 2010-10-21 18:02:45,277 fail2ban.actions: WARNING [ssh-iptables] Ban 112.116.154.174
Hauuffff.. sekian dulu tutorial dari saya... yang saya lakukan diatas untuk mengetes SSH. Nanti akan saya bahas lagi tutorial fail2ban dengan testingnya adalah FTP server Untuk manual officialnya ada disini. Selamat Mencoba![]()















