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

agar iptables debian tidak hilang saat reboot

debian tidak menyediakan init script untuk iptables secara default seperti /etc/init.d/iptables pada redhat. alasannya adalah karena jika network start lebih dulu dari iptables maka akan ada sedikit waktu dimana sistem tidak terproteksi oleh firewall. hal ini oleh pengembang debian dianggap sebagai security flaw dan dikhawatirkan dapat dimanfaatkan untuk menjebol sistem. lalu bagaimana caranya agar firewall yang dibuat dengan iptables tidak hilang saat debian melakukan reboot?

berikut ini adalah salah satu cara yang dapat dilakukan.

1. melalui command line berikan perintah-perintah  iptables untuk membuat firewall

2. untuk melihat rules iptables yang sedang aktif gunakan perintah

$ iptables -L

3. jika sudah dirasa cukup simpan rules di suatu file misalnya /etc/firewall.conf dengan perintah

$ iptables-save > /etc/firewall.conf

4. agar rules dalam file tersebut dipanggil pada saat booting, buatlah script yang berisi perintah iptables-restore dalam sebuah file bernama iptables dalam folder /etc/network/if-up.d/

$ vi /etc/network/if-up.d/iptables

tulis 2 baris berikut lalu simpan dan keluar dari editor vi :

#!/bin/sh
iptables-restore < /etc/firewall.conf

lalu update permission agar dapat dieksekusi :

$ chmod +x /etc/network/if-up.d/iptables

lalu reboot. setelah proses reboot selesai gunakan iptables -L untuk memastikan bahwa rules iptables aktif.