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
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
# 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
oanpassing
Ek de cms fan in protte siden stypje twa-faktor autentikaasje (foar WordPress hat LinOTP sels in eigen spesjale module foar
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:
Mei tank oan de skriuwers.
Boarne: www.habr.com