Forums Neueste Beiträge
 

Iptables Verhalten

02/02/2009 - 09:13 von Jan Pietrusky | Report spam
Hallo Zusammen,
ich bin zur Zeit mit der Einrichtung eines VPN Zugangs zu meinem Server
beschàftigt. Um diesen zu Testen, versuche ich mich von meinem Internen
Netz von außen einzuloggen.

Kurz zu meiner Konfiguration, mein Server hat die 192.168.30.21
(vpnserv), meine Firewall die 192.168.30.2. Das 178er Netz ist die
Internetverbindung. Testen tue ich von einem dritten Rechner (obelix) in
der 168.er Umgebung.

Mein Probem ist, ich komme auf dem Port nicht zu dem Rechner vpnserv.
Zum Test habe ich (im Eintrag VPN Zugang) Port durch 80 und Protokoll
durch tcp ersetzt. Damit kann ich wie geplant von obelix auf den http
Server zugreifen.
Mit den Eintràgen für VPN wird der Zugriff aber durch die Regel

# remove all the others
iptables -A INPUT -s 0.0.0.0/0 -d 0.0.0.0/0 -j LOG \
iptables -A INPUT -s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP iptables -A OUTPUT
-s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP

abgewiesen. Warum geht das eine, aber das andere nicht? Warum wird die
FORWARD Regel durch die INPUT Regel abgewiesen? Ich dachte immer, dass
FORWARD und INPUT gleich behandelt werde (bei tcp geht es ja auch).
Leider habe ich vergessen, die Ausgabe des Log-Files zu kopieren. Das
kann bei Bedarf aber nachgereicht werden. Evtl. sieht aber auch ein
erfahrener Firewall-Einrichter sofort, wo das Problem ist.

Danke,
Jan



IPTABLES Eintràge



iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

#
# per default, remove all
#
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#
# activate forwarding
#
ipflag=1
message="Enable IPv4 packet forwarding."
if [ $ipflag != `cat /proc/sys/net/ipv4/ip_forward` ]; then
echo $message
echo "$ipflag" > /proc/sys/net/ipv4/ip_forward else
echo "IPv4 packet forwarding is already enabled."
fi
############################################################
#
# Firewall restriction
#
############################################################
###############################################################
# Using Connection State to By-pass Rule Checking
###############################################################
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m
state --state INVALID -j DROP iptables -A FORWARD -m state --state
INVALID -j DROP


# All of the bits are cleared
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP # SYN and FIN
are both set
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP # SYN and
RST are both set
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP # FIN and
RST are both set
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP # FIN is
the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP # PSH is the
only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j DROP # URG is the
only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP
###############################################################

#
# Internal rules, all open
#
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -i eth0 -s 192.168.30.0/24 -j ACCEPT iptables -A
OUTPUT -o eth0 -d 192.168.30.0/24 -j ACCEPT

# DNS Anfrage
iptables -A OUTPUT -o eth1 -d 81.169.163.106 -j ACCEPT

#NTP Server request
#iptables -A OUTPUT -o $EXT -p udp --dport 123 \
# -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXT -p udp --dport 123 -j ACCEPT

#####################################################
iptables -A INPUT -p tcp ! --syn -j ACCEPT iptables -A OUTPUT -p tcp !

# remove all the others
iptables -A INPUT -s 0.0.0.0/0 -d 0.0.0.0/0 -j LOG \
iptables -A INPUT -s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP iptables -A OUTPUT
-s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP

###############################################################
#
# configure the forward parameter
#
###############################################################
iptables -A POSTROUTING -t nat -o eth1 -p tcp -j MASQUERADE iptables -A
POSTROUTING -t nat -o eth1 -p udp -j MASQUERADE iptables -A POSTROUTING
-t nat -o eth1 -p icmp --icmp-type ping -j MASQUERADE
# # HTTP Rules
# # Inside -> Outside

iptables -A FORWARD -i $INT -o $EXT -s 192.168.30.0/24 -d 0.0.0.0/0 \
-p tcp --destination-port 80 -j ACCEPT

#############################################################
# VPN Zugang
#############################################################
DPORT94
PROTO=udp
iptables -A FORWARD -i $INT -o $EXT -s 192.168.30.0/24 -d 0.0.0.0/0 \
-p $PROTO --dport $DPORT -j LOG \
iptables -A FORWARD -i $INT -o $EXT -s 192.168.30.0/24 -d 0.0.0.0/0 \
-p $PROTO --dport $DPORT -j ACCEPT iptables -A FORWARD -i $EXT
-o $INT -d 192.168.30.21/24 -s 0.0.0.0/0 \
-p $PROTO --dport $DPORT -j LOG --log-level warning \
iptables -A FORWARD -i $EXT -o $INT -d 192.168.30.21/24 -s 0.0.0.0/0 \
-p $PROTO --dport $DPORT -j ACCEPT
 

Lesen sie die antworten

#1 Jan Pietrusky
03/02/2009 - 09:09 | Warnen spam
Falls es hilft, habe ich hier noch einmal das logfile zu den relevanten
Eintràgen. Firewall:Out: ist wie der Name schon sagt, der weg nach
draußen, Firewall:Drop dann die verworfenen Pakte.

Noch etwas, eine Inputregel für den PORT1194 funktioniert auch, nur
làuft da ja nichts (und ist hier auch nicht aufgeführt)


Feb 3 00:21:28 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.172.254 LENB TOS=0x00 PREC=0x00 TTL7
ID†39 PROTO=UDP SPT96 DPT94 LEN" Feb 3 00:21:28 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID†39 PROTO=UDP
SPT96 DPT94 LEN"
Feb 3 00:21:30 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID†44 PROTO=UDP SPT96 DPT94 LEN" Feb 3 00:21:30 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID†44 PROTO=UDP
SPT96 DPT94 LEN"
Feb 3 00:21:32 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID†51 PROTO=UDP SPT96 DPT94 LEN" Feb 3 00:21:32 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID†51 PROTO=UDP
SPT96 DPT94 LEN"
Feb 3 00:21:34 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID†54 PROTO=UDP SPT96 DPT94 LEN" Feb 3 00:21:34 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID†54 PROTO=UDP
SPT96 DPT94 LEN"
Feb 3 00:21:39 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID†55 PROTO=UDP SPT97 DPT94 LEN" Feb 3 00:21:39 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID†55 PROTO=UDP
SPT97 DPT94 LEN"
Feb 3 00:21:40 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID†56 PROTO=UDP SPT97 DPT94 LEN" Feb 3 00:21:40 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID†56 PROTO=UDP
SPT97 DPT94 LEN"
Feb 3 00:21:42 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID‡32 PROTO=UDP SPT97 DPT94 LEN" Feb 3 00:21:42 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID‡32 PROTO=UDP
SPT97 DPT94 LEN"
Feb 3 00:21:44 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID‡37 PROTO=UDP SPT97 DPT94 LEN" Feb 3 00:21:44 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID‡37 PROTO=UDP
SPT97 DPT94 LEN"
Feb 3 00:21:47 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID‡38 PROTO=UDP SPT97 DPT94 LEN" Feb 3 00:21:47 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID‡38 PROTO=UDP
SPT97 DPT94 LEN"
Feb 3 00:21:49 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID‡41 PROTO=UDP SPT97 DPT94 LEN" Feb 3 00:21:49 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID‡41 PROTO=UDP
SPT97 DPT94 LEN"
Feb 3 00:21:51 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID‡42 PROTO=UDP SPT97 DPT94 LEN" Feb 3 00:21:51 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID‡42 PROTO=UDP
SPT97 DPT94 LEN"
Feb 3 00:21:52 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID‡47 PROTO=UDP SPT97 DPT94 LEN" Feb 3 00:21:52 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID‡47 PROTO=UDP
SPT97 DPT94 LEN"
Feb 3 00:21:54 idefix kernel: Firewall:Out:IN=eth0 OUT=eth1
SRC2.168.30.3 DST5.4.xxx.xxx LENB TOS=0x00 PREC=0x00 TTL7
ID‡58 PROTO=UDP SPT97 DPT94 LEN" Feb 3 00:21:54 idefix
kernel: Firewall:Drop:IN=eth1 OUT=
MAC:50:22:85:d9:a0:00:1a:4f:e6:xx:xx:xx:xx SRC5.4.xxx.xxx
DST2.168.178.2 LENB TOS=0x00 PREC=0x00 TTL5 ID‡58 PROTO=UDP
SPT97 DPT94 LEN"



Jan Pietrusky wrote:
Hallo Zusammen,
ich bin zur Zeit mit der Einrichtung eines VPN Zugangs zu meinem Server
beschàftigt. Um diesen zu Testen, versuche ich mich von meinem Internen
Netz von außen einzuloggen.

Kurz zu meiner Konfiguration, mein Server hat die 192.168.30.21
(vpnserv), meine Firewall die 192.168.30.2. Das 178er Netz ist die
Internetverbindung. Testen tue ich von einem dritten Rechner (obelix) in
der 168.er Umgebung.

Mein Probem ist, ich komme auf dem Port nicht zu dem Rechner vpnserv.
Zum Test habe ich (im Eintrag VPN Zugang) Port durch 80 und Protokoll
durch tcp ersetzt. Damit kann ich wie geplant von obelix auf den http
Server zugreifen.
Mit den Eintràgen für VPN wird der Zugriff aber durch die Regel

# remove all the others
iptables -A INPUT -s 0.0.0.0/0 -d 0.0.0.0/0 -j LOG \
iptables -A INPUT -s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP iptables -A OUTPUT
-s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP

abgewiesen. Warum geht das eine, aber das andere nicht? Warum wird die
FORWARD Regel durch die INPUT Regel abgewiesen? Ich dachte immer, dass
FORWARD und INPUT gleich behandelt werde (bei tcp geht es ja auch).
Leider habe ich vergessen, die Ausgabe des Log-Files zu kopieren. Das
kann bei Bedarf aber nachgereicht werden. Evtl. sieht aber auch ein
erfahrener Firewall-Einrichter sofort, wo das Problem ist.

Danke,
Jan


>IPTABLES Eintràge

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

#
# per default, remove all
#
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#
# activate forwarding
#
ipflag=1
message="Enable IPv4 packet forwarding."
if [ $ipflag != `cat /proc/sys/net/ipv4/ip_forward` ]; then
echo $message
echo "$ipflag" > /proc/sys/net/ipv4/ip_forward else
echo "IPv4 packet forwarding is already enabled."
fi
############################################################
#
# Firewall restriction
#
############################################################
###############################################################
# Using Connection State to By-pass Rule Checking
###############################################################
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m
state --state INVALID -j DROP iptables -A FORWARD -m state --state
INVALID -j DROP


# All of the bits are cleared
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP # SYN and FIN
are both set
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP # SYN and
RST are both set
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP # FIN and
RST are both set
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP # FIN is
the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP # PSH is the
only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j DROP # URG is the
only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP
###############################################################

#
# Internal rules, all open
#
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -i eth0 -s 192.168.30.0/24 -j ACCEPT iptables -A
OUTPUT -o eth0 -d 192.168.30.0/24 -j ACCEPT

# DNS Anfrage
iptables -A OUTPUT -o eth1 -d 81.169.163.106 -j ACCEPT

#NTP Server request
#iptables -A OUTPUT -o $EXT -p udp --dport 123 \
# -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o $EXT -p udp --dport 123 -j ACCEPT

#####################################################
iptables -A INPUT -p tcp ! --syn -j ACCEPT iptables -A OUTPUT -p tcp !

# remove all the others
iptables -A INPUT -s 0.0.0.0/0 -d 0.0.0.0/0 -j LOG \
iptables -A INPUT -s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP iptables -A OUTPUT
-s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP

###############################################################
#
# configure the forward parameter
#
###############################################################
iptables -A POSTROUTING -t nat -o eth1 -p tcp -j MASQUERADE iptables -A
POSTROUTING -t nat -o eth1 -p udp -j MASQUERADE iptables -A POSTROUTING
-t nat -o eth1 -p icmp --icmp-type ping -j MASQUERADE
# # HTTP Rules
# # Inside -> Outside

iptables -A FORWARD -i $INT -o $EXT -s 192.168.30.0/24 -d 0.0.0.0/0 \
-p tcp --destination-port 80 -j ACCEPT

#############################################################
# VPN Zugang
#############################################################
DPORT94
PROTO=udp
iptables -A FORWARD -i $INT -o $EXT -s 192.168.30.0/24 -d 0.0.0.0/0 \
-p $PROTO --dport $DPORT -j LOG \
iptables -A FORWARD -i $INT -o $EXT -s 192.168.30.0/24 -d 0.0.0.0/0 \
-p $PROTO --dport $DPORT -j ACCEPT iptables -A FORWARD -i $EXT
-o $INT -d 192.168.30.21/24 -s 0.0.0.0/0 \
-p $PROTO --dport $DPORT -j LOG --log-level warning \
iptables -A FORWARD -i $EXT -o $INT -d 192.168.30.21/24 -s 0.0.0.0/0 \
-p $PROTO --dport $DPORT -j ACCEPT

Ähnliche fragen