Software-VPN zusätzlich mit Hardware absichern

Gast #1212296
Lesenswert?

Grüezi zammä,

als kleiner Hobbyparanoiker bin ich auf der Suche nach einer 
Möglichkeit, einen möglichst sicheren Fernzugang zu einem heimischen 
Server herstellen zu können. Bisher verwende ich dazu OpenVPN. Der 
Server selber kann keine sonstigen Verbindungen aufbauen bzw. annehmen, 
da bis auf den einzelnen OpenVPN UDP-Port alle Ports in den 
IP-Sicherheitsrichtlinien gesperrt sind. Als Hardware-Sicherheit 
befindet sich zwischen Server und DSL-Router derzeit ein weiterer Router 
mit einer durchaus umfangreich konfigurierbaren Firewall (keine simplen 
NAT-Settings), die ebenfalls so eingestellt ist, dass sie nur 
Datentransfer auf diesem einen UDP-Port in beide Richtungen zulässt. Ich 
gehe einmal davon aus, dass dies schon ein gewisses Maß an Sicherheit 
bietet. Ist jemand anderer Meinung?

Was mich nun aber noch stört ist die Tatsache, dass ich gelegentlich 
auch einmal von anderer Leute Rechner aus auf den Server möchte. 
Natürlich setzt dies voraus, dass dort OpenVPN installiert sowie OpenVPN 
Config-/Keyfile und Passwort vorhanden sein müssen – prinzipiell alles 
Dinge, die mittels Keylogger und sonstiger verstecker Tools unbemerkt in 
die Hände des Besitzers des Rechners fallen könnten, auch wenn ich sie 
nach dem Logout wieder entferne. Mir fehlt also ein Stück Hardware, das 
ich mit mir führen kann und ohne dessen Vorhandensein keine 
VPN-Verbindung möglich ist.

Was mir nun vorschwebt ist folgendes:  Der (nennen wir ihn mal) 
Firewall-Router wird ersetzt durch eine frei programmierbare Hardware 
mit zwei Ethernet-Ports (ich tendiere zum ATNGW100). Diese bekommt eine 
recht einfache Aufgabe:

- Wenn ein Paket mit einer Anforderung für eine Challenge empfangen 
wurde, erzeuge eine Challenge und sende sie an den Absender zurück.
- Wenn ein Paket mit einer Response empfangen wurde, vergleiche diese 
mit der zugehörigen Challenge.  Bei Übereinstimmung füge IP des 
Absenders mit einem Timeout von X Sekunden in die Whitelist ein.
- Wenn auf einem der Ethernet-Ports ein UDP-Paket mit der 
OpenVPN-Portnummer empfangen wurde und die externe IP auf der Whitelist 
steht, leite das Paket an den anderen Ethernet-Port weiter, ansonsten 
verwerfe das Paket.
- Wenn Timeout eines Whitelist-Eintrags abgelaufen ist, lösche diesen 
Eintrag.

Das zugehörige Gegenstück besteht aus einem selbstgebastelten USB-Stick, 
auf dem ein AVR mit AVRUSB-Firmware sein Dasein fristet. Dort sind die 
gleichen Algorithmen zur Challenge-/Response-Berechnung (sei es z.B. 
AES256) sowie die zugehörigen Keys vorhanden wie auch im ATNGW100. 
Außerdem ist noch ein kleines PC-Tool erforderlich, das die Vermittlung 
zwischen USB-Stick und entferntem ATNGW100 übernimmt.

Vor dem eigentlichen Aufbau der OpenVPN-Verbindung muss nun also 
zusätzlich der USB-Stick vorhanden sein. Clientseitig fordert das 
PC-Tool nun eine Challenge beim entfernten ATNGW100 an. Nach deren 
Erhalt leitet es sie an den USB-Stick weiter. Dieser antwortet mit der 
passenden Response, die das Tool dann wiederum zum ATNGW100 sendet. Dies 
gibt daraufhin den OpenVPN-Port zum Server hin frei. Dieser Vorgang 
wiederholt sich alle X Sekunden, so dass spätestens X Sekunden nach 
Abziehen des USB-Sticks die VPN-Verbindung unterbrochen wird.

Lange Rede, kurzer Sinn: Was haltet Ihr von dieser Idee? Sieht jemand 
Schwachstellen? Gibt es vielleicht schon etwas Ähnliches zu bescheidenen 
Preisen käuflich zu erwerben? Was ich bisher gefunden habe ist 
kostenmäßig eher nur von mittelgroßen Firmen tragbar. Vielen Dank!

Tobias
#1212384
Lesenswert?

Bezueglich Sicherheit siehe auch 
http://de.wikipedia.org/wiki/Challenge-Response-Authentifizierung.

Jenachdem wie gewieft die Person dessen Rechner du benutzt ist (bzw. wie 
interessiert sie daran ist deine Sicherheitsmaßnahmen zu umgehen) 
koennte deine Verbindung auch lokal im Netz redirected und somit 
gesnifft werden).

Einwegpassen waeren bestimmt eine gute aber keinesfalls sichere 
Alternative (s. TCP/IP-Hijacking). Auch koennte von deinem USB-Stick 
invisible ein
Image erzeugt werden. Das ist allerdings nur theoretischer Natur.

Ich finde allerdings dass sich dein Vorhaben interessant anhoert. Die 
Sicherheit kann auch waerend der Projektphase oder nachhinein getestet 
und eventuell zusaetzliche Sicherheitsmechanismen implementiert werden.

MfG
Manuel Gebele
Gast #1212396
Lesenswert?

Das ganze klingt erstmal sehr sicher.

Aber das heutzutage noch Angriffe von aussen kommen ist sehr 
unwahrscheinlich, selbst die MS-Firewall verhindert das zu 100% wenn man 
keine Ausnahmen definiert.

Wenn jemand etwas von dir will, dann versucht er lücken im 
Browser/Plugin(java,flash,pdf) auszunutzen. Dabei hilft dir auch dein 
STück hardware nicht mehr.
Man sollte also nicht versuchen die Sicherheit zu einseitig auszulegen.
Gast #1212453
Lesenswert?

> und wenn du den stick verlierst? zufällig bei dem rechner
> mit dem keylogger?

Dafür müsste dann schon eine ganze Kette ungünstiger Umstände eintreten. 
Hier sehe ich aber die Möglichkeit, dem Stick noch ein paar kleine 
Taster zu verpassen, über die nach dem Einstecken eine PIN eingegeben 
werden muss.

> Außerdem fällt mir grad kein Grund ein wieso ich von
> fremden Computern...

Was nicht heißt, dass anderen nicht doch welche einfallen.

> koennte deine Verbindung auch lokal im Netz redirected und
> somit gesnifft werden

Was gäbe es denn da noch zu sniffen? Die VPN-Daten sind verschlüsselt 
und die Challenges/Responses später nutzlos.

> Auch koennte von deinem USB-Stick invisible ein Image erzeugt
> werden.

Würde es sich um einen einfachen Speicherstick handeln, könnte ich das 
nachvollziehen. Wie erwähnt sitzt aber ein Controller darauf, auf dessen 
Keys und Algorithmen der PC keinerlei Zugriff hat.

> Wenn jemand etwas von dir will, dann versucht er lücken
> im Browser/Plugin(java,flash,pdf) auszunutzen.

Darum geht es ja in diesem Fall nicht. Der einzige Zugang, den der 
Server zur Außenwelt haben wird, ist über den VPN-Port. Er wird niemals 
einen reinen Internetzugang haben.

Tobias
Gast #1212518
Lesenswert?

Hallo,

aus einer ähnlichen Motivation heraus entwickle ich gerade ein ähnliches 
System im Rahmen meiner Technikerarbeit - Einmalpasswörter werden mit 
einem Mobiltelefon erzeugt und können benutzt werden, um sich unter 
anderem mit PAM zu authentisieren. PAM kann auch von OpenVPN verwendet 
werden, um Benutzer zu authentifizieren.

Die Authentifizierung geschieht dann so, dass der Benutzer ein Programm 
auf seinem Mobiltelefon startet, welches das jeweils aktuelle 
Einmalpasswort für einen Zugang anzeigt. Jedes Passwort ist nur einmal 
und nur für 60 Sekunden gültig. Das Programm auf dem Telefon kann mit 
einem Passwort geschützt werden, auch gegen Keylogging auf dem Telefon 
habe ich mir etwas überlegt.

PAM-Modul, Mobiltelefon-Programm und weitere Implementierungen sind 
bereits fertig, eigentlich arbeite ich nur noch an der Dokumentation.

Falls dich das System interessiert, ist hier die vorläufige 
Dokumentation zu finden: http://folko.solhost.org/abschluss.pdf

Bei Interesse kannst du dich gerne hier melden, dann schicke ich dir 
alles zu. Später wird es sowieso OpenSource.

Gruß

Folke
#1212649
Lesenswert?

Gast3 wrote:
> Zweiwegeloesung:
> Wenn von DEINEM Mobiltelefon mit Rufnummeruebermittlung ein bestimmter
> Abschluss angerufen wird, dann besteht fuer 2 Min. die Chance, sich
> einzuloggen.

Alternativ gibts mindestens für Linux die Alternative "Port-Knocking", 
sprich: nur wenn bestimmte Ports in bestimmter Reihenfolge "angefragt" 
werden (müssen dazu nicht offen sein) schaltet der PC einen bestimmten 
Port frei. Aber das würde ja nicht verhindern das jemand auf dem fernen 
PC deine Tastatureingaben mitloggt.
Gast #1214338
Lesenswert?

Zur urspruenglichen Frage.
1)Ohne meinen notebook geh ich auch nicht ausm Haus.
2)Mein Server ist hinter einem Router, welcher durch noch einen Router 
von LAN getrennt ist.Der erste Router hat zB nur SSH offen. Der zweite 
Router ist zu.

Was war das Problem nochmals ?
#1214360
Lesenswert?

1234 wrote:
> Zur urspruenglichen Frage.
> 1)Ohne meinen notebook geh ich auch nicht ausm Haus.
> 2)Mein Server ist hinter einem Router, welcher durch noch einen Router
> von LAN getrennt ist.Der erste Router hat zB nur SSH offen. Der zweite
> Router ist zu.
>
> Was war das Problem nochmals ?

Das hieße ja das du den Server von außen gar nicht ansprechen kannst und 
nur der Server von sich aus Verbindungen aufbauen kann.
Gast #1214392
Lesenswert?

1234 (Gast) wird wohl folgendes laufen haben:
1
WWW----Router1--+--Router2----Lan
2
                |  
3
              Server

Auch eine Lösung währe mit Zertifikaten zu arbeiten und
nach einen erfolgreichen Tunnelaufbau das Client-Zertifikat für
ungültig zu erklären. Ein 2. Login mit gleichem Zertifikat
ist dann nicht mehr möglich.

Und für den SSH zugang gibt es mittels PAM mindestens 2
OTP lösungen.

Ansonsten kann ich 1234 (Gast) nur zustimmen:
Es gibt Netbooks.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren