Tendang Multi Login SSH VPS dg OS Debian 7.1 32 bit
Sunday, July 13, 2014
Tendangan Maut untuk User Dropbear SSH yg Multi-Login
Anda jualan SSH ya? Nah sebagai seller tentunya anda pernah atau masih merasa was-was dengan adanya perilaku nakal ( = baca: setia kawan) dari user yg membagi akun yg dibeli dari anda ke orang2 lain, dengan kata lain akan terjadi multiple-login dari 1 akun tsb. Secara teori itu akan menyebabkan anda rugi secara ga langsung… Potensi profit yg seharusnya lebih tapi akhirnya ga maksimal. Jika 1 akun dibagi ke 5 orang maka anda mengalami rugi karena seharusnya profit yg anda dapat 6 x harga sewa menjadi 1 saja. Plus kerugian lain yaitu pemborosan resources (ram, bandwidth) pada VPS yg anda sewa untuk bisnis tunneling.
Dari yg saya tahu… meskipun cuma sok tahu, banyak ssh seller yg hanya sekedar melarang user utk multi-login dan itu wujudnya hanyalah himbauan, sekedar slogan atau authentication banner saja, tanpa ada upaya preventif untuk mencegah user yg nakal seperti ini. Hasilnya? Tentu saja user masih bisa dengan bebas membagi akunnya ke para tetangga. Seller bisa saja mengambil tindakan tegas namun akan banyak menguras energi kalo tiap saat harus memelototi layar putty melihat siapa yg multi-login dan menjalankan kill -9 bertubi2.
Well, sekarang saatnya anda melindungi aset bisnis berjualan SSH anda dengan langkah yg lebih paten, lebih dari sekedar himbauan untuk tidak multi-login tapi juga tindakan yg akan dipatuhi oleh customer anda. Berikut ini adalah contoh yg bisa anda lakukan untuk memperketat user dalam menggunakan tunneling.
Jurus tendangan maut ini saya ujicobakan pada sebuah VPS dg OS Debian 7.1 32 bit, jadi bagi yg pake OS lain misal CentOS harap menyesuaikan sendiri. Script membatasi user ini originally ditulis oleh om mikodemos dan saya edit seperlunya plus sedikit oprekan di server agar berjalan secara auto. OK mari kita mulai oprek server, pertama buatlah file misalnya bernama “tendang” di dalam /usr/bin…
vim /usr/bin/tendang
Selanjutnya copas mantra jahat berikut ini dengan benar kedalam file “tendang” tsb:
#!/bin/bash # Credit: Bang Nofal # Saya edit dikit meskipun saya # ga paham bash programming hehehe PARAM=$1 echo -n > /tmp/pid2 ps ax|grep dropbear > /tmp/pid cat /tmp/pid | grep -i 'dropbear -p' > /tmp/pids cat /var/log/auth.log | grep -i "Password auth succeeded" > /tmp/sks perl -pi -e 's/Password auth succeeded for//g' /tmp/sks perl -pi -e 's/dropbear//g' /tmp/sks cat /tmp/pid | while read line;do set -- $line p=$1 var=`cat /tmp/sks | grep -i $1` set -- $var l=$6 if [ "$6" != '' ] then echo "$p $l" | cat - /tmp/pid2 > /tmp/temp && mv /tmp/temp /tmp/pid2 fi done echo -n > /tmp/user1 cat /tmp/pid2 | while read line;do set -- $line p=$1 u=$2 cat /tmp/user1 | grep -i $u > /dev/null if [ $? = 1 ];then echo $line >> /tmp/user1 else kill $p echo "kill $p user $u" fi done rm -f /tmp/pid rm -f /tmp/pid2 rm -f /tmp/pids rm -f /tmp/sks rm -f /tmp/user1 exit 0
Kalau sudah, agar file tsb bisa dieksekusi menjadi sebuah command, buatlah menjadi executable dg membisikkan mantra:
chmod +x /usr/bin/tendang
Script ini pada dasarnya berfungsi untuk membatasi user agar login HANYA dari 1instance saja. Saat saya ujicoba dg menjalankan 2 Bitvise bersamaan di sebuah PC menggunakan data user yg sama, dan kemudian saya ketik “tendang” di console yg terjadi adalah salah satu koneksi di Bitvise tsb akan disconnect. Nahhhhh…. biar ga harus manual ngetik “tendang” sambil pelototin layar putty 24 jam, saya akan manfaatkan crontab utk mengeksekusi script tsb tiap menit.
vim /etc/crontab
Lalu tambahkan jurus berikut ini:
* * * * * root /usr/bin/tendang
Entry crontab tsb artinya ialah setiap 1 menit root akan menjalankan script tendang! Sip kan? Jangan lupa restart cron setelah menambahkan jurus tendangan maut tsb. Selanjutnya jika ada user yg login lebih dari satu maka dia akan secara otomatis menderita tendangan bertubi2 tiap menit, jika multi-login sebanyak 2x maka keduanya akan disconnect bergantian tiap menit. Bitvise memang memberi opsi untuk auto-reconnect jika terjadi dc… maka saya akan berikan trik lebih kejam agar bisa menendang setiap 5 detik! Bersiaplah! Rasakan pembalasanku…
Sebenernya satuan waktu terkecil yg bisa dijalankan oleh crontab adalah 1 menit artinya anda ga akan bisa menjalankan perintah yg ingin dijalankan kurang dari 1 menit.. but here’s the dirty trick:
* * * * * root /usr/bin/tendang
* * * * * root sleep 10; /usr/bin/tendang
* * * * * root sleep 15; /usr/bin/tendang
tambahkan lagi dst… sampe sleep 55;
Simpen kembali primbon crontab tsb dan restart. Lakukan test dg login di 2 Bitvise dg data user yg sama (lakukan dari 1 pc ga perlu pinjem pc tetangga) dan silahkan berhitung mundur… 5..4..3..2..1 gubrakkkk kedua Bitvise akan bergantian dc terus menerus tiap 5 detik dan baru akan terhindar dari tendangan jika salah satu Bitvise sudah logout/exit. Hahahahaa
Meskipun Bitvise bisa auto-reconnect tapi dc tiap 5 detik adalah hal yg menjengkelkan dan mengesalkan dan user ga akan bisa bener2 menikmati akses tunneling. Dengan “ancaman” seperti ini maka saya yakin user akan menjaga akunnya baik2 agar ga dipakai lebih dari 1 secara bersamaan. Anda kepikiran ide yg lebih galak? Ya! tentu saja anda bisa membuat tendangan tiap detik! Sesuaikan saja sleep-nya menjadi hitungan 1 sampai 59, namun cara ini tidak saya sarankan karena terlalu agresif, sebaiknya sih per 15 detik saja toh dg dc per 15 detik itu sudah hal yg sangat tidak nyaman bagi user tersangka pembagi akun ini.
Oh dari hasil ujicoba meski presentase sangat kecil kadang user yg single-login bisa kena tendang juga meski ga secara kontinyu dan biasanya hanya terjadi sekali saat mulai konek. Saya ga tau penjelasannya secara teknis karena saya juga bukan programmer hehehee. Anyway, cara ini layak anda terapkan di VPS jika anda adalah seorang SSH seller.