[tor-dev] Joining Tor Project's software infrastructure

2016-09-26 Thread Jesse V
Hey everyone,

Although it hasn't been obvious, I actually have been making some
serious progress on my Onion Name System (OnioNS) project. The paper was
accepted into PoPETS, the design is finally stable, and the software is
looking really promising, although not yet ready for use. I've focused
on improving the maturity of the software and set up the following:

* PGP-signed commits using my torproject identity
* Continuous integration via Travis CI
* Use clang-analyzer and cppcheck static analysis scanners
* Automated enforcement of code styling via clang-format
* Inclusion of a manpage and command-line help menu
* Packaging for Debian (Wheezy+) on my own machine
* Automated building for Ubuntu (14.04+) on Launchpad
* Protection against memory leaks and buffer overflows
* Software is split to minimize installation footprint
* Use of CMake, which should help the port to Windows
* No RPATH hacks
* Support for release and debug builds
* Support for Clang and GCC; all warnings enabled for debug
* No reliance on OpenSSL (CVE-2016-6309, are you serious?!)
* Use of well-maintained libraries for networking and parsing
* Minimal dependencies: Botan, JsonCpp, libcurl, libmicrohttpd
* Non-native dependencies included as git submodules

At this point, I am interested in taking the next step and try to
integrate with the Tor Project infrastructure. I am looking for
information on the following:

1) How do I upload packages to deb.torproject.org?
2) How do I join Gitian to generate reproducible builds?
3) How do I set up an Onion Name System component in Trac so that I can
migrate bug tracking from Github to Trac?
4) How do I set up a repository on gitweb.torproject.org? I'm more
comfortable using Github, but there's no need to centralize git.

I have a LDAP account, which should help with some of these. I wasn't
able to find much useful documentation on these topics, so I would
appreciate some help. Also, if anyone has any experience with RPM
packaging, I would like to figure that out. I haven't had too much luck
with Alien.

As I approach a proper release, my overall goal is to improve the
maturity, trust, usability of the OnioNS software. Please let me know
how I can accomplish the above tasks.

Recent commits:
https://github.com/Jesse-V/OnioNS-common/tree/json-rpc
https://github.com/Jesse-V/OnioNS-server/tree/json-rpc
https://github.com/Jesse-V/OnioNS-client/tree/json-rpc

I've also updated
https://trac.torproject.org/projects/tor/wiki/doc/OnionServiceNamingSystems

-- 
Jesse



signature.asc
Description: OpenPGP digital signature
___
tor-dev mailing list
tor-dev@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev


Re: [tor-dev] Request for comments: patch to mark exit traffic for routing and statistical analysis

2016-09-26 Thread René Mayrhofer

>>> That is exactly what we have patched our local Tor node to do, although
>>> with a different (slightly hacky, so the patch will be an RFC type)
>>> approach by marking real exit traffic with a ToS flag to leave the
>>> decision of what to do with it to the next layer (in our setup Linux
>>> kernel based policy routing on the same host). There may be a much
>>> better approach do achieve this goal. I plan on writing up our setup
>>> (and the rationale behind it) along with the "works for me but is not
>>> ready for upstream inclusion" patch tomorrow.
> I'm not sure if we want to tag Tor traffic with QoS values at Exits.
> Any tagging carries some degree of risk, because it makes traffic look
> more unique. I'm not sure how much of a risk QoS tagging represents.
Fully agreed. That is why - if this turns out to be the best approach -
we would remove the QoS tag again before the packets leave the host (and
only use it for local policy routing decisions).

> I would prefer to add config options OutboundBindAddressOR and
> OutboundBindAddressExit, which would default to OutboundBindAddress
> when not set. (And could be specified twice, once for IPv4, and once for
> IPv6.)
>
> The one concern I have about this is that Tor-over-Tor would stick out more,
> as it would look like Tor coming out the OutboundBindAddressExit IP.
> But we don't encourage Tor-over-Tor anyway.
>
> I'd recommend a patch that modifies this section in connection_connect to
> use OutboundBindAddressOR and OutboundBindAddressExit, preferably
> with the Exit/OR/(all) and IPv4/IPv6 logic refactored into its own function.
>
>   if (!tor_addr_is_loopback(addr)) {
> const tor_addr_t *ext_addr = NULL;
> if (protocol_family == AF_INET &&
> !tor_addr_is_null(>OutboundBindAddressIPv4_))
>   ext_addr = >OutboundBindAddressIPv4_;
> else if (protocol_family == AF_INET6 &&
>  !tor_addr_is_null(>OutboundBindAddressIPv6_))
>   ext_addr = >OutboundBindAddressIPv6_;
> if (ext_addr) {
>   memset(_addr_ss, 0, sizeof(bind_addr_ss));
>   bind_addr_len = tor_addr_to_sockaddr(ext_addr, 0,
>(struct sockaddr *) _addr_ss,
>sizeof(bind_addr_ss));
>   if (bind_addr_len == 0) {
> log_warn(LD_NET,
>  "Error converting OutboundBindAddress %s into sockaddr. "
>  "Ignoring.", fmt_and_decorate_addr(ext_addr));
>   } else {
> bind_addr = (struct sockaddr *)_addr_ss;
>   }
> }
>   }

> Binding to different IP addresses can also be used for filtering and
> traffic redirection. Does having separate bind addresses for OR and Exit
> traffic work for your use case?
Yes, separate IP addresses for OutboundBindAddressOR (which we would set
to our "incoming" interface address) and OutboundBindAddressExit (which
we would set to our "outgoing" interface address) would work for our use
case. One caveat is that we would then no longer have the mixing of
relay and exit traffic (which overlaps e.g. on common ports like 80) on
our outgoing interface/IP address. Without having analyzed it in detail,
our gut feeling was that this mixing (if the QoS flag is removed) may
actually be beneficial against traffic correlation attacks and/or
filtering/scanning the exit traffic by upstream providers (because it
would required DPI as the more costly version to distinguish e.g. Tor
relay from HTTPS traffic).
If this assumption is unwarranted and you don't see additional
information leakage by separating relay and exit traffic by IP (and as
mentioned, we have not thought about this systematically enough yet),
then this patch would solve our issue. I assume it would need additional
changes to add the new OutboundBindAddressOR and OutboundBindAddressExit
options to the config parser?

best regards,
Rene




signature.asc
Description: OpenPGP digital signature
___
tor-dev mailing list
tor-dev@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev