LinOTP екі факторлы аутентификация сервері

LinOTP екі факторлы аутентификация сервері

Бүгін мен корпоративтік желіні, сайттарды, қызметтерді, ssh-ді қорғау үшін екі факторлы аутентификация серверін қалай орнату керектігін бөліскім келеді. Сервер келесі комбинацияны іске қосады: LinOTP + FreeRadius.

Ол бізге не үшін керек?
Бұл үшінші тарап провайдерлерінен тәуелсіз өз желісінде толығымен тегін, ыңғайлы шешім.

Бұл қызмет басқа ашық бастапқы өнімдерге қарағанда өте ыңғайлы, өте көрнекі, сонымен қатар көптеген функциялар мен саясаттарды қолдайды (мысалы, логин+пароль+(PIN+OTPToken)). API арқылы ол sms жіберу қызметтерімен біріктіріледі (LinOTP Config->Provider Config->SMS Provider), Google Authentificator сияқты мобильді қосымшалар үшін кодтарды жасайды және т.б. Менің ойымша, бұл қарастырылған қызметке қарағанда ыңғайлы мақала.

Бұл сервер Cisco ASA, OpenVPN сервері, Apache2 және жалпы RADIUS сервері арқылы аутентификацияны қолдайтын барлық дерлікпен тамаша жұмыс істейді (мысалы, деректер орталығындағы SSH үшін).

Қажетті:

1) Debian 8 (Джесси) - Қажетті! (Debian 9-да сынақ орнату мақаланың соңында сипатталған)

Басталуы:

Debian 8 орнату.

LinOTP репозиторийін қосыңыз:

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

Кілттерді қосу:

# gpg --search-keys 913DFF12F86258E5

Кейде «таза» орнату кезінде осы пәрменді іске қосқаннан кейін 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

Бұл бастапқы gnupg орнатуы. Бәрі жақсы. Тек пәрменді қайта іске қосыңыз.
Дебианның сұрағына:

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

Жауап береміз: 1

Келесі:

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

# apt-get update

mysql орнатыңыз. Теорияда сіз басқа sql серверін пайдалана аласыз, бірақ қарапайымдылық үшін мен оны LinOTP үшін ұсынылғандай қолданамын.

(қосымша ақпаратты, соның ішінде LinOTP дерекқорын қайта конфигурациялауды ресми құжаттамадан табуға болады байланыс. Мұнда сіз сондай-ақ келесі пәрменді таба аласыз: dpkg-reconfigure linotp параметрін өзгерту үшін MySQL орнатқан болсаңыз).

# apt-get install mysql-server

# apt-get update

(жаңартуларды қайта тексеру зиян тигізбейді)
LinOTP және қосымша модульдерді орнату:

# apt-get install linotp

Біз орнатушының сұрақтарына жауап береміз:
Apache2 пайдаланыңыз: иә
Linotp әкімшісіне құпия сөз жасаңыз: «Сіздің құпия сөзіңіз»
Өздігінен қол қойылған сертификатты жасаңыз?: иә
MySQL пайдаланыңыз?: иә
Деректер базасы қай жерде орналасқан: localhost
Серверде LinOTP дерекқорын (негізгі атауы) жасаңыз: LinOTP2
Деректер қоры үшін бөлек пайдаланушы жасаңыз: LinOTP2
Біз пайдаланушыға құпия сөз орнаттық: «Сіздің құпия сөзіңіз»
Деректер базасын қазір жасауым керек пе? («Сіз шынымен қалайсыз ба...» сияқты): иә
Оны орнату кезінде жасаған MySQL түбірлік құпия сөзін енгізіңіз: «YourPassword»
Аяқталды.

(міндетті емес, оны орнатудың қажеті жоқ)

# apt-get install linotp-adminclient-cli 

(міндетті емес, оны орнатудың қажеті жоқ)

# apt-get install libpam-linotp  

Сонымен, біздің Linotp веб-интерфейсіміз енді мына жерде қол жетімді:

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

Мен веб-интерфейстегі параметрлер туралы сәл кейінірек айтамын.

Енді, ең бастысы! Біз FreeRadius-ті көтеріп, оны Linotp-пен байланыстырамыз.

FreeRadius және LinOTP-мен жұмыс істеу модулін орнатыңыз

# apt-get install freeradius linotp-freeradius-perl

клиенттің және пайдаланушылар радиусы конфигурацияларының сақтық көшірмесін жасаңыз.

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

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

Бос клиент файлын жасаңыз:

# touch /etc/freeradius/clients.conf

Жаңа конфигурация файлын өңдеу (сақтық көшірмесі жасалған конфигурацияны мысал ретінде пайдалануға болады)

# nano /etc/freeradius/clients.conf

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

Содан кейін пайдаланушылар файлын жасаңыз:

# touch /etc/freeradius/users

Біз аутентификация үшін Perl қолданатындығымызды айта отырып, файлды өңдейміз.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Содан кейін /etc/freeradius/modules/perl файлын өңдеңіз

# nano /etc/freeradius/modules/perl

Біз модуль параметрінде perl linotp сценарийіне жолды көрсетуіміз керек:

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

... ..
Содан кейін біз қай файлдан (домен, дерекқор немесе файл) деректерді алу керектігін айтатын файлды жасаймыз.

# 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

Мен мұнда толығырақ айтып беремін, себебі бұл маңызды:

Түсініктемелері бар файлдың толық сипаттамасы:
linOTP серверінің #IP (біздің LinOTP серверіміздің IP мекенжайы)
URL=https://172.17.14.103/validate/simplecheck
#Біз LinOTP веб-интерфейсінде жасайтын аймағымыз.)
REALM=қайта қаруландыру1
#LinOTP веб-мұқабасында жасалған пайдаланушылар тобының аты.
RESCONF=жалпақ_файл
#қосымша: егер бәрі жақсы болып көрінсе, пікір қалдырыңыз
Debug=True
#қосымша: егер сізде өзіңіз қол қойған сертификаттарыңыз болса, мұны пайдаланыңыз, әйтпесе түсініктеме беріңіз (егер біз өз сертификатымызды жасасақ және оны тексергіміз келсе, SSL)
SSL_CHECK=Өтірік

Содан кейін /etc/freeradius/sites-available/linotp файлын жасаңыз

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

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

Конфигурацияны оған көшіріңіз (ештеңені өңдеудің қажеті жоқ):

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
}

Содан кейін біз SIM сілтемесін жасаймыз:

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

Жеке өзім әдепкі Radius сайттарын өлтіремін, бірақ қажет болса, олардың конфигурациясын өңдеуге немесе өшіруге болады.

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

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

# service freeradius reload

Енді веб-бетке оралып, оны толығырақ қарастырайық:
Жоғарғы оң жақ бұрышта LinOTP Config -> UserIdResolvers -> Жаңа түймешігін басыңыз
Біз қалағанымызды таңдаймыз: LDAP (AD win, LDAP samba) немесе SQL немесе Flatfile жүйесінің жергілікті пайдаланушылары.

Қажетті өрістерді толтырыңыз.

Содан кейін біз REALMS жасаймыз:
Жоғарғы оң жақ бұрышта LinOTP Config -> Realms -> New түймесін басыңыз.
және біздің REALMS атауын беріңіз, сондай-ақ бұрын жасалған UserIdResolvers түймесін басыңыз.

FreeRadius бұл деректердің барлығын /etc/linotp2/rlm_perl.ini файлында қажет етеді, мен жоғарыда жазғанымдай, егер сіз оны өңдемеген болсаңыз, қазір жасаңыз.

Сервер барлығы конфигурацияланған.

Қосымша:

Debian 9 жүйесінде LinOTP орнату:

Орнату:

# 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

(әдепкі бойынша, Debian 9 mysql (mariaDB) жүйесінде түбірлік құпия сөзді орнатуды ұсынбайды, әрине оны бос қалдыруға болады, бірақ егер сіз жаңалықтарды оқысаңыз, бұл көбінесе «эпикалық сәтсіздікке» әкеледі, сондықтан біз оны орнатамыз. бәрібір)

# 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

Кодты қойыңыз (JuriM жіберген, бұл үшін оған рахмет!):

сервер linotp {
тыңдау {
ipaddr = *
порт=1812
type=auth
}
тыңдау {
ipaddr = *
порт=1813
түрі = акт
}
рұқсат ету {
алдын ала өңдеу
жаңарту {
&control:Auth-Type := Perl
}
}
аутентификация {
Auth-түрі Perl {
перл
}
}
бухгалтерлік есеп {
unix
}
}

/etc/freeradius/3.0/mods-enabled/perl өңдеңіз

perl {
файл аты = /usr/share/linotp/radius_linotp.pm
func_authenticate = аутентификация
func_authorize = рұқсат ету
}

Өкінішке орай, Debian 9-да radius_linotp.pm кітапханасы репозиторийлерден орнатылмаған, сондықтан біз оны 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

енді /etc/freeradius/3.0/clients.conf өңдейік

клиент серверлері {
ipaddr = 192.168.188.0/24
құпия = сіздің құпия сөзіңіз
}

Енді nano /etc/linotp2/rlm_perl.ini түзетейік

Біз сол жерге debian 8-ге орнату кезіндегідей кодты қоямыз (жоғарыда сипатталған)

бәрі идеяға сәйкес. (әлі тексерілмеген)

Мен төменде екі факторлы аутентификациямен қорғауды қажет ететін жүйелерді орнату бойынша бірнеше сілтемелерді қалдырамын:
Екі факторлы аутентификацияны орнату Apache2

Cisco ASA көмегімен орнату(бұл жерде басқа таңбалауыш генерациялау сервері пайдаланылады, бірақ ASA параметрлерінің өзі бірдей).

Екі факторлы аутентификациясы бар VPN

реттеу ssh ішіндегі екі факторлы аутентификация (Онда LinOTP да қолданылады) – авторға рахмет. Мұнда сіз LiOTP саясаттарын орнату туралы қызықты нәрселерді таба аласыз.

Сондай-ақ, көптеген сайттардың cms екі факторлы аутентификацияны қолдайды (WordPress үшін LinOTP үшін тіпті өзінің арнайы модулі бар. GitHub), мысалы, компания қызметкерлері үшін корпоративтік веб-сайтыңызда қорғалған бөлім жасағыңыз келсе.
МАҢЫЗДЫ ФАКТ! Google Authenticator пайдалану үшін «Google autenteficator» ұяшығын БЕЛГІЛЕМЕҢІЗ! Ол кезде QR кодын оқу мүмкін емес... (біртүрлі факт)

Бұл мақаланы жазу үшін келесі мақалалардағы ақпарат пайдаланылды:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Авторларға рахмет.

Ақпарат көзі: www.habr.com

пікір қалдыру