3 min read

Tutorial membuat .onion site, atau Tor Hidden Service

Selain dipergunakan untuk melakukan browsing secara anonym, Tor dapat digunakan untuk menjalankan sebuah website dengan ekstensi .onion (yang hanya dapat diakses melalui jaringan Tor), ataupun untuk menjalankan layanan tersembunyi.
Website Onion, kebanyakan dipergunakan pada deepweb, untuk situs jual beli obat-obatan, senjata, tempat pembayaran korban ransmware, dan banyak hal ilegal lainnya. Kebanyakan, berarti tidak semuanya ya 🙂
Kali ini, saya akan membagikan sebuah tutorial untuk menginstall Tor, dan membuat sebuah website dengan ekstensi .onion pada sebuah VPS yang memakai OS Debian 8 64bit.
 
Instalasi Tor

# apt-get update && apt-get upgrade
# apt-get install tor -y

Lakukan konfigurasi Tor pada file /etc/tor/torrc, dengan contoh berikut :

SocksPolicy reject *
Log notice file /var/log/tor/notices.log
Log debug file /var/log/tor/debug.log
Log notice syslog
Log debug stderr
RunAsDaemon 1
DataDirectory /var/lib/tor
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
Nickname MyOnion
ExitPolicy reject *:* # no exits allowed


Restart Tor, jika tidak ada masalah, maka statusnya akan seperti berikut :

# service tor restart
# service tor status
● tor.service - LSB: Starts The Onion Router daemon processes
   Loaded: loaded (/etc/init.d/tor)
   Active: active (running) since Sun 2099-08-32 07:20:12 CEST; 195h 15min ago
  Process: 11278 ExecStop=/etc/init.d/tor stop (code=exited, status=0/SUCCESS)
  Process: 11312 ExecStart=/etc/init.d/tor start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/tor.service
           └─11323 /usr/bin/tor --defaults-torrc /usr/share/tor/tor-service-defaults-torrc --hush
Tor[11323]: Parsing GEOIP IPv4 file /usr/share/tor/geoip.
Tor[11323]: Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
Tor[11323]: Bootstrapped 0%: Starting
Tor[11323]: Bootstrapped 5%: Connecting to directory server
Tor[11323]: We now have enough directory information to build circuits.
Tor[11323]: Bootstrapped 80%: Connecting to the Tor network
Tor[11323]: Bootstrapped 85%: Finishing handshake with first hop
Tor[11323]: Bootstrapped 90%: Establishing a Tor circuit
Tor[11323]: Tor has successfully opened a circuit. Looks like client functionality is working.
Tor[11323]: Bootstrapped 100%: Done

 
Penjelasan konfigurasi file torrc
Lokasi file hostname dan private key untuk domain .onion berada pada /var/lib/tor/hidden_service/
File hostname berisi nama domain .onion yang kita miliki
File private_key berisi key untuk verifikasi kepemilikan domain
Misalnya isi file hostname adalah 5p63cucftleygpqu.onion, maka itu adalah domain .onion yang dapat diakses melalui jaringan Tor.
Jika ingin memindahkan service ini ke server yang lain, kita hanya perlu mambackup kedua file tadi, kemudian memindahkan ke server yang baru, yang telah diinstal Tor.
Layanan hidden service diatur pada baris HiddenServicePort 80 127.0.0.1:80. Ini berarti semua request pada domain .onion di port 80 akan diforward ke ip 127.0.0.1 pada port 80.
Kita bisa juga menggantinya sesuai dengan keinginan, misalkan sebuah blog yang memakai NodeJS yang bekerja pada port 2368, maka kodenya HiddenServicePort 80 127.0.0.1:2368
Untuk menambahkan lebih dari satu hidden service, maka tinggal menambahkan baris HiddenServiceDir dan HiddenServicePort sesuai dengan keperluan

...
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
HiddenServiceDir /var/lib/tor/hidden_service_1/
HiddenServicePort 80 127.0.0.1:80
HiddenServiceDir /var/lib/tor/hidden_service_2/
HiddenServicePort 80 127.0.0.1:80
...

 
Contoh konfigurasi Nginx untuk domain .onion

server {
	listen 80;
	server_name 5p63cucftleygpqu.onion;
	rewrite ^/(.*) http://www.5p63cucftleygpqu.onion/$1 permanent;
}
server {
	listen 80;
	server_name www.5p63cucftleygpqu.onion;
	index index.htm index.html index.php;
	root /home/hidden_service/5p63cucftleygpqu.onion;
	try_files $uri $uri/ /index.php;
	client_max_body_size 100000M;
	location ~ \.php$ {
		try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/dev/shm/php.socket;
        fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Setelah selesai membuat konfigurasi untuk Nginx, restart Nginx dan Php-fpm serta Tor untuk memastikan semua berjalan dengan benar.
Sekarang, coba buka domain .onion yang tadi sudah kita buat. Semoga berhasil, dan selamat bereksperimen 🙂
 
Update 17 Agustus 2016

  • Kita dapat mempergunakan sebuah Raspberry Pi, yang menjalankan sebuah webserver (Nginx atau NodeJS atau Lighttpd atau lainnya), yang secara default bekerja pada port 80, kemudian menseting Tor hidden service agar melayani port 80.
    Hasilnya, kita memiliki website .onion yang dijalankan sendiri oleh kita, memakai sebuah Raspberry Pi + Telkom Speedy atau IndyHome, jadi tidak perlu menyewa server.