Schlagwort-Archive: IT Sicherheit

© buchachon - Fotolia.com

Sicherer Web-Login mit bCrypt und Javascript

User verwenden auf verschiedenen Webseiten häufig gleiche und meist auch schwache Passwörter. Die wenigsten Nutzer im Internet sind technisch so versiert, ausreichende sichere Passwörter generieren und nutzen zu können. Vielfach fehlt ein grundlegendes Basiswissen aus dem Bereich der IT-Sicherheit.

Dies ist aus mehreren Grunde problematisch, denn es kann nicht sichergestellt werden,

  • dass der Anbieter Passwörter angemessen schützt,
  • Passwörter durch den Anbieter nicht weitergegeben werden, oder
  • das Passwörter während der Übertragung an den Webserver nicht mitgeschnitten werden, hierbei ist auch https keine Garantie.

Um die Daten des Users bestmöglich zu schützen, sind an dieser Stelle in erster Linie die Anbieter und Entwickler in der Pflicht. Das Verhalten der Benutzer wird sich auf absehbare Zeit nicht ändern.

Clientseitige Implementierung

Eine Möglichkeit, dass Problem zu mindern, besteht darin, Passwörter zu keiner Zeit unverschlüsselt zu übertragen. Einwegfunktionen zur Sicherung von Passwörtern sollten bereits im Browser des Clients ausgeführt werden.

--> Das komplette Code-Beispiel findet sich auf Github!

Der heutigen Beitrag zeigt eine Beispielimplementierung auf Basis von javascript-bcrypt. Passwörter werden als salted bCrypt-Hash gespeichert.

Das Beispiel ist lediglich ein Ansatz und an vielen Stellen noch nicht ausgereift. Fehlerzustände werden z.B. teilweise noch nicht korrekt behandelt oder Brute-Force Angriffe noch nicht migriert. Das Skript stellt lediglich eine Arbeitsgrundlage zur Weiterentwicklung dar.

Passwort setzen/ ändern

Das Passwort wird mit bCrypt und einem zufälligen Salt verarbeitet und anschließend an den Webserver übertragen. Der Webserver speichert den Hash zusammen mit dem Benutzernamen. Der Anbieter hat zu keiner Zeit das Klartextpasswort erhalten.

Zusammenfassung:

  • Hash erstellen
  • Hash an Server übertragen

Passwort verifizieren

Auch bei der Verifikation darf das Passwort nicht im Klartext übermittelt werden. Hierbei ergibt sich jedoch die Schwierigkeit, dass der Salt für jeden Nutzer unterschiedlich ist und somit das Passwort nicht einfach erneut als Hash übertragen werden kann. Aus diesem Grund muss beim Login der Salt des Users an die Login-Form übertragen werden.

Zusammenfassung:

  • Username eingeben
  • Salt vom Server für Usernamen abholen
  • Passwort eingeben
  • Hash erstellen
  • Hash an Server übertragen, dort Abgleich

Weiterlesen

© timkaekler - Fotolia.com

PHP Anwendungen absichern

Nachdem ich vor knapp 3 Wochen zufällig festgestellt habe, dass über das PHP-Webinterface von einem der größten deutschen Web-Hoster nahezu alle Rechnungen, unter anderem inkl. Kunden-Adressen, gekürzten Bankverbindungen, Domains sowie IP-Adressen öffentlich abrufbar sind, habe ich mich entschieden, einen kurzen Beitrag über die Absicherung von Web-Anwendungen zu schreiben. Zur Ausnutzung der Lücke war keinerlei technisches Fachwissen erforderlich - das Skript zum Download der Rechnung hat einfach jede beliebige Rechnung ungeprüft ausgeben. In der URL musste nur die gewünschte Rechnungsnummer eingegeben werden. Aufgefallen ist es mir, nachdem ich bemerkt hatte, dass ich eine Rechnung von meinem Zweitaccount beim Anbieter herunterladen konnte, ohne dass ich dort noch angemeldet war.

Problem 1: Keine Authentifizierung

Oftmals finde ich Anwendungen, die zwar einen Login haben, dieser jedoch nur den Zweck hat, auf einen geschützten Bereich weiterzuleiten. Beim Öffnen einer Seite in einem geschützten Bereich wird nicht erneut geprüft, ob der User authentifiziert ist. Dabei lässt sich dies unglaublich leicht realisieren:

<?php
session_start();
 
if (isset($_SESSION['username'])) {
   --> Passt
} else {
   --> Zur Anmeldung weiterleiten
}
?>

Geschützter Content sollte niemals (!) ohne Authentifizierung ausgeführt werden.

Problem 2: Keine Autorisierung

Neben der Authentifizierung sollte stets geprüft werden, ob der User auch autorisiert ist, die gewünschte Aktion auszuführen. Im Beispiel einer Rechnungsabfrage über SQL darf niemals die Anfrage ungeprüft über SQL ausgeführt werden. Die SQL Anfrage sollte soweit eingeschränkt sein, dass ein User nur auf Daten zugreifen kann, die für ihn bestimmt sind.

Problem 3: Unverschlüsselte Übertragung

Ein geschützter Bereich bringt wenig, wenn die Anmeldung im Klartext durchgeführt wird. Es kann nur in den seltensten Fällen sichergestellt werden, dass die Daten unterwegs nicht ausgelesen werden können. Einen HTTP Request mit Wireshark auszulesen, bedarf keines großen Könnens. Die Thematik wird umso schwerwiegender, wenn im Unternehmen Single-Sign-On (SSO) bzw. LDAP verwendet wird.

Weiterlesen

© Alex Tihonov - Fotolia.com

Cisco Port-Security

Da ich mich aktuell auf einige Cisco Zertifizierungen vorbereite, treffe ich immer wieder auf Themen, die gut in diesen IT Security Blog passen könnten. Beginnen möchte ich heute mit dem Thema Cisco Port Security.

Port Security ermöglicht es auf Cisco Geräten, den eingehenden Traffic eines Ports auf bestimmte MAC-Adressen zu limitieren. Durch diese Technologie kann innerhalb eines Unternehmens garantiert werden, dass an einem Switch-Port ausschließlich bestimmte Unternehmenshardware und nicht etwa fremde Geräte (mit anderer MAC-Adresse) oder ein Switch angeschlossen werden.

Grenzen von Port Security

Zu Beginn möchte ich auf die Grenzen von Port Security hinweisen: Port Security basiert auf MAC-Adressen. Netzwerkhardware hat zwar eine feste, "eingebrannte" MAC-Adresse, die BIA, diese lässt sich jedoch häufig von übergeordneten Schichten verändern. Es besteht in den meisten Betriebssystemen die Möglichkeit, die Layer 2 Adresse, welche beim Senden verwendet wird, zu modifizieren.

Port Security Layer

Weiterlesen

© Kesu - Fotolia.com

Automatisiertes Log Management mit Graylog2

Die Wichtigkeit der Auswertung von Log-Dateien der Netzwerke-Hardware oder von Servern ist den meisten Administratoren bewusst. In der Praxis ist es jedoch häufig, das sich die Analyse darauf beschränkt, die wichtigsten Protokolldateien der letzten Tage durchzuschauen und die Erreichbarkeit von Services zu prüfen. Durch den Verzicht auf ein effizientes Log-(bzw. Event-)Management werden viele Gelegenheiten verpasst, drohende Systemstörungen oder Ausfälle frühzeitig zu erkennen.

Ich möchte in diesem Beitrag eine Möglichkeit vorstellen, große Protokollmengen mit mehreren Millionen Einträgen systematisch, automatisiert und zeitsparend auswerten zu können. Als Software werde ich hierbei das Open Source Log Management Tool Graylog2 verwenden.

Graylog2 - Dashboards

Teil eines effizienten Log Management Prozesses sind Dashboards, das sind kleine Übersichten mit vordefinierten Auswertungen der Log-Daten. Ein Dashboard für eine DMZ könnte zum Beispiel wie folgt aussehen:

Log Management Graylog2 Security Dashboard

Im Optimalfall werden sämtliche Logmeldungen bereits automatisiert so stark gefiltert und ausgewertet, dass das Dashboard auf einen Blick den Zustand der Infrastruktur visualisiert. Ein Klick auf den Wert des Dashboards zeigt Details zum angezeigten Item.

Weiterlesen

© Warakorn - Fotolia.com

Netzwerkzugriff für Unternehmens-Notebooks absichern

Die Absicherung des Netzwerkzugriffs für Unternehmens-Notebooks, also die Beschränkung des Zugriffs auf bestimmte Netzwerke, ist Thema des heutigen Beitrages.

Szenario der heutigen Problemstellung

In einem Unternehmens-Netzwerk existieren PCs, Notebooks oder andere netzwerkfähige Geräte, die von Mitarbeitern auch mit nach Hause genommen werden dürfen. Diese sind mit einer Netzwerkkarte ausgestattet, die es den Mitarbeitern ermöglicht, Services des Unternehmens zu nutzen.

Das Unternehmen möchte aus verschiedenen Gründen garantieren, dass die Mitarbeiter das Notebook nicht mit dem Heimnetzwerk verbinden können - um einen Abfluss vertraulicher Daten und ungeschützten Zugriff ins Internet zu verhindern.
Weiterlesen