เป€เบŠเบตเบšเป€เบงเบตเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบชเบญเบ‡เบ›เบฑเบ”เปƒเบˆ LinOTP

เป€เบŠเบตเบšเป€เบงเบตเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบชเบญเบ‡เบ›เบฑเบ”เปƒเบˆ LinOTP

เบกเบทเป‰เบ™เบตเป‰เบ‚เป‰เบญเบเบขเบฒเบเปเบšเปˆเบ‡เบ›เบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบญเบ‡เบ›เบฑเบ”เปƒเบˆเป€เบžเบทเปˆเบญเบ›เบปเบเบ›เป‰เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”, เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, เบšเปเบฅเบดเบเบฒเบ™, ssh. เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: LinOTP + FreeRadius.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™?
เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบŸเบฃเบตโ€‹เบซเบกเบปเบ”โ€‹, เบชเบฐโ€‹เบ”เบงเบโ€‹, เบžเบฒเบโ€‹เปƒเบ™โ€‹เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹, เป€เบ›เบฑเบ™โ€‹เป€เบญโ€‹เบเบฐโ€‹เบฅเบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เบœเบนเป‰โ€‹เปƒเบซเป‰โ€‹เบšเปโ€‹เบฅเบดโ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบ—เบตโ€‹เบชเบฒเบกโ€‹.

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบ”เบงเบเบซเบผเบฒเบ, เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบ›เบฑเบ™เบ•เบฒ, เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบญเบทเปˆเบ™เป†, เปเบฅเบฐเบเบฑเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐเบ™เบฐเป‚เบเบšเบฒเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš + เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™ + (PIN + OTPToken)). เบœเปˆเบฒเบ™ API, เบกเบฑเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบปเปˆเบ‡ sms (LinOTP Config->Provider Config->SMS Provider), เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบกเบทเบ–เบทเป€เบŠเบฑเปˆเบ™ Google Authentificator เปเบฅเบฐเบญเบทเปˆเบ™เป†เบญเบตเบ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เบชเบฐเบ”เบงเบเบเบงเปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบชเบปเบ™เบ—เบฐเบ™เบฒเบขเบนเปˆเปƒเบ™ เบšเบปเบ”เบ„เบงเบฒเบก.

เป€เบŠเบตเบšเป€เบงเบตเบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เปเบšเบšเบเบฑเบš Cisco ASA, OpenVPN server, Apache2, เปเบฅเบฐเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบเบฑเบšเป€เบเบทเบญเบšเบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ RADIUS (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™ SSH เปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™).

เบกเบฑเบ™ เบˆเบณ เป€เบ›เบฑเบ™:

1) Debian 8 (jessie) - เบˆเบณเป€เบ›เบฑเบ™! (เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบ™ debian 9 เปเบกเปˆเบ™เบญเบฐเบ—เบดเบšเบฒเบเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก)

เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™:

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Debian 8.

เป€เบžเบตเปˆเบก LinOTP repository:

# 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 เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™. เบšเปเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เบซเบเบฑเบ‡. เบžเบฝเบ‡เปเบ•เปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.
เบ•เปเปˆเบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡ 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) ะ’ั‹ั…ะพะด>

เบžเบงเบเป€เบฎเบปเบฒเบ•เบญเบšเบงเปˆเบฒ: 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
เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเป‰เบ‡เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰: "เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ"
เบ‚เป‰เบญเบเบ„เบงเบ™เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบงเบ™เบตเป‰เบšเป? (เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: "เป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ ... "): เปเบกเปˆเบ™เปเบฅเป‰เบง
เปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบฎเบฒเบ 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

เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ radius เบœเบนเป‰เปƒเบŠเป‰.

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

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

เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบฅเบนเบเบ„เป‰เบฒเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ:

# touch /etc/freeradius/clients.conf

เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เป„เบŸเบฅโ€‹เปŒ config เปƒเบซเบกเปˆโ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒ (เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฎเบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™ config เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป€เบ›เบฑเบ™โ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹)

# nano /etc/freeradius/clients.conf

client 192.168.188.0/24 {
secret  = passwd # ะฟะฐั€ะพะปัŒ ะดะปั ะฟะพะดะบะปัŽั‡ะตะฝะธั ะบะปะธะตะฝั‚ะพะฒ
}

เบ•เปเปˆเป„เบ›, เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบœเบนเป‰เปƒเบŠเป‰:

# touch /etc/freeradius/users

เบžเบงเบเป€เบฎเบปเบฒเปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ, เบšเบญเบ radius เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰ perl เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

เบ•เปเปˆเป„เบ›, เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒ script 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

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบฅเบฑเบเบ™เป‰เบญเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบชเปเบฒเบ„เบฑเบ™:

เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เป€เบ•เบฑเบกโ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ„เปเบฒโ€‹เป€เบซเบฑเบ™โ€‹:
#IP เบ‚เบญเบ‡เป€เบŠเบตเบšเป€เบงเบต linOTP (เบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เป€เบŠเบตเบšเป€เบงเบต LinOTP เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ)
URL=https://172.17.14.103/validate/simplecheck
# เบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบŸเบ”เป€เบงเบฑเบš LinOTP.)
REALM=เปเบ‚เบ™1
# เบŠเบทเปˆเบ‚เบญเบ‡เบเบธเปˆเบกเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ muzzle เป€เบงเบฑเบš LinOTP.
RESCONF=flat_file
#เบ—เบฒเบ‡เป€เบฅเบทเบญเบ: เบญเบญเบเบ„เบณเป€เบซเบฑเบ™ เบ–เป‰เบฒเบ—เบธเบเบขเปˆเบฒเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบ”เบต
Debug=เบ–เบทเบเบ•เป‰เบญเบ‡
#เบ—เบฒเบ‡เป€เบฅเบทเบญเบ: เปƒเบŠเป‰เบญเบฑเบ™เบ™เบตเป‰, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบ—เบตเปˆเป€เบŠเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบซเป‰เบ„เปเบฒเป€เบซเบฑเบ™ (SSL เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡เปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เบกเบฑเบ™)
SSL_CHECK=เบœเบดเบ”

เบ•เปเปˆเป„เบ›, เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ /etc/freeradius/sites-available/linotp

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

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

เปเบฅเบฐเบ„เบฑเบ”เบฅเบญเบ config เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบกเบฑเบ™ (เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚เบซเบเบฑเบ‡):

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, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™เบเปˆเบฝเบงเบเบฑเบšเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เปเบเป‰เป„เบ‚เบกเบฑเบ™, เป€เบฎเบฑเบ”เบกเบฑเบ™เบ”เบฝเบงเบ™เบตเป‰.

เป€เบŠเบตเบšเป€เบงเบตเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบฑเบ‡เปเบปเบ”.

เป€เบžเบตเปˆเบกเป€เบ•เบตเบก:

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ 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) เบšเปเปˆเป„เบ”เป‰เบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบ•เบฑเป‰เบ‡เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบฎเบฒเบ, เปเบ™เปˆเบ™เบญเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบญเบเปƒเบซเป‰เบกเบฑเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบ‚เปˆเบฒเบง, เบ™เบตเป‰เบกเบฑเบเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ "epic เบฅเบปเป‰เบกเป€เบซเบฅเบง", เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เบฑเป‰เบ‡เบกเบฑเบ™. เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก)

# 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
}
}
เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™ {
เบ›เบฐเป€เบžเบ”เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡ Perl {
perl
}
}
เบเบฒเบ™เบšเบฑเบ™เบŠเบต {
Unix
}
}

เปเบเป‰เป„เบ‚ /etc/freeradius/3.0/mods-enabled/perl

perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™
func_authorize = เบญเบฐเบ™เบธเบเบฒเบ”
}

เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เปƒเบ™ Debian 9 เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” radius_linotp.pm เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบˆเบฒเบ repositories, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบญเบปเบฒเบกเบฑเบ™เบกเบฒเบˆเบฒเบ 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
secret = เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเปˆเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹
}

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เปเบเป‰ nano /etc/linotp2/rlm_perl.ini

เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบกเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบ™ debian 8 (เบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡)

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเบ„เบดเบ”. (เบเบฑเบ‡โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹)

เบ‚เป‰เบญเบเบˆเบฐเบญเบญเบเบˆเบฒเบเบฅเบดเป‰เบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบšเบฒเบ‡เบญเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบฑเบเบˆเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ”เป‰เบงเบเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบชเบญเบ‡เบ›เบฑเบ”เปƒเบˆ:
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบญเบ‡เบ›เบฑเบ”เป„เบˆเปƒเบ™ Apache2

เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ”เป‰เบงเบ Cisco ASA(เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ token เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เปเบ•เปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡ ASA เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™).

VPN เบ”เป‰เบงเบเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบชเบญเบ‡เบ›เบฑเบ”เปƒเบˆ

เบเบฒเบ™เบ›เบฑเบš เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบญเบ‡เบ›เบฑเบ”เป„เบˆเปƒเบ™ ssh (LinOTP เบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™) - เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบœเบนเป‰เบ‚เบฝเบ™. เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ™เบฐเป‚เบเบšเบฒเบ LiOTP.

เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, cms เบ‚เบญเบ‡เบซเบผเบฒเบเป†เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบญเบ‡เบ›เบฑเบ”เปƒเบˆ (เบชเปเบฒเบฅเบฑเบš WordPress, LinOTP เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเป‚เบกเบ”เบนเบ™เบžเบดเป€เบชเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš GitHub), เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบฒเบเบชเปˆเบงเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบšเปเบฅเบดเบชเบฑเบ”.
เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™! เบขเปˆเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเปˆเบญเบ‡ โ€œGoogle authenteficatorโ€ เป€เบžเบทเปˆเบญเปƒเบŠเป‰ Google Authenticator! เบฅเบฐเบซเบฑเบ” QR เปเบกเปˆเบ™เบญเปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เปเบฅเป‰เบง... (เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบ›เบ)

เป€เบžเบทเปˆเบญเบ‚เบฝเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบšเบปเบ”เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบœเบนเป‰เบ‚เบฝเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™