Jika kita mempunyai server yang mempunyai ip public dan menjalankan service ssh maka kita akan sering menemukan log autentikasi failed dari port ssh seperti berikut

May 17 16:50:22 openbsd sshd[23912]: Failed none for invalid user admin from xx.xx.xx.xx port 52704 ssh2
May 17 16:50:23 openbsd sshd[23912]: Failed password for invalid user admin from xx.xx.xx.xx port 52704 ssh2
May 17 16:50:23 openbsd last message repeated 2 times
May 17 16:50:23 openbsd sshd[14094]: Connection closed by xx.xx.xx.xx
May 17 16:50:25 openbsd sshd[30117]: Invalid user admin from xx.xx.xx.xx
May 17 16:50:25 openbsd sshd[18376]: input_userauth_request: invalid user admin
May 17 16:50:25 openbsd sshd[30117]: Failed none for invalid user admin from xx.xx.xx.xx port 52705 ssh2
May 17 16:50:25 openbsd sshd[30117]: Failed password for invalid user admin from xx.xx.xx.xx port 52705 ssh2
May 17 16:50:26 openbsd last message repeated 2 times
May 17 16:50:26 openbsd sshd[18376]: Connection closed by xx.xx.xx.xx

Kasus kasus seperti ini dapat diatasi dengan menggunakan firewall pf (paket filter), jika kita anda menggunakan OpenBSD maka anda tinggal mengaktifkanya saja, dan apabila anda menggunakan FreeBSD maka anda harus terlebih dahulu me load modul pf ke dalam kernel dengan perintah berikut

kldload pf

setelah mosul pf telah ter load ke dalam kernel maka kita tinggal membuat rules firewall untuk mencegat aksi brute force, pertama buat tabel baru untuk menangani bruteforce dengan nama “skiddie”

table <skiddie> persist

kemudian buat rules untuk menolak koneksi dari alamat yang terdapat pada tabel skiddie

block quick from <skiddie>

kemudian buat kebijakannya

pass in inet proto tcp from any to $ext_if port ssh flags S/SA keep state (max-src-conn 10, max-src-conn-rate 3/10, overload <skiddie> flush global)

Keterangan :

  • max-src-conn : meupakan koneksi simultan yang di kita izinkan ke host kita
  • max-src-conn-rate : merupakan jumlah koneksi baru yang akan dibuat, disini saya mengisikan 3/10 yang berarti sistem hanya akan mengizinkan maksimal 3 koneksi baru yang boleh dibuat setiap 10 detik, dan jika lebih dari jumlah tersebut maka akan di masukan ke dalam tabel <skiddie> dan script ini juga dapat di implementasikan di port lain semisal http, ftp dan lain sebagainya, berikut adalah gambaran rules lengkap dari file konfigurasi pf
<#       $OpenBSD: pf.conf,v 1.37 2008/05/09 06:04:08 reyk Exp $
#
# See pf.conf(5) for syntax and examples.
# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
# in /etc/sysctl.conf if packets are to be forwarded between interfaces.

ext_if="vr0"
prot="{tcp, udp}"

table <rese> persist

set skip on lo
set block-policy return

scrub in all

block in inet all
pass out inet all

block quick from <rese> to $ext_if

pass in inet proto tcp from any to $ext_if port ssh flags S/SA keep state (max-src-conn 10, max-src-conn-rate 3/10, overload <rese> flush global)
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki