LinOTP Zwei-Faktor-Autorisierungsserver

Bild

Heute möchte ich Ihnen zeigen, wie Sie einen Zwei-Faktor-Authentifizierungsserver konfigurieren, um das Unternehmensnetzwerk, Websites, Dienste und SSH zu schützen. Der Server wird im Bundle funktionieren: LinOTP + FreeRadius.

Warum brauchen wir es?
Dies ist eine völlig kostenlose und bequeme Lösung innerhalb des Netzwerks, unabhängig von Drittanbietern.

Dieser Service ist im Gegensatz zu anderen Open Source-Produkten sehr praktisch, sehr visuell und unterstützt auch eine Vielzahl von Funktionen und Richtlinien (z. B. Login + Passwort + (PIN + OTPToken)). Über die API lässt es sich in SMS-Sendedienste (LinOTP Config-> Provider Config-> SMS Provider) integrieren, generiert Codes für mobile Anwendungen wie Google Autentificator und vieles mehr. Ich denke, es ist bequemer als der im Artikel betrachtete Service.

Dieser Server funktioniert einwandfrei mit Cisco ASA, OpenVPN-Server, Apache2 und in der Tat mit fast allem, was die Authentifizierung über einen RADIUS-Server unterstützt (z. B. für SSH im Rechenzentrum).

Es ist erforderlich:

1) Debian 8 (jessie) - Erforderlich! (Die Testinstallation auf Debian 9 wird am Ende des Artikels beschrieben.)

Start:

Debian installieren 8.

LinOTP-Repository hinzufügen:

# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.list 

Schlüssel hinzufügen:

 # gpg --search-keys 913DFF12F86258E5 

Manchmal führt Debian bei einer „sauberen“ Installation nach Ausführung dieses Befehls folgende Probleme aus:

 gpg:   `/root/.gnupg' gpg:     `/root/.gnupg/gpg.conf' gpg: :   `/root/.gnupg/gpg.conf'       gpg:    `/root/.gnupg/secring.gpg' gpg:    `/root/.gnupg/pubring.gpg' gpg:     ( --keyserver) gpg:      :  URI 

Dies ist die Ersteinrichtung von gnupg. Nichts Schlimmes. Führen Sie den Befehl einfach erneut aus.
Gefragt von Debiana:

 gpg:  "913DFF12F86258E5"  hkp  keys.gnupg.net (1) LSE LinOTP2 Packaging <linotp2@lsexperts.de> 2048 bit RSA key F86258E5, : 2010-05-10 Keys 1-1 of 1 for "913DFF12F86258E5".  , N)   Q) > 

Antwort: 1

Weiter:

 # gpg --export 913DFF12F86258E5 | apt-key add - 

 # apt-get update 

Installieren Sie MySQL. Theoretisch können Sie einen anderen SQL-Server verwenden, aber der Einfachheit halber werde ich ihn verwenden, wie für LinOTP empfohlen.

(Weitere Informationen, einschließlich Informationen zur Neukonfiguration der LinOTP-Datenbank, finden Sie in der offiziellen Dokumentation unter dem Link . An derselben Stelle finden Sie den Befehl: dpkg-Rekonfigurieren von Linotp, um die Einstellungen zu ändern, wenn Sie MySQL bereits installiert haben.)

 # apt-get install mysql-server 

 # apt-get update 
(Das erneute Überprüfen von Updates schadet nicht.)
Installieren Sie LinOTP und Zusatzmodule:

 # apt-get install linotp 

Wir beantworten die Fragen des Installateurs:
Verwenden Sie Apache2: ja
Erstellen Sie ein Passwort für den Administrator Linotp: "YourPassword"
Selbstsigniertes Zertifikat erstellen ?: Ja
Verwenden Sie MySQL ?: Ja
Wo ist die Datenbank: localhost
Erstellen Sie die LinOTP-Datenbank (Datenbankname) auf dem Server: LinOTP2
Erstellen Sie einen separaten Benutzer für die Datenbank: LinOTP2
Wir setzen das Passwort auf den Benutzer: "YourPassword"
Soll ich jetzt eine Basis erstellen? (so etwas wie "Bist du sicher, dass du willst ..."): Ja
Geben Sie das MySQL-Root-Passwort ein, das während der Installation erstellt wurde: "YourPassword"
Fertig.

(optional kann man nicht einstellen)

 # apt-get install linotp-adminclient-cli 

(optional kann man nicht einstellen)

 # apt-get install libpam-linotp 

Unsere Linotp-Weboberfläche ist jetzt verfügbar unter:

 "<b>https</b>: //IP_/manage" 

Ich werde etwas später über die Einstellungen in der Weboberfläche sprechen.

Nun das Wichtigste! Erhöhen Sie FreeRadius und verknüpfen Sie es mit Linotp.

Installieren Sie FreeRadius und das LinOTP-Modul

 # apt-get install freeradius linotp-freeradius-perl 

Konfigurationen für Sicherungsclient und Benutzerradius.

 # mv /etc/freeradius/clients.conf /etc/freeradius/clients.old 

 # mv /etc/freeradius/users /etc/freeradius/users.old 

Erstellen Sie eine leere Client-Datei:

 # touch /etc/freeradius/clients.conf 

Wir bearbeiten unsere neue Konfigurationsdatei (eine Backup-Konfiguration kann als Beispiel verwendet werden)

 # nano /etc/freeradius/clients.conf 

 client 192.168.188.0/24 { secret = passwd #     } 

Erstellen Sie als Nächstes die Benutzerdatei:

 # touch /etc/freeradius/users 

Wir bearbeiten die Datei und teilen dem Radius mit, dass wir Perl zur Authentifizierung verwenden werden.

 # nano /etc/freeradius/users 

 DEFAULT Auth-type := perl 

Bearbeiten Sie als Nächstes die Datei / etc / freeradius / modules / perl

 # nano /etc/freeradius/modules/perl 

Wir müssen den Pfad zum Perl-Linotp-Skript in den Modulparameter schreiben:

 Perl { ....... ......... <source lang="bash">module = /usr/lib/linotp/radius_linotp.pm 

..... .....
Erstellen Sie als Nächstes eine Datei, in der wir angeben, aus welcher (Domäne, Datenbank oder Datei) Daten entnommen werden sollen.

 # touch /etc/linotp2/rlm_perl.ini 

 # nano /etc/linotp2/rlm_perl.ini 

 URL=https://IP__LinOTP_(192.168.XX)/validate/simplecheck REALM=webusers1c RESCONF=LocalUser Debug=True SSL_CHECK=False 

Hier werde ich noch etwas näher darauf eingehen, da dies wichtig ist:

Vollständige Beschreibung der Datei mit Kommentaren:
#IP des Linotp-Servers (IP-Adresse unseres LinOTP-Servers)
URL = https: //172.17.14.103/validate/simplecheck
# Unser Bereich, den wir in der LinOTP-Weboberfläche erstellen werden.)
REALM = hintenm1
# Der Name der Juzverej-Gruppe, die im LinOTP-Webmord erstellt wird.
RESCONF = flat_file
#optional: Kommentieren Sie aus, ob alles gut zu funktionieren scheint
Debug = True
#optional: Verwenden Sie diese Option, wenn Sie selbstsignierte Zertifikate haben, andernfalls auskommentieren (SSL, wenn wir unser Zertifikat erstellen und es überprüfen möchten).
SSL_CHECK = False

Erstellen Sie als Nächstes die Datei / etc / freeradius / sites-available / linotp

 # touch /etc/freeradius/sites-available/linotp 

 # nano /etc/freeradius/sites-available/linotp 

Und kopieren Sie die Konfiguration hinein (bearbeiten Sie nichts unangemessen):

 authorize { #normalizes maleformed client request before handed on to other modules (see '/etc/freeradius/modules/preprocess') preprocess # If you are using multiple kinds of realms, you probably # want to set "ignore_null = yes" for all of them. # Otherwise, when the first style of realm doesn't match, # the other styles won't be checked. #allows a list of realm (see '/etc/freeradius/modules/realm') IPASS #understands something like USER@REALM and can tell the components apart (see '/etc/freeradius/modules/realm') suffix #understands USER\REALM and can tell the components apart (see '/etc/freeradius/modules/realm') ntdomain # Read the 'users' file to learn about special configuration which should be applied for # certain users (see '/etc/freeradius/modules/files') files # allows to let authentification to expire (see '/etc/freeradius/modules/expiration') expiration # allows to define valid service-times (see '/etc/freeradius/modules/logintime') logintime # We got no radius_shortname_map! pap } #here the linotp perl module is called for further processing authenticate { perl } 

Als nächstes erstellen Sie einen Sim-Link:

 # ln -s ../sites-available/linotp /etc/freeradius/sites-enabled 

Persönlich töte ich die Websites mit Standardradius, aber wenn Sie sie benötigen, können Sie entweder ihre Konfiguration bearbeiten oder sie deaktivieren.

 # rm /etc/freeradius/sites-enabled/default 

 # rm /etc/freeradius/sites-enabled/inner-tunnel 

 # service freeradius reload 

Nun zurück zum Webface und betrachten Sie es genauer:
Klicken Sie in der oberen rechten Ecke auf LinOTP Config -> UserIdResolvers -> New
Wählen Sie, was wir wollen: LDAP (AD Win, LDAP Samba) oder SQL oder lokale Flatfile-Benutzer.

Füllen Sie die erforderlichen Felder aus.

Als nächstes erstellen Sie REALMS:
Klicken Sie in der oberen rechten Ecke auf LinOTP Config -> Realms -> New.
und geben Sie unseren REALMS einen Namen und klicken Sie auf die zuvor erstellten UserIdResolver.

FreeRadius benötigt all diese Daten in der Datei /etc/linotp2/rlm_perl.ini, über die ich oben geschrieben habe. Wenn Sie sie also nicht bearbeitet haben, tun Sie es jetzt.

Alle Server sind konfiguriert.

Ergänzung:

Einrichten von LinOTP unter Debian 9 (Dank an prikhodkov )
# Fügen Sie das LinOTP-Repository zu /etc/apt/sources.list.d/linotp.list hinzu und aktualisieren Sie die Rüben:

echo "deb linotp.org/apt/debian strip linotp"> /etc/apt/sources.list.d/linotp.list
apt-get update
apt-get install dirmngr
apt-key adv --recv-keys 913DFF12F86258E5

# Installieren und konfigurieren Sie den MySQL-Server grundsätzlich:

apt-get installiere MySQL-Server

# Installieren Sie Linotp- und Freeradius-Pakete

apt-get install linotp linotp-adminclient-cli python-ldap freeradius python-passlib python-bcrypt git libio-all-lwp-perl libconfig-datei-perl libtry-tiny-perl
# Erstellen Sie Symlinks zu Freeradius-Konfigurationsdateien

ln -s /etc/freeradius/3.0/sites-available / etc / freeradius / sites-available
ln -s /etc/freeradius/3.0/sites-enabled / etc / freeradius / sites-enabled
ln -s /etc/freeradius/3.0/clients.conf /etc/freeradius/clients.conf
ln -s /etc/freeradius/3.0/users / etc / freeradius / users

# Installieren Sie das Modul linotp-auth-freeradius-perl

Git-Klon github.com/LinOTP/linotp-auth-freeradius-perl
cd linotp-auth-freeradius-perl /
cp radius_linotp.pm /usr/share/linotp/radius_linotp.pm

# Wir bringen die Freeradius-Konfigurationsdatei für Linotp in dieses Formular

cat / etc / freeradius / sites-enabled / linotp

Server Linotp {
hör zu {
ipaddr = *
Port = 1812
Typ = Auth
}}
hör zu {
ipaddr = *
Port = 1813
Typ = Konto
}}
autorisieren {
Vorverarbeitung
update {
& control: Auth-Type: = Perl
}}
}}
authentifizieren {
Auth-Type Perl {
Perl
}}
}}
Buchhaltung {
Unix
}}
}}
# In Sites, die für Freeradius aktiviert sind, belassen wir nur Linotp

ls / etc / freeradius / sites-enabled
linotp

# Fügen Sie Hosts hinzu, von denen aus wir Verbindungen auf Freeradius zulassen

cat /etc/freeradius/clients.conf

Client Host1 {
ipaddr = IP_1
Netzmaske = 32
secret = 'SECRET_1'
}}
Client Host2 {
ipaddr = IP_2
Netzmaske = 32
secret = 'SECRET_2'
}}
# Als Benutzer verwenden wir den Perl-Connector

cat / etc / freeradius / users

DEFAULT Auth-Typ: = Perl
}}

cat /etc/freeradius/3.0/mods-available/perl

perl {
Dateiname = /usr/share/linotp/radius_linotp.pm
func_authenticate = authentifizieren
func_authorize = autorisieren

}}
# Erstellen Sie im Verzeichnis mods-enabled Symlinks aus dem Verzeichnis mods-available für das Perl-Modul und entfernen Sie eap

ln -s /etc/freeradius/3.0/mods-available/perl /etc/freeradius/3.0/mods-enabled/perl
rm /etc/freeradius/3.0/mods-enabled/eap

# Erstellen Sie einen Auditkey, um Linotp auszuführen

linotp-create-auditkeys -f linotp.ini
# Wir erstellen eine Konfiguration des Connectors, um zu überprüfen, ob die DD den Radius erreicht

cat /etc/linotp2/rlm_perl.ini

URL = https: // IP_LINOTP_SRV / validate / simplecheck
REALM = Reich
RESCONF = LocalUser
Debug = True
SSL_CHECK = False

Im Folgenden werden einige Links zum Einrichten von Systemen aufgeführt, die am häufigsten durch eine Zwei-Faktor-Authentifizierung geschützt werden müssen:
Konfigurieren der Zwei-Faktor-Authentifizierung in Apache2

Einrichtung mit Cisco ASA (dort wird ein anderer Token-Generierungsserver verwendet, die Einstellungen des ASA selbst sind jedoch identisch).

VPN mit Zwei-Faktor-Authentifizierung

Einrichten der Zwei-Faktor-Authentifizierung in ssh (dort wird auch LinOTP verwendet) - dank des Autors. Dort finden Sie auch interessante Informationen zum Konfigurieren von LiOTP-Richtlinien.

Außerdem unterstützen cms vieler Websites die Zwei-Faktor-Authentifizierung (für Wordpress verfügt LinOTP sogar über ein eigenes spezielles Modul für Github ), wenn Sie beispielsweise einen sicheren Bereich für Unternehmensmitarbeiter auf Ihrer Unternehmenswebsite erstellen möchten.
WICHTIGE FAKT! Aktivieren Sie NICHT das Kontrollkästchen "Google Autenteficator", um Google Authenticator zu verwenden! Der QR-Code kann dann nicht gelesen werden ... (seltsame Tatsache)

Zum Schreiben des Artikels wurden Informationen aus den folgenden Artikeln verwendet:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Vielen Dank an die Autoren.

Source: https://habr.com/ru/post/de462523/


All Articles