SecSign ID Plugin: Unix PAM - technisches Tutorial

16.12.2016 5 Minuten Lesedauer

Zwei-Faktor Authentifizierung für Unix PAM

Die Pluggable Authentication Modules (PAM) sind eine Softwarebibliothek, die eine allgemeine Programmierschnittstelle für Authentifizierungsdienste zur Verfügung stellt. Statt die Einzelheiten der Authentifizierung in jeder Applikation neu zu formulieren, bietet die PAM-API einen standardisierten Dienst in Form von Modulen an. In einer Konfigurationsdatei können die Module einzelnen Diensten zugeordnet werden, ohne dafür die Software, die diese Dienste realisiert, neu kompilieren zu müssen. PAM steht inzwischen auf AIX, HP-UX, Solaris, Linux, FreeBSD, NetBSD, Mac OS X und DragonFly BSD zur Verfügung.

PAM Überblick
Integration

Integration des Plugins in Ihr Setup

SecSign ID Integration

Please configure your desired integration of the SecSign ID Two Factor Authentication

Choose a system, where you want to add the secure login

Do you need your own ID Server inside your protected network or prefer if we manage and maintain it for you

The location to save the assigned SecSign IDs to a user account or the IDM alltogether

System to protect
?
The System you want to protect - Choose a system, where you want to add the secure login
SecSign ID Server location
?
Do you need your own ID Server inside your protected network or prefer if we manage and maintain it for you
User account location
?
The system to save the assigned SecSign IDs to a user account or the IDM alltogether
edit the settings to change the integration
Authentication
2FA
2FA blind
2FA no AP
2SA
2SA no AP
2SA blind
OTP
Enrollment
Custom ID
Pattern
IDP Custom Website
Enrollment initiated by SP
Enrollment with IDM
Show Network
Hide Network
Fullscreen
Request Solution
x
The authentication was successful
Anwendungsgebiete

Anwendungsgebiete

Das SecSignID Pluggable Authentication Module kann vielfältig genutzt werden um eine sichere Zwei-Faktor Authentifizierung bereit zu stellen.

  • SSH
  • FTP
  • Apache HTTP Auth
  • Desktop Logins

Sollen Dienste über einen RADIUS Server und Active Directory Authentifiziert werden, so stellen wir den SecSignID RADIUS Proxy bereit, welcher sich dann um die Zwei-Faktor Authentifizierung kümmert. Die SecSignIDs werden dann nicht mehr aus einer Konfigurationsdatei gezogen, sondern am Active Directory angefragt.

Authentifizierung

Ablauf der Authentifizierung

Der Nutzer gibt, am Beispiel einer SSH Verbindung, ganz normal seinen Nutzernamen und sein Passwort an. Einen Augenblick später erhält er eine Push-Notification auf sein Smartphone, wo er den Service-Namen und die Adresse sehen kann. Bestätigt er die Anfrage, wird die SSH Verbindung sofort aufgebaut.

So einfach läuft die 2-Step Zwei-Faktor Authentifizierung für den Nutzer ab und verhindert, dass unbefugte in das System eindringen können, selbst wenn das Passwort bekannt ist.

So funktioniert die Authentifizierung am SSH Beispiel:

pam-sequence-1

  1. Ein SSH Client öffnet eine SSH Verbindung zum Server
  2. Die Anwendung SSHd nimmt die Anfrage entgegen und stellt eine Authentifizierungsanfrage an die PAM Bibliothek
  3. In der entsprechenden Konfigurationsdatei wird geprüft, welche PAMs genutzt werden sollen. In dem Fall wird, wie normalerweise bei einer SSH Verbindung, zuerst nach dem Passwort des Nutzers gefragt
  4. Im zweiten Schritt wird das SecSignID PAM aufgerufen.
  5. Das SecSignID PAM lädt die Konfigurationsdatei und sucht die SecSignID des Nutzers, welcher sich gerade authentifizieren möchte
  6. Anschließend wird der SecSignID Server benachrichtigt, dass sich eine SecSignID authentifizieren möchte
  7. Der SecSignID Server sendet eine Push-Notification an das Smartphone des Nutzers
  8. Der Nutzer kann den Login nun auf seinem Smartphone bestätigen
  9. Das PAM fragt den SecSignID Server nach dem Status der Authentifizierung. Hat der Nutzer den Login bestätigt, wird dies dem PAM mitgeteilt.
  10. Das SecSignID PAM wertet die Antwort des Servers aus und entscheidet ob die Authentifizierung gültig ist. Ist dies der Fall, sendet das PAM den Status an die PAM-Bibliothek
  11. Die PAM-Bibliothek überprüft, ob es noch weitere Authentifizierungsroutinen gibt und sendet die Authentifizierungsbestätigung an die Anwendung, in dem Fall SSHd
  12. SSHd erhält von der PAM Bibliothek die Bestätigung, dass der Nutzer sich korrekt authentifiziert hat und baut nun die SSH Verbindung auf
Vorbereitungen

Vorbereitungen

Laden Sie das SecSignID PAM Archiv herunter und entpacken Sie es. Die Bibliothek besteht aus vier Dateien:

  • Makefile: Wird zum kompilieren der Quelldateien genutzt
  • libsecsinid.c: C Bibliothek für die SecSignID Zwei-Faktor Authentifizierung
  • libsecsinid.h: Zugehörige Header-Datei mit Typdefinitionen und Funktionsprototypen
  • secsignid.c: PAM zur Nutzung der SecSignID
  • secsignid.config: Konfigurationsdatei, welche Nutzernamen und dazugehörige SecSignID zusammenfasst

Damit das Programm kompiliert werden kann und fehlerfrei ausgeführt werden kann, müssen folgende Vorraussetzungen erfüllt sein:

  • Unix Plattform oder Mac
  • gcc Kompiler
  • libcurl installiert
  • Internetverbindung  (der SecSignID Server kommuniziert auf Port 443)

Der gcc Kompiler und libcurl können zum Beispiel unter Debian wie folgt installiert werden:

oder mit Ubuntu:

Beim Mac kann der Kompiler gcc und libcurl am einfachsten via Homebrew installiert werden.

Konfiguration

Konfiguration des PAM

In der Datei secsignid.c gibt es ein paar Konfigurationsmöglichkeiten des Moduls. So können Pfade zur Konfigurationsdatei und den Log- & Debug Dateien angepasst werden.

Server Endpunkte

Wenn ein On-Premise SecSignID Server genutzt wird, dann muss in der Datei libsecsignid.c die URL entspechend angepasst werden:

Konfigurationsdatei

Die Konfigurationsdatei secsignid.config fasst die Nutzernamen und die dazugehörigen SecSignIDs zusammen. Die Datei sollte an einem Ort aufbewahrt werden, wo Root- oder Administrator Zugangsrechte erforderlich sind. Der Pfad zur Konfigurationsdatei wird in der Datei secsignid.c in der Konstante CONFIGFILE gesetzt.

Die Konfigurationsdatei hat folgendes Schema:

SecSign ID

Die SecSignID sendet mehrere Informationen an das Smartphone, wie zum Beispiel den Service-Namen und die dazugehörige IP Adresse oder URL.

Wenn es keine Möglichkeit gibt, dem Client ein Bild anzuzeigen (zum Beispiel bei einer 2-Step Zwei-Faktor Absicherung einer SSH Verbindung), sollte der Accesspass weggelassen werden. Der Nutzer bekommt dann eine Anfrage auf sein Smartphone gesendet, welche bestätigt oder abgelehnt werden kann – ein Accesspass wird nicht präsentiert. Dieser Fall sollte allerdings nur für 2-Step Authentifizierungsprozesse verwendet werden.

Debugging

Die Bibliothek hat einen debug Modus, welcher jegliche Schnittstellenkommunikation ausgibt. So kann sicher gestellt werden, ob die Anfragen korrekt gesendet werden und wann nach dem Sitzungsstatus gefragt wird. Um den Debug Modus zu aktivieren, können Sie folgende Konstanten anpassen:

DEBUGTYPE gibt dabei an, was mit der Debug-Ausgabe geschehen soll:

  • NO = Kein Debugging
  • YES = Ausgabe auf StdOut
  • FILEDEBUG = Ausgabe in Datei

DEBUGFILEPATH beschreibt den Pfad, wo die Debug-Datei abgelegt werden soll. Die Datei muss vom Programm beschreibbar sein. Wenn keine Debug-Datei existiert, wird eine angelegt.

Logging

Logging ist für Schnittstellenfehler gedacht. Es werden technische Fehler (zum Beispiel falsche Syntax der Parameter) und API Fehler (zum Beispiel nicht gefundener Nutzer) geloggt. Es kann eingestellt werden, ob alle Fehler ins Syslog oder in eine separate Datei geschrieben werden:

  • FILELOG = Fehler werden in eine Datei geschrieben, der 2. Parameter ist der Dateiname der Logdatei
  • SYSLOG = Fehler werden ins Syslog geschrieben, 2. Parameter wird ignoriert, muss aber vorhanden sein
  • NO = es wird kein Log geschrieben, 2. Parameter wird ignoriert, muss aber vorhanden sein

Kompilieren und Installation

Kompilieren und Installation

Um das PAM zu kompilieren, öffnen Sie eine Shell, bzw. das Terminal, wechseln Sie in das entpackte Verzeichnis in dem das C-Script liegt und geben Sie make ein. Das Programm pam_secsignid.so wird erzeugt.

Das Programm kann manuell wie folgt kompiliert werden:

Nach dem kompilieren muss die Datei in das PAM Verzeichnis gelegt werden. Dies ist üblicherweise /lib/security oder /lib/x86_64-linux-gnu/security:

[/box][/col][/section]

Ihr eigener ID Server

Die Inhouse Installation der SecSign ID bietet Ihnen die Flexibilität, dich mit Ihrem bevorzugten Server, Services und Geräten zu verbinden. Passen Sie die SecSignID Ihrer Unternehmensmarke an!

Mehr Erfahren
On Premise 2FA ID

Letzte Blog Einträge, Neuigkeiten & Funktionen

Crowd SSO

Inhalt Vorbedingungen für die Einrichtung Installieren und Einrichten der einzelnen Komponenten als Server-Anwendung Einrichten von Crowd für die zentrale Benutzerverwaltung Einrichten der Applikation (z.B. JI ...

Mehr Lesen

Was ermöglicht Crowd?

Das SecSign ID Crowd Plugin kann schnell und einfach integriert werden. Ausführliche Informationen über das Plugin und die Integration können den folgenden Seiten entnommen werden. Sie haben noch Fragen? Zögern Sie n ...

Mehr Lesen

Zwei-Factor Authentifizierung mit der Smartwatch

Die einfachste mobile Zwei-Faktor Authentifizierung mit der Apple Watch Die SecSign Technologies AG bietet eine neue Generation von Authentifizierungslösungen und Schutzvorrichtungen für die digitale Identität an. Diese Lös ...

Mehr Lesen