Mumble Server + Mumble Client + Tor

  • Mumble is an open source project intended for gaming, but which can also siphon all voice traffic over TCP exclusively and also run well without much bandwidth.
  • The fact that it’s designed for low-bandwidth situations also makes it ideal for being bounced around in encrypted chunks across the global Tor network.
  • Mumble is set up as a client and a server, with the client being the thing you talk to on your computer and the server offering the connection between computers wanting to talk.
  • Mumble does not provide end to end encryption between the clients, i.e. the server has access to al unencrypted voice data, hence it is necessary to run your own server.

Step 1: Set up a Mumble Server

  • Install Ubuntu or Debian on a VPS.
  • From this point the guide assumes you’ve already created an Ubuntu instance and are logged in.
  • Install the mumble server software:
  $ sudo apt-get update
  $ sudo apt-get install mumble-server
  $ sudo dpkg-reconfigure mumble-server
  • For the prompts that ensue, say yes to autostart and high priority and set up an administrator password of your choice, ensure all passwords are secure.
  • Make sure your firewall has TCP rules to allow inbound traffic on the port Mumble is using (default is 64738).
  • Note for advanced users (consider running the mumble server as a tor hidden service). More information: here and here. Beware of the client issues described under Step 3.

Step 2: Set up Tor

  • Download the Tor browser bundle for your system and follow the setup directions. Before starting tor, take a note of your actual IP address.
  • Search for “what is my ip” to obtain your public IP address. After you’ve made note of that, start up the Tor Browser.
  • From the firefox instance opened when launching the Tor Browser Bundle, Search for “what is my ip” again or click “Test Tor Network Settings” and observe that your IP address is that of a random Tor exit node.

Step 3: Set up Mumble Client

  • Download the Mumble client for your system and install it. The first time you run Mumble it will ask you to go through an audio tuning wizard and you may also wish to set a PTT (push to talk) keyboard binding.
  • In Mumble, go to Configure > Settings > Network and make sure “Advanced“ is checked. Check “Force TCP mode.”

  • Under Proxy, choose “SOCKS5 proxy“ and enter “Localhost” for the Hostname and 9050 for the port (you can also find the port number under Torbutton Preferences).
  • Unfortunately, as of version 1.2.7, Mumble still fails to resolve hostnames over the proxy even with the setting on, and hence will fail to connect to hidden services and may leak a DNS request.
  • Hence, unless your OS is fully torified, you need to invoke Mumble with torsocks (see irssi_plus_tor) or proxychains4. Under Mac OS/X, even that may not function 1).
    • usewithtor mumble
    • proxychains4 mumble
    • check for success by watching the network, e.g. running “tcpdump -n 'port 53'” (linux/unix)
  • Unchecking “Reconnect automatically,“ will prevent Mumble from attempting to reconnect unsecurely if, for any reason, the tor service stops.
  • Also check “Suppress certificate and password storage” and uncheck “Submit anonymous statistics.“ Click OK.

Step 4: Call Your Friends!

  • Now that you have Mumble and Tor running, go to Server > Connect > Add New and add the IP address (respectively, onion name) and port number of the Mumble server you set up in Step.1
  • Use whatever label you want to name the server with and whatever username you want to make up.
  • A Mumble chatroom is basically a group voice chat, much like a conference call but without a phone system.
  • Your chat will be encrypted using TLS with 256-bit AES-SHA for the control channel and 128-bit OCB-AES for voice.

Step 5: Audit

  • Since we have our own Mumble server, we review the logs and see what sort of IP addresses have been recorded.
  • Incoming connections are logged in /var/log/mumble-server/mumble-server.log.
  • If you run “tail -f /var/log/mumble-server/mumble-server.log” as root, you can watch the log as it is generated:
  <W>2013-07-12 02:48:45.672 1 => <122:(-1)> New connection: [tor exit node ip address]:45367
  <W>2013-07-12 02:48:47.042 1 => <122:(-1)> Client version 1.2.3 (X11: 1.2.3-2ubuntu4.1)
  <W>2013-07-12 02:48:47.071 1 => Starting voice thread
  <W>2013-07-12 02:48:47.092 1 => CELT codec switch ffffffff8000000b ffffffff80000010 (prefer ffffffff8000000b) (Opus 0)
  <W>2013-07-12 02:48:47.112 1 => <122:JuggaloPrideIzBack(-1)> Authenticated
  • Generally, clients generate their own certificates, which usually end up looking something like this:

  • The lack of any real-world personal information is great for anonymity, but a lot of commercial Mumble servers will require a certificate issued by a certificate authority, which normally entails forking over personal details.
  • For this and many other reasons, running your own mumble server is encouraged.

Credit/Source: adapted from this post by @huertanix

The Android client Plumble, however, works fine with Orbot