RSA Token Telegram Bot with Python and SQLite
Generate RSA passcode in telegram and override device-id to be shared for team members
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.
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.
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.
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.
- 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.
- 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