PDA

Bekijk Volledige Versie : Server word telkens gecrashed door exploit



full-Patrick
30/03/08, 18:37
Beste,

Op het moment draai ik een MTA:Race server, en de developers willen niet meer een exploit repareren voor deze versie. Nu ben ik erachter gekomen dat de server telkens wordt gecrashed door een leeg udp packet. Is er misschien een firewall die alleen die pakketjes kan filteren?

Het betreft hier windows en linux servers.

Met vriendelijke groet,
Patrick

Mikejuh!
30/03/08, 18:47
Is dit niet verholpen in mta:dm? Daarmee kan je toch ook de race mod draaien?

full-Patrick
30/03/08, 19:05
Het is daar wel verholpen, maar sommige klanten willen gewoon niet overstappen. Mede dankzij de bugs van de race resource in MTA:DM.

Iemand? dr is namelijk een beetje haast bij

Stewie
31/03/08, 13:54
Je blijft deze problemen altijd houden met oude versies van gameserver software.

bvankuik
31/03/08, 16:40
Het zal wat moeite kosten om je firewall op UDP pakketjes met lengte 0 te filteren. Maar als je traffic dumpt en weet vanaf welke IP adressen deze pakketjes worden gestuurd, dan kun je wellicht uitfilteren per IP.

Dit is een leuk probleem. Je zou onder linux het volgende kunnen proberen:

sudo iptables -A INPUT -p udp --dport 6500 -m length --length 28 -j REJECT

Waarom die lengte 28 is, kan ik nog niet beredeneren. Het is natuurlijk UDP over IPv4. UDP heeft een vaste headerlengte. Maar IPv4 heeft een variabele headerlengte. Anyway, ik heb bovenstaande getest met netcat als volgt:

Server opgezet op machine 1:

$ nc -l -u -p 6500

Start ook op machine 1 een traffic dump:

$ sudo tcpdump -X -vv "port 6500"

Client opgezet op machine 2:

$ nc -u machine1.jouwdomein.nl 6500

Type een enter. Je verstuurt nu een UDP pakket met als enige inhoud een \n. tcpdump geeft bij mij dan:


16:20:43.898341 IP (tos 0x0, ttl 64, id 65431, offset 0, flags [DF], proto: UDP (17), length: 29) navi.sron.nl.6500 > chara.sron.nl.36237: [bad udp cksum 26d!] UDP, length 1
0x0000: 4500 001d ff97 4000 4011 ca51 ac10 8cb7 E.....@.@..Q....
0x0010: ac10 8c0e 1964 8d8d 0009 7101 0a .....d....q..


Lengte 29 wil dus zeggen: als ik er 1 afhaal dan zit ik op een leeg UDP pakket.

Als die lengte niet werkt, dan kun je ook spelen met ranges; bv. --length 20:30 wil zeggen dat alles tussen 20 en 30 gereject moet worden.

Dit is een leuk probleem. Je zou onder linux het volgende kunnen proberen:

sudo iptables -A INPUT -p udp --dport 6500 -m length --length 28 -j REJECT

Waarom die lengte 28 is, kan ik nog niet beredeneren. Het is natuurlijk UDP over IPv4. UDP heeft een vaste headerlengte. Maar IPv4 heeft een variabele headerlengte. Anyway, ik heb bovenstaande getest met netcat als volgt:

Server opgezet op machine 1:

$ nc -l -u -p 6500

Start ook op machine 1 een traffic dump:

$ sudo tcpdump -X -vv "port 6500"

Client opgezet op machine 2:

$ nc -u machine1.jouwdomein.nl 6500

Type een enter. Je verstuurt nu een UDP pakket met als enige inhoud een \n. tcpdump geeft bij mij dan:


16:20:43.898341 IP (tos 0x0, ttl 64, id 65431, offset 0, flags [DF], proto: UDP (17), length: 29) machine2.6500 > machine1.36237: [bad udp cksum 26d!] UDP, length 1
0x0000: 4500 001d ff97 4000 4011 ca51 ac10 8cb7 E.....@.@..Q....
0x0010: ac10 8c0e 1964 8d8d 0009 7101 0a .....d....q..


Lengte 29 wil dus zeggen: als ik er 1 afhaal dan zit ik op een leeg UDP pakket.

Als die lengte niet werkt, dan kun je ook spelen met ranges; bv. --length 20:30 wil zeggen dat alles tussen 20 en 30 gereject moet worden.

full-Patrick
31/03/08, 18:58
Bedankt, dat zal ik straks even proberen in een virtuele machine :). Is er misschien een soortgelijke oplossing voor windows?

Dankje, het werkt. Nu nog iets vinden voor windows... is er niet iets zoals iptables voor windows?

Mr-Chill
14/04/08, 19:11
Ik draai bij een bedrijfje ook een MTA:Sa server... Die ook vaak crasht door een exploit.
Die exploit van lege UDP pakketjes die was toch al opgelost? in v 1.1.1
Nu komt het door een Fake player die de server joint...

Je kan het verhelpen door linux om te bouwen maar weet ik het fijne niet van (spijtig)

Dus iemand een oplossing? Echt irr die exploits
Is jou server met dat scriptje niet meer gecrasht?