mirror of
https://github.com/edu4rdshl/tor-router.git
synced 2026-07-17 23:24:48 +00:00
Move to github
This commit is contained in:
parent
f7e4095f26
commit
001a51070f
4 changed files with 130 additions and 59 deletions
56
README.md
56
README.md
|
|
@ -1,11 +1,59 @@
|
|||
# TOR Router
|
||||
|
||||
Tor Router allow you to use TOR as a transparent proxy and send all your trafic under TOR, the only that you need is:
|
||||
Tor Router allow you to use TOR as a transparent proxy and send all your trafic under TOR **INCLUDING DNS REQUESTS**, the only that you need is: a system using systemd (if you want to use the service) and tor.
|
||||
|
||||
# Installing
|
||||
# Script to install on distros using SystemD only
|
||||
|
||||
~$ git clone https://github.com/Edu4rdSHL/tor-router && cd ./tor-router && sudo bash install.sh
|
||||
If you are using BlackArch Linux (https://blackarch.org) you can install the script from the repos using the following command: `# pacman -S tor-router`
|
||||
|
||||
To install from source:
|
||||
|
||||
```
|
||||
~$ git clone https://gitlab.com/edu4rdshl/tor-router.git && cd ./tor-router && sudo bash install.sh
|
||||
```
|
||||
|
||||
# Usage
|
||||
|
||||
In distros using systemd, you should consideer using the install.sh script, anyways the process to install/configure tor-router is described here.
|
||||
|
||||
**It script require root privileges**
|
||||
|
||||
1. Open a terminal and clone the script using the following command:
|
||||
```
|
||||
~$ git clone https://gitlab.com/edu4rdshl/tor-router.git && cd tor-router/files
|
||||
```
|
||||
2. Put the following lines at the end of /etc/tor/torrc
|
||||
```
|
||||
# Seting up TOR transparent proxy for tor-router
|
||||
VirtualAddrNetwork 10.192.0.0/10
|
||||
AutomapHostsOnResolve 1
|
||||
TransPort 9040
|
||||
DNSPort 5353
|
||||
```
|
||||
3. Restart the tor service
|
||||
4. Execute the tor-router script as root
|
||||
```
|
||||
# sudo ./tor-router
|
||||
```
|
||||
5. Now all your traffic is under TOR, you can check that in the following pages: https://check.torproject.org and for DNS tests: https://dnsleaktest.com
|
||||
6. In order to automate the process of the script, you should add it to the SYSTEM autostart scripts according that the init that you are using, for systemd we have a .service file in the *files* folder.
|
||||
|
||||
# Uninstalling/Stoping
|
||||
|
||||
Move your /etc/tor/torrc.backup file to /etc/tor/torrc, disable the tor-router.service using systemctl, remove /usr/bin/tor-router and /etc/systemd/system/tor-router.service and restart your computer.
|
||||
Delete the tor-router configuration lines in /etc/tor/torrc, disable the tor-router.service using systemctl (if you used the install.sh script), remove /usr/bin/tor-router, /etc/systemd/system/tor-router.service and restart your computer.
|
||||
|
||||
# Proof of concept
|
||||
|
||||
After of run the script, follow the next steps to ensure that all is working as expected:
|
||||
|
||||
- **Ip hidden and TOR network configured**: Visit https://check.torproject.org, you should see a message like it:
|
||||
|
||||

|
||||
|
||||
- **Checking DNS Leaks**: Visit https://dnsleaktest.com and make a extended test to see what are your DNS. You shloud get some like it:
|
||||
|
||||

|
||||
|
||||
# Distros using the script
|
||||
|
||||
BlackArch Linux: https://github.com/BlackArch/blackarch/blob/master/packages/tor-router
|
||||
|
|
@ -2,21 +2,42 @@
|
|||
# Executable file to create rules for transparent proxy
|
||||
# Destinations you do not want routed through Tor
|
||||
NON_TOR="192.168.1.0/24 192.168.0.0/24"
|
||||
# the UID Tor runs as, change this accordingly for your OS
|
||||
TOR_UID="43"
|
||||
# the UID Tor runs as, actually only support for Debian and ArchLinux as been added.
|
||||
if command -v pacman > /dev/null; then
|
||||
TOR_UID=$(id -u tor)
|
||||
elif command -v apt > /dev/null; then
|
||||
TOR_UID=$(id -u debian-tor)
|
||||
else
|
||||
echo "Unknown distro, please create report the issue to https://gitlab.com/edu4rdshl/tor-router/issues"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Tor's TransPort
|
||||
TRANS_PORT="9040"
|
||||
|
||||
if ! command -v tor > /dev/null; then
|
||||
echo "You need to install the tor package."
|
||||
exit
|
||||
elif ! systemctl is-active tor.service > /dev/null; then
|
||||
echo "The tor service is not active, please start the tor service before running the script."
|
||||
exit
|
||||
else
|
||||
iptables -F
|
||||
iptables -t nat -F
|
||||
iptables -t nat -A OUTPUT -m owner --uid-owner $TOR_UID -j RETURN
|
||||
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 5353
|
||||
|
||||
for NET in $NON_TOR 127.0.0.0/9 127.128.0.0/10; do
|
||||
iptables -t nat -A OUTPUT -d $NET -j RETURN
|
||||
done
|
||||
|
||||
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $TRANS_PORT
|
||||
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
||||
|
||||
for NET in $NON_TOR 127.0.0.0/8; do
|
||||
iptables -A OUTPUT -d $NET -j ACCEPT
|
||||
done
|
||||
|
||||
iptables -A OUTPUT -m owner --uid-owner $TOR_UID -j ACCEPT
|
||||
iptables -A OUTPUT -j REJECT
|
||||
iptables -A OUTPUT -j ACCEPT
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
[Unit]
|
||||
Description=Start rules for transparent tor proxy
|
||||
After=network-online.target
|
||||
After=network-online.target tor.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/tor-router
|
||||
RemainAfterExit=yes
|
||||
ExecStop=/usr/bin/iptables -F OUTPUT
|
||||
TimeoutStopSec=180
|
||||
KillMode=process
|
||||
KillSignal=SIGINT
|
||||
|
|
|
|||
22
install.sh
22
install.sh
|
|
@ -1,15 +1,12 @@
|
|||
#!/usr/bin/bash
|
||||
#!/bin/sh
|
||||
# Script that automate the procces for setting up TOR as a tranparent proxy
|
||||
# Autor: Edu4rdSHL @edu4rdshl
|
||||
|
||||
#Defining variables
|
||||
istor="/usr/bin/tor"
|
||||
torconfig="/etc/tor/torrc"
|
||||
torconfigbackup="/etc/tor/torrc.backup"
|
||||
issystemd="/usr/bin/systemctl"
|
||||
executablerules="./files/tor-router"
|
||||
servicefile="./files/tor-router.service"
|
||||
iscurl="/usr/bin/curl"
|
||||
executablerules="$PWD/files/tor-router"
|
||||
servicefile="$PWD/files/tor-router.service"
|
||||
|
||||
#Check if the current user have root privileges
|
||||
if [ "$UID" -ne "0" ] ; then
|
||||
|
|
@ -18,13 +15,15 @@ if [ "$UID" -ne "0" ] ; then
|
|||
fi
|
||||
|
||||
echo -e "Checking if TOR and Systemd are installed..."
|
||||
if [ -f "$istor" ] && [ -f "$torconfig" ] && [ -f "$issystemd" ] ; then
|
||||
if command -v tor >/dev/null && command -v systemctl > /dev/null ; then
|
||||
if grep -iq "# Seting up TOR transparent proxy for tor-router" "$torconfig" ; then
|
||||
echo -e "\ntor-router is already configured in $torconfig"
|
||||
else
|
||||
echo -e "\nAll fundamentals tools are installed, proceding..."
|
||||
echo -e "\nPLEASE, RUN IT SCRIPT ONLY A TIME, IF YOU RUN IT TWO OR MORE TIMES WILL CAUSE ISSUES WITH YOUR $torconfig FILE!"
|
||||
echo -e "\nMaking a backup of your torrc file, if you have problems with the new configuration, delete $torconfig and move $torconfigbackup to $torconfig"
|
||||
cp "$torconfig" "$torconfigbackup"
|
||||
echo -e "\nConfiguring the torrc file to use TOR as a transparent proxy..."
|
||||
echo -e "\n# Seting up TOR for transparent proxy\nVirtualAddrNetwork 10.192.0.0/10\nAutomapHostsOnResolve 1\nTransPort 9040\nDNSPort 5353" >> "$torconfig"
|
||||
echo -e "\n# Seting up TOR transparent proxy for tor-router\nVirtualAddrNetwork 10.192.0.0/10\nAutomapHostsOnResolve 1\nTransPort 9040\nDNSPort 5353" >> "$torconfig"
|
||||
echo -e "\nCreating, enabling and starting the service file tor transparent proxy..."
|
||||
cp "$executablerules" "/usr/bin/"
|
||||
chmod +x "/usr/bin/tor-router"
|
||||
|
|
@ -34,7 +33,7 @@ if [ -f "$istor" ] && [ -f "$torconfig" ] && [ -f "$issystemd" ] ; then
|
|||
systemctl enable tor && systemctl restart tor
|
||||
if [ "$?" == 0 ] ; then
|
||||
echo -e "Checking if all are working..."
|
||||
if [ -f "$iscurl" ] ; then
|
||||
if command -v curl >/dev/null ; then
|
||||
curl https://check.torproject.org/ | grep "Congratulations."
|
||||
if [ "$?" == 0 ] ; then
|
||||
echo -e "\nAll is OK, from now on all your network traffic is under the TOR Network, look for your IP addres in your browser."
|
||||
|
|
@ -44,7 +43,8 @@ if [ -f "$istor" ] && [ -f "$torconfig" ] && [ -f "$issystemd" ] ; then
|
|||
echo -e "\nYou haven't curl installed, try opening https://check.torproject.org/ in your browser and look for 'Congratulations.'"
|
||||
fi
|
||||
else
|
||||
echo -e "\nAn error as ocurrer, please open a issue in https://github.com/Edu4rdSHL/tor-router/issues including log info and your Linux distribution."
|
||||
echo -e "\nAn error as ocurrer, please open a issue in https://gitlab.com/Edu4rdSHL/tor-router/issues including log info and your Linux distribution."
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo -e "Systemd or TOR are not installed, the script dont work."
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue