KeyBox - Web Based Management Console

KeyBox - Web Based Management Console
Well, kantor gw butuh solusi terkait 2 Factor Authentication yang sederhana, murah dan bisa diaplikasikan dengan cepat. Waktu kami terbatas, dan setup Radius Server yang dikombinasikan dengan Google Authenticator adalah pilihan yang dilematis, mengingat environment kami berubah dengan cepat dan deadline tinggal beberapa hari saja. Kami butuh audit trail, tidak perlu yang ribet, yang sederhana tapi visible, jadi masing masing dari kami tahu apa yang kami lakukan. Kami juga jengah mengetik password berkali-kali untuk keluar-masuk (multiple) server dengan session timeout yang diizinkan maksimum 15 menit.

Jadi, mulailah kami mencari solusi terkait tersebut. Beberapa kriteria yang kami inginkan adalah sebagai berikut:

  1. Murah, sederhana dan bisa diaplikasikan dengan cepat
  2. Mendukung 2FA dengan Google Authenticator
  3. User account management yang terpusat
  4. Mendukung simple & visible audit
  5. Mudah dalam pengoperasion
  6. Mudah dalam pemeliharaan
  7. Aman

Awalnya kami memilih untuk setup FreeRadius Server yang diintegrasikan dengan dengan VPN dan Google Authenticator.

Ya ya, ini pasti ribet. Baiklah, kalau memang harus dilakukan, ayo lakukan. Mengeluh bukan pilihan kami. Bukan karena kami keren, tapi kami tau mengeluh hanya menambah derita, sengsara dan malam-malam begadang dengan abang-abang. T,T

Awalnya begitu ya, tapi ketika browsing cari SSH Connection Manager buat si unyil yang pake ElementaryOS, eh, ketemu KeyBox.

KeyBox adalah Management Console berbasis web yang sudah mendukung 2FA dengan Google Authenticator, dan asiknya udah ada tools untuk audit juga. Bonusnya ada fitur menarik seperti:
  1. Menginstruksikan command pada multiple terminal
  2. Menyimpan bash skrip untuk dieksekusi pada 1 atau lebih terminal
  3. Key Management
  4. Integrasi dengan AWS EC2 dengan EC2Box
Fitur Key Management menurut gw pribadi agak susah diterapkan, soalnya kalo user bisa issue key sendiri nanti fitur 2FA dan Audit tidak akan terpakai, lah wong usernya konek ke host langsung pake SSH Client dan SSH Private Key kok, nggak lewat web console gitu bro.

Dalam tulisan ini gw anjurin reject/drop ajah semua port SSH ke semua server, kecuali source-nya dari si KeyBox ini. Bikin Source Policy lah di ACL firewall, supaya fungsi Audit dan 2FA dari KeyBox bisa jalan.

Oke, oke, panjang juga intermezo-nya ya. Kita lanjut ke hal teknis ajah.

Sebelum lebih jauh, pastikan kita sudah menginstall Google Authenticator pada smartphone (Android dan iOS bisa kok) sebagai prasyarat menggunakan 2FA.

Sudah install Google Authenticator? Mari mulai! :)

0. Install JDK

Ubuntu:
$ sudo apt-get install openjdk-7-jdk

RHEL/CentOs/Fedora:
$ sudo yum -y install java-1.7.0-openjdk java-1.7.0-openjdk-devel

1. Download keybox
$ wget https://github.com/bastillion-io/Bastillion/archive/v2.87.01.tar.gz

2. Unarchieve
$ tar zxvf keybox-jetty-v2.87_01.tar.gz

3. Run keybox
$ cd KeyBox-jetty$ ./startKeybox.sh

4.  Masukkan database password yang diinginkan
2016-11-13 07:36:32.395:INFO::main: Logging initialized @1153ms
2016-11-13 07:36:32.574:WARN:oejs.HomeBaseWarning:main: This instance of Jetty is not running from a separate {jetty.base} directory, this is not recommended.  See documentation at http://www.eclipse.org/jetty/documentation/current/startup.html

2016-11-13 07:36:33.101:INFO:oejs.Server:main: jetty-9.3.13.v20161014

2016-11-13 07:36:33.202:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///home/n0c0py/software/KeyBox-jetty/jetty/webapps/] at interval 1

2016-11-13 07:36:37.127:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=3127ms 

Please enter database password: 

Please confirm database password:

6. Buka browser arahkan url ke
https://keybox.server.kamu:8443/


7. Masukkan admin sebagai user dan changeme sebagai password

8. Ganti password default kita.
9. Scan Barcode dengan Google Authenticator yang sudah terinstall di smartphone
10. Setelah klik Got it! kita akan terlempar ke halaman login lagi, masukin ajah user+password+OTP di Google Authenticator.

11. Setelah masuk ke administrative dashboard, pilih menu Manage -> Systems kemudian click tombol Add System, masukan User, dan IP Address. Klik Submit.

System pada KeyBox bisa diartikan sebagai SSH User Account pada host, artinya satu host bisa saja memiliki lebih dari satu System dikarenakan dalam satu host bisa terdapat 2 user atau lebih.

12. Masukkan password host.

13. Jika server berhasil ditambahkan, hasilnya akan seperti ini.
14. Pilih Menu Manage -> Profile -> Click Add Profile

Profile ini nantinya akan menjadi wadah Authorization antara System dan User. User mana bisa mengakses System mana akan didefinisikan di dalam Profile.

15. Selanjutnya kita create user, pilih menu Manage -> Users -> Click Add User

16. Karena User dan System sudah dibuat, maka kita bisa melakukan assign User dan System pada Profile. Pilih menu Manage -> Profiles

17. Klik Assign Users dan pilih User yang telah kita buat, dilanjutkan dengan Assign System dan pilih System yang telah kita buat.

Yap! Sampai disini KeyBox sudah terpasang dan bisa dipakai. Silahkan logout dan coba login dengan user yang telah dibuat, kemudian mulai mengeksplorasi dari menu Secure Shell.

Selanjutnya kita akan melakukan beberapa pengaturan tambahan.

Pada file KeyBox-jetty/jetty/keybox/WEB-INF/classes/KeyBoxConfig.properties ubahlah baris-baris tertentu menjadi sebagai berikut:
enableInternalAudit=true
oneTimePassword=required
keyManagementEnabled=false
hal ini bertujuan untuk mengaktifkan fitur audit, pemaksaan penggunaan OTP dan menonaktifkan fitur key management. Restart KeyBox setelah pengaturan dirubah.

Fiuuh.. Panjang juga postingnya, tapi kalo dipraktekin, relatif sebentar kok ini.

Happy Hacking!

Update! 16 November 2016


Terjadi kontroversi apakah kombinasi Password + Google Authenticator merupakan 2 Factor Authentication atau 2 Step Verification.


Sejatinya "something you have" yang ideal adalah yang memerlukan kontak fisik dan diauthentikasi saat itu juga secara lokal tanpa transmisi data, misalnya saja Smart Card, sementara token based security memerlukan masukan informasi (ya, informasi, artinya: something you know) yang diketik, didapatkan dari token device. Tapi, toh RSA SecureID diakui sebagai 2FA, selama RSA SecureID masih diakui oleh industri IT security sebagai 2FA, maka kita bisa melakukan klaim bahwa Google Authenticator adalah 2FA.

Lantas bagaimana mengaplikasikan 2FA yang ideal pada aplikasi web jika token based security bukan 2FA? Aplikasi web mungkin akan sangat sulit menerapkan 2FA, karena idealnya 2FA memerlukan kontak fisik, dan ketika data hasil kontak fisik dikirimkan melalui protokol HTTP(S), akan terdapat resiko tampering. Nambah resiko mas, bukan nambah aman. Untuk saat ini mempertimbangkan keamanan dan kemudahan, sudah paling ideal dengan token based 2SV, yang di klaim oleh industri IT security sebagai 2FA.

Update! 6 Agustus 2019

Keybox sudah menjadi Bastillion!

Komentar