PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Offene Ports trotz Firewall-Regeln



bernhard_pauler
19.11.07, 10:28
Hallo!

Ich habe vor kurzem eine Firewall mit iptables eingerichtet. Im Anschluss habe ich diese von einem Windows-Rechner aus mit dem Portscanner SuperScan 4.0 getestet.

Beim Scannen (Scan type: Connect) werden folgende Ports als offen gemeldet:

TCP ports (5) 21,25,80,110,143

Diese Ports habe ich allerdings nicht bewusst in der Firewall geöffnet. Ich habe die Firewall-Regeln aus einem Buch übernommen und adaptiert (Linux Netzwerkadministration von Jens Banning) und habe geglaubt, sie verstanden zu haben. :(

Hat jemand vielleicht eine Idee, warum die Ports offen sind bzw. warum der Portscanner diese als offen meldet? Danke.

Bernhard

- - -

Mein Firewall-Skript:

#!/bin/sh

# Packet-Forwarding aktivieren
echo "1" >/proc/sys/net/ipv4/ip_forward

# Alle bestehenden Regeln löschen
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

# Per Default wird der Zugriff komplett verboten
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Erlaubt:
# HTTP-Anfragen (Port 80)
# alle TCP-Antworten
# interne Kommunikation über lo (Loopback-Device)
# DNS-Anfragen ins Internet (UDP-Port 53)
# UDP-Daten vom Nameserver
# Rest wird abgewiesen und geloggt
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --destination-port 80 -j ACCEPT
iptables -A INPUT -p tcp ! --syn -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -p udp --destination-port 53 -j ACCEPT
iptables -A INPUT -i eth0 -s 195.34.133.21/32 -p udp -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -d 0.0.0.0/0 --log-level 7 -j DROP

# Erlaubt:
# HTTP-Anfragen (Port 80)
# alle TCP-Antworten
# interne Kommunikation über lo (Loopback-Device)
# DNS-Anfragen ins Internet (UDP-Port 53)
# UDP-Daten vom Nameserver
# Rest wird abgewiesen und geloggt
iptables -A OUTPUT -o eth0 -d 0.0.0.0/0 -p tcp --destination-port 80 -j ACCEPT
iptables -A OUTPUT -p tcp ! --syn -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o eth0 -d 0.0.0.0/0 -p udp --destination-port 53 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -p udp -j ACCEPT
iptables -A OUTPUT -s 0.0.0.0/0 -d 0.0.0.0/0 --log-level 7 -j DROP

# Daten ins Internet werden maskiert
# Durchgelassen:
# HTTP-Anfragen (Port 80)
# TCP-Antworten
# DNS-Anfragen ins Internet (UDP-Port 53)
# UDP-Daten vom Nameserver
# Rest wird abgewiesen und geloggt
iptables -A POSTROUTING -t nat -o eth0 -p tcp -j MASQUERADE
iptables -A POSTROUTING -t nat -o eth0 -p udp -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -p tcp --destination-port 80 -j ACCEPT
iptables -A FORWARD -p tcp ! --syn -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -p udp --destination-port 53 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -s 195.34.133.21/32 -p udp -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 --log-level 7 -j DROP

muell200
19.11.07, 12:43
iptables -A INPUT -p tcp ! --syn -j ACCEPT


hallo

erstmal willkommen auf dem board!

hast du deine "alten" regeln geloescht,bevor du dien neuen erstellt / geschrieben hast?
stichwort: flush

in der regel erlaubt du doch den zugriff...

honkstar
19.11.07, 13:12
Hallo,

ich würde sagen, er macht es zumindest für die filter-table

# Alle bestehenden Regeln löschen
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

aber für die nat-table solltest du es noch extra löschen:

iptables -t nat -F

Kannst du ansonsten mal sagen, wie dein Netz aussieht?
Ich vermute mal, dass eth1 die Karte ist, die nach "draussen" geht, und eth0 für das interne Netz?!?
Wo hängt denn der Windows-PC? An eth0 oder irgendwo an eth1?

Gruß
Daniel

bernhard_pauler
19.11.07, 14:36
Wie dumm von mir - das hätte ich erläutern sollen...

Also das Skript läuft auf einem Rechner, der primär als Firewall dient. An ihm ist direkt der Router für den Internetzugang über eth0 verbunden; der Schnittstelle (eth0) ist eine öffentliche Adresse zugewiesen.
Über eth1 ist das interne Netz angebunden. Der Windows-Rechner ist aber derzeit nicht im Netzwerk eingebunden. Ich teste von dort über eine mobile Internetanbindung (UMTS).

Danke für eure Antworten.

Bernhard

honkstar
19.11.07, 18:40
Hast du einen Router oder ein Modem (DSL) an der Schnittstelle eth0?
Wenn es ein Router ist, würde ich sagen, dass du den Router scannst und nicht deine FW. Wenn es ein Modem ist, und dein PC das Routing etc. übernehmen soll, sieht es natürlich anders aus.
bei genauerer Betrachtung deiner FW sieht für mich aktuell noch einiges seltsam aus.
Du nutzt zum Beispiel kein Stateful Inspection, also kann deine FW gar nicht erkennen, welche Pakete zusammengehören (Stichwort iptables -m state --state NEW...)
Ansonsten solltest du mal
iptables -A INPUT -p tcp ! --syn -j ACCEPT deaktivieren, ich glaube, dass macht einiges strubbelig.

Gruß
Daniel

PS: Du scannst aber schon den richtigen Rechner?

bernhard_pauler
20.11.07, 11:44
Das Handbuch bezeichnet das Gerät als "G.SHDSL Router". Die Idee, dass ich eigentlich den Router scanne, hatte ich auch schon. Allerdings bin ich von dem Gedanken wieder abgekommen, da ich die öffentliche Adresse scanne, die ich dem Firewall-Rechner auf eth0 selbst vergeben habe. Als Gateway ist eine andere öffentliche Adresse eingetragen, die glaube ich, dem Router gehört (wem sonst?).

"Stateful Inspection". Oioi - muss mich wohl noch mehr mit iptables beschäftigen. :(

Danke für deine Mühe!

PS: Scanne genau die Adresse, die ich dem Firewall-Rechner zugeordnet habe. :)