LinOTP zwee-Faktor Authentifikatioun Server

LinOTP zwee-Faktor Authentifikatioun Server

Haut wëll ech deelen wéi een en Zwee-Faktor Authentifikatiounsserver opstellt fir e Firmennetz, Siten, Servicer, ssh ze schützen. De Server wäert déi folgend Kombinatioun lafen: LinOTP + FreeRadius.

Firwat brauche mir et?
Dëst ass eng komplett gratis, praktesch Léisung, bannent sengem eegene Netzwierk, onofhängeg vun Drëtt-Partei Ubidder.

Dëse Service ass ganz praktesch, zimmlech visuell, am Géigesaz zu anere Open Source Produkter, an ënnerstëtzt och eng grouss Zuel vu Funktiounen a Politiken (Zum Beispill Login + Passwuert + (PIN + OTPToken)). Duerch d'API integréiert se mat SMS Sendungsservicer (LinOTP Config->Provider Config->SMS Provider), generéiert Coden fir mobil Uwendungen wéi Google Authentifizéierer a vill méi. Ech mengen et ass méi praktesch wéi de Service diskutéiert an Artikel.

Dëse Server funktionnéiert perfekt mat Cisco ASA, OpenVPN Server, Apache2, an allgemeng mat bal alles wat d'Authentifikatioun iwwer e RADIUS Server ënnerstëtzt (Zum Beispill fir SSH am Datenzenter).

Erfuerderlech:

1) Debian 8 (jessie) - Erfuerderlech! (Proufinstallatioun op Debian 9 gëtt um Enn vum Artikel beschriwwen)

Start:

Installéiert Debian 8.

Füügt de LinOTP Repository:

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

Schlësselen addéieren:

# gpg --search-keys 913DFF12F86258E5

Heiansdo während enger "propper" Installatioun, nodeems Dir dëse Kommando ausgefouert hutt, weist Debian:

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

Dëst ass den initialen gnupg Setup. Et ass ok. Fuert just de Kommando erëm.
Zu dem Debian seng Fro:

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) Выход>

Mir äntweren: 1

Nächst:

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

# apt-get update

Installéiert mysql. An der Theorie kënnt Dir en anere sql Server benotzen, awer fir Simplicitéit wäert ech et benotzen wéi recommandéiert fir LinOTP.

(zousätzlech Informatioun, dorënner d'Rekonfiguratioun vun der LinOTP Datebank, kann an der offizieller Dokumentatioun fir Link. Do kënnt Dir och de Kommando fannen: dpkg-reconfigure linotp fir Parameteren z'änneren wann Dir schonn mysql installéiert hutt).

# apt-get install mysql-server

# apt-get update

(et géif net verletzen d'Aktualiséierungen nach eng Kéier ze kontrolléieren)
Installéiert LinOTP an zousätzlech Moduler:

# apt-get install linotp

Mir beäntweren d'Froen vum Installateur:
Benotzt Apache2: jo
Erstellt e Passwuert fir den Admin Linotp: "Äert Passwuert"
Generéiere selbst ënnerschriwwenen Zertifika?: jo
Benotzt MySQL?: jo
Wou ass d'Datebank lokaliséiert: localhost
Erstellt eng LinOTP Datebank (Basisnumm) um Server: LinOTP2
Schafen eng separat Benotzer fir d'Datebank: LinOTP2
Mir setzen e Passwuert fir de Benotzer: "Äert Passwuert"
Soll ech elo eng Datebank erstellen? (eppes wéi "Sidd Dir sécher datt Dir wëllt ..."): jo
Gitt d'MySQL Root-Passwuert un, dat Dir erstallt hutt wann Dir se installéiert: "YourPassword"
Gemaach.

(optional, Dir musst et net installéieren)

# apt-get install linotp-adminclient-cli 

(optional, Dir musst et net installéieren)

# apt-get install libpam-linotp  

An dofir ass eis Linotp Web Interface elo verfügbar op:

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

Ech wäert iwwer d'Astellungen am Web Interface e bësse méi spéit schwätzen.

Elo, dat Wichtegst! Mir erhéijen FreeRadius a verbannen et mat Linotp.

Installéiert FreeRadius a Modul fir mat LinOTP ze schaffen

# apt-get install freeradius linotp-freeradius-perl

Backupsatellit de Client a Benotzer Radius configs.

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

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

Erstellt eng eidel Clientdatei:

# touch /etc/freeradius/clients.conf

Änneren vun eiser neier Configuratiounsdatei (déi gebackupte Configuratioun kann als Beispill benotzt ginn)

# nano /etc/freeradius/clients.conf

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

Als nächst, erstellt eng Benotzerdatei:

# touch /etc/freeradius/users

Mir änneren d'Datei, soen de Radius datt mir Perl fir d'Authentifikatioun benotzen.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Als nächst ännert d'Datei /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Mir mussen de Wee zum perl linotp Skript am Modulparameter spezifizéieren:

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

... ..
Als nächst erstelle mir e Fichier an deem mir soen wéi eng (Domain, Datebank oder Datei) fir d'Donnéeën ze huelen.

# 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

Ech ginn hei e bësse méi am Detail well et wichteg ass:

Voll Beschreiwung vum Fichier mat Kommentaren:
#IP vum linOTP Server (IP Adress vun eisem LinOTP Server)
URL=https://172.17.14.103/validate/simplecheck
#Eist Gebitt dat mir an der LinOTP Webinterface erstellen.)
REALM=rearm1
#Numm vun der Benotzergrupp, déi am LinOTP Webmuzzle erstallt gëtt.
RESCONF=flat_file
#optional: kommentéieren wann alles gutt funktionnéiert
Debug = True
#optional: benotzt dëst, wann Dir selwer ënnerschriwwene Certificaten hutt, soss kommentéiert (SSL wa mir eisen eegene Certificat erstellen an et verifizéiere wëllen)
SSL_CHECK=Falsch

Als nächst erstellt d'Datei /etc/freeradius/sites-available/linotp

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

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

A kopéiert d'Konfiguratioun an et (net néideg eppes z'änneren):

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ächst wäerte mir e SIM Link erstellen:

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

Perséinlech ëmbréngen ech Standard Radius Siten, awer wann Dir se braucht, kënnt Dir entweder hir Configuratioun änneren oder se deaktivéieren.

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

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

# service freeradius reload

Loosst eis elo zréck op d'Web Gesiicht a kucken et e bësse méi detailléiert:
An der oberer rechter Ecke klickt LinOTP Config -> UserIdResolvers -> Nei
Mir wielen wat mir wëllen: LDAP (AD win, LDAP samba), oder SQL, oder lokal Benotzer vum Flatfile System.

Fëllt déi néideg Felder aus.

Als nächst kreéiere mir REALMS:
An der oberer rechter Ecke klickt LinOTP Config -> Realms -> New.
a gitt eis REALMS en Numm, a klickt och op déi virdrun erstallt UserIdResolvers.

FreeRadius brauch all dës Donnéeën an der /etc/linotp2/rlm_perl.ini Datei, wéi ech hei uewen geschriwwen hunn, also wann Dir et dann net geännert hutt, maacht et elo.

De Server ass alles konfiguréiert.

Zousatz:

LinOTP op Debian 9 opsetzen:

Installatioun:

# 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

(par défaut, an Debian 9 mysql (mariaDB) bitt net fir e Root Passwuert ze setzen, natierlech kënnt Dir et eidel loossen, awer wann Dir d'Noriichte liest, féiert dat ganz dacks zu "epesche Feeler", also wäerte mir et setzen egal)

# 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

Paste de Code (geschéckt vum JuriM, Merci him dofir!):

server linotp {
lauschteren {
ipaddr = *
port=1812
type=auth
}
lauschteren {
ipaddr = *
port=1813
Typ = acct
}
autoriséieren {
virveraarbechtung
update {
&control:Auth-Typ := Perl
}
}
authentifizéieren {
Auth-Typ Perl {
Perl
}
}
Comptabilitéit {
Unix
}
}

Edit /etc/freeradius/3.0/mods-enabled/perl

perl {
Dateinumm = /usr/share/linotp/radius_linotp.pm
func_authenticate = authentifizéieren
func_autorize = autoriséieren
}

Leider, an Debian 9 ass d'radius_linotp.pm Bibliothéik net vun de Repositories installéiert, also wäerte mir et aus github huelen.

# 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

loosst eis elo /etc/freeradius/3.0/clients.conf änneren

Client Server {
ipaddr = 192.168.188.0/24
geheim = Äert Passwuert
}

Elo korrigéiere mir Nano /etc/linotp2/rlm_perl.ini

Mir pechen dee selwechte Code do wéi wann Dir op Debian 8 installéiert (uewe beschriwwen)

dat ass alles no der Iddi. (nach net getest)

Ech verloossen ënnert e puer Linken fir Systemer opzestellen déi meeschtens mat Zwee-Faktor Authentifikatioun geschützt musse ginn:
Zwee-Faktor Authentifikatioun astellen an Apache2

Ariichten mat Cisco ASA(en aneren Token Generatioun Server gëtt do benotzt, awer d'Astellunge vun der ASA selwer sinn déiselwecht).

VPN mat Zwee-Faktor Authentifikatioun

Upassung zwee Faktor Authentifikatioun an ssh (LinOTP gëtt och do benotzt) - Merci dem Auteur. Do fannt Dir och interessant Saachen iwwer d'Opstellung vun LiOTP Politiken.

Och d'CMS vu ville Site ënnerstëtzen zwee-Faktor Authentifikatioun (Fir WordPress huet LinOTP souguer säin eegene spezielle Modul fir github), zum Beispill, wann Dir e geschützte Sektioun op Ärer Firmewebsäit fir Firmebeamten wëllt maachen.
WICHTEG FEIT! Kontrolléiert NET d'Këscht "Google Autenteficator" fir Google Authenticator ze benotzen! De QR-Code ass dann net liesbar... (komesch Tatsaach)

Fir dësen Artikel ze schreiwen, gouf Informatioun aus de folgenden Artikele benotzt:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Merci un d'Auteuren.

Source: will.com

Setzt e Commentaire