AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Server Protector für TCP & HTTP Server
Thema durchsuchen
Ansicht
Themen-Optionen

Server Protector für TCP & HTTP Server

Ein Thema von gsh · begonnen am 4. Nov 2009 · letzter Beitrag vom 8. Nov 2009
Antwort Antwort
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

Server Protector für TCP & HTTP Server

  Alt 4. Nov 2009, 11:43
Hallo Leute,

ich schreibe im Moment einen Service der einen TCP und einen HTTP Server verwaltet. Das ganze läuft schon halbwegs und ist auch schon im Internet verfügbar.
Leider musste ich schon nach 4 Stunden feststellen das vorallem auf dem HTTP Server viele Zugriffe von weit entfernten Länder kommen. Somit möchte ich nun einen Server Protector schreiben der Angriffe automatisch erkennt und die IP dann auf eine Blackliste setzt.

Ich hab mir das mal ungefähr so überlegt:
Delphi-Quellcode:
type
  TServerProtector = class(TObject)
  private
  public
    function CheckIPBanStatus(pIP, pAction: String) : integer;
  end;
Wenn jetzt eine Verbindung beim TCP oder HTTP Socket aufgebaut wird wird die Function z.b. so aufgerufen:
Delphi-Quellcode:
case CheckIPBanStatus('1.2.3.4', 'tcp_connect') of
-1 : //Erlaubt
0: //Aus irgendeinem Grund gebannt, Verbindung wird abgebrochen
1: //Aus irgendeinem Grund gebannt, Verbindung wird abgebrochen
..
end;
Die Function hat nun folgende Aufgaben:
Zuerst überprüft sie ob der User wirklich gebannt ist. => wenn ja dann gibt sie den Bangrund zurück
=> wenn nein dann speichert sie in die Datenbank das diese IP einen Zugriff hatte.
Sollte dieser Zugriff dann zu einer Sperrung führen (z.b. 5 tcp connects in 10 sekunden) dann wird der ban eingetragen und der Bangrund zurückgegeben.
Wenn alles in Ordnung ist gibt die Function -1 zurück.

Zur speicherung in der DB hab ich mir folgendes überlegt:
SQL-Code:
--
-- Definition of table `ipbanlist`
--
CREATE TABLE `ipbanlist` (
  `ip` varchar(15) COLLATE latin1_german1_ci NOT NULL,
  `action` varchar(50) COLLATE latin1_german1_ci DEFAULT NULL,
  `firstactiontime` datetime DEFAULT NULL,
  `bannedtime` datetime DEFAULT NULL,
  `unbanntime` datetime DEFAULT NULL,
  `reason` int(10) unsigned DEFAULT NULL,
  KEY `unbanntime` (`unbanntime`),
  KEY `ip` (`ip`),
  KEY `action` (`action`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci COMMENT='IPBanList';
So nun zu meinen Fragen:
Was haltet ihr von dem System?
Hab ich irgendwo einen Denkfehler oder was wichtiges vergessen?
Habt ihr Ideen, Verbesserungsvorschläge?
Im Moment merke ich mir nur die firstactiontime also die Zeit wo der Client den ersten Versuch gestartet hat. Wenn jetzt die Zeit nicht mehr aktuell ist dann muss ich die Zeile löschen und von vorne anfangen zu zählen. Hat jemand eine bessere Idee wie man dies lösen könnte?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Server Protector für TCP & HTTP Server

  Alt 4. Nov 2009, 11:53
Du bräuchtest eine Möglichkeit, ganze Netze zu sperren.
Diese Liste wird manuell gepflegt und enhält Einträge in dieser Form:
Code:
204.177.40.77   * Einzelne IP
172.16.0.0/12   * ein ganzes Netzwerk
198.18.0.0/15   * 198.18.0.0 bis 198.19.255.255
Zur Schreibweise mit dem / siehe: http://de.wikipedia.org/wiki/Netzmaske
Ich würde an deiner Stelle sogar damit beginnen und deine datenbankgestützte Lösung auf Später verschieben.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: Server Protector für TCP & HTTP Server

  Alt 4. Nov 2009, 13:52
Zitat von sx2008:
Du bräuchtest eine Möglichkeit, ganze Netze zu sperren.
Diese Liste wird manuell gepflegt und enhält Einträge in dieser Form:
Code:
204.177.40.77   * Einzelne IP
172.16.0.0/12   * ein ganzes Netzwerk
198.18.0.0/15   * 198.18.0.0 bis 198.19.255.255
Zur Schreibweise mit dem / siehe: http://de.wikipedia.org/wiki/Netzmaske
Ich würde an deiner Stelle sogar damit beginnen und deine datenbankgestützte Lösung auf Später verschieben.
Warum sollte ich ganze Netze sperren? Mein Hauptproblem sind ja nicht große Bot-Netze die alle meinen Server attakieren sondern User die denken sie müssen einen auf Scriptkiddie machen und z.b. ein DDos Tool an meinem Server "austesten".
Deswegen soll der Server sich automatisch vor Attacken, Flooding und vieles mehr schützen können.
(Danke aber ich weiß was Netzmasken sind)
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#4

Re: Server Protector für TCP & HTTP Server

  Alt 5. Nov 2009, 20:00
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#5

Re: Server Protector für TCP & HTTP Server

  Alt 8. Nov 2009, 15:55
hmm heißt das das Konzept passt so weil keiner etwas gegenteiliges sagt?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz