TorGuard VPN Service encrypts your internet access and provides an Anonymous IP so you can browse securely.
Recently, my server start reciving lots of attacks from IPs which are exit nodes of TorGuard VPN. To be honest, I never heard about TorGuard so I had to looks to attackes IPs to be able to identify source network. Looking to reputation of few IP addresses I found that all was low and with lots of negative comments. After experiencing mass-scanns and over 100 attempsts of hack and spams, I decided to find a way to block this network.
I was hoping to find website with IPs of TorGuard VPN exit nodes on company website, and I was not disappointed. All required information I found under url https://torguard.net/network. I decided to use this same approach as I used regards blocking TOR network - create ipset
setname which will contains all IPs published on url.
This time I decided to use Python with Pandas module to extract hostnames column from table published on TorGuard website. Using Python allowed to get me these data easier but unfortunately my router was not able to install Pandas module, so I run script on one of my RPi and transfer generated upset file to router.
This solution will work on any *nix system with installed iptables
and ipset
.
Prerequirements
Script is written in Python3 so obviously you will need it. Additionally, you need 3 mayor modules to be installed: pandas, requests and lxml. Use pip to install this modules:
$ sudo pip install pandas lxml requests
On Linux or router with OpenWrt system, you will need iptables
and ipset
packages to be installed. On OpenWrt you need to run commands:
# opkg update
# opkg install ipset
To clone repository with torguard_deny_list
source code you will need git
installed on system where you will run script or on your workstation from which you can move source files to destination system.
To clone repository run command:
# git clone https://github.com/monsoft/torguard_deny_list.git
** Running script **
To run script go to directory torguard_deny_list
, change mode of torguard.py
file to 0755 and run: ./torguard.py
:
$ cd torguard_deny_list
$ chmod 0755 torguard.py
$ ./torguard.py
TorGuars nodes IP builder by Irek 'Monsoft' Pelech
Generating torguard_ipset.txt ipset list
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
IPs have been written to torguard_ipset.txt file. Please import it to your ipset list.
When script finish its work, you should find file torguard_ipset.txt
with TorGuars VPN exit nodes IPs.
** Implementation **
Add ipset and rule configuration to IPtables firewall by adding below lines to end of /etc/config/firewall
file right bofore config include
line:
config ipset
option name 'torguard'
option match 'src_ip'
option storage 'hash'
option enabled '1'
config rule
option src 'wan'
option ipset 'torguard'
option dest '*'
option target 'DROP'
option name 'DENY-from-TORGUARD-Network'
list proto 'all'
and restart firewall service:
# /etc/init.d/firewall reload
Copy torguard_ipset.txt
file to your router and import IP list:
ipset flush torguard
ipset restore -! < torguard_ipset.txt
Check if import was successful by running command:
# ipset list torguard|wc -l
652
Automation
I suspect that details on TorGuard website are constantly changing so it will be required to run this process at last once a week, so IP list will be up to date. I use cron
to run script on my RPi and transfer file torguard_ipset.txt
to my router, then I run ipset
import commands to update torguard
set.