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
Ich wär ja für Einweg-Kennwörter.
Außerdem fällt mir grad kein Grund ein wieso ich von fremden Computern
auf meinen (auch nicht ständig laufenden) Computern zugreifen muss.
Dafür gibts Webspace/Dedicated Server
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
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.
> 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
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
Zweiwegeloesung:
Wenn von DEINEM Mobiltelefon mit Rufnummeruebermittlung ein bestimmter
Abschluss angerufen wird, dann besteht fuer 2 Min. die Chance, sich
einzuloggen.
Gast3
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.
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 ?
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.
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.