• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

IPTABLES + UDP ports sperren

Hallo alle mitnander!

Ich will mit Iptables einzelne Ports sperren. z.B 445 (Microsoft-DS), dies funktioniert einwandfrei mit tcp
Code:
iptables -A INPUT -i dsl0 -p tcp --dport 445 -j DROP
doch dies funktioniert nicht mit udp. Daher meine Frage was ich eintragen muss damit er unter udp den port sperrt
 
das is mir schon klar das ich dort udp einstellen muss , doch dies hat keinerlei effekt. Der Port Scanner kann trotzdem zum dahinterliegenden server connecten.

Kann dies duch das mit dem interface duchgeführten masquerading zum inernen netzwerk liegen?
Wenn ja wieso funktioniert es dann mit tcp?

Danke für die schnelle Hilfe, aber das hätt ich erwähnen sollen, dass ich das mit dem udp schon wusste! :)
 
Portscan und udp ist so ne sache... wie willst Du da 'connecten' wo udp ja gar keine connections macht...

Teste mal mit ethereal oder tcpdump ob da WIRKLICH was durchkommt
 
Du schreibst "dahinterliegender" Rechner, d.h. Dein Linux-Rechner ist Router?

Wenn ja, mußt Du in der FORWARD chain filtern.
 
hast du mal mit src dein externes iface versucht diese udp zugriffe zu blockn? wichtig ist auch das die verbindung zu erst von einem rechner aus deinem netzwerk aufgebaut worden sein muss und dein router dann erst verbindungen in dein netz zulässt.
 
hallo, danke für die antworten.

Ja mein rechner ist ein router der mit einem dsl interface (extern) und einer normalen netzwerkkarte (intern) arbeitet.
Es soll keine Verbindung zum Router Server auf den bereits erwähnten Portsvom dsl interface (dsl0) möglich sein, da dort einige Dienste laufen. Dies funktioniert auch nach Portscans von einer anderen globalen IP bei tcp. Doch mit upd wird der Port weiterhin als offen ausgewiesen.

@spoensche: hilf mir mal bitte was soll src sein und wie kann man da einzelne Ports filtern?
 
Auf einen Portscan antworten kann ja nur ein Rechner. Dieser Rechner müßte dann aus dem Internet erreichbar sein.
Zur Filterung benutzt man auch stateful filtering.
D.h. eingehend filtere ich nicht nur nach Protokollen und IPs, sondern auch nach dem Status der Pakete.
z.B.
von außen nur Pakete mit diesem Status erlaubt
-m state --state ESTABLISHED,RELATED
von innen hingegen erlaubt:
-m state --state NEW,ESTABLISHED,RELATED
Das heißt ein Rechner im LAN kann so jede beliebige Verbindung in das Internet aufbauen. Aus dem Internet werden nur Pakete angenommen zu denen der Router einen passenden Eintrag in seiner /proc/net/ip_conntrack Tabelle hat.

Zusätzlich kannst Du natürlich noch Regeln aufstellen nur bestimmte Protokolle, IPs und Ports zu erlauben.

Schau auch noch mal nach Deinen iptables Regeln, unterscheide auch INPUT und FORWARD. Dazu spielt NAT auch noch eine Rolle bei der Erreichbarkeit von LAN Rechnern aus dem Internet.

Schau Dir auch die Doko zu Deinem Portscanner an. Scans von UDP Ports werden zum Teil mißverständlich angezeigt.

PS: Du kannst auch nicht alle UDP Ports schließen. DNS benutzt UDP und willst ja schließlich die Antwortpaketet auf Deine DNS-Anfragen annehmen wollen. Dazu brauchst Du stateful filtering.
 
danke frankie aber meine NAT funktioniert einwandfrei und ich hab auch diverse regeln in meinem FORWARD chain. Dort sind weitaus strengere Regeln gesetzt als ich sie hier beschreibe.
Ich will einfach nur manche udp ports schließen. Dies soll aber nur zum Router geschehen, daher nur das INPUT chain.
Und:
PS: Du kannst auch nicht alle UDP Ports schließen. DNS benutzt UDP und willst ja schließlich die Antwortpaketet auf Deine DNS-Anfragen annehmen wollen. Dazu brauchst Du stateful filtering.
Wo schrieb ich das? *Ist mir was entgangen* :?:

Deswegen ja auch nur einzelne Ports und nicht alles auf drop.
---------------
Aber danke für den Tip mit der Doku!

PS: Wenn ich:
Code:
iptables -A INPUT -i dsl0 -p udp --dport 445 -j REJECT
verwende zeig mir der Scanner an das der Port geschlossen ist. Aber eigentlich sollte es auch mit DROP funktionieren und zudem sicherer sein, oder?
 
Offenbar verwendest Du einen "kaputten" Scanner für den ein UDP Port nur closed ist, wenn er ein ICMP-Antwortpaket erhält. Das sollte aber in der Doko stehen.

Wenn Du DROP machst werden die Pakete verworfen, machst Du REJECT wird ein ICMP Antwortpaket an den Absender geschickt.

Normalerweile (es gibt Ausnahmen) sollte man alle nicht angeforderten Pakete aus dem Internet dropen. Nur Ping sollte eingeschaltet sein.
Im LAN sollte man normalerweise schon mit REJECT arbeiten, sonst kann es sinnloses Warten auf TimeOuts geben.

Ein ordentlicher Scanner ist nmap, jetzt in Version 4.
Siehe dazu auch die Pressemeldung:
"Auch das Fälschen von MAC-Adressen unterstützt Nmap nun auf der Kommandozeile. Um zukünftig weniger Fehlalarme bei UDP-Scans zu erzeugen, gibt der Schnüffler als Ergebnis "open|filtered" anstatt "open" aus, wenn er keine Antwort erhält; vor allem Anfänger waren durch das alte Verhalten leicht zu irritieren. "
 
Bei UDP funktionieren die Scanner meines Wissens nicht. Es kommt natürlich auf den Scanner an, aber bei TCP können die den Status ja am Syn/Ack/Reset Flag erkennen. Bei UDP gibts sowas nicht.

D.h. egal ob der Port offen oder geschlossen ist, es kommt normalerweise kein Paket zurück (es sei denn die Applikation die darauf hört übernimmt das). Ergo kann auch ein Scanner nicht prüfen ob ein Port offen oder geschlossen ist.
 
Die meisten Aplikationen, die auf UDP-Port lauschen, werden kaputte Scanpakete wegwerfen und nichts zurückschicken.

An Ports wo kein Programm lauscht müßte nach RFC eigentlich ein ICMP Paket zurückgeschickt werden. Wenn man die Anzahl der Pakete limitiert kann man das auch problemlos in ipatbles einbauen. Es kann sogar verhindern, dass irgendwelche Leute, die Portscanner Ergebnisse falsch interpetieren, einen sinnlos auf die UDP-Ports hämmern.

Es ist eine Frage wie man die Scanergebnisse interpretiert. Die Dokumentation erklärt eigentlich wann open/filtered für einen UDP-Port angezeigt wird. Wer DROP macht hat halt alle Ports opened/filtered. Wer REJECT macht hilft dem Scanner closed anzuzeigen.

-sU bei nmap
UDP scan works by sending an empty (no data) UDP header to every targeted port. If an ICMP
port unreachable error (type 3, code 3) is returned, the port is closed. Other ICMP
unreachable errors (type 3, codes 1, 2, 9, 10, or 13) mark the port as filtered.
Occasionally, a service will respond with a UDP packet, proving that it is open. If no
response is received after retransmissions, the port is classified as open|filtered. This
means that the port could be open, or perhaps packet filters are blocking the
communication. Versions scan (-sV) can be used to help differentiate the truly open ports
from the filtered ones.
 
Oben