Π‘Π΅Ρ€Π²Π΅Ρ€ Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ LinOTP

Π‘Π΅Ρ€Π²Π΅Ρ€ Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ LinOTP

БСгодня я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сСрвСр Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ сСти, сайтов, сСрвисов,ssh. На сСрвСрС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ связка: LinOTP + FreeRadius.

Π—Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½Π°ΠΌ?
Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ бСсплатноС, ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π²Π½ΡƒΡ‚Ρ€ΠΈ своСй сСти, Π½Π΅ зависящСС ΠΎΡ‚ сторонних ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ².

Π”Π°Π½Π½Ρ‹ΠΉ сСрвис вСсьма ΡƒΠ΄ΠΎΠ±Π΅Π½, достаточно наглядСн, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… опСнсорс ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ (НапримСр login+password+(PIN+OTPToken)). Π§Π΅Ρ€Π΅Π· API интСгрируСтся с сСрвисами ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ sms (LinOTP Config->Provider Config->SMS Provider), Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄Ρ‹ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° Google Autentificator ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ Ρ‡Π΅ΠΌ сСрвис рассматриваСмый Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π”Π°Π½Π½Ρ‹ΠΉ сСрвСр ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Cisco ASA, OpenVPN сСрвСром, Apache2, Π΄Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ практичСски со всСм Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· RADIUS сСрвСр (НапримСр для SSH Π² Ρ†ΠΎΠ΄).

ВрСбуСтся:

1 ) Debian 8 (jessie) — ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ! (пробная установка Π½Π° 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. НичСго ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π΅Ρ‰Π΅ Ρ€Π°Π·.
На вопрос Debiana:

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: Π΄Π°
ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для admin Linotp: Β«Π’Π°ΡˆΠŸΠ°Ρ€ΠΎΠ»ΡŒΒ»
Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ самоподписанный сСртСфикат?: Π΄Π°
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MySQL?: Π΄Π°
Π“Π΄Π΅ находится Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…: localhost
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±Π°Π·Ρƒ LinOTP(имя Π±Π°Π·Ρ‹) Π½Π° сСрвСрС: LinOTP2
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΡŽΠ·Π΅Ρ€Π° для Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…: LinOTP2
Π—Π°Π΄Π°Π΅ΠΌ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡŽΠ·Π΅Ρ€Ρƒ: Β«Π’Π°ΡˆΠŸΠ°Ρ€ΠΎΠ»ΡŒΒ»
Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π»ΠΈ Π±Π°Π·Ρƒ сСйчас? (Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ β€œΠ’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ …”): Π΄Π°
Π’Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ root ΠΎΡ‚ MySQL ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создали ΠΏΡ€ΠΈ Π΅Π³ΠΎ установкС: Β«Π’Π°ΡˆΠŸΠ°Ρ€ΠΎΠ»ΡŒΒ»
Π“ΠΎΡ‚ΠΎΠ²ΠΎ.

(ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ)

# 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

бэкапим ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ client ΠΈ Users радиуса.

# 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 # ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²
}

Π”Π°Π»Π΅Π΅ создаСм Ρ„Π°ΠΉΠ» users:

# touch /etc/freeradius/users

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ», говоря радиусу, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ perl для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Π”Π°Π»Π΅Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ» /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Нам Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ perl скрипту linotp Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ module:

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

Π’ΡƒΡ‚ я ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π²Π°ΠΆΠ½ΠΎ:

ПолноС описаниС Ρ„Π°ΠΉΠ»Π° с коммСнтариями:
#IP of the linotp server (IP адрСс нашСго LinOTP сСрвСра)
URL=https://172.17.14.103/validate/simplecheck
#Наша ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ создадим Π² Π²Π΅Π± интСрфСйсС LinOTP.)
REALM=rearm1
#Имя Π³Ρ€ΡƒΠΏΠΏΡ‹ ΡŽΠ·Π²Π΅Ρ€Π΅ΠΉ которая создаСтся Π² Π²Π΅Π±ΠΌΠΎΡ€Π΄Π΅ LinOTP.
RESCONF=flat_file
#optional: comment out if everything seems to work fine
Debug=True
#optional: use this, if you have selfsigned certificates, otherwise comment out (SSL Ссли ΠΌΡ‹ создаСм свой сСртификат ΠΈ Ρ…ΠΎΡ‚ΠΈΠΌ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ)
SSL_CHECK=False

Π”Π°Π»Π΅Π΅ создадим Ρ„Π°ΠΉΠ» /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
}

Π”Π°Π»Π΅Π΅ сдСлаСм сим Π»ΠΈΠ½ΠΊ:

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

Π›ΠΈΡ‡Π½ΠΎ я ΡƒΠ±ΠΈΠ²Π°ΡŽ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ радиусовскиС сайты, Π½ΠΎ Ссли ΠΎΠ½ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈΠ±ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³, Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ.

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

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

# service freeradius reload

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ Π²Π΅Π±-ΠΌΠΎΡ€Π΄Π΅ ΠΈ рассмотрим Π΅Π΅ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅:
Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ LinOTP Config -> UserIdResolvers ->New
Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‡Π΅Π³ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ: LDAP (AD win, LDAP samba), ΠΈΠ»ΠΈ SQL, ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ систСмы Flatfile.

ЗаполняСм Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ поля.

Π”Π°Π»Π΅Π΅ создаСм REALMS:
Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ LinOTP Config ->Realms ->New.
ΠΈ Π΄Π°Π΅ΠΌ имя Π½Π°ΡˆΠ΅ΠΌΡƒ REALMSΡƒ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ Π½Π° созданный Ρ€Π°Π½Π΅Π΅ UserIdResolvers.

ВсС эти Π΄Π°Π½Π½Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ freeRadius Π² Ρ„Π°ΠΉΠ»ΠΈΠΊΠ΅ /etc/linotp2/rlm_perl.ini, ΠΎ Ρ‡Π΅ΠΌ я писал Π²Ρ‹ΡˆΠ΅, поэтому, Ссли Π²Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ‚ΠΎΠ³Π΄Π°, сдСлайтС это сСйчас.

ВсС сСрвСр настроСн.

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅:

Настройка LinOTP Π½Π° Debian 9:

Установка:

# 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, Π·Π° Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ спасибо!):

server linotp {
listen {
ipaddr = *
port = 1812
type = auth
}
listen {
ipaddr = *
port = 1813
type = acct
}
authorize {
preprocess
update {
&control:Auth-Type := Perl
}
}
authenticate {
Auth-Type Perl {
perl
}
}
accounting {
unix
}
}

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ /etc/freeradius/3.0/mods-enabled/perl

perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = 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

client servers {
ipaddr = 192.168.188.0/24
secret = Π²Π°ΡˆΠΏΠ°Ρ€ΠΎΠ»ΡŒ
}

Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΠΌ nano /etc/linotp2/rlm_perl.ini

ВставляСм Ρ‚ΡƒΠ΄Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ установкС Π½Π° debian 8 (описанно Π²Ρ‹ΡˆΠ΅)

ΠΏΠΎ ΠΈΠ΄Π΅ΠΈ всС. (ΠΏΠΎΠΊΠ° Π½Π΅ протСстированно)

Π― ΠΎΡΡ‚Π°Π²Π»ΡŽ Π½ΠΈΠΆΠ΅ нСсколько ссылок ΠΏΠΎ настройкС систСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Π°Ρ‰Π΅ всСго трСбуСтся Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ:
Настройка Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Apache2

Настройка с Cisco ASA(Ρ‚Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСр Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², Π½ΠΎ настройки самой ASA Ρ‚Π΅ΠΆΠ΅ самыС).

VPN c Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Настройка Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² ssh (Ρ‚Π°ΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ LinOTP) β€” спасибо Π°Π²Ρ‚ΠΎΡ€Ρƒ. Π’Π°ΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ интСрСсныС Π²Π΅Ρ‰ΠΈ ΠΏΠΎ настройкС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ LiOTP.

Π’Π°ΠΊ ΠΆΠ΅ cms ΠΌΠ½ΠΎΠ³ΠΈΡ… сайтов ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ(Для WordPress Ρƒ LinOTP Π΄Π°ΠΆΠ΅ Π΅ΡΡ‚ΡŒ свой ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π° github), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π° своСм ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ сайтС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» для сотрудников ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
ВАЖНЫЙ ЀАКВ! НЕ ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Β«Google autenteficatorΒ» для использования Π³ΡƒΠ³Π» Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°! QR-ΠΊΠΎΠ΄ Π½Π΅ читаСтся тогда… (странный Ρ„Π°ΠΊΡ‚)

Для написания ΡΡ‚Π°Ρ‚ΡŒΠΈ использовалась информация ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… статСй:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Бпасибо Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com