it-swarm.com.de

Wie kann verhindert werden, dass der Zugriff auf eine Webanwendung nur auf autorisierte Geräte beschränkt wird?

Ich habe eine MVC-Web-App entwickelt. Im Moment nutzt der Kunde diese App im Bürobereich. Der Kunde hat darum gebeten, dass niemand diese App auf einem anderen Gerät als dem PC/Tablet des Büros verwenden darf.

Das Problem ist nun, dass es sich um eine Web-App handelt. Wie kann ich also Einschränkungen festlegen, dass niemand diese App von außerhalb des Büros oder mit anderen Geräten als dem PC/Tablets des Büros verwenden kann?

11
bnil

Sie können einige Maßnahmen ergreifen, um die Verwendung der Anwendung auf einen bestimmten Bürostandort und bestimmte Geräte zu beschränken, obwohl andere Antworten darauf hinweisen, dass keine davon absoluten Schutz bietet

  • Richten Sie eine Firewall vor der Anwendung ein, um die IP-Adressen, die für den Zugriff auf die Anwendung zulässig sind, auf den externen IP-Adressbereich des Clients zu beschränken. Die meisten Unternehmen haben statische IP-Adressen auf ihren Internet-Routern. Wenn Sie festlegen, dass auf die Anwendung nur über diese IP-Adressen zugegriffen werden kann, ist es für eine nicht autorisierte Person schwieriger, darauf zuzugreifen, wenn sie sich nicht in ihrem Büro befindet. TBH Dies klingt nach dem Ansatz, der für die Anforderungen Ihrer Kunden am besten geeignet ist
  • Sie können Client-Zertifikate auch auf autorisierten Geräten verwenden. Wie @adnan hervorhebt, ist es möglicherweise möglich, diese auf einen anderen Computer zu verschieben. Dies würde jedoch erfordern, dass der Angreifer entweder ein Mitarbeiter von ist, um unbefugten Zugriff auf eines seiner Systeme zu haben
  • vielleicht können Sie dies als Detektivkontrolle mit dem Fingerabdruck des Browsers kombinieren (z. B. panopticlick ). Erstellen Sie eine Liste der Geräte und ihres Fingerabdrucks. Wenn das Client-Zertifikat auf einem Gerät verwendet wird, das nicht mit dem Fingerabdruck übereinstimmt, können Sie es blockieren.

Wie ich schon sagte, sind diese nicht absolut, aber dann ist nichts in Sicherheit. Wenn Ihr Kunde nur verhindern möchte, dass Personen außerhalb des Unternehmens ihre Website sehen, würde ich mich für den Filteransatz für die Quell-IP-Adresse entscheiden.

15
Rory McCune

Sie müssen die Web-App nur auf einem Server im Intranet hosten, der nicht mit dem Internet verbunden ist.

Durch ordnungsgemäße Routing- und Firewall-Maßnahmen sollte sichergestellt werden, dass niemand, der nicht mit dem lokalen Netzwerk verbunden ist, Zugriff auf die Web-App hat.

Wenn Personen außerhalb des Netzwerks Zugriff auf die Web-App benötigen, lassen Sie sie eine VPN-Verbindung zu Ihrem lokalen Netzwerk herstellen.

6
user10211

Wie sicher müssen Sie gehen?

Dies ist wahrscheinlich so "sicher", wie Sie es machen können. Es ist technisch nicht sicher. Wie Rook sagte, gibt es hier noch Dinge, die ausgenutzt werden können. Dies sind einige Schritte, mit denen Sie versuchen können, das System zu härten:

  1. Richten Sie den Webserver auf einem physischen Server im Office-LAN ein. Verwenden Sie NICHT NAT , um externen Datenverkehr mit dem Webserver zu verbinden. Wenn der Server für andere Sites verwendet wird, sollten sie sich auf einem anderen Server oder einer anderen VM befinden.

  2. Richten Sie eine SSL VPN Firewall ein (Cisco kommt in den Sinn). Cisco hat Apps für iPads , mit denen ein "sicherer" Tunnel mit dem Router eingerichtet werden kann.

  3. Sobald Sie sich über VPN (remote) authentifiziert haben, weisen Sie eine lokale IP-Adresse innerhalb eines bestimmten angegebenen Bereichs zu (dies hängt von der Anzahl der Clients ab, die eine Verbindung zum Server herstellen). Je nach Router können Sie Regeln zuweisen. Da Sie das Netzwerk am anderen Ende des VPN (z. B. das Heimnetzwerk des Benutzers) nicht steuern können, ist dies ein potenzieller Angriffsvektor.

  4. Lokaler Verkehr und VPN-Verkehr müssten unterschiedliche IP-Bereiche für die Verfolgung haben. Lokaler Verkehr sollte statische IP-Adressen haben, die durch die MAC-Adresse (spoofbar) vom DHCP-Server zugewiesen wurden und alle protokolliert werden. Auf diese Weise können Sie nach Kollisionen und gefälschten IP-Adressen und MAC-Adressen suchen.

  5. In der Firewall auf dem Webserver würden Sie ein Subnetz von Adressen einrichten, die eine Verbindung zum Webserver herstellen können. Dies würde den im Router für die Benutzer zugewiesenen VPN-Bereich und die internen statischen IP-Adressen auf der Whitelist einschließen.

  6. Dann können Sie auf dem Webserver selbst den Zugriff auf die Website über die IP-Adressen ( IIS 7 und Apache ) einschränken, die Sie auf dem DHCP-Server und auf dem lokalen Server eingerichtet haben Firewall (dies ist redundant, falls jemand einen Exploit zum Ändern von iptables in einer * Nix-Box findet).

Wenn Sie eine Unternehmens-After-Market-Software-Firewall wie Kaspersky (auf einer Windows- oder Linux-Box) verwenden, können Sie den Datenverkehr auch auf diese Weise blockieren.

So nehmen Sie Änderungen an diesem System vor: 1. Die IP-Adresslisten müssen auf dem internen DHCP-Server 2. in der Firewall des Webservers 3. und in der Webserverkonfiguration aktualisiert werden

Damit wird der Zugriff auf den eigentlichen Webserver "gesperrt" ...

Als nächstes müssen Sie SSL auf dem Webserver ausführen und einen bestimmten Benutzernamen und ein Kennwort für den Benutzer benötigen. Das Passwort sollte mindestens 16 Zeichen lang sein.

Sobald sich der Benutzer auf dem Webserver authentifiziert hat, senden Sie ihm eine Nachricht, entweder über SMS oder per E-Mail, die eine einmalige oder einmalige Verwendung enthält Kennwort, mit dem der Benutzer für eine bestimmte Zeit auf dem Server in die Whitelist aufgenommen werden kann. (Wenn jemand Zugriff auf das Mobiltelefon des Benutzers hat, ist dies möglicherweise gefährdet.) Wenn der Benutzer das Browserfenster schließt, muss er erneut authentifiziert werden (und dies sollte die Sitzung beenden). Sie können ein Keep-Alive -Skript festlegen, das in einer Sprache wie Javascript ausgeführt wird und eine Übertragung vom Client innerhalb eines bestimmten Zeitraums erwartet. Wenn der Client nicht antwortet, beenden Sie die Sitzung. (Dadurch wird verhindert, dass Javascript für den Zugriff deaktiviert wird. Außerdem können Benutzer ihre Browser schließen und versuchen, neue Sitzungen zu öffnen, bevor ihre alte Sitzung abgelaufen ist.) Sie sollten sich jeweils nur von einem Ort aus anmelden können.

Sie sollten verhindern, dass der Benutzer seine Passwörter speichert auf seinen Geräten. (Dies kann mit Plugins in Browsern wie Firefox umgangen werden.)

Um die Dinge strenger zu gestalten, könnten Sie sogar so weit gehen, dass sich die Tablets über VNC oder RDP bei einem virtuellen Terminal anmelden müssen (nicht ideal für ein Telefon). Dann müssten sie den Webclient auf der virtuellen Maschine verwenden. Dieses VM wird wiederhergestellt, um beim nächsten Lauf oder bei der nächsten Verbindung bereinigt zu werden.

Jeder, der das System kennt, kann es ausnutzen. Jeder außerhalb des Systems müsste viel Zeit damit verbringen, hineinzukommen, und er müsste wissen, dass das System existiert.

Alle Aspekte müssten dokumentiert werden. Wenn jemand die Dokumentation hätte, könnte er versuchen, eine Schwachstelle im System zu finden.

Auch hier kommt es auf die Menschen an. Jeder, der im Laufe der Zeit Zugriff auf die Informationen hat, kann Kopien aller Informationen speichern (Screenshots mit einem Mobiltelefon, PDF-Dateien mit Textdokumenten usw.). SSL ist ebenfalls knackbar, sodass selbst verschlüsselte "sichere" Verbindungen von rechts gelesen werden können Menschen.

5
AbsoluteƵERØ

Was Sie erreichen wollen, ist nicht möglich. HTTP ist nicht dafür ausgelegt, hardwarespezifische Bezeichner bereitzustellen. Die einzige "Kennung" ist der User-Agent, der sich überhaupt nicht identifiziert. nd Es kann gefälscht werden, sodass die Browser dies nicht einmal tun Zugriff auf diese Informationen.

Selbst mit einem Client-Zertifikat kann es einfach vom Browser auf ein anderes Gerät exportiert werden.

Sagen Sie Ihrem Kunden, dass dies technisch nicht möglich ist.

4
Adi

Wem gehört der Code? Wie wahrscheinlich ist es, dass jemand anderes die App nutzen möchte? Wie schwerwiegend wären die Konsequenzen, wenn jemand anderes die App nutzen würde? Welche Gerätetypen? Soll der Zugriff auf statische IP-Adressen beschränkt werden? Dies sind nur einige der Fragen, die Sie in Ihrem Beitrag hätten beantworten müssen, bevor Sie nach Designempfehlungen gefragt haben.

VPNs IP-Adressen und Client-Zertifikate wurden bereits erwähnt, die Installation von Client-Zertifikaten kann jedoch auf einigen Geräten schwierig sein. Statische IPs funktionieren nur in einem gut verwalteten LAN. Ein VPN würde eine enge Integration zwischen Server-, Netzwerk- und Anwendungskonfiguration erfordern.

Das Speichern eines einfachen Tokens in einem dauerhaften Cookie (ohne entsprechende Berechtigungen und Prozesse rund um die Geräteregistrierung) ist eine einfache Lösung, jedoch nicht sehr widerstandsfähig gegen Reverse Engineering/Spoofing.

1
symcbean

Lösung Nummer Eins Wenn Sie IIS verwenden, ist ein Dienst integriert, mit dem Sie den Zugriff auf Ihre Anwendung basierend auf der IP-Adresse einschränken können.

Lösung Nummer zwei: Versuchen Sie, die Terminalsperre zu implementieren was Programmierung erfordert;

Sie können die Terminalsperrlösung implementieren, bei der es sich um hardwarespezifische Kennungen handelt. Bitte folgen Sie den nachstehenden Schritten.

Hinweis: Sie müssen für jedes Gerät eine statische IP festlegen.

  • A: Verwenden Sie Active-x-Steuerelemente, um MACAddress-Informationen auf der Clientseite zu erfassen. Ich habe sie nur für Internet Explorer implementiert. Um mehr Sicherheit zu bieten, können Sie MACAddress, IPAddress und Computernamen erfassen. Bitte beachten Sie, dass Active Signed ohne Vorzeichen und Active X mit Vorzeichen im Browser aktiviert sein müssen.
  • B: Auf Anwendungsebene muss dasselbe implementiert werden, um die Informationen aus Schritt A zu lesen und die in der Datenbank übergebenen Informationen zu speichern/überprüfen.
  • C: Befolgen Sie auf Datenbankebene die folgenden Schritte.

  • Schritt 1: Wenn zum ersten Mal auf die Anwendung zugegriffen wird, muss das System die IP-Adresse erfassen und in einer Tabelle speichern, z. Bitte erstellen Sie eine Tabelle mit dem Namen dbo.Terminals und versuchen Sie über Ihre Anwendung, die IP-Adresse zu lesen und zu speichern und automatisch eine eindeutige ID für jede IP zu generieren. Diese Tabelle muss einige Felder mit dem Namen MACADDRESS und zusätzliche Felder für Benutzer enthalten, die diesem EINZIGARTIGEN CODE zugeordnet sind, z. Benutzer1, Benutzer2, Benutzer3 und so weiter.

  • Schritt 2: Ändern Sie nun Ihre Tabelle dbo.user und fügen Sie ein Feld mit dem Namen Static Terminal-apply hinzu, das als Schalter fungiert (Ein/AUS).

  • Schritt 3: Benutzeranmeldung: Schreiben Sie einige Codes, um zu überprüfen, ob Schritt B aktiviert ist. Wenn ja, prüfen Sie, ob das Terminal zugewiesen ist. Schritt A. Überprüfen Sie nun, ob für dieses Terminal eine Liste registrierter Benutzer vorhanden ist (siehe Schritt A Benutzer1, Benutzer2 usw.). Überprüfen Sie abschließend, ob die Mac-Adresse erfasst und in dbo.terminals verfügbar ist. Wenn sie nicht erfasst wurde, rufen Sie sie ab und speichern Sie sie in der Datenbank. Die oben genannte Lösung wird in vielen Banken getestet. Dabei handelt es sich um einen gerätebasierten Zugriff auf Bankdomänen- und Finanzdienstleistungssysteme.