PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Netzwerk um Dienste zu verstecken



cyber_overrun
18.12.2011, 00:57
Moin,

ich arbeite mittlerweile 2 Monate an einer Netzwerkanwendung um Dienste wie Apache oder ähnliches mehr oder weniger zu verstecken. Das ganze soll ähnlich funktionieren wie bei TOR. Also es gibt einen Eingangsserver von dem man aus in dieses Netzwerk reinkommt. In diesem Netzwerk befindet sich dann der versteckte Server. Also:

User -> Entry-Node -> versteckter Server

Der versteckte Server soll dann nur über den Entry-Node erreichbar sein was sich ja leicht mit iptables realisieren lässt. Die Verbindung vom User zum Entry-Node als auch die vom Entry-Node zum Server ist mit AES 256Bit verschlüsselt.
Um sich mit dem Entry-Node zu verbinden wird ein Tool benötigt was die HTTP Daten in das Protokoll umwandelt und verschlüsselt.
Die Adressen der versteckten Server gibt es dann nur noch in einem speziellen DNS-Format Beispiel: http://testseite.[hiddennet]
Dies ist jetz nur ein spontanes Beispiel.
Das Ziel soll sein das man den Server nicht lokalisieren kann und man beliebige Dienste auf solchen Servern installieren kann

Was haltet ihr davon? Würde mich über Feedback freuen :)

PS: Ich weiß is mein erster Post. Ich hoffe dies ist nicht die gemeinte Projektvorstellung die in den Regeln beschrieben war^^

mfg cyber_overrun

Asmo
18.12.2011, 01:51
Intressante Idee du ferfolgst dabei nen ansatz von nem rev.proxy nur das du einen Entry-Node als Zugang zu deinem Netzwerk das du Schützen wilst bereit stelst.

Das wiederrum kann für dich nach erfolgreicher Auth. deiner IP andere dienste bereitstellen sprich es öffnet bsp dir die ports für webserver etc (IP Gebunden)

NAT / PortWeiterleitung etc inerhalb des eigenen Netzwerkes bei meheren Maschinen könte man bsp das VPN-Protokoll benutzen um so maschinen von der Lokation her zu verteilen ist nen intressantes thema kanst dich ja mal via pm melden um weiter über das thema zu diskutieren man könte so ein recht gutes privates netzwerk mit fileserver etc realisieren

IRET
18.12.2011, 08:10
Ich will dir die Freude nicht verderben, aber es gibt dazu schon VPN ;). Mit der entsprechenden /etc/hosts werden auch die Domains möglich. OK die IP kriegt man dann immer noch ^^.
Finde die Idee super nur brauchst du da einen starken Server mit guter Anbindung (vl. http://www.ovh.de/rootserver/hg_2011_bestof.xml ).
Aber sein eigenes "Internet" zu coden ist sicher lustig ;).

ReiDC0Re
18.12.2011, 10:18
Alles durch einen Server leiten würde viele Ressourcen kosten. Sinnvoller wäre da ein DNS Server, der Anfragen nur verschlüsselt an nimmt und wieder abgibt. Aber alles durch einen Server gehen zu lassen, würde wirklich verdammt aufwendig werden. Den Ressourcen Drang bei sagen wir 200 existierenden Seiten oder mehr standzuhalten.

Ansonsten ist es ja nicht falsch, dass ganze weiterzuverfolgen. Aber das Konzept würd ich dann an einigen Stellen leicht überdenken. Zum Beispiel ein Ansatz von mir. Anfragen werden über die User verteilt, heißt jeder Rechner der ins "Hidden" net eingeklinkt ist, kann Ressourcen verwalten und Daten weitersenden. Dabei ist men in the middle dummerweise sehr leicht möglich. Da könnte man aber leicht gegengreifen. Siehe PGP!

cyber_overrun
18.12.2011, 11:12
Jo danke erstmal für das tolle Feedback :)

Also es soll wirklich ne Art privates Internet werden. Man brauch dann also auch Benutzerdaten zum einloggen.

VPN könnte man für ein solches Vorhabn auch nehmen aber ich würde gerne das Datenprotokoll speziell für dieses Netz zuschneiden. Ich glaub ich werde mir aber trotzdem mal das Protokoll von son VPN angucken :D

Natürlich soll es denn auch bei viel Traffic mehrere Entry-Nodes geben. Wie die Last Verteilung allerdings laufen soll weiß ich noch nich^^

Im Netz intern sollen die Server mit nur einer TCP Verbindung verbunden sein. Über diese eine Verbindung werden dann virtuelle Verbindungen zu den Diensten hergestellt. Erst der Server auf dem der Dienst installiert ist soll diese virtuelle Verbindung wieder in eine richtige TCP Verbindung umwandeln.

[User --- TCP-Verbindung --> Entry-Node --- virtuelle Verbindung --> Dienst-Server --- TCP-Verbindung --> Dienst]

Es wird dann auch ein Server geben, der die DNS auflöst und ein Verzeichnisdienst bereitstellt. In diesem Verzeichnis kann man dann seinen Server eintragen und eine kurze Beschreibung dazu abgeben.

Die Benutzeraccounts sollen kostenlos sein allerdings soll nicht jeder einen kriegen. Also ich möchte damit Ripper, Kiddies und so weiter aussperren und zB nur Mitgliedern von einigen Boards den Zugang gewähren.
Oder was meint ihr?^^

ReiDC0Re
18.12.2011, 18:16
Die Benutzeraccounts sollen kostenlos sein allerdings soll nicht jeder einen kriegen. Also ich möchte damit Ripper, Kiddies und so weiter aussperren und zB nur Mitgliedern von einigen Boards den Zugang gewähren.
Oder was meint ihr?^^

Naja musst du Finanziella Dewillja fragen.

doyouhav0th0sourc0?
18.12.2011, 21:28
Klingt geil. Wärs nicht vllt. gut mehr als nur einen entry node zu basteln, sodass die last auf z.B. 3 Server verteilt ist?

IRET
18.12.2011, 21:55
Klingt geil. Wärs nicht vllt. gut mehr als nur einen entry node zu basteln, sodass die last auf z.B. 3 Server verteilt ist?

Das ist eine Kostenfrage ;).

SFX
18.12.2011, 22:01
Lustig wie alle so krampfhaft an dem festhalten, was es schon gibt, auch wenn es für was ganz Anderes gedacht ist..

Das was du möchtest wäre ein Reverseproxy.
Lastenverteilung würde mit A Records und DNS gehen.
dh du setzt auf jedem Server den gleichen Reverseproxy mit der gleichen Config auf und lässt DNS die Lastenverteilung regeln.
Verschlüsseln lässt sich mit SSL bzw, konkreter, HTTPS.
Via iptables acceptest du auf port 443 dann nur incoming connections von dem reverse Proxy.

Wichtig dabei ist aber, dass du damit kein un-bustbares System hast.
Die Reverseproxys haben immernoch den echten Host.
Von PGP/GPG würde ich abraten. Afaik würde man damit als Orakel arbeiten und der Private Key lässt sich errechnen. Zumindest ist das bei RSA so. Sollte es da anders sein, lasst es mich bitte wissen.

Das Internet wird dabei nicht neu erfunden, man baut sich nur auf der application ebene des TCP/IP Models eine eigene Routing Schicht.

Bonkers
18.12.2011, 22:02
Ich will dir die Freude nicht verderben, aber es gibt dazu schon VPN

Exakt.
Alles was du oben beschrieben hast ist problemlos mit einem VPN-Server möglich. Auch die Einrichtung ist kein Problem.
Ich sehe also nicht was für einen Mehrzweck dein Projekt haben soll.

cyber_overrun
19.12.2011, 13:47
Stimmt wenn ich mir das sorecht überlege macht es keinen Sinn...
gibt es i-wie schon^^
und etwas zu programmieren was es schon professionell gibt macht kein Spaß :)
Danke für die Antworten