LinOTP twa-faktor autentikaasje tsjinner

LinOTP twa-faktor autentikaasje tsjinner

Hjoed wol ik diele hoe't jo in twa-faktor-autentikaasjetsjinner ynstelle kinne om in bedriuwsnetwurk, siden, tsjinsten, ssh te beskermjen. De tsjinner sil de folgjende kombinaasje útfiere: LinOTP + FreeRadius.

Wêrom hawwe wy it nedich?
Dit is in folslein fergese, handige oplossing, binnen in eigen netwurk, ûnôfhinklik fan providers fan tredden.

Dizze tsjinst is heul handich, frij fisueel, yn tsjinstelling ta oare iepen boarne produkten, en stipet ek in grut oantal funksjes en belied (Bygelyks login + wachtwurd + (PIN + OTPToken)). Troch de API yntegreart it mei sms-ferstjoertsjinsten (LinOTP Config->Provider Config->SMS Provider), genereart koades foar mobile applikaasjes lykas Google Authenticator en folle mear. Ik tink dat it handiger is dan de tsjinst besprutsen yn artikel.

Dizze tsjinner wurket perfekt mei Cisco ASA, OpenVPN server, Apache2, en yn it algemien mei hast alles dat stipet autentikaasje fia in RADIUS tsjinner (Bygelyks, foar SSH yn it datasintrum).

It is fereaske:

1) Debian 8 (jessie) - Ferplicht! (proefynstallaasje op debian 9 wurdt beskreaun oan 'e ein fan it artikel)

Start:

Ynstallaasje fan Debian 8.

Foegje it LinOTP-repository ta:

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

Kaaien tafoegje:

# gpg --search-keys 913DFF12F86258E5

Soms tidens in "skjinne" ynstallaasje, nei it útfieren fan dit kommando, toant 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

Dit is de earste gnupg opset. It is ok. Rin it kommando gewoan wer út.
Op de fraach fan Debian:

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

wy antwurdzje: 1

Folgjende:

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

# apt-get update

Ynstallearje mysql. Yn teory kinne jo in oare sql-tsjinner brûke, mar foar ienfâld sil ik it brûke as oanrikkemandearre foar LinOTP.

(oanfoljende ynformaasje, ynklusyf it opnij konfigurearjen fan de LinOTP-database, is te finen yn 'e offisjele dokumintaasje foar link. Dêr kinne jo ek it kommando fine: dpkg-reconfigure linotp om parameters te feroarjen as jo mysql al ynstalleare hawwe).

# apt-get install mysql-server

# apt-get update

(it soe gjin sear dwaan om de updates nochris te kontrolearjen)
Ynstallearje LinOTP en ekstra modules:

# apt-get install linotp

Wy beantwurdzje de fragen fan 'e ynstallearder:
Brûk Apache2: ja
Meitsje in wachtwurd foar admin Linotp: "Jo wachtwurd"
Sels ûndertekene sertifikaat generearje?: ja
Brûk MySQL?: ja
Wêr is de databank: localhost
Meitsje in LinOTP-database (basisnamme) op de tsjinner: LinOTP2
Meitsje in aparte brûker foar de databank: LinOTP2
Wy sette in wachtwurd yn foar de brûker: "Jo wachtwurd"
Moat ik no in databank meitsje? (sawat as "Binne jo wis dat jo wolle ..."): ja
Fier it MySQL-rootwachtwurd yn dat jo makke hawwe by it ynstallearjen: "YourPassword"
Done.

(opsjoneel, jo hoege it net te ynstallearjen)

# apt-get install linotp-adminclient-cli 

(opsjoneel, jo hoege it net te ynstallearjen)

# apt-get install libpam-linotp  

En sa is ús Linotp-webynterface no beskikber op:

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

Ik sil in bytsje letter oer de ynstellingen yn 'e webynterface prate.

No, it wichtichste ding! Wy ferheegje FreeRadius en keppelje it mei Linotp.

Ynstallearje FreeRadius en module foar wurkjen mei LinOTP

# apt-get install freeradius linotp-freeradius-perl

reservekopy de client en Brûkers radius configs.

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

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

Meitsje in lege kliïnttriem:

# touch /etc/freeradius/clients.conf

It bewurkjen fan ús nije konfiguraasjetriem (de reservekopy konfiguraasje kin brûkt wurde as foarbyld)

# nano /etc/freeradius/clients.conf

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

Meitsje dan in brûkersbestân oan:

# touch /etc/freeradius/users

Wy bewurkje it bestân, fertelle radius dat wy perl sille brûke foar autentikaasje.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Folgjende, bewurkje de triem /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Wy moatte it paad nei it perl linotp-skript opjaan yn 'e moduleparameter:

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

... ..
Dêrnei meitsje wy in bestân wêryn't wy sizze hokker (domein, database of bestân) de gegevens út te nimmen.

# 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

Ik sil hjir in bytsje mear yngean, om't it wichtich is:

Folsleine beskriuwing fan it bestân mei opmerkingen:
#IP fan de linotp-tsjinner (IP-adres fan ús LinOTP-tsjinner)
URL=https://172.17.14.103/validate/simplecheck
#Us gebiet dat wy sille oanmeitsje yn 'e LinOTP-webynterface.)
REALM=rearm1
#Namme fan de brûkersgroep dy't makke is yn 'e LinOTP-webmuzzle.
RESCONF=flat_bestân
#opsjoneel: kommentaar út as alles goed liket te wurkjen
Debug = Wier
#opsjoneel: brûk dit, as jo sels ûndertekene sertifikaten hawwe, oars kommentaar út (SSL as wy ús eigen sertifikaat meitsje en it wolle ferifiearje)
SSL_CHECK=Falsk

Meitsje dêrnei it bestân /etc/freeradius/sites-available/linotp

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

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

En kopiearje de konfiguraasje deryn (net nedich om neat te bewurkjen):

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
}

Folgjende sille wy in SIM-keppeling oanmeitsje:

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

Persoanlik deadzje ik standert Radius-siden, mar as jo se nedich binne, kinne jo har konfiguraasje bewurkje of útskeakelje.

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

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

# service freeradius reload

Litte wy no weromgean nei it webgesicht en it yn in bytsje mear detail besjen:
Klikje yn 'e rjochter boppeste hoeke LinOTP Config -> UserIdResolvers -> Nij
Wy kieze wat wy wolle: LDAP (AD win, LDAP samba), of SQL, of lokale brûkers fan it Flatfile-systeem.

Folje de fereaske fjilden yn.

Folgjende meitsje wy REALMS:
Klikje yn 'e rjochter boppeste hoeke LinOTP Config -> Realms -> Nij.
en jou in namme oan ús REALMS, en klik ek op de earder oanmakke UserIdResolvers.

FreeRadius hat al dizze gegevens nedich yn it /etc/linotp2/rlm_perl.ini-bestân, lykas ik hjirboppe skreau, dus as jo it doe net bewurke hawwe, doch it no.

De tsjinner is allegear konfigurearre.

Oanfolling:

LinOTP ynstelle op Debian 9:

Ynstallaasje:

# 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

(standert, yn Debian 9 biedt mysql (mariaDB) gjin root-wachtwurd oan, fansels kinne jo it leech litte, mar as jo it nijs lêze, liedt dit heul faak ta "epyske mislearrings", dus wy sille it ynstelle hoe dan ek)

# 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

Plak de koade (ferstjoerd troch JuriM, tank oan him dêrfoar!):

tsjinner linotp {
Harkje {
ipaddr = *
poarte = 1812
type = auth
}
Harkje {
ipaddr = *
poarte = 1813
type = acct
}
autorisearje {
foarferwurking
fernije {
&control:Auth-Type := Perl
}
}
autentisearje {
Auth-Type Perl {
perl
}
}
boekhâlding {
Unix
}
}

Bewurkje /etc/freeeradius/3.0/mods-enabled/perl

perl {
triemnamme = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentisearje
func_authorize = autorisearje
}

Spitigernôch is yn Debian 9 de radius_linotp.pm-bibleteek net ynstalleare fan 'e repositories, dus wy sille it fan github nimme.

# 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

litte wy no /etc/freeradius/3.0/clients.conf bewurkje

client tsjinners {
ipaddr = 192.168.188.0/24
geheim = dyn wachtwurd
}

Litte wy no nano /etc/linotp2/rlm_perl.ini korrigearje

Wy plakke dêr deselde koade as by it ynstallearjen op debian 8 (hjirboppe beskreaun)

dat is allegear neffens it idee. (noch net hifke)

Ik sil hjirûnder in pear keppelings litte oer it ynstellen fan systemen dy't meastentiids moatte wurde beskerme mei twa-faktor autentikaasje:
Ynstelle twa-faktor autentikaasje yn Apache2

Opset mei Cisco ASA(in oare tokengeneraasjetsjinner wurdt dêr brûkt, mar de ynstellings fan 'e ASA sels binne itselde).

VPN mei twa-faktor autentikaasje

oanpassing twa faktor ferifikaasje yn ssh (LinOTP wurdt dêr ek brûkt) - mei tank oan de skriuwer. Dêr kinne jo ek nijsgjirrige dingen fine oer it ynstellen fan LiOTP-belied.

Ek de cms fan in protte siden stypje twa-faktor autentikaasje (foar WordPress hat LinOTP sels in eigen spesjale module foar GitHub), bygelyks, as jo in beskerme seksje wolle meitsje op jo bedriuwswebside foar bedriuwsmeiwurkers.
WICHTICH FEIT! Kontrolearje NET it fakje "Google autenteficator" om Google Authenticator te brûken! De QR-koade is dan net lêsber... (raar feit)

Om dit artikel te skriuwen waard ynformaasje út de folgjende artikels brûkt:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Mei tank oan de skriuwers.

Boarne: www.habr.com

Add a comment