<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr"><div>Hi,</div><div><br></div></div><div dir="ltr">On 15 Aug 2019, at 05:10, Pop Chunhapanya <<a href="mailto:pop@cloudflare.com">pop@cloudflare.com</a>> wrote:<br></div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div>When deploying an 
onion service, I noticed some problem that the ip address of my machine 
that runs tor daemon is exposed to the Tor network which is vulnerable 
to the DDoS attack if someone knows my ip address.</div></div></div></div></blockquote><div><br></div><div>You can reject all inbound connections to your onion service using a simple firewall rule. Onion services are tor clients: they only make outbound connections.</div><br><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>So I'm thinking putting the tor daemon behind some third party TCP proxy that will protect me from this kind of DDoS attack.</div><div><br></div><div>What
 do you think if I want to implement a feature that forward all the 
onion service traffic to the TCP proxy before going to the Tor network?</div><div><br></div><div>The protocol that I'm thinking is TCP Proxy Protocol [1]</div><div><br></div><div>[1] <a href="https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt" target="_blank">https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt</a></div></div></div></div></blockquote><br><div>You could try the existing HTTPSProxy torrc option?</div><div><br></div><div><dt class="hdlist1" style="margin: 0px 0px 10px; padding: 0px; border: 0px; outline: 0px; font-weight: bold; vertical-align: baseline; line-height: 28px;"><span style="background-color: rgba(255, 255, 255, 0);"><strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-style: inherit; vertical-align: baseline;">HTTPSProxy</strong> <span style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-weight: inherit; font-style: italic; vertical-align: baseline;">host</span>[:<span style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-weight: inherit; font-style: italic; vertical-align: baseline;">port</span>]</span></dt><dd style="margin: 0px 0px 18px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; line-height: 20px;"><p style="margin: 0px 0px 18px; padding: 0px; border: 0px; outline: 0px; font-style: inherit; vertical-align: baseline; line-height: 20px;"><span style="background-color: rgba(255, 255, 255, 0);">Tor will make all its OR (SSL) connections through this host:port (or host:443 if port is not specified), via HTTP CONNECT rather than connecting directly to servers. You may want to set <strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-style: inherit; vertical-align: baseline;">FascistFirewall</strong> to restrict the set of ports you might try to connect to, if your HTTPS proxy only allows connecting to certain ports.</span></p><p style="margin: 0px 0px 18px; padding: 0px; border: 0px; outline: 0px; font-style: inherit; vertical-align: baseline; line-height: 20px;"><span style="background-color: rgba(255, 255, 255, 0);"><br></span></p><p style="margin: 0px 0px 18px; padding: 0px; border: 0px; outline: 0px; font-style: inherit; vertical-align: baseline; line-height: 20px;">Tor also allows an intelligent firewall to filter circuits using a field in haproxy protocol format, see <strong style="margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: baseline; background-color: rgba(255, 255, 255, 0);">HiddenServiceExportCircuitID</strong><span style="background-color: rgba(255, 255, 255, 0);"> for details. But you probably won't need this advanced feature.</span></p><p style="margin: 0px 0px 18px; padding: 0px; border: 0px; outline: 0px; font-style: inherit; vertical-align: baseline; line-height: 20px;"><span style="background-color: rgba(255, 255, 255, 0);">T</span></p><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"></div></div></div></blockquote></dd></div></body></html>