Ich habe ein Problem mit einem Spieleserver. Dieser wird attackiert, indem sich jemand alle paar ms auf dem Server anmeldet um sich ins Spiel einzuwählen. Der Server bzw. das Spiel erkennt dieses Anmelden und reserviert ihm einen Slot, so dass der Spieler Zeit hat, das Level zu laden. Der Attackierer bricht das Anmelden ab und beginnt neu. Somit reserviert er sich ständig einen Slot und das Spiel ist damit voll, da alle Slots reserviert sind.
Ich brauche ein Skript das folgendes tut:
Code: Alles auswählen
Lausche am Port X.
Pro anmelden, speichere IP.
Prüfe, ob diese IP innerhalb der letzten Y Zeiteinheiten sich bereits angemeldet hat.
Falls ja, sperre diese IP für Y Zeiteinheiten.
Dann muss diese (Pseudo-)Datenbank auch alle paar Zeiteinheiten aktualisiert werden, also die gesperrten IPs wieder entsperrt werden.
Ich habe leider gar keine Ahnung wie man mit einem Skript an einem Port lauscht. Ich glaube auf UDP-Packages muss man aufpassen. Gibt es weitere Kenngrößen? Wenn ein Spieler aktiv spielt, werden ja weiterhin Packages verschickt. Wie sich so eine Anmeldung vom eigentlichen Spielen unterscheidet, weiß ich (noch) nicht.
Die (Pseudo-)DB zu bereinigen wäre wohl mit einem cronjob am besten? Aber da kommt das Problem, wenn sowohl der cronjob als auch das Skript gleichzeitig auf die DB zugreifen.
Ich bin für jegliche Hilfe und Anregungen offen, da ich noch total bei Null in der Luft hänge.
Danke
mfg
Stephan