Firewall entwickeln?



  • Hallo,

    ich habe da mal eine Frage:

    Unter Linux gibt es Netfilter, was den ganzen Netzwerkverkehr übernimmt. Darauf bauen auch alle Linux Firewalls auf. Man kann sich an Netfilter auch über sog. Hooks einklinken und so Zugriff auf jedes einzelne IP-Paket bekommen. So war es mir möglich eine kleine simple Packet Filter Firewall für Linux selber zu entwickeln.

    Ähnliches würde ich nun als Programmierübung für Windows Vista schreiben. Sprich eine eigene Firewall.

    Ich habe aber von der Windowsprogrammierung bisher wenig Ahnung und möchte hier zunächst paar Infos einholen.

    Wie bekomme ich Zugriff auf auf die rohen IP-Pakete? Nur über die WindowsAPI?
    Ich habe was von einer Windows Filtering Platform gelesen. Wäre das, was ich suche?

    Mit welchen Programmiersprachen habe ich Zugriff auf die WindowsAPI. Nur C und C++? Beide?

    Oder kann ich auch mit C# auf die API Zugreifen? Aber hier denke ich wird es nicht gehen, da ich mir nicht vorstellen kann, dass ein .NET Programm Zugriff auf die IP-Rohdaten bekommt. Zudem sollte eine Firewall aktiv sein, noch bevor Windows komplett hochgefahren ist. Kann ein .Net Programm schon aktiv sein, bevor Windows vollstäntig gebootet wurde, wohl kaum, oder?

    Also bleibt nur C bzw. C++. Gehen beide Programmiersprachen für mein Vorhaben?

    Eine Alternative wäre evtl. dass ich in C# mir nur ein Frontend programmiere, welches die Windows Firewall steuert, oder? Das müsste gehen? Wahrschneilich einfacher für den Anfang.

    Bin für jeden Antwort dankbar.
    -slaYer977-





  • Du kannst mit C# einen service schreiben der sich beim booten schon automatisch mit startet und somit schon "von anfangan dabei" ist...
    http://www.mycsharp.de/wbb2/thread.php?threadid=18902&hilight=Service
    Außerdem kannst du auch api funktionen ein deine c# programme einbinden...einfach importieren.
    kleines beispiel:

    [DllImport("kernel32.dll")]
            private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);
    
            [DllImport("kernel32.dll")]
            private static extern bool QueryPerformanceFrequency(out long frequency);
    

    musst nur noch die funktion deklarieren oder so



  • Eine FireWall kannst Du mittels "Filter-Treiber" machen. Hierbei ist *kein* .NET erlaubt (also kein C#/VB.NET/C++/CLI).
    Genauer gesagt brauchst Du einen TDI-Filter-Treiber. Siehe DDK.



  • Danke für Eure Antworten.

    Wäre es denn denkbar mit C# einfach ein eigenes Frontend zu entwickeln, welches auf die integrierte Firewall von Vista zugreift?

    Sofern die Vista Firewall Schnittstellen zur Verfügung stellt, müsste das doch möglich sein, oder? Damit würde ich mir einiges an Komplexität nehmen und evtl. doch noch in Einzelfällen auf die WinAPI in meinem C# Code zurückgreifen, sofern es möglich ist.

    Wo klinken sich denn andere Firewalls ein? z.B. Kerio, ZoneAlarm.
    Weiß man das?

    Ist das Buch von Petzold (Windows Programmierung) empfehlenswert, wenn ich mich entschließen sollte eine Firewall zu realisieren und dafür auf die Windows API zugreifen will.

    Wo bekomme ich weitere Infos, wo ich mich überall mit meiner Firewall einklinken könnte, bzw. wo es am meisten Sinn mache. Um evtl. nicht alles selber machen zu müssen, wie z.B. Paket überprüfung, also ob das Paket ansich überhaupt richtig ist. Sondern z.B. nur erst mal überprüfe ob IP und Port stimmen und zugelassen werden sollen oder nicht?

    Wie gesagt, ich habe leider wenig Ahnung von der Windows Programmierung. Bin daher für jede Hilfe sehr dankbar.

    --
    Gruß
    -slaYer977-



  • slayer977 schrieb:

    Wie gesagt, ich habe leider wenig Ahnung von der Windows Programmierung.

    Dann ist der Petzold zur Einarbeitung in dieses System generell sehr empfehlenswert. Informationen über derart spezielle Themen findest du allerdings dort nicht, da ist eine Internetrecherche (oder die Nachfrage hier im Forum :)) i.d.R. hilfreicher.


Anmelden zum Antworten