Toon posts:

[OpenVPN] Aanpassingen IPTABLES

Pagina: 1
Acties:

Verwijderd

Topicstarter
Configuratie van de interfaces:

eth0: 192.168.0.1/255.255.255.0
eth1: 24.132.xxx.xxx/255.255.255.0
tap0: 10.1.0.1/255.255.255.0

Voor de volledigheid ook het complete IPTABLES-script:

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
!/bin/sh
#  
###########################################################################

set -x
DEBUG_LEVEL=INFO

EXTIF="eth1"
EXTIP=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $2) ; print $2 }'`
EXTBROAD=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $3) ; print $3 }'`
EXTGW=`/sbin/route -n | grep -A 4 UG | awk '{ print $2}'`

echo External IP: $EXTIP
echo External broadcast: $EXTBROAD
echo Default GW: $EXTGW
echo " --- "

INTIF="eth0"
INTIP=`ifconfig $INTIF | awk '/inet addr/ { gsub(".*:", "", $2) ; print $2 }'`
INT_MASK="`ifconfig $INTIF |grep Mask |cut -d: -f4`"
INTLAN="192.168.0.0/255.255.255.0"

echo Internal Interface: $INTIF
echo Internal IP: $INTIP
echo Internal LAN: $INTLAN
echo " --- "

LOIF="lo"
LOIP="127.0.0.1"

BROADCAST="255.255.255.255"

IPTABLES="`which iptables`"

# /sbin/depmod -a

# /sbin/modprobe ip_tables
# /sbin/modprobe ip_conntrack
# /sbin/modprobe iptable_filter
# /sbin/modprobe iptable_mangle
# /sbin/modprobe iptable_nat
# /sbin/modprobe ipt_LOG
# /sbin/modprobe ipt_limit
# /sbin/modprobe ipt_state

#/sbin/modprobe ipt_owner
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
#/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc

###########################################################################

echo "echo 1 > /proc/sys/net/ipv4/ip_forward" && echo 1 > /proc/sys/net/ipv4/ip_forward
echo "echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter" && echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo "echo 1 > /proc/sys/net/ipv4/ip_dynaddr" && echo 1 > /proc/sys/net/ipv4/ip_dynaddr

###########################################################################

$IPTABLES -t filter -P INPUT DROP
$IPTABLES -t filter -P OUTPUT DROP
$IPTABLES -t filter -P FORWARD DROP

$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT

$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F

$IPTABLES -t filter -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X


$IPTABLES -A INPUT -p ALL -i $INTIF -s $INTLAN -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LOIF -s $LOIP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LOIF -s $INTIP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LOIF -s $EXTIP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $INTIF -s 0.0.0.0 -d 255.255.255.255 -j ACCEPT

$IPTABLES -A INPUT -p ALL -d $EXTIP -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport http -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 110 -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 631 -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 25 -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p TCP --syn -s 0/0 --dport 65500:65534 -j ACCEPT

$IPTABLES -A INPUT -p ICMP -s 0/0 --icmp-type echo-reply -j ACCEPT
$IPTABLES -A INPUT -p ICMP -s 0/0 --icmp-type echo-request -j ACCEPT
$IPTABLES -A INPUT -p ICMP -s 0/0 --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -d 224.0.0.0/8 -j DROP


$IPTABLES -A INPUT -d $EXTBROAD -j DROP 
$IPTABLES -A INPUT -d $BROADCAST -j DROP 

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3


$IPTABLES -A FORWARD -i $INTIF -j ACCEPT

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3


$IPTABLES -A OUTPUT -p ALL -s $LOIP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INTIP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $EXTIP -j ACCEPT

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $EXTIP

# Forward

$IPTABLES -t nat -A PREROUTING -p TCP -i $EXTIF -d $EXTIP --dport 6346 -j DNAT --to 192.168.0.10:6346
$IPTABLES -t nat -A PREROUTING -p UDP -i $EXTIF -d $EXTIP --dport 6346 -j DNAT --to 192.168.0.11:6346
$IPTABLES -t nat -A PREROUTING -p TCP -i $EXTIF -d $EXTIP --dport 50000:60000 -j DNAT --to 192.168.0.10:50000-60000
$IPTABLES -t nat -A PREROUTING -p UDP -i $EXTIF -d $EXTIP --dport 50000 -j DNAT --to 192.168.0.10:50000-60000
$IPTABLES -t nat -A PREROUTING -p TCP -i $EXTIF -d $EXTIP --dport 3389 -j DNAT --to 192.168.0.10:3389

$IPTABLES -A FORWARD -p TCP -i $EXTIF -d 192.168.0.10 --dport 6346 -j ACCEPT
$IPTABLES -A FORWARD -p UDP -i $EXTIF -d 192.168.0.10 --dport 6346 -j ACCEPT
$IPTABLES -A FORWARD -p TCP -i $EXTIF -d 192.168.0.10 --dport 50000:60000 -j ACCEPT
$IPTABLES -A FORWARD -p UDP -i $EXTIF -d 192.168.0.10 --dport 50000:60000 -j ACCEPT
$IPTABLES -A FORWARD -p TCP -i $EXTIF -d 192.168.0.10 --dport 3389 -j ACCEPT

# VPN-zooi

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

$IPTABLES -A INPUT -p udp --dport 1194 -j ACCEPT

#$IPTABLES -A INPUT -i tun+ -j ACCEPT
#$IPTABLES -A FORWARD -i tun+ -j ACCEPT

$IPTABLES -A INPUT -i tap+ -j ACCEPT
$IPTABLES -A FORWARD -i tap+ -j ACCEPT 

$IPTABLES -t nat -A POSTROUTING -s  10.1.0.0/24 -o eth0 -j MASQUERADE


De laatste 2 weken ben ik druk bezig geweest om een OpenVPN-setup werkend te krijgen op mn router/server/verzamelbak. Eerst aan het experimenteren geweest met freeswan en pptpd, dat is allemaal niks geworden. De laatste paar dagen met OpenVPN aan de gang geweest, en dat werkt allemaal ongeveer naar wens. Er blijven wel een paar puntjes over waar nog wat aan gewerkt moet worden. Als leidraad voor de configuratie heb ik de howto op http://brneurosci.org/linuxsetup71.html gebruikt.

Een punt waar ik zelf niet uitkom zijn de aanpassingen van de firewall:

Het stukje firewall waar het om draait:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# VPN-zooi

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

$IPTABLES -A INPUT -p udp --dport 1194 -j ACCEPT

#$IPTABLES -A INPUT -i tun+ -j ACCEPT
#$IPTABLES -A FORWARD -i tun+ -j ACCEPT

#$IPTABLES -A INPUT -i tap+ -j ACCEPT
#$IPTABLES -A FORWARD -i tap+ -j ACCEPT 

#$IPTABLES -t nat -A POSTROUTING -s  10.1.0.0/24 -o eth0 -j MASQUERADE


En dan met name de bovenste 3 regels eruit, hiermee sta je veel te veel toe, maar dat was de enige optie waarmee ik het met mijn beperkte kennis van IPTABLES werkend kon krijgen. Wat ik er van begrijp is dat je op deze manier alle soorten verkeer over alle interfaces toelaat, iets wat niet de bedoeling is.

Tot gister was dit stukje er nog niet bij, en alle netwerkverkeer voor de interfaces eth0 en eth1 werkte prima, maar met tap0 kon ik niks beginnen. Wie kan mij een schop in de goede richting geven zodat ik zonder onnodig veel open te zetten toch kan VPN-en?

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Waar komt je firewallscript vandaan? Wat heb je zelf al geprobeerd? Bijvoorbeeld alle regels weglaten, en dan langzaam regels toevoegen tot het niet meer werkt :) Moet je tunnel-interface als intern of extern beschouwd worden? Waarom staan de regels over de tun-interfaces uitgecommentarieerd? :)

[ Voor 18% gewijzigd door blaataaps op 24-11-2008 10:48 ]


Verwijderd

Topicstarter
Ooit, in mijn linux-begintijdperk ben ik op weg geholpen door iemand die dat script al had en gaanderweg mijn servertje meer functionaliteit kreeg ben ik zelf wat gaan experimenteren met wisselend succes. Zo ben ik een eeuwigheid bezig geweest om forwarding voor elkaar te krijgen, echter dat was van zichzelf dicht en ik kreeg het niet open. Nu is alles open en dat moet zo snel mogelijk weer dicht dus ik wil niet weer 2 maand experimenteren ;)

De tun-regels staan nu uitgecommentiariseerd omdat dat een stap in de howto is waar ik nog niet mee bezig ben, namelijk toegang tot het achterliggende netwerk. Eerst wil ik de firewall zo op orde hebben dat t/m de firewall (de firewall draait op de vpn-server) alles werkt, wat erachter ligt komt dan wel.

En de tun-interface intern of extern? Hoe bedoel je dat? Eth1 is de externe interface die aan een chello-modem hangt. De tun-interface is in die zin extern, dat vpn-verkeer van buitenaf over die interface gaat, maar er komt ook nog een koppeling naar het interne netwerk, een beetje van beide dus.

udp-verkeer op poort 1194 dat binnenkomt via eth1 moet naar tun0, en alle udp-verkeer dat eruit gaat op poort 1194 moet ook weer op tun0 maar ik heb geen idee hoe dat om te zetten in regels.

[ Voor 8% gewijzigd door Verwijderd op 24-11-2008 11:18 ]