AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi mini Firewall programmieren ??
Thema durchsuchen
Ansicht
Themen-Optionen

mini Firewall programmieren ??

Ein Thema von Gigant02 · begonnen am 26. Aug 2006 · letzter Beitrag vom 20. Feb 2009
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#31

Re: mini Firewall programmieren ??

  Alt 25. Jun 2008, 15:29
Moin moin,

in dem du das Interface mit Parameter PF_ACTION_DROP erstellst. Also   PfCreateInterface(0, PF_ACTION_DROP, PF_ACTION_DROP, False, False, Handle_Interface); Jetzt wird von Haus aus alles geblockt, nur die Pakete die deinen Regeln entsprechen, werden durchgelassen.
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
MorphieX

Registriert seit: 6. Jan 2007
10 Beiträge
 
Delphi 2007 Professional
 
#32

Re: mini Firewall programmieren ??

  Alt 25. Jun 2008, 15:41
Okay, wie ich alle Ports blockiere, wusste ich schon, nur haperts bei mir daran, spezielle Ports wieder freizugeben.

Wie sieht denn so ein "Filter" aus, der spezielle Ports durchlässt?
In deinem Beispiel auf Seite 2 war der Filter ja dafür verantwortlich, dass die Ports zu einer bestimmten IP "geforwardet" *g* werden, das kann ich hier sicher so nicht verwenden, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#33

Re: mini Firewall programmieren ??

  Alt 25. Jun 2008, 15:48
Edit: OMG...da hingen ja noch ein paar Seiten hinten dran...sorry...Bis ebens tand hier noch obsoleter, überflüssiger Quatsch.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#34

Re: mini Firewall programmieren ??

  Alt 25. Jun 2008, 15:54
Doch kannst du. Wenn du genau das Beispiel nimmst und nur PF_ACTION_FORWARD durch PF_ACTION_DROP ersetzt,
werden alle Pakete die von irgendeiner IP mit QuellPort 80 kommen durchgelassen. Und alle Pakete die deinen
Rechner verlassen wollen und als Zielport 80 haben, werden ebenfalls durchgelassen.

Wenn du genau dieses Beispiel testen willst, solltest du auch noch den Port 53 dazunehmen, da sonst die
Namensauflösung nicht funktioniert (ist ja ebenfalls geblockt).
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#35

Re: mini Firewall programmieren ??

  Alt 26. Jun 2008, 09:33
Hmmm, dann bin ich da wohl zu blööd zu
Delphi-Quellcode:
procedure netzsperren(MyIP: String);
var
   IpLocal : TIpBytes;
   ipOther : TIpBytes;
   ipOtherMask : TIpBytes;
   ipMy : TIpBytes;
   ipMyMask : TIpBytes;
begin
   if (MyIP <> '') and Not Assigned(Handle_Interface) then begin
      FillChar(IpLocal, 4, #0);
      IpLocal := StrToIpBytes(MyIP);

      PfCreateInterface(0, PF_ACTION_DROP, PF_ACTION_DROP, False, False, Handle_Interface);
      PfBindInterfaceToIPAddress(Handle_Interface, PF_IPV4, @ipLocal);


      ipMy := StrToIpBytes(PChar(MyIP));
      ipMyMask := StrToIpBytes('255.255.255.255');
      //
      ipOther := StrToIpBytes('0.0.0.0');
      ipOtherMask := StrToIpBytes('0.0.0.0');

      // Eingehende Pakete
      ZeroMemory(@ipFltIn, SizeOf(ipFltIn));
      ipFltIn.dwFilterFlags := 0;
      ipFltIn.dwRule := 0;
      ipFltIn.pfatType := PF_IPV4;
      ipFltIn.fLateBound := 0;
      ipFltIn.dwProtocol := FILTER_PROTO_TCP;

      ipFltIn.wDstPort := FILTER_TCPUDP_PORT_ANY;
      ipFltIn.wDstPortHighRange := FILTER_TCPUDP_PORT_ANY;
      ipFltIn.DstAddr := @ipMy;
      ipFltIn.DstMask := @ipMyMask;
      ipFltIn.wSrcPort := 3389;
      ipFltIn.wSrcPortHighRange := 3389;
      ipFltIn.SrcAddr := @ipOther;
      ipFltIn.SrcMask := @ipOtherMask;

      // Ausgehende Pakete
      ZeroMemory(@ipFltOut, SizeOf(ipFltOut));
      ipFltOut.dwFilterFlags := 0;
      ipFltOut.dwRule := 0;
      ipFltOut.pfatType := PF_IPV4;
      ipFltOut.fLateBound := 0;
      ipFltOut.dwProtocol := FILTER_PROTO_TCP;
      ipFltOut.wDstPort := 3389;
      ipFltOut.wDstPortHighRange := 3389;
      ipFltOut.DstAddr := @ipOther;
      ipFltOut.DstMask := @ipOtherMask;
      ipFltOut.wSrcPort := FILTER_TCPUDP_PORT_ANY;
      ipFltOut.wSrcPortHighRange := FILTER_TCPUDP_PORT_ANY;
      ipFltOut.SrcAddr := @ipMy;
      ipFltOut.SrcMask := @ipMyMask;

      PfAddFiltersToInterface(Handle_Interface, 1, @ipFltIn, 1, @ipFltOut, nil);
      //portfreigeben(3389,MyIP); //RDP
      {portfreigeben(137,MyIP); //NetBIOS Name Service
      portfreigeben(139,MyIP); //NetBIOS File and Printer Sharing
      portfreigeben(445,MyIP); //NetBIOS File and Printer Sharing
      portfreigeben(135,MyIP); //RPC
      portfreigeben(1025,MyIP); //RPC
      portfreigeben(2049,MyIP); //NFS
      portfreigeben(1080,MyIP); //SOCKS
      portfreigeben(7,MyIP); //PING Request
      portfreigeben(8700,MyIP); //DER SERVER!!!}

   end;
end;
Da sollte er doch eigentlich alle Ports blockieren, außer 3389, richtig?
Bin über RDP auf dem Rechner drauf, auf dem ich das Programm ausführe, die Verbindung wird trotzdem unterbrochen...
Gedankenfehler von mir?
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#36

Re: mini Firewall programmieren ??

  Alt 26. Jun 2008, 10:34
Moin moin,

ja sollte es und macht es bestimmt auch. Ich kenne mich mit dem RDP Protokoll nicht wirklich aus, evtl. wird
aber der Port 3389 nur zur Verbindung genutzt und die Session läuft über einen anderen Port?

Ich habe dir die DropAllU.pas mal so angepasst, das nur noch Namensauflösung und Port 80 funktionieren. Wenn das
auch nicht bei dir funktionieren sollte, dann liegts an ...
Angehängte Dateien
Dateityp: pas dropallu_170.pas (7,5 KB, 18x aufgerufen)
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#37

Re: mini Firewall programmieren ??

  Alt 26. Jun 2008, 10:46
Vielen Dank für deine Mühe,
hat allerdings ebenfalls nicht funktioniert, komme, sobald ich InstallFW aufrufe, nicht über Port 80 raus.

Was mir aber aufgefallen ist (wurde glaub ich auch schon ne Seite vorher besprochen)...
bei
Delphi-Quellcode:
type
  PFFORWARD_ACTION = Integer;
  PPFFORWARD_ACTION = ^PPFFORWARD_ACTION;
bekomme ich folgende Meldung:
Zitat:
[DCC Fehler] DropAllU.pas(24): E2086 Typ 'PPFFORWARD_ACTION' ist nicht vollständig definiert
[DCC Fehler] Project1.dpr(6): F2063 Verwendete Unit '..\..\..\Desktop\DropAllU.pas' kann nicht compiliert werden

Hab das dann mal in
Delphi-Quellcode:
type
  PFFORWARD_ACTION = Integer;
  PPFFORWARD_ACTION = ^PFFORWARD_ACTION;
geändert, dann ist die Meldung weg.

hat das vielleicht damit etwas zutun?



Ich habe bestimmt irgendwas übersehen...
IP: 192.168.44.241
Subnetzsmaske: 255.255.255.0
ist da etwas entscheidend?

Gruß Morphie
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#38

Re: mini Firewall programmieren ??

  Alt 26. Jun 2008, 11:35
Moin moin,

jo, da haste nen Fehler entdeckt. Hatte die Teile aus einer Fltdefs.pas kopiert, und da ist es auch schon falsch drinne.
Ändere mal folgendes ab:
Delphi-Quellcode:
//..
// rausnehmen und dafür...
// PFFORWARD_ACTION = Integer;
// PPFFORWARD_ACTION = ^PFFORWARD_ACTION;
// dies rein
  _PfForwardAction = (
    PF_ACTION_FORWARD,
    PF_ACTION_DROP );
  PFFORWARD_ACTION = _PfForwardAction;
  PPFFORWARD_ACTION = ^_PfForwardAction;

//..

// und das jetzt ganz weg
//const
// PF_ACTION_FORWARD = 0;
// PF_ACTION_DROP = 1;
Damit sollte es dann jetzt aber funktionieren.
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#39

Re: mini Firewall programmieren ??

  Alt 26. Jun 2008, 14:47
Okay, großen Schritt weiter...
Das öffnen der Ports funzt!
Besten Dank

Allerdings hab ich immer noch nicht raus, warum RDP bei mir abbricht, wenn ich Port 3389 öffne... Habe im Netz nichts darüber gefunden, dass irgendein anderer Port ebenfalls genutzt wird...


Wenn da nun noch jemand ne Lösung für hat, wär ich unglaublich dankbar

Morphie
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#40

Re: mini Firewall programmieren ??

  Alt 26. Jun 2008, 15:03
Hm, dann schau doch mal mit netstat welche Ports/IPs/Protokolle bei dir belegt/benutzt werden, wenn du eine aktive RDP Session hast.
Evtl. weisst du dann mehr?!
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 19:54 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