
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:
Schlüssel hinzufügen:
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:
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.)
(Das erneute Überprüfen von Updates schadet nicht.)
Installieren Sie LinOTP und Zusatzmodule:
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)
(optional kann man nicht einstellen)
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
Konfigurationen für Sicherungsclient und Benutzerradius.
Erstellen Sie eine leere Client-Datei:
Wir bearbeiten unsere neue Konfigurationsdatei (eine Backup-Konfiguration kann als Beispiel verwendet werden)
client 192.168.188.0/24 { secret = passwd # }
Erstellen Sie als Nächstes die Benutzerdatei:
Wir bearbeiten die Datei und teilen dem Radius mit, dass wir Perl zur Authentifizierung verwenden werden.
DEFAULT Auth-type := perl
Bearbeiten Sie als Nächstes die Datei / 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.
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
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:
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.
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-perlcd 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
Apache2Einrichtung mit Cisco ASA (dort wird ein anderer Token-Generierungsserver verwendet, die Einstellungen des ASA selbst sind jedoch identisch).
VPN mit Zwei-Faktor-AuthentifizierungEinrichten 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=270571www.digitalbears.net/?p=469Vielen Dank an die Autoren.