LinOTP เชŸเซ-เชซเซ‡เช•เซเชŸเชฐ เช“เชฅเซ‡เชจเซเชŸเชฟเช•เซ‡เชถเชจ เชธเชฐเซเชตเชฐ

LinOTP เชŸเซ-เชซเซ‡เช•เซเชŸเชฐ เช“เชฅเซ‡เชจเซเชŸเชฟเช•เซ‡เชถเชจ เชธเชฐเซเชตเชฐ

เช†เชœเซ‡ เชนเซเช‚ เช•เซ‹เชฐเซเชชเซ‹เชฐเซ‡เชŸ เชจเซ‡เชŸเชตเชฐเซเช•, เชธเชพเช‡เชŸเซเชธ, เชธเซ‡เชตเชพเช“, ssh เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡ เชฆเซเชตเชฟ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชธเชฐเซเชตเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เชคเซ‡ เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เชธเชฐเซเชตเชฐ เชจเซ€เชšเซ‡เชจเชพ เชธเช‚เชฏเซ‹เชœเชจเชจเซ‡ เชšเชฒเชพเชตเชถเซ‡: LinOTP + FreeRadius.

เชถเชพ เชฎเชพเชŸเซ‡ เช†เชชเชฃเชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡?
เช† เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฎเชซเชค, เช…เชจเซเช•เซ‚เชณ เช‰เช•เซ‡เชฒ เช›เซ‡, เชคเซ‡เชจเชพ เชชเซ‹เชคเชพเชจเชพ เชจเซ‡เชŸเชตเชฐเซเช•เชฎเชพเช‚, เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชชเซเชฐเชฆเชพเชคเชพเช“เชฅเซ€ เชธเซเชตเชคเช‚เชคเซเชฐ.

เช…เชจเซเชฏ เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเซเชฐเซ‹เชกเช•เซเชŸเซเชธเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค เช† เชธเซ‡เชตเชพ เช–เซ‚เชฌ เชœ เช…เชจเซเช•เซ‚เชณ เช›เซ‡, เชเช•เชฆเชฎ เชตเชฟเชเซเชฏเซเช…เชฒ เช›เซ‡, เช…เชจเซ‡ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชซเช‚เช•เซเชถเชจเซเชธ เช…เชจเซ‡ เชชเซ‹เชฒเชฟเชธเซ€เช“เชจเซ‡ เชชเชฃ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, login+password+(PIN+OTPToken)). API เชฆเซเชตเชพเชฐเชพ, เชคเซ‡ sms เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชธเซ‡เชตเชพเช“ (LinOTP Config->Provider Config->SMS Provider) เชธเชพเชฅเซ‡ เชเช•เซ€เช•เซƒเชค เชฅเชพเชฏ เช›เซ‡, Google Authentificator เชœเซ‡เชตเซ€ เชฎเซ‹เชฌเชพเช‡เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช˜เชฃเซเช‚ เชฌเชงเซเช‚. เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชพเช‚ เชšเชฐเซเชšเชพ เช•เชฐเซ‡เชฒเซ€ เชธเซ‡เชตเชพ เช•เชฐเชคเชพเช‚ เชคเซ‡ เชตเชงเซ เช…เชจเซเช•เซ‚เชณ เช›เซ‡ เชฒเซ‡เช–.

เช† เชธเชฐเซเชตเชฐ Cisco ASA, OpenVPN เชธเชฐเซเชตเชฐ, Apache2 เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ RADIUS เชธเชฐเซเชตเชฐ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชกเซ‡เชŸเชพ เชธเซ‡เชจเซเชŸเชฐเชฎเชพเช‚ SSH เชฎเชพเชŸเซ‡) เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซ€ เชฒเช—เชญเช— เชฆเชฐเซ‡เช• เชตเชธเซเชคเซ เชธเชพเชฅเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡:

1) เชกเซ‡เชฌเชฟเชฏเชจ 8 (เชœเซ‡เชธเซ€) - เชœเชฐเซ‚เชฐเซ€! (เชกเซ‡เชฌเชฟเชฏเชจ 9 เชชเชฐ เชŸเซเชฐเชพเชฏเชฒ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฒเซ‡เช–เชจเชพ เช…เช‚เชคเซ‡ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡)

เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‹:

เชกเซ‡เชฌเชฟเชฏเชจ 8 เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.

LinOTP เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เช‰เชฎเซ‡เชฐเซ‹:

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

เช•เซ€เช“ เช‰เชฎเซ‡เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡:

# gpg --search-keys 913DFF12F86258E5

เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ "เชธเซเชตเชšเซเช›" เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เช† เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซเชฏเชพ เชชเช›เซ€, เชกเซ‡เชฌเชฟเชฏเชจ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡:

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 เชฎเชพเชŸเซ‡ เชญเชฒเชพเชฎเชฃ เชฎเซเชœเชฌ เช•เชฐเซ€เชถ.

(เชฒเชฟเชจเช“เชŸเซ€เชชเซ€ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เชชเซเชจเชƒเชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชตเชพ เชธเชนเชฟเชคเชจเซ€ เชตเชงเชพเชฐเชพเชจเซ€ เชฎเชพเชนเชฟเชคเซ€, เชฎเชพเชŸเซ‡เชจเชพ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹เชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡. เช•เชกเซ€. เชคเซเชฏเชพเช‚ เชคเชฎเซ‡ เช†เชฆเซ‡เชถ เชชเชฃ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹: เชœเซ‹ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ mysql เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ เชนเซ‹เชฏ เชคเซ‹ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ dpkg-reconfigure linotp).

# apt-get install mysql-server

# apt-get update

(เชซเชฐเซ€เชฅเซ€ เช…เชชเชกเซ‡เชŸเซเชธ เชคเชชเชพเชธเชตเชพเชฅเซ€ เชจเซเช•เชธเชพเชจ เชฅเชถเซ‡ เชจเชนเซ€เช‚)
LinOTP เช…เชจเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชฎเซ‹เชกเซเชฏเซเชฒเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹:

# apt-get install linotp

เช…เชฎเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒเชฐเชจเชพ เชชเซเชฐเชถเซเชจเซ‹เชจเชพ เชœเชตเชพเชฌ เช†เชชเซ€เช เช›เซ€เช:
Apache2 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹: เชนเชพ
เชเชกเชฎเชฟเชจ เชฒเชฟเชจเซ‹เชŸเชช เชฎเชพเชŸเซ‡ เชชเชพเชธเชตเชฐเซเชก เชฌเชจเชพเชตเซ‹: โ€œเชคเชฎเชพเชฐเซ‹ เชชเชพเชธเชตเชฐเซเชกโ€
เชธเซเชต-เชนเชธเซเชคเชพเช•เซเชทเชฐเชฟเชค เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‹?: เชนเชพ
MySQL เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹?: เชนเชพ
เชกเซ‡เชŸเชพเชฌเซ‡เช เช•เซเชฏเชพเช‚ เชธเซเชฅเชฟเชค เช›เซ‡: เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸ
เชธเชฐเซเชตเชฐ เชชเชฐ LinOTP เชกเซ‡เชŸเชพเชฌเซ‡เช (เช†เชงเชพเชฐ เชจเชพเชฎ) เชฌเชจเชพเชตเซ‹: LinOTP2
เชกเซ‡เชŸเชพเชฌเซ‡เช เชฎเชพเชŸเซ‡ เช…เชฒเช— เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฌเชจเชพเชตเซ‹: LinOTP2
เช…เชฎเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเชพเชŸเซ‡ เชชเชพเชธเชตเชฐเซเชก เชธเซ‡เชŸ เช•เชฐเซเชฏเซ‹ เช›เซ‡: "เชคเชฎเชพเชฐเซ‹ เชชเชพเชธเชตเชฐเซเชก"
เชถเซเช‚ เชฎเชพเชฐเซ‡ เชนเชตเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฌเชจเชพเชตเชตเซ‹ เชœเซ‹เชˆเช? ("เชถเซเช‚ เชคเชฎเซ‡ เช–เชฐเซ‡เช–เชฐ เช‡เชšเซเช›เซ‹ เช›เซ‹..." เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช•): เชนเชพ
เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชคเชฎเซ‡ เชฌเชจเชพเชตเซ‡เชฒ MySQL เชฐเซ‚เชŸ เชชเชพเชธเชตเชฐเซเชก เชฆเชพเช–เชฒ เช•เชฐเซ‹: โ€œเชคเชฎเชพเชฐเซ‹ เชชเชพเชธเชตเชฐเซเชกโ€
เชฅเชˆ เช—เชฏเซเช‚

(เชตเซˆเช•เชฒเซเชชเชฟเช•, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€)

# apt-get install linotp-adminclient-cli 

(เชตเซˆเช•เชฒเซเชชเชฟเช•, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€)

# apt-get install libpam-linotp  

เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เช…เชฎเชพเชฐเซเช‚ Linotp เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชนเชตเซ‡ เช…เชนเซ€เช‚ เช‰เชชเชฒเชฌเซเชง เช›เซ‡:

"<b>https</b>: //IP_ัะตั€ะฒะตั€ะฐ/manage"

เชนเซเช‚ เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชฎเชพเช‚ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเซ€ เชตเชพเชฐ เชชเช›เซ€ เชตเชพเชค เช•เชฐเซ€เชถ.

เชนเชตเซ‡, เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชจเซ€ เชตเชธเซเชคเซ! เช…เชฎเซ‡ FreeRadius เชจเซ‡ เชตเชงเชพเชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ Linotp เชธเชพเชฅเซ‡ เชฒเชฟเช‚เช• เช•เชฐเซ€เช เช›เซ€เช.

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

เช…เชฎเซ‡ เชซเชพเช‡เชฒเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ€เช เช›เซ€เช, เชคเซเชฐเชฟเชœเซเชฏเชพเชจเซ‡ เช•เชนเซ€เช เช›เซ€เช เช•เซ‡ เช…เชฎเซ‡ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชชเชฐเซเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

เช†เช—เชณ, เชซเชพเช‡เชฒเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ‹ /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

เช†เชชเชฃเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชฎเชพเช‚ เชชเชฐเซเชฒ เชฒเชฟเชจเซ‹เชŸเชช เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เชชเชพเชฅ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

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=rearm1
# เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชœเซ‚เชฅเชจเซเช‚ เชจเชพเชฎ เชœเซ‡ LinOTP เชตเซ‡เชฌ เชฎเชเชฒเชฎเชพเช‚ เชฌเชจเชพเชตเซ‡เชฒ เช›เซ‡.
RESCONF=flat_file
#เชตเซˆเช•เชฒเซเชชเชฟเช•: เชœเซ‹ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชนเซ‹เชฏ เชคเซ‹ เชŸเชฟเชชเซเชชเชฃเซ€ เช•เชฐเซ‹
เชกเซ€เชฌเช— = เชธเชพเชšเซเช‚
#เชตเซˆเช•เชฒเซเชชเชฟเช•: เช†เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹, เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชธเซเชต-เชนเชธเซเชคเชพเช•เซเชทเชฐเชฟเชค เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชนเซ‹เชฏ, เช…เชจเซเชฏเชฅเชพ เชŸเชฟเชชเซเชชเชฃเซ€ เช•เชฐเซ‹ (เชœเซ‹ เช†เชชเชฃเซ‡ เช…เชฎเชพเชฐเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชฌเชจเชพเชตเซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเช—เซ€เช เชคเซ‹ 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
}

เช†เช—เชณ เช†เชชเชฃเซ‡ เชธเชฟเชฎ เชฒเชฟเช‚เช• เชฌเชจเชพเชตเซ€เชถเซเช‚:

# 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 เชชเชฐ เชชเชฃ เช•เซเชฒเชฟเช• เช•เชฐเซ‹.

เชซเซเชฐเซ€เชฐเซ‡เชกเชฟเชฏเชธเชจเซ‡ /etc/linotp2/rlm_perl.ini เชซเชพเช‡เชฒเชฎเชพเช‚ เช† เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชฎเซ‡เช‚ เช‰เชชเชฐ เชฒเช–เซเชฏเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชœเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เชจ เช•เชฐเซเชฏเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชนเชฎเชฃเชพเช‚ เช•เชฐเซ‹.

เชธเชฐเซเชตเชฐ เชฌเชงเซเช‚ เช—เซ‹เช เชตเซ‡เชฒเซเช‚ เช›เซ‡.

เช‰เชฎเซ‡เชฐเซ‹

เชกเซ‡เชฌเชฟเชฏเชจ 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

(เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡, เชกเซ‡เชฌเชฟเชฏเชจ 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
type = acct
}
เช…เชงเชฟเช•เซƒเชค เช•เชฐเซ‹ {
เชชเซ‚เชฐเซเชต เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ
เช…เชชเชกเซ‡เชŸ {
&control:Auth-Type := Perl
}
}
เชชเซเชฐเชฎเชพเชฃเชฟเชค เช•เชฐเซ‹ {
เช“เชฅ-เชชเซเชฐเช•เชพเชฐ เชชเชฐเซเชฒ {
เชชเชฐเซเชฒ
}
}
เชจเชพเชฎเซเช‚ {
เชฏเซเชจเชฟเช•เซเชธ
}
}

เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ‹ /etc/freeradius/3.0/mods-enabled/perl

เชชเชฐเซเชฒ {
เชซเชพเช‡เชฒเชจเชพเชฎ = /usr/share/linotp/radius_linotp.pm
func_authenticate = เชชเซเชฐเชฎเชพเชฃเชฟเชค เช•เชฐเซ‹
func_authorize = เช…เชงเชฟเช•เซƒเชค เช•เชฐเซ‹
}

เช•เชฎเชจเชธเซ€เชฌเซ‡, เชกเซ‡เชฌเชฟเชฏเชจ 9 เชฎเชพเช‚ radius_linotp.pm เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชเชฎเชพเช‚เชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซ€ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช—เซ€เชฅเชฌเชฎเชพเช‚เชฅเซ€ เชฒเชˆเชถเซเช‚.

# 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
เช—เซเชชเซเชค = เชคเชฎเชพเชฐเซ‹ เชชเชพเชธเชตเชฐเซเชก
}

เชนเชตเซ‡ เชจเซ‡เชจเซ‹ /etc/linotp2/rlm_perl.ini เชจเซ‡ เช เซ€เช• เช•เชฐเซ€เช

เช…เชฎเซ‡ เชกเซ‡เชฌเชฟเชฏเชจ 8 เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชคเซ‡ เชœ เช•เซ‹เชก เชชเซ‡เชธเซเชŸ เช•เชฐเซ€เช เช›เซ€เช (เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซ‡เชฒ)

เชคเซ‡ เชฌเชงเชพ เชตเชฟเชšเชพเชฐ เชฎเซเชœเชฌ เช›เซ‡. (เชนเชœเซ€ เชธเซเชงเซ€ เชšเช•เชพเชธเชพเชฏเซ‡เชฒ เชจเชฅเซ€)

เชนเซเช‚ เชธเชฟเชธเซเชŸเชฎเซ‹ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชชเชฐ เช•เซ‡เชŸเชฒเซ€เช• เชฒเชฟเช‚เช•เซเชธ เชจเซ€เชšเซ‡ เชฎเซ‚เช•เซ€เชถ เชœเซ‡เชจเซ‡ เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡ เชฆเซเชตเชฟ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชธเชพเชฅเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:
เชฎเชพเช‚ เชฆเซเชตเชฟ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ Apache2

Cisco ASA เชธเชพเชฅเซ‡ เชธเซ‡เชŸเช…เชช(เชคเซเชฏเชพเช‚ เชเช• เช…เชฒเช— เชŸเซ‹เช•เชจ เชœเชจเชฐเซ‡เชถเชจ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ ASA เชจเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชชเซ‹เชคเซ‡ เชธเชฎเชพเชจ เช›เซ‡).

เชฆเซเชตเชฟ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชธเชพเชฅเซ‡ VPN

เช—เซ‹เช เชตเชฃ ssh เชฎเชพเช‚ เชฌเซ‡ เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ (LinOTP เชชเชฃ เชคเซเชฏเชพเช‚ เชตเชชเชฐเชพเชฏ เช›เซ‡) - เชฒเซ‡เช–เช•เชจเซ‹ เช†เชญเชพเชฐ. เชคเซเชฏเชพเช‚ เชคเชฎเซ‡ LiOTP เชจเซ€เชคเชฟเช“ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชฐเชธเชชเซเชฐเชฆ เชตเชธเซเชคเซเช“ เชชเชฃ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เช‰เชชเชฐเชพเช‚เชค, เช˜เชฃเซ€ เชธเชพเช‡เชŸเซเชธเชจเชพ เชธเซ‡เชฎเซ€ เชŸเซ-เชซเซ‡เช•เซเชŸเชฐ เช“เชฅเซ‡เชจเซเชŸเชฟเช•เซ‡เชถเชจเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ (WordPress เชฎเชพเชŸเซ‡, LinOTP เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เช–เชพเชธ เชฎเซ‹เชกเซเชฏเซเชฒ เชชเชฃ เช›เซ‡. GitHub), เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชคเชฎเซ‡ เช•เช‚เชชเชจเซ€เชจเชพ เช•เชฐเซเชฎเชšเชพเชฐเซ€เช“ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ€ เช•เซ‹เชฐเซเชชเซ‹เชฐเซ‡เชŸ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐ เชธเซเชฐเช•เซเชทเชฟเชค เชตเชฟเชญเชพเช— เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹.
เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชนเช•เซ€เช•เชค! Google Authenticator เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ โ€œGoogle autentificatorโ€ เชฌเซ‰เช•เซเชธเชจเซ‡ เชšเซ‡เช• เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚! เชคเซเชฏเชพเชฐเซ‡ QR เช•เซ‹เชก เชตเชพเช‚เชšเซ€ เชถเช•เชพเชคเซ‹ เชจเชฅเซ€... (เชตเชฟเชšเชฟเชคเซเชฐ เชนเช•เซ€เช•เชค)

เช† เชฒเซ‡เช– เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡, เชจเซ€เชšเซ‡เชจเชพ เชฒเซ‡เช–เซ‹เชจเซ€ เชฎเชพเชนเชฟเชคเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

เชฒเซ‡เช–เช•เซ‹เชจเซ‹ เช†เชญเชพเชฐ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹