melindungi ssh dan apache dari serangan DOS dengan fail2ban

1. pada debian instalasi fail2ban yang paling cepat dan mudah adalah dengan

$ apt-get install fail2ban

jika ingin mengkompilasi sendiri downlod source dari website fail2ban.

2. 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 . sebaiknya file tersebut tidak diubah. untuk mengabaikan seting default dan mengatur fail2ban agar sesuai dengan kebutuhan kita, dapat dibuat file /etc/fail2ban/jail.local . fail2ban akan mengutamakan seting yang ada di file jail.local daripada jail.conf .

dalam tulisan ini yang akan dilindungi dari serangan denial of service (DOS) adalah ssh dan apache, untuk itu konfiurasi jail.local adalah sebagai berikut :

$ vi /etc/fail2ban/jail.local

tulis baris-baris berikut :

[DEFAULT]

#ignoreip adalah ip yang tak akan diblokir. misalnya localhost & ip kita sendiri.

#jika lebih dari satu maka masing-masing ip dipisahkan dengan spasi
ignoreip = 127.0.0.1 172.16.9.1
bantime  = 86400
maxretry = 5
backend = polling
destemail = root@localhost
action = iptables[name=%(__name__)s, port=%(port)s]

# JAILS
[ssh]

enabled = true
port        = ssh
filter        = sshd
logpath  = /var/log/auth.log
maxretry = 5

[http-get-dos]
enabled = true
port = http
filter = http-get-dos
logpath = /var/log/apache/access.log
maxretry = 300
findtime = 300

simpan dan keluar dari editor vi. namun sebelumnya, pastikan bahwa logpath sesuai dengan log ssh dan apache yang ada di komputer kita. log ssh pada redhat biasanya /var/log/secure . selanjutnya  :

$ vi /etc/fail2ban/filter.d/http-get-dos.conf

tuliskan baris-baris berikut :

[Definition]
failregex = ^<HOST> – – [.*] “GET
ignoreregex =

simpan lalu keluar dari editor vi.  dengan konfigurasi seperti diatas, untuk melindungi ssh fail2ban akan memblokir ip yang gagal login lebih dari 5 kali dalam satu sesi. untuk melindungi apache fail2ban akan memblokir ip yang melakukan GET sebanyak lebih dari 300 kali dalam 300 detik. aktivitas fail2ban dapat kita monitor dari log file di /var/log/fail2ban.log . untuk melihat rules iptables yang dibuat oleh fail2ban gunakan perintah

$ iptables -L

fail2ban dapat melindungi server dari serangan DOS namun kelemahan fail2ban adalah tidak dapat melindungi dari serangan distributed denial of service (DDOS). sebagai tambahan info, failregex untuk http-get-dos.conf diatas hanya akan berhasil jika format access.log adalah sebagai berikut :

xxx.xxx.xxx.xxx – – [23/Aug/2011:13:52:54 +0700] “GET …… dan seterusnya…..

untuk memastikan bahwa format access.log sesuai dengan failregex lakukan sebagai berikut :

$ tail -n 100 /var/log/apache/access.log > cuil.txt

$ fail2ban-regex /var/log/apache2/log23aug11-100baris /etc/fail2ban/filter.d/http-get-dos.conf

jika sesuai hasilnya kurang lebih sebagai berikut :

Date template hits:
0 hit(s): Month Day Hour:Minute:Second
0 hit(s): Weekday Month Day Hour:Minute:Second Year
0 hit(s): Weekday Month Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
200 hit(s): Day/Month/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
0 hit(s): Day-Month-Year Hour:Minute:Second[.Millisecond]
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601

Success, the total number of match is 100

However, look at the above section ‘Running tests’ which could contain important
information.

fail2ban dapat diaktifkan atau dinonaktifkan dengan perintah start atau stop, misalnya:

$ /etc/init.d/fail2ban stop