Akses Remote SSH Melalui TOR Hidden Service

Setelah beberapa kali mengoprek Raspberry PI 3B saya, yang sebelumnya telah sukses akses remote raspi saya via VPN (Softether). Sempat berfikir keras kembali bagaimana caranya mengakses remote raspi dengan biaya lebih murah lagi. Maklum, ternyata harga VPS masih belum pas bagi dompet saya. Pun walaupun sudah mencoba Google Cloud Compute paket minimalis f1-micro, tetap terasa eman untuk mengeluarkan biaya hanya untuk VPN. Maka dari itu, saya mencoba untuk menggunakan TOR sebagai jalur saya untuk mengakses raspberry pi yang ada dirumah. Langsung saja saya tulis sekalius saat saya praktikkan.

Pertama instalasi TOR di raspberry kita
$ sudo apt install tor

Selanjutnya kita buat direktori kosong di /var/lib/tor/<contoh>, jangan lupa untuk menset owner:groupnya debian-tor
$ sudo mkdir /var/lib/tor/servisssh
$ sudo chown debian-tor:debian-tor /var/lib/tor/servisssh

$ sudo chmod 700 /var/lib/tor/servisssh

Cek dengan ls
$ sudo ls -l /var/lib/tor/
total 5680
-rw------- 1 debian-tor debian-tor 20442 Sep 20 12:41 cached-certs
-rw------- 1 debian-tor debian-tor 2067637 Sep 20 12:41 cached-microdesc-consensus
-rw------- 1 debian-tor debian-tor 3713050 Sep 20 12:42 cached-microdescs.new
drwx--S--- 2 debian-tor debian-tor 4096 Sep 20 12:41 keys
-rw------- 1 debian-tor debian-tor 0 Sep 20 12:41 lock
drwx--S--- 2 debian-tor debian-tor 4096 Sep 20 12:54 servisssh
-rw------- 1 debian-tor debian-tor 3692 Sep 20 12:56 state

Konfigurasi $ sudo nano /etc/tor/torrc Cari section tentang “This section is just for location-hidden services” dan tambahkan baris berikut dibawahnya :

HiddenServiceDir /var/lib/tor/servisssh/
HiddenServicePort 22 127.0.0.1:22
HiddenServiceVersion 3


kemudian CTRL+X kemudian Y (untuk keluar dan simpan) dan enter.

Restart servis tor dengan cara:
sudo systemctl restart tor.service

Setelah kita tunggu beberapa saat (tor loading) maka kita bisa cek bahwa tor sudah membuat beberapa file di /var/lib/tor/<service>
$ sudo ls -l /var/lib/tor/servisssh/
total 16
drwx--S--- 2 debian-tor debian-tor 4096 Sep 20 13:29 authorized_clients
-rw------- 1 debian-tor debian-tor 63 Sep 20 13:30 hostname
-rw------- 1 debian-tor debian-tor 64 Sep 20 13:29 hs_ed25519_public_key
-rw------- 1 debian-tor debian-tor 96 Sep 20 13:29 hs_ed25519_secret_key

Kita bisa melihat alamat .onion yang telah digenerate oleh tor seperti dibawah ini
$ sudo cat /var/lib/tor/servisssh/hostname
csembarangtvh6wvrqe6ncdtulisancvx5uamaqblmnkxtktnk3qtext.onion

Kita bisa cek/verifikasi terlebih dahulu apakah service kita sudah bisa diakses dengan .onion, misal:
$ torsocks curl http://csembarangtvh6wvrqe6ncdtulisancvx5uamaqblmnkxtktnk3qtext.onion:22
SSH-2.0-OpenSSH_7.9p1 Raspbian-10
Protocol mismatch.

Kita bisa lihat bahwa service sudah berjalan. (abaikan walaupun protocol mismatch)

Install terlebih dahulu basez bila belum ada dengan cara
$ sudo apt install basez

Selanjutnya kita akan membuat pasangan private/public key sebagai kunci untuk mengakses jalur secara aman. Langkahnya :
$ openssl genpkey -algorithm x25519 -out private-key.pem
$ openssl pkey -in private-key.pem -pubout -outform PEM -out public-key.pem
$ cat private-key.pem | grep -v " PRIVATE KEY" | basez --base64pem --decode | tail --bytes 32 | basez --base32 | tr -d '=' > onionku.auth_private

Command diatas akan menghasilkan file private-key.pem, public-key.pem dan onionku.auth_private (penamaan onionku bebas yang penting .auth_private).

Maka kita bisa mendapatkan string private sebagai “password”, bila mana alamat onion kita adalah csembarangtvh6wvrqe6ncdtulisancvx5uamaqblmnkxtktnk3qtext.onion maka :

$ echo -n "csembarangtvh6wvrqe6ncdtulisancvx5uamaqblmnkxtktnk3qtext:descriptor:x25519:" | cat - onionku.auth_private
csembarangtvh6wvrqe6ncdtulisancvx5uamaqblmnkxtktnk3qtext:descriptor:x25519:SEMBARANGPCN55SJUSBJADI2PTAD5DKM2QKANEA3YW4GLQKKTEXT

Selanjutnya kita mengenerate juga string publik untuk kita share ke device yang akan terkoneksi dengan cara yang mirip sama:
$ cat public-key.pem | grep -v " PUBLIC KEY" | basez --base64pem --decode | tail --bytes 32 | basez --base32 | tr -d '=' > onionmu.auth
$ echo -n "descriptor:x25519:" | cat - onionmu.auth

descriptor:x25519:SEMBARANGOG7JRGABY3BPJADIDMHZBMACAMEVP5I5FCZPGERTEXT

Hingga langkah ini, kita akan mendapatkan 4 file yaitu:

  • private-key.pem (bisa di hapus kalau terpaksa)
  • public-key.pem (bisa dihapus kalau terpaksa)
  • onionku.auth_private (harus diamankan beserta generate string deskriptornya)
  • onionmu.auth (bisa dibagikan ke device lain beserta generate string deskriptornya)

Untuk sementara, keempat file diatas kita simpan untuk digunakan dalam setingan torrc di client nantinya.

Sementara itu, mumpun sudah waktunya pulang, kita langsung aja akses service di client (remote, bukan di server diatas) dengan cara (kebetulan untuk ini kita servicenya ssh) di:
$ sudo apt install torsocks
$ sudo torsocks ssh -p 22 csembarangtvh6wvrqe6ncdtulisancvx5uamaqblmnkxtktnk3qtext.onion

Tada…. kita bisa remote raspberry kita untuk akses ssh.
next chapter kita lakukan pengaturan di torbrowser dengan keempat file diatas.

spacer

Leave a reply