LinOTP-Zwei-Faktor-Authentifizierungsserver

LinOTP-Zwei-Faktor-Authentifizierungsserver

Heute möchte ich Ihnen zeigen, wie Sie einen Zwei-Faktor-Authentifizierungsserver einrichten, um das Unternehmensnetzwerk, Websites, Dienste und SSH zu schützen. Der Link funktioniert auf dem Server: LinOTP + FreeRadius.

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

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

Dieser Server funktioniert gut mit Cisco ASA, OpenVPN-Server, Apache2 und tatsächlich mit fast allem, was die Authentifizierung über einen RADIUS-Server unterstützt (z. B. für SSH zum Rechenzentrum).

benötigt:

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

Home:

Installieren Sie Debian 8.

Fügen Sie das LinOTP-Repository hinzu:

# 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 gibt Debian bei einer Neuinstallation nach der Ausführung dieses Befehls Folgendes 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 das anfängliche Gnupg-Setup. Macht nichts. Führen Sie den Befehl einfach erneut aus.
Zu Debians Frage:

gpg: поиск "913DFF12F86258E5" на hkp сервере keys.gnupg.net
(1)	LSE LinOTP2 Packaging <[email protected]>
	  2048 bit RSA key F86258E5, создан: 2010-05-10
Keys 1-1 of 1 for "913DFF12F86258E5".  Введите числа, N) Следующий или Q) Выход>

Antwort 1

Next:

# 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 wie für LinOTP empfohlen verwenden.

(Weitere Informationen, einschließlich der Neukonfiguration der LinOTP-Datenbank, finden Sie in der offiziellen Dokumentation für Link. An derselben Stelle finden Sie den Befehl: dpkg-reconfigure linotp, um die Einstellungen zu ändern, wenn Sie MySQL bereits installiert haben.

# apt-get install mysql-server

# apt-get update

(Es schadet nicht, noch einmal nach Updates zu suchen)
Installieren Sie LinOTP und zusätzliche Module:

# apt-get install linotp

Wir beantworten die Fragen des Installateurs:
Verwenden Sie Apache2: ja
Erstellen Sie ein Passwort für Admin Linotp: „YourPassword“
Selbstsigniertes Zertifikat generieren?: Ja
MySQL verwenden?: ja
Wo befindet sich die Datenbank: localhost
Erstellen Sie eine LinOTP-Datenbank (Basisname) auf dem Server: LinOTP2
Erstellen Sie einen separaten Benutzer für die Datenbank: LinOTP2
Legen Sie das Passwort für den Benutzer fest: „YourPassword“
Soll ich jetzt eine Basis erstellen? (so etwas wie „Sind Sie sicher, dass Sie … wollen“): Ja
Geben Sie das MySQL-Root-Passwort ein, das Sie während der Installation erstellt haben: „YourPassword“
Fertig.

(optional, kann nicht eingegeben werden)

# apt-get install linotp-adminclient-cli 

(optional, kann nicht eingegeben werden)

# apt-get install libpam-linotp  

Und so ist unser Linotp-Webinterface jetzt verfügbar unter:

"<b>https</b>: //IP_сервера/manage"

Auf die Einstellungen im Webinterface werde ich etwas später eingehen.

Jetzt 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

Sichern Sie die Client- und Benutzerkonfigurationen des Radius.

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

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

Erstellen Sie eine leere Clientdatei:

# touch /etc/freeradius/clients.conf

Bearbeiten unserer neuen Konfigurationsdatei (gesicherte Konfiguration kann als Beispiel verwendet werden)

# nano /etc/freeradius/clients.conf

client 192.168.188.0/24 {
secret  = passwd # пароль для подключения клиентов
}

Als nächstes erstellen Sie 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 Linotp-Perl-Skript im Modulparameter festlegen:

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

.....
Als nächstes erstellen wir eine Datei, in der wir angeben, aus welcher Domäne (Domäne, Datenbank oder Datei) die Daten entnommen werden sollen.

# touch /etc/linotp2/rlm_perl.ini

# nano /etc/linotp2/rlm_perl.ini

URL=https://IP_вашего_LinOTP_сервера(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=False

Hier werde ich noch etwas näher darauf eingehen, denn es ist wichtig:

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 im LinOTP-Webinterface erstellen werden.)
REALM=rearm1
#Name der Benutzergruppe, die im LinOTP-Webmord erstellt wird.
RESCONF=flat_file
#optional: Kommentieren Sie es aus, wenn alles gut zu funktionieren scheint
Debug=True
#optional: Verwenden Sie dies, wenn Sie selbstsignierte Zertifikate haben, andernfalls auskommentieren (SSL, wenn wir unser eigenes Zertifikat erstellen und es überprüfen möchten)
SSL_CHECK=Falsch

Als nächstes erstellen Sie 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 (es muss nichts bearbeitet werden):

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 USERREALM 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 wir einen Sim-Link:

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

Persönlich lösche ich die Standard-Radius-Sites, 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

Kommen wir nun zurück zum Web-Maulkorb und betrachten ihn etwas genauer:
Klicken Sie in der oberen rechten Ecke auf LinOTP Config -> UserIdResolvers -> New
Wir wählen, was wir wollen: LDAP (AD Win, LDAP Samba) oder SQL oder lokale Benutzer des Flatfile-Systems.

Füllen Sie die erforderlichen Felder aus.

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

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

Alle Server sind konfiguriert.

Supplement:

LinOTP unter Debian 9 einrichten:

Установка:

# echo 'deb http://linotp.org/apt/debian stretch linotp' > /etc/apt/sources.list.d/linotp.list 
# apt-get install dirmngr

# apt-key adv --recv-keys 913DFF12F86258E5
# apt-get update

# apt-get install mysql-server

(Standardmäßig bietet MySQL (MariaDB) in Debian 9 nicht an, ein Root-Passwort festzulegen. Natürlich können Sie es leer lassen, aber wenn Sie die Nachrichten lesen, führt dies häufig zu „epischen Fehlern“, daher werden wir es trotzdem festlegen )

# mysql -u root -p
use mysql;
UPDATE user SET Password = PASSWORD('тут_пароль') WHERE User = 'root';
exit
# apt-get install linotp
# apt-get install linotp-adminclient-cli
# apt-get install python-ldap
# apt install freeradius
# nano /etc/freeradius/3.0/sites-enabled/linotp

Fügen Sie den Code ein (gesendet von JuriM, vielen Dank dafür!):

Server-Linotp {
Hören {
ipaddr=*
port = 1812
Typ = Auth
}
Hören {
ipaddr=*
port = 1813
Typ = Konto
}
genehmigen {
Vorverarbeitung
aktualisieren {
&control:Auth-Type := Perl
}
}
authentifizieren {
Authentifizierungstyp Perl {
perl
}
}
Buchhaltung {
Unix
}
}

Bearbeiten Sie /etc/freeradius/3.0/mods-enabled/perl

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

Leider wird in Debian 9 die Bibliothek radius_linotp.pm nicht aus den Repositorys installiert, daher werden wir sie von Github übernehmen.

# apt install git
# git clone https://github.com/LinOTP/linotp-auth-freeradius-perl
# cd linotp-auth-freeradius-perl/
# cp radius_linotp.pm /usr/share/linotp/radius_linotp.pm

Jetzt reparieren wir /etc/freeradius/3.0/clients.conf

Client-Server {
ipaddr = 192.168.188.0/24
geheim = Ihr Passwort
}

Jetzt reparieren wir nano /etc/linotp2/rlm_perl.ini

Wir fügen dort den gleichen Code ein wie bei der Installation unter Debian 8 (oben beschrieben).

auf der Idee von allem. (noch nicht getestet)

Ich werde unten ein paar Links hinterlassen, um Systeme einzurichten, die am häufigsten durch eine Zwei-Faktor-Autorisierung geschützt werden müssen:
Einrichten der Zwei-Faktor-Authentifizierung in Apache2

Konfiguration mit Cisco ASA(Es wird ein anderer Token-Generierungsserver verwendet, aber die Einstellungen der ASA selbst sind dieselben.)

VPN mit Zwei-Faktor-Authentifizierung

Einstellung Zwei-Faktor-Authentifizierung in SSH (Dort wird auch LinOTP verwendet) - Danke an den Autor. Dort finden Sie auch Interessantes zum Einrichten von LiOTP-Richtlinien.

Außerdem unterstützen CMS vieler Websites die Zwei-Faktor-Authentifizierung (für WordPress verfügt LinOTP sogar über ein eigenes Spezialmodul). github), beispielsweise wenn Sie auf Ihrer Unternehmenswebsite einen sicheren Bereich für Unternehmensmitarbeiter einrichten möchten.
WICHTIGER FAKT! Aktivieren Sie NICHT das Kontrollkästchen „Google Authenticator“, um Google Authenticator zu verwenden! Der QR-Code ist dann nicht lesbar… (seltsame Tatsache)

Für das 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: habr.com

Kommentar hinzufügen