Hallo zusammen, Ich möchte mal ein Bischen mit Mikrocontrollern rumspielen und wollte mir zu diesem Zweck ein developerboard anschaffen. Als erstes Projekt möchte ich eine Firewall bauen. Ich habe die Threats hier dazu gelesen und mir das ATNGW100 Network Gateway Kit angeschaut. Jetzt mal eine dumme Frage: Kann ich da ein Display anschliesen? Ansonsten hab ich mir als Alternative das EasyARM rausgesucht. Da kann ich ein Display anschließen und mehrere serielle LAN-Anschlüsse. Jetzt stellt sich mir die Frage ob ich bzw. mit welchem Speed ich bei dem Board die Packete vom einen LAN Port zum anderen schicken kann. Auserdem wollt ich um Erfahrungen bitten bzgl. des Speeds des Prozessors den ich dafür brauch. Ich würde gern eine Statefull Inspection machen. Achja, Linux sollte nicht auf dem Board laufen, ich will alles von Hand machen. Für Tips und Links zur weiterführenden Literatur wär ich sehr dankbar. Viele Grüße Frank
Eine firewall... bei ADSL Speed von 5000kbit/s ergibt sich die datenrate zu 500kbyte/s. Weitefuehrende Literatur ist das 3 baendige Werk : Ich und TCP/IP, oder aehnlich, fuer 300 Euro.
Also TCP /IP Grundlagen sind schon vorhanden, mir ging es eher um Literatur zur HW.
ich möchte dich ja nicht entmutigen, aber eine "Statefull Inspection" macht man nicht mal ebend so. Da hängt viel wissen über die Verwendeten Protokolle tran z.b. Aktives-FTP. Dazu kommt dan eine eventuelle fragmentierung mit der man umgehen muss. Das ganze dann noch ohne ein Betriebssystem darunter ist schon nicht ohne. Eventuell erstmal mit einen "dummen" Router anfangen und dann zu einer einfachen Packet-Filter firewall übergehen.
Also Infos über das FTP brauch ich bei einer Stateful Inspection nicht, das wäre dann ja schon eine Deep Packet Inspection oder reden wir aneinander vorbei. Ich dachte ich arbeite halt mit SOCKET / DGRAM bzw SOCKET / STREAM o.ä.
Leider ebend doch, beim Aktiven FTP wird vom Server eine Verbindung zum Client aufgebaut, deine Firewall muss aus dem FTP-Kommando Kanal den dynamischen Port auslesen und ihn in der Firewall freischalten. Und sicherstellen das dir niemand etwas unterjubelt und du auf jeden Anfrage jeden Port öffnest. Was ist auserdem eine Hardware Firewall, wenn du eh software schreibt. Unter Hardwarefirewall könnte ich mir ein Relais vorstellen, der rest ist alles Software egal ob es auf einen Richtigen PC oder was "embedded" ist.
Nachtrag: was meist du mit SOCKET DGRAM bzw SOCKET STREAM. Eine Firewall/Router baut nicht selber eine Verbindung auf. Sie Analysiert Packete da gibt es erstmal nur den RAW-Socket mehr nicht. Ob es UDP oder TCP ist mussst du alles selber erledigen. Meist kommt ja auch noch NAT dazu wo du die packete manipulieren musst und die Antworten neu zuordnen musst.
Naja, ich dachte das ich halt in C ein Programm schreib welches Verbindungen von ANY animmt, sich forked und dann im TCP die Flags auswertet ob SYN SYN/ACK etc, und dann das Packet an die Destination weiterleitet oder Verwirft. NAT ist nicht nötig da es hinter meinem Router arbeiten soll.
Also ich denke dass sowas nur Sinn macht, wenn du ein Dev-board findest auf dem auch ein Linux läuft. Dann hast schon mal die meisten Softwareteile "onboard". wenn du alles "zu fuß" machen willst fehlt dir (vermutlich) das detailierte Wissen über TCP/IP & co., aber auf alle Fälle die Zeit das vernünftig und stabil hinzubekommen. Falls es dir nur darum geht, eine Hardware-Firewall (*) zu haben, würde ich mir irgend einen Router besorgen, auf dem DD-WRT oder so was in der Richtung läuft. (ich weiß, das bietet nicht den hier gewünschten Bastelfaktor) Gruß Roland * eine Hardware-Firewall ist für mich jede Firewall die nochmal zwischen Rechner und Internetanschluss hängt und mich "schützt" ohne dass ich auf meinem Rechner zus. Software installieren muss. Dass auf dieser Box auch Software läuft ist (denke ich) klar.
@Roland: Genau so definiere ich eine HW Firewall auch. Ansonsten geht es mir NICHT darum das es stabil Läuft sondern darum das ich etwas über Microcontroller Programmierung lerne und mir die Ansteuerung einer Segment Anzeige zu langweilig ist ;)
> Naja, ich dachte das ich halt in C ein Programm schreib welches > Verbindungen von ANY animmt, sich forked und dann im TCP die Flags > auswertet ob SYN SYN/ACK etc, und dann das Packet an die Destination > weiterleitet oder Verwirft. NAT ist nicht nötig da es hinter meinem > Router arbeiten soll. Popcorn!
> Naja, ich dachte das ich halt in C ein Programm schreib welches > Verbindungen von ANY animmt, sich forked Das ist schon der falsche Ansatz, hast du mal geschaut wie viele Packet/Verbindungen aufgebaut werden? Das Forken braucht dafür viel zu viele Resourcen ist ist zu langsam. Was du willst ist eine Router mit Firewall funktionalität. Dafür bekommt du alle ankommende Packete einfach als Packet (void* + length) und dann musst du entscheiden was mit dem Packet gemacht wird, weiter leiten, zurückweisen, ignorieren und musst eine neues Packet zusamemnbauen und über das passende Lan Interface übertragen. Was du vor hast ist eine Art universeller Proxy aber keine Firewall. Wenn du mit Socket und Forks anfängst bist du auf Layer6 ein Router/Firewall treibt sich auf layer 3 und 4 rum.
>Naja, ich dachte das ich halt in C ein Programm schreib welches
Verbindungen von ANY animmt, sich forked und dann im TCP die Flags
auswertet ob SYN SYN/ACK etc...
Forken macht man allenfalls auf einem PC, aber sicher nicht auf einem
Embedded System, egal wieviel RAM da nun ist. Die Denkensweise ist eine
ganz andere, der erste Gedanke ist immer, wieviel RAM und Code braucht
das, und der zweite : Wieviele Mikrosekunden dauert es. Der dritte
Gedanke ist dann : wieviel Strom braucht die Maschine.
Ich wuerd mal ein einfacheres Projekt anpacken.
> Ich möchte mal ein ... > Ich würde gern eine Statefull Inspection machen. > ... ich will alles von Hand machen. Will, möchte, würde... > Als erstes Projekt möchte ich eine Firewall bauen. > ... das ich etwas über Microcontroller Programmierung lerne > und mir die Ansteuerung einer Segment Anzeige zu langweilig ist ;) Ja, so ist das: gleich alles wollen und zwei Schritte auf einmal machen, und dann auf die Schnauze fallen. Und dann: > Jetzt mal eine dumme Frage: Kann ich da ein Display anschliesen? Mir scheint, du vermutest die Probleme an einer anderen Stelle, als sie in der Wirklichkeit auftreten werden. Machs doch erst mal einfach: - nimm so ein Dev-Board - und schalte übers Internet die LEDs an und aus - dann schliess ein LCD an - und gib übers Internet Text aus Du wirst nicht glauben wie schön die Blumen blühen, bis das fehlerfrei läuft ;-) BTW: > Ich würde gern eine Statefull Inspection machen. http://de.wikipedia.org/wiki/Stateful_Packet_Inspection
>Du wirst nicht glauben wie schön die Blumen blühen, >bis das fehlerfrei läuft ;-) Und dies Sonnenwenden dazwischen nicht vergessen ;-)
Mein erstes Elektronik Projekt nennt sich Airbus Flightcontrol alles Andere ist mir auch zu primitiv lol.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.