[Linux] VPN client door linux iptables firewall

Pagina: 1
Acties:

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Zoals de topic titel zegt. Ik wil via een windows systeem (XP prof) toegang tot een Windows 2003 server op het internet. Dit moet door mijn Linux IPtables NAT router. Dit lukt echter niet. Ik weet dat er iets bijzonders aan de hand is het het VPN protocol, maar wat precies...

Ik heb vanalles geprobeerd.
Zo heb bijvoorbeeld de volgende poorten gemapped naar m'n client:
1723 TCP
1723 UDP
protocol 50
protocol 17
protocol 4x (iets in de 40... welke weet ik ff niet meer)

M'n output policy is ACCEPT en m'n forward is DROP, maar als ik laatstgenoemde op ACCEPT zet helpt het ook niet. Overigens zijn de regels dat alle NEW connecties die worden gemaakt op input en forward van de router worden gedropped.

Kan iemand mij vertellen hoe dit precies moet? Op google is alleen heel oude informatie te vinden over kernels 2.0 en 2.2, waarin vermeld wordt dat er patches nodig zijn voor de verschillende protocollen. Ik had ergens een gevonden welke protocolen allemaal bestonden, maar dat zie ik ook niet meer.

De router draait kernel 2.4.22 onder Debian. Deze heb ik zelf compiled. Ik weet niet of ik misschien bijzondere opties over VPN toen niet heb aangekruist in make menuconfig, maar het lijkt me niet dat de router daardoor niet werkt (?)

Een andere NOS-er wil ook binnenkort een VPN opzetten door een Debian router, maar weet ook nog geen raad.

Ik twijfelde met dit topic tussen NOS, NT en PNS, maar koos toch voor NOS omdat die mensen in NT mogelijk niet weten hoe met Linux te werken. Ik heb vroeger wel VPN's kunnen gebruiken icm winroute+windows.

Ik las ook nog wat dingen over 1 of meerdere vpn's op een site. Er staat iets dat je ook kan portmappen oid waardoor er maar 1 vpn mogelijk is (duh) maar dat er ook NAT methodes zijn waardoor er meerdere VPN's kunnen worden gemaakt gelijktijdig. Dat is natuurlijk wel fijn.

Overigens heb ik hier wat info over de VPN staan van de eigenaar (niet ik), ik quote hem:
Het is gewoon een standaard windows 2003 VPN Client,
Radius standaard PPP via het PPTP princiepe

beveiligingen:
Encryptie

Basic: MPPE 40 bit
strong: MPPE 56 Bit
Strongest: MPPE 129 bit

Autenthication:
Microsoft Encrypted Authentication Version 2 (MS-CHAP v2)

EAP Types:
MD5 Challenge
Protected EAP (PEAP)

Gedaan volgens [rml][ 2003]Howto: Setup VPN server[/rml]
(ook al zo'n GoTter :P )
Thx alvast :)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 21:48
En wat doet ie niet dan?
Heb je bijvoorbeeld al met ethereal/tcpdump gekeken wat er aan verkeer langs komt? Zet tevens je firewall regels eens online, want uit je verhaal wordt ik niet echt wijs..

Verwijderd

Je moet deze Kernel patch voor pptp hebben:

http://www.netfilter.org/...-extra-pptp-conntrack-nat

http://www.netfilter.org/...-o-matic-20031219.tar.bz2

Downloaden uitpakken en ./runme extra uitvoeren in de directory.

Trouwens je zegt dat je allemaal oude dingen over ipchains vond. Die heb ik voor pptp echter nooit gevonden. Heb je wat links voor me met patches?

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Ik kan die links wel even voor je opzoeken hoor, kun je zelf ook met google op iets als "vpn client linux oid"

Ik ga die patches eens proberen, dan kan die het dus doorlaten? Ik heb m'n post bovenaan geedit, m'n probleem is dat de remote gateway niet reageert... op andere pc's doet de verbinding het wel. Ik ga je links ff checken.

edit:
nog ff wat vragen. Ik zie dat dit recht van de iptables site komt excuses hiervoor, maar dacht dat ik gewoon goed moest mappen oid.

Ik moet iptables hiervoor helaas opnieuw compileren. Dat doe ik nog niet meteen maar eerst even een testbak pakken. Doe ik in weekeinde. Thx, het lijkt dat dit de simpele oplossing is :)

[ Voor 60% gewijzigd door pierre-oord op 28-01-2004 14:20 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • blouweKip
  • Registratie: November 1999
  • Laatst online: 18-02 00:09
gek, ik heb hier ook een routertje met iptables en voor het gebruik van een linux of windows vpn client (voor een sever die buiten mijn eigen netwerk staat) heb ik niets bijzonders hoeven doen (ik gebruik pptp en op de router draait een 2.4.19 kernel dus die patch is ook niet direct nodig neem ik aan)

ligt het niet aan de instellingen van je vpn client?

"For my friends, anything; for my enemies, the law."


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Eum nee, gewoon een standaard verbinding?
Misschien heb ik iets niet in m'n kernel zitten ofzo? Ik zal er wel achter komen, dan post ik het hier :)

[ Voor 57% gewijzigd door pierre-oord op 28-01-2004 15:02 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


Verwijderd

blouweKip schreef op 28 januari 2004 @ 14:33:
gek, ik heb hier ook een routertje met iptables en voor het gebruik van een linux of windows vpn client (voor een sever die buiten mijn eigen netwerk staat) heb ik niets bijzonders hoeven doen (ik gebruik pptp en op de router draait een 2.4.19 kernel dus die patch is ook niet direct nodig neem ik aan)

ligt het niet aan de instellingen van je vpn client?
Dit vindt ik dan heel gek. Want pptp heeft toch echt applicatie support nodig. Omdat het net als ftp twee communicatie kanalen gebruikt.

Kan je op je router eens de uitvoer van lsmod geven en hier posten.

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 21:48
Verwijderd schreef op 28 januari 2004 @ 19:14:
[...]


Dit vindt ik dan heel gek. Want pptp heeft toch echt applicatie support nodig. Omdat het net als ftp twee communicatie kanalen gebruikt.

Kan je op je router eens de uitvoer van lsmod geven en hier posten.
Denk dat je in de war bent met IPSec ;) Die heeft sowieso helpers nodig.


http://www.microsoft.com/...nfo/overview/vpnover.mspx
Pagina 12:
Advantages of PPTP Over L2TP/IPSec
...
PPTP clients can be placed behind a network address translator
| (NAT) if the NAT has an editor for PPTP traffic.
Maar om eerlijk te zijn bevreemd mij dit, aangezien ikzelf al eens een pptp tunnel heb opgezet welke ook zonder problemen door een NAT bak heen gaat die alleen statefull verkeer doorlaat. -- hmm ze zullen wel gewoon een algemene stafefull-firewall/connection-tracker bedoelen.

Kortom, ik heb het idee dat het gewoon een iptables probleem is.

[ Voor 36% gewijzigd door Jelmer op 28-01-2004 19:36 ]


Verwijderd

Aangezien je pptp gebruikt zet je veel teveel poorten en protocollen open op je firewall. pptp gebruikt TCP poort 1723 en protocol 47 (GRE). Een pptp client achter je iptables firewall zou zonder problemen moeten kunnen connecten naar een pptp server op het internet. Alleen als je client (internet) en server (lokaal netwerk) verwisselt zijn moet je portforwarden en heb je ook wat patches nodig.

Wel kan het zo zijn dat je firewall config bepaalde pakketten dropt. Post je firewall-script dus maar eens zou ik zeggen. Misschien gaat er wat fout met state table.

[ Voor 3% gewijzigd door Verwijderd op 28-01-2004 21:15 ]


  • blouweKip
  • Registratie: November 1999
  • Laatst online: 18-02 00:09
Alleen als je client (internet) en server (lokaal netwerk) verwisselt zijn moet je portforwarden en heb je ook wat patches nodig.
Dat leek mij dus ook al, aangezien ik geen extra poorten open heb staan (naast wat standaard services en een poort voor ipsec (iets wat dus los staat van het gebruik van mn vpn client)
Qua modules is het ook al niet bijzonder: ipsec, nic en wat iptables modules, het lijkt me dus nog steeds meer een probleem wat aan de client ligt

"For my friends, anything; for my enemies, the law."


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Dus met de standaard iptables moet het ook werken?

Nou, ik heb toenvallig net een nieuwe XP erop gezet, maar gewoon een standaard vpn-etje wil die weer niet doen...

Hier even m'n config dan (arme layout):
--->Hoofdbestand<---
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#! /bin/sh

case "$1" in
start)
    echo "ROUTING WORDT GESTART:"

    #ALLES LEEGMAKEN
    echo -n "Alles leegmaken"
    iptables --flush INPUT
    iptables --flush OUTPUT
    iptables --flush FORWARD
    iptables --flush
    iptables --table nat --flush
    iptables --delete-chain
    iptables --table nat --delete-chain
    echo ""

    #STANDAARD BELEID
    echo -n "Standaard beleid instellen"
    iptables --policy INPUT DROP
    iptables --policy OUTPUT ACCEPT
    iptables --policy FORWARD DROP
    echo ""

    #Set up IP FORWARDing and Masquerading
    echo -n "Forwarding en Masquerading instellen en toestaan"
    iptables --append INPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT
    iptables --append INPUT --match state --state NEW --in-interface ! eth0 --jump ACCEPT

    iptables --append FORWARD --in-interface eth0 --out-interface eth1 --match state --state ESTABLISHED,RELATED --jump ACCEPT
    iptables --append FORWARD --in-interface eth1 --out-interface eth0 --jump ACCEPT

    iptables --table nat --append POSTROUTING --out-interface eth0 --jump MASQUERADE
    #Deze kon eventueel ook anders, eindigen op --jump SNAT --to INTERNETGATEWAYIP
    echo " "

    #FORWARDING INSTELLEN
    echo -n "Forwarding instellen"
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv4/ip_dynaddr # Met of zonder ""
    echo " "
    echo "GATEWAY.RULES starten"
    /etc/router/gateway/gateway.rules
    echo " "
    ;;

stop)
    echo -n "Uitzetten routen:"
    echo 0 > /proc/sys/net/ipv4/ip_forward
    echo " "
    ;;

*)
    echo "Gebruik: gateway {start|stop} in de juiste directory"
    exit 1
    ;;
esac

exit 0


En het bestand met dan de extra regels die ik steeds toevoeg etc:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#regel voor SSH server
#iptables -I INPUT --proto tcp --dport 22 -j ACCEPT

echo Portmappings server
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 21 --jump DNAT --to 10.0.0.5:21
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 80 --jump DNAT --to 10.0.0.5:80
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 25 --jump DNAT --to 10.0.0.5:25
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 110 --jump DNAT --to 10.0.0.5:110
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 27015 --jump DNAT --to 10.0.0.5:27015
    iptables -A PREROUTING --table nat --proto udp --in-interface eth0 --dport 27015 --jump DNAT --to 10.0.0.5:27015
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 143 --jump DNAT --to 10.0.0.5:143
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 993 --jump DNAT --to 10.0.0.5:993
    iptables -A FORWARD -m multiport --in-interface eth0 --out-interface eth1 --match state --state NEW --proto tcp --destinat

echo Portmappings Rogier
    iptables -A PREROUTING --table nat --proto udp --in-interface eth0 --dport 8767 --jump DNAT --to 10.0.1.2:8767
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto udp --destination 10.0.1.2

    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 47624 --jump DNAT --to 10.0.1.2:47624
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto tcp --destination 10.0.1.2
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 2300:2400 --jump DNAT --to 10.0.1.2
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto tcp --destination 10.0.1.2
    iptables -A PREROUTING --table nat --proto udp --in-interface eth0 --dport 2300:2400 --jump DNAT --to 10.0.1.2
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto udp --destination 10.0.1.2

echo Portmappings Pierre
    # IRC
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 113 --jump DNAT --to 10.0.1.1:113
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto tcp --destination 10.0.1.1

    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 1723 --jump DNAT --to 10.0.0.1:1723
    iptables -A PREROUTING --table nat --proto udp --in-interface eth0 --dport 1723 --jump DNAT --to 10.0.0.1:1723
    iptables -A PREROUTING --table nat --proto 50 --in-interface eth0 --jump DNAT --to 10.0.0.1
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto tcp --destination 10.0.0.1
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto udp --destination 10.0.0.1
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto 50 --destination 10.0.0.1 -
    iptables -A PREROUTING --table nat --proto tcp --in-interface eth0 --dport 500 --jump DNAT --to 10.0.0.1:500
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto tcp --destination 10.0.0.1
    iptables -A PREROUTING --table nat --proto 17 --in-interface eth0 --dport 500 --jump DNAT --to 10.0.0.1:500
    iptables -A FORWARD --in-interface eth0 --out-interface eth1 --match state --state NEW --proto 17 --destination 10.0.0.1 -



# Verbindingen INPUT
# Voor ping
    iptables -A INPUT --proto icmp --icmp-type echo-request --jump ACCEPT

echo netbios poorten blokkeren
    iptables -A INPUT -p tcp --dport 137:139 --jump DROP
    iptables -A OUTPUT -p tcp --dport 137:139 --jump DROP
    iptables -A FORWARD -p tcp --dport 137:139 --jump DROP
    iptables -A INPUT -p udp --dport 137:139 --jump DROP
    iptables -A OUTPUT -p udp --dport 137:139 --jump DROP
    iptables -A FORWARD -p udp --dport 137:139 --jump DROP
    #INPUT is eigenlijk onnodig omdat de policy alle nieuwe inputs al dropt

echo Markeren pakketten voor bandbreedte limiteren
# Pierre
    iptables -A POSTROUTING --out-interface eth0 --table mangle --source 10.0.1.1 --jump MARK --set-mark 2

# Rogier
     iptables -A POSTROUTING --out-interface eth0 --table mangle --source 10.0.1.2 --jump MARK --set-mark 3

# Server
    iptables -A POSTROUTING --out-interface eth0 --table mangle --source 10.0.0.2 --jump MARK --set-mark 4

# Buren
    iptables -A POSTROUTING --out-interface eth0 --table mangle --source 10.1.0.0/16 --jump MARK --set-mark 5

# Counter-Strike
    iptables -A POSTROUTING --out-interface eth0 --table mangle --source 10.0.0.0/16 --proto tcp --dport 27010:27030 --jump MA
    iptables -A POSTROUTING --out-interface eth0 --table mangle --source 10.0.0.0/16 --proto udp --dport 27010:27030 --jump MA


Ik hoop dat ik alles netjes heb geknipt en geplakt met putty ;)

Dit zijn dus al m'n regels. Standaard worden alle NEW pakketen dus geweigerd, maar ik heb de policy ook al eens op alles ACCEPT gehad, maar dat hielp ook niet?

Even voor de duidelijkheid: Ik heb dus niet die IPtables update gedaan. Is die dus enkel voor als je zelf een server draait?

Ik kan aan de eigennaar van de VPN wel ff vragen of die het erg vind als ik hier even gegevens geef van een leeg account aanmaakt zodat jullie de VPN zelf even kunnen testen.

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


Verwijderd

Zo, dat is even wennen iemand die lange keywords gebruikt in iptables in plaats van de afkortingen ;)

Ik heb je hoofd-ruleset doorgekeken en wat kleine dingetjes na (je kan volgens mij geen default chains deleten zoals je boven in je script probeert) is die volgens mij wel in orde.

Waar ik alleen nog steeds aan twijfel is welk protocol je nou probeert te gebruiken. In je start post mix je poorten voor pptp (tcp 1723 + GRE (ip type 47) en ipsec (ESP (ip type 50), AH (ip type 51) + udp 500) door elkaar en heb je het ook nog over radius authenticatie. Ik zit zelf nog te twijfelen of het misschien l2tp is, wat niet probleemloos door iptables heen komt.

Dus zoek eerst goed uit welk protocol je gebruikt en check de configuratie zowel op de vpn client als server. Mocht je niet weten welk protocol je gebruikt dan kun je het beste ergens in je netwerk ethereal (desnoods op de windows vpn client) of eventueel tcpdump gaan draaien om te achterhalen welk protocol er wordt gebruikt.

Als je het protocol weet kun je gericht naar een oplossing zoeken en wij je ook beter helpen.

  • Sjonny
  • Registratie: Maart 2001
  • Laatst online: 19:25

Sjonny

Fratser

l2tp komt probleemloos door iptables heen
met pptp heb je 2 problemen. poort 1723 wordt gebruikt om een connectie op te zetten, en heeft een caller id. dit wordt op het moment niet goed genat in 2.4.x en daarvoor heb je dus die patches nodig. die patches zijn naar mijn weten ook nog niet 100%, zeker niet als je twee verbindingen van verschillende bakken in je netwerk dezelfde vpn wilt maken naar een server op het internet. Dat gaat geheid stuk.

The problem is in the part of your brain that handles intelligence.


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 22-02 09:05

voodooless

Sound is no voodoo!

probeer eens iets zoals dit:

code:
1
2
3
## VPN
iptables -t nat -A PREROUTING -p 47 -i $ADSL -j DNAT --to 192.168.1.1
iptables -t nat -A PREROUTING -p tcp -i $ADSL --dport 1723 -j DNAT --to 192.168.1.1:1723

Do diamonds shine on the dark side of the moon :?


  • jvbuiten
  • Registratie: September 2000
  • Laatst online: 12-07-2024
In deze link staat het hele verhaal uitgelegd voor zowel Iptabels al IPchains

http://www.impsec.org/linux/masquerade/ip_masq_vpn.html

Verwijderd

Sjonny schreef op 30 januari 2004 @ 09:56:
l2tp komt probleemloos door iptables heen
met pptp heb je 2 problemen. poort 1723 wordt gebruikt om een connectie op te zetten, en heeft een caller id. dit wordt op het moment niet goed genat in 2.4.x en daarvoor heb je dus die patches nodig. die patches zijn naar mijn weten ook nog niet 100%, zeker niet als je twee verbindingen van verschillende bakken in je netwerk dezelfde vpn wilt maken naar een server op het internet. Dat gaat geheid stuk.
Zover ik weet werkt maximaal 1 vpn client achter je iptables firewall net NAT zonder problemen. Dit geldt voor zowel pptp als IPsec (heb ik zelf werkend zonder extra modules). Ik zie nu dat er inderdaad ook een NAT helper te vinden is voor pptp: http://www.netfilter.org/patch-o-matic/pom-extra.html

Maar goed mijn vraag over het gebruikte protocol blijft staan, gezien de topicstarter daar nog steeds niet helemaal duidelijk over is.

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Ik heb dat gequote van de gebruiker in m'n startpost. Hij had het gedaan volgens een guide op GoT, link staat erbij.

Als ik die guide doorloop zie ik MSchap2 en ipsec.

Alleen vraag ik me nu nog steeds af of ik nu die iptables moet updaten of niet... Portmappings zouden niet nodig zijn zei iemand hier ook al. Overigens heb ik de genoemde mappings al eens gemaakt, zal het zo nog eens doen maar....

Ook die link lees ik even. Verder, ik wil op een nieuwe server misschien 2.6 gaan draaien. Weet iemand of deze kernel dan wel meteen hiervoor ondersteuning heeft, omdat net iemand specefiek 2.4 noemde?

Het stukje heeft een patch maar die werkt niet voor ipsec. Ik denk dat ik toch echt een nieuwe iptables moet compileren (?)

edit:
Ik hoor net dat er enkele prob's zijn met die VPN, ik hoor later wanneer alles weer ok is, hopelijk heeft dat hier niets mee te maken. Ik krijg trouwens iptables/patches niet goed geinstalleerd, dit post ik echter in het 2.6.x kernel draadje omdat ik zo'n gevoel heb dat het daaraan ligt.

[ Voor 49% gewijzigd door pierre-oord op 30-01-2004 21:26 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)

Pagina: 1