[or-cvs] [PATCH] Create a sample bridge configuration torrc.

Roger Dingledine arma at mit.edu
Thu Jun 10 16:04:22 UTC 2010


Three issues below, one of them security-relevant.
(quoting commit in its entirety so others have context)

On Mon, Jun 07, 2010 at 03:03:07PM +0000, nickm at torproject.org wrote:
> Author: Andrew Lewman <andrew at torproject.org>
> Date: Sun, 6 Jun 2010 19:56:16 -0400
> Subject: Create a sample bridge configuration torrc.
> Commit: e95c44bc5af90d982e9d95d63e78b2fde67431ed
> 
> ---
>  src/config/torrc.bridge.in |  171 ++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 171 insertions(+), 0 deletions(-)
>  create mode 100644 src/config/torrc.bridge.in
> 
> diff --git a/src/config/torrc.bridge.in b/src/config/torrc.bridge.in
> new file mode 100644
> index 0000000..6f1f68d
> --- /dev/null
> +++ b/src/config/torrc.bridge.in
> @@ -0,0 +1,171 @@
> +## Configuration file for a typical Tor user
> +## Last updated 16 July 2009 for Tor 0.2.2.1-alpha.
> +## (May or may not work for much older or much newer versions of Tor.)
> +##
> +## Lines that begin with "## " try to explain what's going on. Lines
> +## that begin with just "#" are disabled commands: you can enable them
> +## by removing the "#" symbol.
> +##
> +## See 'man tor', or https://www.torproject.org/tor-manual.html,
> +## for more options you can use in this file.
> +##
> +## Tor will look for this file in various places based on your platform:
> +## https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#torrc
> +
> +
> +## Replace this with "SocksPort 0" if you plan to run Tor only as a
> +## relay, and not make any local application connections yourself.
> +SocksPort 9050 # what port to open for local application connections
> +SocksListenAddress 127.0.0.1 # accept connections only from localhost
> +#SocksListenAddress 192.168.0.1:9100 # listen on this IP:port also
> +
> +## Entry policies to allow/deny SOCKS requests based on IP address.
> +## First entry that matches wins. If no SocksPolicy is set, we accept
> +## all (and only) requests from SocksListenAddress.
> +#SocksPolicy accept 192.168.0.0/16
> +#SocksPolicy reject *
> +
> +## Logs go to stdout at level "notice" unless redirected by something
> +## else, like one of the below lines. You can have as many Log lines as
> +## you want.
> +##
> +## We advise using "notice" in most cases, since anything more verbose
> +## may provide sensitive information to an attacker who obtains the logs.
> +##
> +## Send all messages of level 'notice' or higher to @LOCALSTATEDIR@/log/tor/notices.log
> +#Log notice file @LOCALSTATEDIR@/log/tor/notices.log
> +## Send every possible message to @LOCALSTATEDIR@/log/tor/debug.log
> +#Log debug file @LOCALSTATEDIR@/log/tor/debug.log
> +## Use the system log instead of Tor's logfiles
> +#Log notice syslog
> +## To send all messages to stderr:
> +#Log debug stderr
> +
> +## Uncomment this to start the process in the background... or use
> +## --runasdaemon 1 on the command line. This is ignored on Windows;
> +## see the FAQ entry if you want Tor to run as an NT service.
> +#RunAsDaemon 1
> +
> +## The directory for keeping all the keys/etc. By default, we store
> +## things in $HOME/.tor on Unix, and in Application Data\tor on Windows.
> +#DataDirectory @LOCALSTATEDIR@/lib/tor
> +
> +## The port on which Tor will listen for local connections from Tor
> +## controller applications, as documented in control-spec.txt.
> +ControlPort 9051
> +## If you enable the controlport, be sure to enable one of these
> +## authentication methods, to prevent attackers from accessing it.
> +#HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C
> +#CookieAuthentication 1

1) It looks like we're setting ControlPort without setting any other
control port authentication lines? That is a bad move security-wise:
any java or flash applet that runs on the same computer and can play a
cross-domain trick lets you reconfigure our Tor.

What was the rationale for including this? Did we need it to get one of
our bundles to work right?

> +############### This section is just for location-hidden services ###
> +
> +## Once you have configured a hidden service, you can look at the
> +## contents of the file ".../hidden_service/hostname" for the address
> +## to tell people.
> +##
> +## HiddenServicePort x y:z says to redirect requests on port x to the
> +## address y:z.
> +
> +#HiddenServiceDir @LOCALSTATEDIR@/lib/tor/hidden_service/
> +#HiddenServicePort 80 127.0.0.1:80
> +
> +#HiddenServiceDir @LOCALSTATEDIR@/lib/tor/other_hidden_service/
> +#HiddenServicePort 80 127.0.0.1:80
> +#HiddenServicePort 22 127.0.0.1:22
> +
> +################ This section is just for relays #####################
> +#
> +## See https://www.torproject.org/docs/tor-doc-relay for details.
> +
> +## Required: what port to advertise for incoming Tor connections.
> +ORPort 9001
> +## If you want to listen on a port other than the one advertised
> +## in ORPort (e.g. to advertise 443 but bind to 9090), uncomment the
> +## line below too. You'll need to do ipchains or other port forwarding
> +## yourself to make this work.
> +#ORListenAddress 0.0.0.0:9090

2) Vidalia has a nice trick where your ORPort defaults to 443 on Windows
but 9001 on Unix. That way we have more of our bridges on 443, but we
don't force you to deal with binding a low-numbered port on operating
systems that care.

Speaking of which: if this bridge torrc is designed to be used with
bundles that include Vidalia, what happens when Vidalia saves a config
change? Does it clobber the torrc changes, and you silently stop being
a bridge? Or does Vidalia read in the torrc lines and synchronize its
internal config to what Tor says it wants to be?

Or said another way, should we be shipping our bridge bundles with
*Vidalia* config changes rather than torrc config changes? Among other
features it would let us get the 443/9001 defaults right.

> +## A handle for your relay, so people don't have to refer to it by key.
> +Nickname Unnamed
> +
> +## The IP address or full DNS name for your relay. Leave commented out
> +## and Tor will guess.
> +#Address noname.example.com
> +
> +## Define these to limit how much relayed traffic you will allow. Your
> +## own traffic is still unthrottled. Note that RelayBandwidthRate must
> +## be at least 20 KBytes.
> +#RelayBandwidthRate 100 KBytes  # Throttle traffic to 100KB/s (800Kbps)
> +#RelayBandwidthBurst 200 KBytes # But allow bursts up to 200KB/s (1600Kbps)
> +RelayBandwidthBurst 10485760
> +RelayBandwidthRate 5242880
> +
> +## Use these to restrict the maximum traffic per day, week, or month.
> +## Note that this threshold applies to sent _and_ to received bytes,
> +## not to their sum: Setting "4 GBytes" may allow up to 8 GBytes
> +## total before hibernating.
> +##
> +## Set a maximum of 4 gigabytes each way per period.
> +#AccountingMax 4 GBytes
> +## Each period starts daily at midnight (AccountingMax is per day)
> +#AccountingStart day 00:00
> +## Each period starts on the 3rd of the month at 15:00 (AccountingMax
> +## is per month)
> +#AccountingStart month 3 15:00
> +
> +## Contact info to be published in the directory, so we can contact you
> +## if your relay is misconfigured or something else goes wrong. Google
> +## indexes this, so spammers might also collect it.
> +#ContactInfo Random Person <nobody AT example dot com>
> +## You might also include your PGP or GPG fingerprint if you have one:
> +#ContactInfo 1234D/FFFFFFFF Random Person <nobody AT example dot com>
> +
> +## Uncomment this to mirror directory information for others. Please do
> +## if you have enough bandwidth.
> +DirPort 9030 # what port to advertise for directory connections
> +## If you want to listen on a port other than the one advertised
> +## in DirPort (e.g. to advertise 80 but bind to 9091), uncomment the line
> +## below too. You'll need to do ipchains or other port forwarding yourself
> +## to make this work.
> +#DirListenAddress 0.0.0.0:9091
> +## Uncomment to return an arbitrary blob of html on your DirPort. Now you
> +## can explain what Tor is if anybody wonders why your IP address is
> +## contacting them. See contrib/tor-exit-notice.html in Tor's source
> +## distribution for a sample.
> +#DirPortFrontPage @CONFDIR@/tor-exit-notice.html

3) Bridges don't need to set DirPort, and they probably shouldn't if they
want to remain more subtle. No real harm; but another benefit to leaving
DirPort unset is that people wrestling with their port forwarding won't
have to wrestle quite as much.

> +## Uncomment this if you run more than one Tor relay, and add the identity
> +## key fingerprint of each Tor relay you control, even if they're on
> +## different networks. You declare it here so Tor clients can avoid
> +## using more than one of your relays in a single circuit. See
> +## https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#MultipleServers
> +#MyFamily $keyid,$keyid,...
> +
> +## A comma-separated list of exit policies. They're considered first
> +## to last, and the first match wins. If you want to _replace_
> +## the default exit policy, end this with either a reject *:* or an
> +## accept *:*. Otherwise, you're _augmenting_ (prepending to) the
> +## default exit policy. Leave commented to just use the default, which is
> +## described in the man page or at
> +## https://www.torproject.org/documentation.html
> +##
> +## Look at https://www.torproject.org/faq-abuse.html#TypicalAbuses
> +## for issues you might encounter if you use the default exit policy.
> +##
> +## If certain IPs and ports are blocked externally, e.g. by your firewall,
> +## you should update your exit policy to reflect this -- otherwise Tor
> +## users will be told that those destinations are down.
> +##
> +#ExitPolicy accept *:6660-6667,reject *:* # allow irc ports but no more
> +#ExitPolicy accept *:119 # accept nntp as well as default exit policy
> +#ExitPolicy reject *:* # no exits allowed
> +#
> +## Bridge relays (or "bridges") are Tor relays that aren't listed in the
> +## main directory. Since there is no complete public list of them, even if an
> +## ISP is filtering connections to all the known Tor relays, they probably
> +## won't be able to block all the bridges. Also, websites won't treat you
> +## differently because they won't know you're running Tor. If you can
> +## be a real relay, please do; but if not, be a bridge!
> +BridgeRelay 1
> +ExitPolicy reject *:*
> -- 
> 1.6.5
> 



More information about the tor-dev mailing list