LinOTP de-faktè sèvè otantifikasyon

LinOTP de-faktè sèvè otantifikasyon

Jodi a mwen vle pataje ki jan yo mete kanpe yon sèvè otantifikasyon de faktè pou pwoteje yon rezo antrepriz, sit, sèvis, ssh. Sèvè a pral kouri konbinezon sa a: LinOTP + FreeRadius.

Poukisa nou bezwen li?
Sa a se yon solisyon konplètman gratis, pratik, nan pwòp rezo li yo, endepandan de founisè twazyèm pati.

Sèvis sa a trè pratik, byen vizyèl, kontrèman ak lòt pwodwi sous louvri, epi li sipòte tou yon gwo kantite fonksyon ak règleman (Pa egzanp, konekte + modpas + (PIN + OTPToken)). Atravè API a, li entegre ak sèvis voye sms (LinOTP Config->Provider Config->SMS Provider), jenere kòd pou aplikasyon mobil tankou Google Authentificator ak plis ankò. Mwen panse ke li pi pratik pase sèvis yo diskite nan Atik.

Sèvè sa a travay parfe ak Cisco ASA, OpenVPN sèvè, Apache2, ak an jeneral ak prèske tout bagay ki sipòte otantifikasyon atravè yon sèvè RADIUS (Pou egzanp, pou SSH nan sant done a).

Li obligatwa:

1) Debian 8 (jessie) - Nesesèman! (enstalasyon esè sou Debian 9 dekri nan fen atik la)

Kòmanse:

Enstale Debian 8.

Ajoute depo LinOTP la:

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

Ajoute kle:

# gpg --search-keys 913DFF12F86258E5

Pafwa pandan yon enstalasyon "pwòp", apre yo fin kouri lòd sa a, Debian montre:

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

Sa a se premye konfigirasyon gnupg la. Se OK. Jis kouri lòd la ankò.
Pou kesyon Debian a:

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

Nou reponn: 1

Next:

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

# apt-get update

Enstale mysql. Nan teyori, ou ka itilize yon lòt sèvè sql, men pou senplisite mwen pral sèvi ak li jan yo rekòmande pou LinOTP.

(Ou ka jwenn plis enfòmasyon, tankou rekonfigirasyon baz done LinOTP, nan dokiman ofisyèl pou lyen. La ou ka jwenn tou kòmandman an: dpkg-reconfigure linotp pou chanje paramèt si ou te deja enstale mysql).

# apt-get install mysql-server

# apt-get update

(li pa ta mal tcheke mizajou yo ankò)
Enstale LinOTP ak modil adisyonèl:

# apt-get install linotp

Nou reponn kesyon enstalatè a:
Sèvi ak Apache2: wi
Kreye yon modpas pou admin Linotp: "Modpas ou"
Jenere sètifika oto-siyen?: Wi
Sèvi ak MySQL?: Wi
Ki kote baz done a sitiye: localhost
Kreye yon baz done LinOTP (non baz) sou sèvè a: LinOTP2
Kreye yon itilizatè separe pou baz done a: LinOTP2
Nou mete yon modpas pou itilizatè a: "Modpas ou"
Èske mwen ta dwe kreye yon baz done kounye a? (yon bagay tankou "Èske w sèten ou vle..."): wi
Antre modpas rasin MySQL ke ou te kreye lè w ap enstale li: "YourPassword"
Fè.

(opsyonèl, ou pa bezwen enstale li)

# apt-get install linotp-adminclient-cli 

(opsyonèl, ou pa bezwen enstale li)

# apt-get install libpam-linotp  

Se konsa, koòdone wèb Linotp nou an disponib kounye a nan:

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

Mwen pral pale sou anviwònman yo nan koòdone entènèt la yon ti kras pita.

Koulye a, bagay ki pi enpòtan! Nou ogmante FreeRadius epi konekte li ak Linotp.

Enstale FreeRadius ak modil pou travay ak LinOTP

# apt-get install freeradius linotp-freeradius-perl

backup konfigirasyon reyon kliyan an ak itilizatè yo.

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

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

Kreye yon dosye kliyan vid:

# touch /etc/freeradius/clients.conf

Edite nouvo fichye konfigirasyon nou an (yo ka itilize konfigirasyon an apiye kòm yon egzanp)

# nano /etc/freeradius/clients.conf

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

Apre sa, kreye yon fichye itilizatè:

# touch /etc/freeradius/users

Nou edite fichye a, di radius ke nou pral sèvi ak Perl pou otantifikasyon.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Apre sa, edite fichye a /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Nou bezwen presize chemen an nan script perl linotp nan paramèt modil la:

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

... ..
Apre sa, nou kreye yon fichye kote nou di kiyès (domèn, baz done oswa dosye) pou nou pran done yo.

# 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

Mwen pral antre nan yon ti kras plis detay isit la paske li enpòtan:

Deskripsyon konplè dosye a ak kòmantè:
#IP sèvè linOTP (adrès IP sèvè LinOTP nou an)
URL=https://172.17.14.103/validate/simplecheck
#Zòn nou an ke nou pral kreye nan koòdone entènèt LinOTP la.)
REALM=rearme1
#Non gwoup itilizatè ki kreye nan mizo entènèt LinOTP la.
RESCONF=dosye_plat
#opsyonèl: fè kòmantè si tout bagay sanble mache byen
Debug = Vre
#opsyonèl: sèvi ak sa a, si ou gen sètifika pwòp tèt ou siyen, otreman kòmantè soti (SSL si nou kreye pwòp sètifika pa nou epi nou vle verifye li)
SSL_CHECK=Fo

Apre sa, kreye dosye /etc/freeradius/sites-available/linotp

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

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

Epi kopye konfigirasyon an ladan l (pa bezwen modifye anyen):

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
}

Apre sa, nou pral kreye yon lyen SIM:

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

Pèsonèlman, mwen touye sit default Radius, men si ou bezwen yo, ou ka swa edite konfigirasyon yo oswa enfim yo.

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

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

# service freeradius reload

Koulye a, ann retounen nan figi entènèt la epi gade li nan yon ti kras plis detay:
Nan kwen anwo dwat klike sou LinOTP Config -> UserIdResolvers -> Nouvo
Nou chwazi sa nou vle: LDAP (AD win, LDAP samba), oswa SQL, oswa itilizatè lokal yo nan sistèm Flatfile la.

Ranpli jaden yo mande yo.

Apre sa nou kreye REALMS:
Nan kwen anwo dwat, klike sou LinOTP Config -> Realms -> New.
epi bay yon non REALMS nou yo, epi tou klike sou UserIdResolvers yo te kreye deja.

FreeRadius bezwen tout done sa yo nan /etc/linotp2/rlm_perl.ini fichye a, jan mwen te ekri sou pi wo a, kidonk si ou pa t modifye li lè sa a, fè li kounye a.

Sèvè a tout configuré.

Sipleman:

Mete kanpe LinOTP sou Debian 9:

Enstalasyon:

# 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

(pa default, nan Debian 9 mysql (mariaDB) pa ofri yo mete yon modpas rasin, nan kou ou ka kite li vid, men si ou li nouvèl la, sa a trè souvan mennen nan "epik echwe", kidonk nou pral mete li. de tout fason)

# 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

Kole kòd la (JuriM voye, gras a li pou sa!):

sèvè linotp {
koute {
ipaddr = *
pò = 1812
tip = otorizasyon
}
koute {
ipaddr = *
pò = 1813
tip = akt
}
otorize {
prepwosesis
mete ajou {
&kontwòl:Out-Type := Perl
}
}
otantifye {
Auth-Type Perl {
pèrl
}
}
kontablite {
Unix
}
}

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

pèl {
non fichye = /usr/share/linotp/radius_linotp.pm
func_authenticate = otantifye
func_authorize = otorize
}

Malerezman, nan Debian 9 bibliyotèk radius_linotp.pm pa enstale nan depo yo, kidonk nou pral pran li nan github.

# 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

kounye a ann edite /etc/freeradius/3.0/clients.conf

serveurs kliyan {
ipaddr = 192.168.188.0/24
sekrè = modpas ou
}

Koulye a, ann korije nano /etc/linotp2/rlm_perl.ini

Nou kole menm kòd la tankou lè w ap enstale sou Debian 8 (ki dekri pi wo a)

sa a tout dapre lide a. (poko teste)

Mwen pral kite anba a kèk lyen sou konfigirasyon sistèm ki pi souvan bezwen pwoteje ak otantifikasyon de faktè:
Mete kanpe otantifikasyon de faktè nan Apache2

Enstalasyon ak Cisco ASA(Yo itilize yon sèvè jenerasyon diferan, men paramèt ASA a li menm se menm bagay la).

VPN ak otantifikasyon de faktè

ajisteman de faktè otantifikasyon nan ssh (LinOTP yo itilize tou la) - gras a otè a. Gen ou ka jwenn tou bagay enteresan sou mete kanpe politik LiOTP.

Epitou, cms yo nan anpil sit sipòte otantifikasyon de faktè (Pou WordPress, LinOTP menm gen pwòp modil espesyal li pou GitHub), pou egzanp, si ou vle fè yon seksyon pwoteje sou sit entènèt antrepriz ou a pou anplwaye konpayi yo.
FAITE ENPÒTAN! PA tcheke bwat "Google autenteficator" pou itilize Google Authenticator! Kòd QR la pa lizib lè sa a... (reyalite etranj)

Pou ekri atik sa a, yo te itilize enfòmasyon ki soti nan atik sa yo:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Mèsi a otè yo.

Sous: www.habr.com

Add nouvo kòmantè