PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IPTABLES Edonkey sperren



Sayonara
28.11.03, 23:16
Ich hab ein IPTABLES Script von Harry auf meinen Router laufen. Masquerading ist aktiviert, damit Rechner aus der LAN ins Internet kommen. Nur nervt mich die Nutzung von Edonkey innerhalb der LAN. Wie kann ich das unterbinden? Eigentlich müsste doch einfach alle Pakete die Source oder Destination auf Port 4662? haben einfach droppen lassen. Wie müsste da entsprechende Regel in IPTABLES aussehen, um auch NAT Pakete zu filtern?

klemens
28.11.03, 23:39
würd es einmal damit versuchen:
iptables -t nat -A PREROUTING -p tcp (oder udp) --dport 4662 -j DNAT --to 127.0.0.1

Was ich nicht weiss, ist ob diese Filesharing-Programme, nicht auch gerne ihren Weg finden ...

edit:

Über die FORWARD-Kette sollte es eigentlich auch gehen:
iptables -A FORWARD -p tcp --dport 4662 -j REJECT

Sayonara
29.11.03, 00:12
funktioniert leider nicht :(
Ich hab mal mit Ethereal das ppp0 Device des Routers überwacht. Ausgehende Edonkey Pakete gehen immer an TCP Port 4662. Eingehende Pakete gehen an unterschiedliche Ports am Router. Ein andere Scan an eth0 des Router zeigt aber, das sie and TCP Port 4662 des Clients in der LAN weitergeleitet werden. Genau diese Pakete sollen gedroppt werden! Es soll keine Traffic mir rein oder raus gehen mit diesem Drecks-Donkey! Mein IPTABLES Script sie so aus:


case "$1" in
start)
echo "Starte IP-Paketfilter"

# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
# modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# MY_REJECT-Chain
iptables -N MY_REJECT

# MY_REJECT fuellen
iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
iptables -A MY_REJECT -p icmp -j DROP
iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

# MY_DROP-Chain
iptables -N MY_DROP
iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP "
iptables -A MY_DROP -j DROP

# Alle verworfenen Pakete protokollieren
iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID "
iptables -A FORWARD -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "FORWARD INVALID "

# Korrupte Pakete zurueckweisen
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

# Stealth Scans etc. DROPpen
# Keine Flags gesetzt
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP

# SYN und FIN gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

# SYN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

# FIN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

# FIN ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

# PSH ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

# URG ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j MY_DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Maximum Segment Size (MSS) für das Forwarding an PMTU anpassen
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Connection-Tracking aktivieren
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ! ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# HTTP
iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 80 -j ACCEPT

# SSH
#iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 22 -j ACCEPT

# POP3
iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 110 -j ACCEPT

# FTP
#iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 21 -j ACCEPT

# LAN-Zugriff auf eth0
iptables -A INPUT -m state --state NEW -i eth0 -j ACCEPT

# Default-Policies mit REJECT
iptables -A INPUT -j MY_REJECT
iptables -A OUTPUT -j MY_REJECT
iptables -A FORWARD -j MY_REJECT

# Routing
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# Masquerading
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# SYN-Cookies
# echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

# Stop Source-Routing
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

# Stop Redirecting
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

# Reverse-Path-Filter
for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

# Log Martians
for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

# BOOTP-Relaying ausschalten
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

# Proxy-ARP ausschalten
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

# Ungültige ICMP-Antworten ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

# ICMP Echo-Broadcasts ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

# Max. 500/Sekunde (5/Jiffie) senden
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

# Speicherallozierung und -timing für IP-De/-Fragmentierung
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time

# TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Maximal 3 Antworten auf ein TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1

# TCP-Pakete maximal 15x wiederholen
echo 15 > /proc/sys/net/ipv4/tcp_retries2

;;

klemens
29.11.03, 00:36
Die Regel muss vor masquerading erstellt werden und das connection-tracking hätte ich auch in Verdacht. Baut sich edonkey ev. über eine Webseite auf? - Sodass die Verbindung ev. schon besteht? (Sorry kenne edonkey selbst nur vom Hörensagen.)

Das macht schon viel auf:

# Connection-Tracking aktivieren
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ! ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Setz die Regeln davor!

Sayonara
29.11.03, 00:56
AAAAHHHHRRRR, ich hasse diese EDonkey!!!!! :mad:
Ich hab die Regeln davor gesetzt und die Firewall neu gestartet. Eine Überprüfung mit Ethereal zeigt mir an, das der Traffic auf und von Port 4662 eingestellt wurde. :) Es sind jediglich nur noch ein paar SYN Pakete des Donkey Clients, die bei dem Router eintreffen. Aber keine Antwort. :D
Dafür kracht es jetzt auf anderen Ports. Anscheinend sucht sie der Donkey Müll einfach andere Ports, wenn die Standardports nicht mehr gehen. :mad:

klemens
29.11.03, 01:09
Diese Dinge sind hundig (hatte bisher nur Erfahrung mit kazaa)
Sind damals so vorgegangen, dass wir (auf windowsrechner) kazaa laufen liessen und netstat mitrennen liessen. Dann einfach IP für IP sperren. Irgendwann hatten wir das Ding dann in den Knien. Möcht aber nicht die Hand ins Feuer legen, dass wir alle Hintertüren erwischt hatten.

Du kannst auch den umgekehrten Weg gehen: Alles verbieten und nur die Ports öffnen, die gebraucht werden. Und hoffen, dass da einer nicht zum tunneln beginnt ...

GrafKoks
29.11.03, 01:36
Den 4662-Port-Traffic vom Router aus auf z.B. 1Kb/s runtersetzen, geht das nicht irgendwie? :D
Dann würde Donkey zwar noch laufen, aber bei der Geschwindigkeit wird das keiner mehr nutzen...

LordDarkmage
29.11.03, 07:22
Der ED2k "sucht sich nicht seinen Weg" sonder die Ports werden vom User eingestellt. Wenn der User merkt, dass auf Port 4662 die Türen zu sind, dann setzt der den Esel auf 4663 oder sonstwo... Einzig und alleine hilft da nur mal ne dicke fette Schelle dem User.

MfG
LordDarkmage

leon
29.11.03, 09:20
Du könntest natürlich auch den wahnsinnigen Weg gehen und alle Ports auf beiden Seiten dicht machen. Für das Web lässt Du einen Proxy auf dem Router laufen. andere wichtige Dienste auf dem Router lässt Du von beiden Interfaces frei die anderen Dienste auf anderen Servern die von aussen erreicht werden müssen Forwardest Du einfach durch.
So sind alle Ports erstmal dicht und nur die gebraucht werden hast du offen.
Du solltest aber wissen was in Deiner Firma noch alles nach draussen muss. z.B. Meeting Software, wenn kein eigener Mailserver vor Ort dann halt POP und SMTP.
Ist eine heiden Arbeit, aber Du hast ein gutes Gewissen, dass alles dicht ist.




Gruß Leon

Sayonara
29.11.03, 09:27
Original geschrieben von LordDarkmage
Der ED2k "sucht sich nicht seinen Weg" sonder die Ports werden vom User eingestellt. Wenn der User merkt, dass auf Port 4662 die Türen zu sind, dann setzt der den Esel auf 4663 oder sonstwo... Einzig und alleine hilft da nur mal ne dicke fette Schelle dem User.

MfG
LordDarkmage

Wenn das nur so wäre... Ich hab aber letzte Nacht ganz andere Erfahrungen gemacht. Der ED2k Client in der LAN lief ganz autonom ohne einwirken des Users. Ich hab dann die mit Ethereal emittelten Ports auf dem das Edonkey Protokol angwant wurde gesperrt und sogar meine Inet Verbindung neu gewählt, damit ich eine neue IP Addresse bekommen würde, und der Donkey Client seine Verbindungen erneut initialisieren muss. Das hat er dann auch nach wenigen Minuten wieder geschaft, nur diesmal auf anderen Ports. Die hab ich dann auch zu gemacht, und das Spiel wiederhohlt. Doch es finden immer wieder einen neuen Weg. Ich hab jetzt komplett TCP und UDP von 4660-4665 also Destination Port gesperrt. Damit sollte es eigentlich nicht möglich sein, sich überhaupt an einem Server anzumelden. Es hat aber wieder einen Weg gefunden und ich bin total genervt von dem ****** :(

Link
29.11.03, 09:35
Original geschrieben von LordDarkmage
Der ED2k "sucht sich nicht seinen Weg" sonder die Ports werden vom User eingestellt. Wenn der User merkt, dass auf Port 4662 die Türen zu sind, dann setzt der den Esel auf 4663 oder sonstwo... Einzig und alleine hilft da nur mal ne dicke fette Schelle dem User.

MfG
LordDarkmage

Richtig! Der Esel (unter welchem Prog) auch immer sucht sich nicht selbst nen freien Port.
Viele User stellen andere Ports ein, z.B. Port 80. Da man somit kein Ärger mit seinem Provider hat. Denn zeigt mir mal nen Provider der den Port 80 sperrt ;)

MfG, Link

LordDarkmage
29.11.03, 09:46
ich würde da evtll noch nen anderen Weg gehen. Schnapp dir den User und sag ihm/ihr er/sie soll das mit der "filesharerei" mal hübsch sein lassen, da du sonst JEDEN Port sperren wirst auf dem du mal den Esel entdeckt hast. Wenn der Troll sich das dann "schaulerweise" auf nen wichtigen Port (wie Link schon sagte auf Port 80) legt, dann kann er mit seiner Internetverbindung einpacken.

OOOOooooder mach Trafficshaping... Dann ist das Thema sowieso vom Tisch. Ich denke mal, dass dich nervt, wenn die Leitung zu ist oder? Gibst du demjeningen 20 down und 5 up und Ende im Gelände.

MfG
LordDarkmage