Internetzugriff bei VPN-Ausfall sperren

Status
Für weitere Antworten geschlossen.

horstepipe

Benutzer
Mitglied seit
22. Sep 2012
Beiträge
67
Punkte für Reaktionen
0
Punkte
0
Hey
in meiner DS ist ein VPN-Profil für nvpn.net eingerichtet, funktioniert inzwischen auch alles wie es soll.
Ich bräuchte nun nur noch ein wenig Hilfestellung, was ich in die Firewall der DS eintragen muss, damit diese keinen Internetzugriff bei einem Ausfall der VPN bekommt. Macht es überhaupt Sinn das in der DS-internen Firewall zu setzen, oder sollte man das lieber im Router machen?

Vom VPN-Anbieter gibt es auch ein bash-Script, was genau dafür gedacht ist. Das Script passt die IPTables an, leider klappt es nicht auf der DS. Habe auch schon versucht herauszufinden wo es hapert, aber wenn ich eine Fehlermeldung eliminiere, taucht eine neue auf. Das ganze gipfelte dann darin, dass das WebIF der DS nicht mehr erreichbar war und ich sie per Knopfdruck neustarten musste.
Hier mal das Script, falls jemand dafür ein Auge hat:
Rich (BBCode):
#!/bin/bash

# IPtables firewall script for a local pc - dropping all traffic if not going trough www.nVpn.net
# allows traffic inside local area network
# special rules for UPnP and Multicast discovery
# the variable "your_hostname_or_ip" is by default outcomnmented, but if you want to strictly disallow every traffic except to/from your hostname/IP then you can do so 
# and the script will automatically adjust the IPtables rules accordingly


firewall="sudo `which iptables`"

local_ip_range="192.168.0.0/24"
local_interface="eth0"               #enter your local interface (usually eth0 or eth1 and so on - you can find it using "ifconfig")

virtual_ip_range="10.0.0.0/8"
virtual_interface="tun0"             #virtual interface where the VPN goes through (find out with "ifconfig")
 
vpn_connect_protocol="udp"           #protocol shown in your "Username.ovpn" file (options are udp or tcp)
vpn_connect_port="1194"              #connect_port is the port shown in your "Username.ovpn" file (1194 or 443 and so on..)



#---------------------------------------------------------------
# incase you want to restrict your firewall to ONLY allow access to your VPN IP/your hostname
# you will have to outcomment below and provide your hostname "uXXXXX.nvpn.so" or alternatively your VPN IP!
# the "your_hostname_or_ip" variable is an array, meaning you can as well add more than one hostname/IP so for example your_hostname_or_ip=("uXXXXXX.nvpn.so 188.15.21.201")
#---------------------------------------------------------------

#your_hostname_or_ip=("uXXXXXX.nvpn.so")



#---------------------------------------------------------------
# Remove old rules and tables
#---------------------------------------------------------------
echo "Deleting all old iptables rules..."
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT


echo "Setting up the new rules..."

#---------------------------------------------------------------
# Allow all local connections via loopback
#---------------------------------------------------------------
$firewall -A INPUT -i lo -j ACCEPT
$firewall -A OUTPUT -o lo -j ACCEPT

#---------------------------------------------------------------
# Allow Multicast for local network
#---------------------------------------------------------------
$firewall -A INPUT -p igmp -s $local_ip_range -d 224.0.0.0/4 -i $local_interface -j ACCEPT
$firewall -A OUTPUT -p igmp -s $local_ip_range -d 224.0.0.0/4 -o $local_interface -j ACCEPT 

#---------------------------------------------------------------
# UPnP uses IGMP multicast to find media servers
# Accept IGMP broadcast packets.# Send SSDP Packets
#---------------------------------------------------------------
$firewall -A INPUT -p igmp -s $local_ip_range -d 239.0.0.0/8 -i $local_interface -j ACCEPT
$firewall -A OUTPUT -p udp -s $local_ip_range -d 239.255.255.250 --dport 1900 -o $local_interface -j ACCEPT

#---------------------------------------------------------------
# Allow all bidirectional traffic from your firewall to the local area network
#---------------------------------------------------------------
$firewall -A INPUT  -j ACCEPT -s $local_ip_range -i $local_interface
$firewall -A OUTPUT -j ACCEPT -d $local_ip_range -o $local_interface

#---------------------------------------------------------------
# Allow all bidirectional traffic from your firewall to the
# virtual private network
#---------------------------------------------------------------
$firewall -A INPUT -i $virtual_interface -j ACCEPT
$firewall -A OUTPUT -o $virtual_interface -j ACCEPT

#---------------------------------------------------------------
# Optional - Connection restriction to your IP/hostname (uXXXXXX.nvpn.so)
#---------------------------------------------------------------
if [[ ! -z $your_hostname_or_ip ]]; then
  hostname_or_ip_count=${#your_hostname_or_ip[@]}
  for (( c = 0; c < $hostname_or_ip_count; c++ ))
  do
    $firewall -A INPUT -i $local_interface -p $vpn_connect_protocol -m $vpn_connect_protocol -s ${your_hostname_or_ip[c]} --sport $vpn_connect_port -j ACCEPT
    $firewall -A OUTPUT -o $local_interface -p $vpn_connect_protocol -m $vpn_connect_protocol -d ${your_hostname_or_ip[c]} --dport $vpn_connect_port -j ACCEPT
  done
  else
    $firewall -A INPUT -i $local_interface -p $vpn_connect_protocol -m $vpn_connect_protocol --sport $vpn_connect_port -j ACCEPT
    $firewall -A OUTPUT -o $local_interface -p $vpn_connect_protocol -m $vpn_connect_protocol --dport $vpn_connect_port -j ACCEPT
fi

#---------------------------------------------------------------
# Default Policy - Drop everything
#---------------------------------------------------------------
$firewall -P INPUT DROP
$firewall -P FORWARD DROP
$firewall -P OUTPUT DROP

#---------------------------------------------------------------
# Log all dropped packages, debug only.
# View in /var/log/syslog or /var/log/messages
#---------------------------------------------------------------
sudo iptables -N logging
sudo iptables -A INPUT -j logging
sudo iptables -A OUTPUT -j logging
sudo iptables -A logging -m limit --limit 2/min -j LOG --log-prefix "IPTables general: " --log-level 7
sudo iptables -A logging -j DROP

echo 'nVpn.net - Rules successfully applied, we start "watch" to verify IPtables in realtime (you can cancel it as usual CTRL + c)'
sleep 3
watch -n 0 "sudo iptables -nvL"
 

netguru

Benutzer
Mitglied seit
03. Jan 2015
Beiträge
128
Punkte für Reaktionen
0
Punkte
16

horstepipe

Benutzer
Mitglied seit
22. Sep 2012
Beiträge
67
Punkte für Reaktionen
0
Punkte
0
des Rätsels Lösung war schlicht, dass man nicht die ovpnclient.conf sondern die client_oxxxxxxxxx Datei anpassen muss. Habe dort die Werte eingetragen/angepasst, die er in der messages-Datei bemeckert hat.

Das mit den IPTables habe ich inzwischen aufgegeben, habe jetzt einfach die relevanten Ports in der Router-Firewall ausgesperrt, sodass zu diesen bei nichtbestehender VPN-Verbindung keine Verbindung von der DS hergestellt werden kann.

lG
 

netguru

Benutzer
Mitglied seit
03. Jan 2015
Beiträge
128
Punkte für Reaktionen
0
Punkte
16
das ist doch nur ein Eintrag?
iptables -I FORWARD ! -o tun0 -s 192.168.178.0/24 -j DROP
für Netzwerk 192.168.178.xxx ...

kannst Du mir deine aktuelle (auskommentierte) Datei mal hier posten?
Ist nicht direkt für mich ...
 

horstepipe

Benutzer
Mitglied seit
22. Sep 2012
Beiträge
67
Punkte für Reaktionen
0
Punkte
0
also so sieht meine client_oxxxxxxxxxx aus:

Rich (BBCode):
dev tun
tls-client
cipher AES-256-CBC
tun-mtu 1500
comp-lzo
nobind
persist-key
persist-tun
fragment 1400
mssfix
auth SHA512
remote uxxxxxx.nvpn.so 1194
pull
proto udp
up /usr/syno/etc.defaults/synovpnclient/scripts/ovpn-up
route-up /usr/syno/etc.defaults/synovpnclient/scripts/route-up
redirect-gateway
script-security 2
float
reneg-sec 0
explicit-exit-notify
plugin /lib/openvpn/openvpn-down-root.so /usr/syno/etc.defaults/synovpnclient/scripts/ip-down
auth-user-pass /tmp/ovpn_client_up
ca ca_oxxxxxxxxxx.crt

Ich weiß nicht inwieweit dir das jetzt weiterhilft, ist halt für nvpn.
bei mir hat es lediglich daran gehapert, dass ich die falsche Datei bearbeitet hatte.

lG
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hallo,

das ist doch nur ein Eintrag?
iptables -I FORWARD ! -o tun0 -s 192.168.178.0/24 -j DROP
für Netzwerk 192.168.178.xxx ...

also ich würde mal stark bezweifeln das Du damit die DS hinderst ins Internet zu kommen wenn keine VPN-Verbindung steht. Es soll ja auch noch mehr Chains geben. Da wirst Du wohl noch ein paar Zeilen mehr brauchen :)

Gruß Frank
 

netguru

Benutzer
Mitglied seit
03. Jan 2015
Beiträge
128
Punkte für Reaktionen
0
Punkte
16
@horstepipe
Da sind wir auch, allerdings bekommen wir mit dem DS215j kaum speed (10Mbit), was doch schon recht wenig ist, bei zu erwartenden 25-30 Mbit.

@fpo4711
Ich glaube Dir gerne, du hast da auch sicher mehr Ahnung wie ich.
Das vorgehen habe ich aus einem anderen Forum und nutze diese Einschränkung auf meinem DD-WRT Router, dort funktioniert dies einwandfrei, ohne VPN kein Traffic, trenne ich VPN, geht sofort der Speed auf 0.

Wie kann das sein?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat