Wie dichtet man 'fremde' Ports ab??



  • Hallo!

    Wie kann ich mit WINAPI einen Port dicht machen. Also jegliche verbindung oder datenübertragung unterbinden??? Ich möchte z.B. den Port 100 von Programm-A aus schließen, obwohl er von Programm-B benutzt wird.

    Ich bin für alle Hinweise und Tipps dankbar...



  • Mach ein listen() auf Port 1000. Wenn du das vor Programm B machst, kann Programm B über Port 1000 keine Verbindung mehr entgegennehmen.

    btw: Wofür brauchst du das?
    Lies bitte die de.comp.security.firewall FAQ über den Nutzen von Firewalls. 🙂
    Danach www.linkblock.de.



  • cd9000,

    erst mal Danke, fürs Antworten. Dass Firewalls für Internet-Nutzer mit mehr oder weniger "Ahnung" unnötig sind, und sogar Ressourcen fressen, ja!, als ob das nicht genügte auch noch für jeden Scan Alarmstufe-Rot melden und nervös machen war mir zwar schon klar, habe aber dennoch die von dir angegebenen Seiten angesehn.

    Deswegen will ich keine Firewall (wie ichs mir vor monaten vorgenommen hatte), sondern ein kleines Protokollier-Programm schreiben. Das Ganze soll nur zum erlernen der Handhabung der WINAPI mit C++ für Socketverbindungen dienen und zugleich einen Nutzen erfüllen. Später werde ich mich mit RAW-Sockets befassen.
    -----------------------------------------------------------------------... .

    MfG, BreakerMaker



  • du kannst einen bestimmten port mehr oder weniger dicht machen. in dem du den selber belegst. aber ne anwendung kann den port trotzdem nochmal mit benutzen wenn sie möchte. gibt dann halt datenstreitigkeiten. du kannst auch alle ports nicht belegen, geht rein resourcen technisch garnicht.

    ne möglichkeit wäre selbst eine firwall zu programmieren. nur dazu musst du auf der treiber ebene arbeiten



  • ScriptGod schrieb:

    aber ne anwendung kann den port trotzdem nochmal mit benutzen wenn sie möchte.

    Wenn du ein listen() auf port x machst, ist port x belegt und nicht mehr benutzbar IMHO. Ergäbe ja auch keinen Sinn, denn wenn ein anderer Rechner zu deinem Rechner Kontakt aufnehmen will und zwei Programme an einem Port horchen, welches Programm sollte die Anfrage verarbeiten?

    Vielleicht gibt es ein Missverständnis und du meinst ausgehende Verbindungen, z.B. auf Port 80 (HTTP). Da können in der Tat mehrere Programme gleichzeitig Port 80-Verbindungen öffnen. Der Unterschied ist aber, dass Port 80 in diesem Fall der Zielport ist. Der benutzte Port auf dem eigenen Rechner ist nicht 80, sondern irgendeine mehr oder weniger zufällige Zahl. Nur deswegen können mehrere Programme gleichzeitig HTTP-Anfragen senden.
    Wie du diese Anfragen blockierst weiß ich allerdings nicht. 🙄



  • durch das setzen das flags SO_REUSEADDR kann ein socket ein benutzte address nochmal benutzen. wenn die anwendung dann noch die daten mit dem flag MSG_PEEK abruft bleiben die daten auch für die andere anwendung erhalten. dies kann man nur verhindern wenn die andere anwendung das flag SO_EXCLUSIVEADDRUSE setzt, macht aber so gut wie keine anwendung

    es isch auch möglich wenn man unter windows nt mit TDI arbeitet auch ein adress nochmal zu belegen.


Anmelden zum Antworten