PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem bei iptables mit ausgehender Verbindung



heinzelrumpel
17.07.05, 10:33
Hallo,

ich bin gerade dabei, mir iptables anzueignen und stoße leider auf ein paar Probleme, die wohl mein allgemeines Verständnis der Thematik betreffen.

Ausgangslage ist ein Linuxrouter, der per eth1 an ein DSL-Modem angeschlossen ist und per eth0 das LAN bediehnt. Eingehende Verbindungen sollen grundsätzlich nicht erlaubt sein, ausser sie werden voM LAN aus initiert. Ausnahme dazu sollen die Ports 1194 ( OpenVpn) und 222 (ssh) bilden. Ich poste mal kurz mein Skript:



################################################## ######################################
#! /bin/sh


#Forwarding wird aktiviert
##########################
echo "1" > /proc/sys/net/ipv4/ip_forward

#Alle Firewallregeln loeschen
##############################
iptables -F
iptables -F -t nat

#Alle chains flushen
####################
iptables -F red
iptables -F green
iptables -F ovpn
iptables -F scan
iptables -F badtcp

#Alle chains loeschen
######################
iptables -X red
iptables -X green
iptables -X ovpn
iptables -X scan
iptables -X badtcp

#Neue chains erstellen
######################
iptables -N red
iptables -N green
iptables -N ovpn
iptables -N scan
iptables -N badtcp

#Alle neuen chains flushen
##########################
iptables -F red
iptables -F green
iptables -F ovpn
iptables -F scan
iptables -F badtcp


#Pakete, die vermutlich zu einem Portscan gehoeren, loggen und dann
verwerfen
################################################## ###########################
iptables -A scan -p tcp -m limit --limit 10/minute -j LOG --log-prefix
"TCP-SCAN"
iptables -A scan -p udp -m limit --limit 10/minute -j LOG --log-prefix
"UDP-SCAN"
iptables -A scan -p icmp -m limit --limit 10/minute -j LOG --log-prefix
"ICMP-SCAN"
iptables -A scan -m limit --limit 10/minute -j LOG --log-prefix
"FRAG-SCAN"
iptables -A scan -j DROP

#Pakete, die haeufig von Portscannern benutzt werden, werden geblockt
################################################## #####################
iptables -A badtcp -p tcp --tcp-flags ALL FIN,URG,PSH -j scan

iptables -A badtcp -p tcp --tcp-flags ALL NONE -j scan

iptables -A badtcp -p tcp --tcp-flags ALL FIN -j scan

iptables -A badtcp -p tcp --tcp-flags SYN,RST SYN,RST -j scan

iptables -A badtcp -p tcp --tcp-flags SYN,FIN SYN,FIN -j scan


#Alle eingehenden ovpn Pakete loggen und erlauben
################################################## #########
iptables -A ovpn -i ppp+ -p tcp --dport 1194 -j LOG --log-prefix "ovpn
Pakete" --log-tcp-options
iptables -A ovpn -i ppp+ -p tcp --dport 1194 -j ACCEPT

#Alle Anfragen aus dem LAN, ohne passende IP, blocken
################################################## #####
iptables -A green -i eth0 -s ! 192.168.0.0/255.255.255.0 -j DROP

#Alles andere aus dem LAN erlauben
###################################
iptables -A green -i eth0 -j ACCEPT

#Loopback erlauben
###################
iptables -A green -i lo -s 127.0.0.1/255.0.0.0 -j ACCEPT




#ssh aus der Firma akzeptieren / funktioniert so irgendwie nicht?
################################################
#iptables -A red -i ppp+ -s xxx.xxx.xxx.xxx/255.255.255.255 --dport 222 -j
ACCEPT




#Pakete akzeptieren, die bereits eine Verbindung haben
################################################## ######
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


#Alle anderen Pakete RFC konform ablehnen
##########################################
#iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
#iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable

# chains aktivieren #
#####################
iptables -A INPUT -j red
iptables -A INPUT -j green
iptables -A INPUT -j ovpn
iptables -A INPUT -j scan
iptables -A INPUT -j badtcp

iptables -A FORWARD -j red
iptables -A FORWARD -j green
iptables -A FORWARD -j ovpn
iptables -A FORWARD -j scan
iptables -A FORWARD -j badtcp
iptables -P INPUT DROP
iptables -P FORWARD DROP


#Jeden ausgehenden Verkehr erlauben
###################################
iptables -P OUTPUT ACCEPT
iptables -P OUTPUT ACCEPT -t nat



#NAT
######

iptables -A POSTROUTING -t nat -o ppp+ -j MASQUERADE



echo "Firewall wurde gestartet"

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




Probleme gibt es mit diesem Abschnitt



#Pakete akzeptieren, die bereits eine Verbindung haben
################################################## ######
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


#Alle anderen Pakete RFC konform ablehnen
##########################################
#iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
#iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable




Wenn ich den unteren Bereich nicht auskommentiere, dann kann ich keine ausgehenden Verbindungen starten. Dies ginge nur in Kombination mit "NEW" bei Established.

Mache ich aber dies, erscheinen meine Ports nicht als stealthed, was ja auch eigentlich nicht verwunderlich, wegen der RFC konformen Ablehnung.

Meine Frage ist eigentlich, ob der Zusatz "New" auch tatsächlich nur das bewirkt, was ich möchte, nämlich von innen initierte Verbindungen zuzulassen, oder erlaube ich da mehr, als ich möchte, auch wenn die Ports nicht stealthed erscheinen?

Gruß

Heinzelrumpel


edit: bei einem Portscan mit "NEW" enabled erscheinen so diverse Ports als offen, wie 53-DNS und 445. Das soll so natürlich nicht sein. Dies bedeutet ja wohl, dass diese Verbindungen irgendwie von innen initiert sind, also von meinem XP Rechner aus dem LAN.