RSA with telegram bot using Python – Telegram Group

RSA Token Telegram Bot with Python and SQLite

Banyak perusahaan yang menggunakan RSA sebagai security OTP untuk mengakses resource mereka seperti koneksi ke VPN, server, SSO, dll. termasuk di perusahaan user saya. Saya dan rekan-rekan satu tim tentu diberikan profil LDAP dan soft token ini untuk mengakses resource user.

Beberapa tahun berlalu, tim security melakukan audit yang hasilnya mengeluarkan beberapa policy baru dan cukup ketat. Salah satunya yaitu:

“Setiap tim hanya diberikan maksimal dua soft token dan hanya boleh di-install pada satu device saja”

Policy ini lumayan berat ya, karena device yang di-install hanya boleh smartphone (dikarenakan sering dibawa, mengingat jika laptop dapat ditinggal di meja dan kemungkinan orang lain menggunakan tokennya) dan maksimal 2orang/tim yang mana dipilih-lah leader dan senior. Jumlah member dalam satu tim bisa sampai 8 orang dan poin ribetnya yang sering kita keluhkan:

  • Senior dan leader tadi harus selalu melayani satu-satu tim membernya dengan generate token dari smartphone mereka.
  • Member tim yang tidak memiliki token, terkadang lambat mengerjakan request dari user karena senior dan leader tidak selalu aktif membuka smartphone.
  • Group Chat telegram penuh sama request token ke senior dan leader tadi yang akhirnya diskusi kerjaan ketimbun (tapi bisa mention pakai link to message-nya dari telegram, telegram dabest messaging app)

Dari sini muncul pikiran “Gimana biar semua orang bisa install token di device masing-masing walaupun device-nya tidak terdaftar buat token tersebut”. Setelah berhari-hari ngubek stackoverflow, saya dapet jawabannya yaitu install program stoken dari cernekee ini yang cuma support untuk linux, walaupun Windows bisa tapi harus compile dulu pake MinGW di environment linux dan saya males.

Di tahun 2019 akhir, muncul-lah ide bikin RSA Token Telegram Bot ini pakai python. Kenapa python? biar cepet aja, soalnya keburu dipake dan library-nya python-telegram-bot mudah dipelajari.

Stoken Overview

Dengan menggunakan stoken dari cernekee ini, saya bisa mengambil stdout dari hasil command stoken tersebut dan passing hasilnya ke python lalu mengirimkan ke telegram bot api. Program stoken ini sama seperti rsa client atau easy token di android. Kelebihannya bisa export soft token .sdtid ke QR, install multiple soft token, dan yang paling saya suka yaitu override device-id yang pada umumnya soft token hanya bisa di-install pada device-id yang telah didaftarkan oleh security, tetapi program stoken ini bisa meng-override.

Contoh penggunaan program stoken dari cernekee

UML Diagram Telegram Bot

Di bot ini saya buat 3 roles ada Admin, Owner, dan User. Karena ini project pertama dan engga pro banget masalah development progam, jadi kira-kira begini use case diagram tahun lalu saya buat.

Use Case Diagram

Pada diagram di atas terdapat Register token w/ email (?) karena rencana saya, Owner harus memasukkan email kerja untuk validasi kalau yang register/import ini merupakan satu perusahaan dengan saya, tetapi pada implementasi saya hilangkan ini karena terlalu rumit. Diagram yang lain bisa dicek full image di sini, terdapat activity diagram juga.

Activity Diagram

Penggunaan Bot

Dari use case diagram di atas, penjelasan masing-masing role dan beberapa screenshot:

  • Role User yang hanya menggunakan bot untuk generate token saja. Sebelum menggunakan token, user diberi pilihan token yang sudah di-register oleh Owner dengan informasi nama tim dari Owner, username LDAP dari Owner, dan nama telegram Owner. Group Chat juga dikategorikan sebagai user.
Menu untuk role User via PM atau Group
Tampilan user ketika ingin register ke token yang available
Tampilan user ketika Owner approved request untuk menggunakan token.
Tampilan generate token menggunakan text, command, dan tombol next 60seconds
Proses conversation mode ketika import soft token ke bot
  • Role Owner yaitu User yang meng-import rsa soft token ke dalam bot.

Owner juga bisa memantau user siapa aja yang memakai token-nya, yang menampilkan user chat atau group chat.

Untuk import soft token ke bot, diperlukan beberapa informasi seperti:
– Token (sdtid or url)
– username (username token)
– Token PIN
– Nama tim/dept.

Tampilan listchat yang sudah approved dari sisi owner
Notifikasi owner jika ada user register menggunakan tokennya
  • Lalu yang terakhir role Admin yaitu saya sendiri atau yang mengoperasikan botnya di server. Sebenernya role admin belum sepenuhnya di-implementasi di methodnya, jadi masih belum bisa mengoperasikan bot lewat command telegram untuk management seperti delete token, unregister owner/user, dll.

Saya juga publish dokumentasi tutorial dan changelog untuk bot ini melalui telegraph (media post anonymous dari telegram, mirip medium). Jika terdapat update feature, bot ini juga akan blasting message ke semua user dan owner jika akan ada implementasi pembaruan dan butuh downtime

Kurang lebih seperti itu. Saya rencana mau membuka source code-nya menjadi publik dan bisa saling kontribusi. Leave a message below if you’re intereseted to do a collab and make some changes on bot feature or any kind, i’ll open the source code. Karena ini project pertama dan masih pemula banget di-coding, butuh masukan juga untuk code dan refactoring buat sama-sama belajar ~

Ten articles before and after

PyCryptoBot with Telegram. I received a feature request in the… – Telegram Group

Je vais booster vos abonnés/ventes grâce à une grosse promotion sur Telegram – Telegram Group

Telegram Bot integration with Jenkins – Telegram Group

? How to create a Telegram Crypto Bot in Javascript – Telegram Group

How to Make a Telegram Pokédex Bot Using Python – Telegram Group

Creating a Telegram bot with python – Telegram Group

Get Telegram Group Members with Python and Telethon – Telegram Group

Cricket Score Alert Telegram Bot using EspnCricinfo – Telegram Group

Improved node setup and monitoring for the validator of the Agoric testnet – Telegram Group

Telegram Bot in JAVA| by Naveen Kumar M N – Telegram Group