Menghadang ssh brute force

Menghadang ssh brute force

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

Ga perlu kuatir atau takut, kasus kasus seperti ini dapat dengan mudah diatasi dengan menggunakan firewall pf (paket filter), jika kita anda menggunakan OpenBSD maka langsung saja menuliskan scriptnya, dan apabila anda menggunakan FreeBSD maka anda harus terlebih dahulu me load modul pf ke dalam kernel dengan perintah berikut

kldload pf

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

table  persist <skiddie>

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 : merupakan koneksi simultan yang di kita izinkan ke host kita
max-src-conn-rate : merupakan jumlah koneksi baru, disini saya mengisikan 3/10 yang berarti sistem hanya akan mengizinkan maksimal 3 koneksi baru yang boleh dibangun 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 misalkan untuk menghadang flooding http, silahkan anda sesuaikan sendiri :-D, 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 <skiddie> persist

set skip on lo
set block-policy return

scrub in all

block in inet all
pass out inet all

block quick from <skiddie> 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 <skiddie> flush global)

Terakhir jalankan firewall pf dengan perintah berikut

pfctl -ef /etc/pf.conf

Untuk melihat ip yang berada di tabel kiddie gunakan perintah berikut

pfctl -t kiddie -T show

untuk lebih lengkapnya silahkan baca manual pf, beresss…, gampang dan mudah kan? 😀

Referensi :
http://www.openbsd.org/faq/pf
http://www.bgnett.no/~peter/pf/en/bruteforce.html
http://masrifqi.staff.ugm.ac.id/doku.php?id=mengatasi_brute_force_ssh

  1. mas itu caramelihat log autentifikasi gmn caranya? sory msh nubie

  2. coba cek di /var/log/messages

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>