Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi mini Firewall programmieren ?? (https://www.delphipraxis.net/75882-mini-firewall-programmieren.html)

Die Muhkuh 31. Jan 2008 11:59

Re: mini Firewall programmieren ??
 
Lars, Du bist gute 2 Stunden zu spät und hast wohl auch die zweite Seite nicht gesehen? :zwinker:

Hador 31. Jan 2008 12:06

Re: mini Firewall programmieren ??
 
Zitat:

Zitat von Die Muhkuh
Lars, Du bist gute 2 Stunden zu spät und hast wohl auch die zweite Seite nicht gesehen? :zwinker:

Oh Gott, ich glaub ich sollte ins Bett gehen :oops:
'n paar Studen durchgehend Mathe zu machen scheint wohl dem Gehirn der Aufmerksamkeit zu schaden :wink:

k4ni 31. Jan 2008 12:45

Re: mini Firewall programmieren ??
 
Weis jemand von euch wie man die InstallFW function von DropAllU auf einzelne ports eingrenzen kann?

x000x 7. Feb 2008 19:34

Re: mini Firewall programmieren ??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin moin,

ich hab die Unit von oben mal so angepasst, dass eben nur ein Port geblockt wird.
In meinem Fall:
Alle ausgehenden Pakete, die als Ziel eine beliebige IP haben und dort auf Port 80 wollen
Alle eingehenden Pakete, die von einer beliebigen IP kommen und deren Quellport eben 80 ist.

Ansonsten wird nix geblockt.

Das Beispiel ist ohne Fehlerbehandlung - ich denke das kann jeder selber einbauen und anpassen...
Delphi-Quellcode:
procedure InstallFW(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_FORWARD, PF_ACTION_FORWARD, 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          := 80;
      ipFltIn.wSrcPortHighRange := 80;
      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          := 80;
      ipFltOut.wDstPortHighRange := 80;
      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);
   end;
end;
PS: Es handelt sich hier NICHT um eine Firewall, sondern lediglich nur um einen Paketfilter!

k4ni 7. Feb 2008 21:15

Re: mini Firewall programmieren ??
 
Danke danke danke danke!!
Das hät ich in 100 jahren nicht hinbekommen :D Vielen dank!

Larsi 20. Feb 2008 15:20

Re: mini Firewall programmieren ??
 
Hi,
hab das njetzt nochmal ausprobiert aber irgendwie kommt beim compilen immer dieser Fehler:
[Pascal Fehler] DropallU.pas(24): E2086 Typ 'PPFFORWARD_ACTION' ist nicht vollständig definiert
[Pascal Fataler Fehler] Unit3.pas(7): F2063 Verwendete Unit 'DropallU.pas' kann nicht compiliert werden

x000x 20. Feb 2008 17:18

Re: mini Firewall programmieren ??
 
Moin moin,

kommt der Fehler auch, wenn du mein Beispielcode unverändert kompilierst?

Larsi 20. Feb 2008 18:21

Re: mini Firewall programmieren ??
 
Ja, ich hab nichts verändert! Kann mir jemand mal ne exe hochladen ich möchte mal sehen ob's geht :) :) :) Also jetzt von dem was alle blockiert

x000x 21. Feb 2008 20:18

Re: mini Firewall programmieren ??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin moin,

hab dann keine Ideen... Hab kein Turbo Delphi hier um des zu testen.
Aber die kompilierte EXE kannste haben... Wie gesagt, blockt nur Port 80 und
WinXP SP2 ist Vorraussetzung. Unter Vista wird es nicht funktionieren.

MorphieX 25. Jun 2008 14:21

Re: mini Firewall programmieren ??
 
funktioniert ja schon extrem gut!

nur hab ich die Geschichte mit dem Regeln-Erstellen nicht so ganz verstanden...
Wie würde es dann z.B. aussehen, wenn ich alle Ports -bis auf ein paar (von mir ausgewählte)- sperren wollte?


Würd mich über ne Antwort sehr freuen!! :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.
Seite 3 von 5     123 45      

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