ืืืึทื ื ืืื ืืืืื ืฆื ืืืืื ืืื ืฆื ืฉืืขืื ืึทืจืืืฃ ืึท ืฆืืืื-ืคืึทืงืืึธืจ ืึธืืขื ืืึทืงืืืฉืึทื ืกืขืจืืืขืจ ืฆื ืืึทืฉืืฆื ืึท ืคึฟืืจืืข ื ืขืฅ, ืืืืืืขื, ืืึทืืื ืื ืืก, ืกืฉ. ืืขืจ ืกืขืจืืืขืจ ืืืขื ืืืืคื ืื ืคืืืืขื ืืข ืงืึธืืืื ืึทืฆืืข: LinOTP + FreeRadius.
ืคืืจืืืืก ืืึธื ืืืจ ืืึทืจืคึฟื ืขืก?
ืืึธืก ืืื ืึท ืืึธืจ ืคืจืื, ืืึทืงืืืขื ืืืืืื ื ืืื ืืืื ืืืืืขื ืข ื ืขืฅ, ืคืจืืึท ืคืื ืืจืื-ืคึผืึทืจืืื ืคึผืจืึทืืืืืืขืจื.
ืืขืจ ืืื ืกื ืืื ืืืืขืจ ืืึทืงืืืขื, ืืึทื ืฅ ืืืืืฉืึทืืืึทื, ื ืื ืขื ืืขื ืื ืืขืจืข ืึธืคึฟื ืืงืืจ ืคึผืจืึธืืืงืื, ืืื ืืืื ืฉืืืฆื ืึท ืจืืืืง ื ืืืขืจ ืคืื ืคืึทื ืืงืฉืึทื ื ืืื ืคึผืึทืืึทืกืื (ืืืฉื, ืืึธืืื + ืคึผืึทืจืึธื + (PIN + OTPToken)). ืืืจื ืื ืึทืคึผื, ืขืก ืื ืืึทืืจืืืฅ ืืื SMS ืฉืืงื ืืึทืืื ืื ืืก (LinOTP Config-> Provider Config-> SMS ืคึผืจืึทืืืืืืขืจ), ืืืฉืขื ืขืจืืืฅ ืงืึธืืื ืคึฟืึทืจ ืจืืจืขืืืืืง ืึทืคึผืืึทืงืืืฉืึทื ื ืึทืืึท ืืื Google ืึทืืืืขื ืืืคืืงืึทืืึธืจ ืืื ืคืื ืืขืจ. ืืื ืืจืึทืืื ืขืก ืืื ืืขืจ ืืึทืงืืืขื ืืื ืื ืกืขืจืืืืก ืืืกืงืึทืกื ืืื
ืืขืจ ืกืขืจืืืขืจ ืึทืจืืขื ืืืฉืืืืืขืก ืืื 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
ืืึธืก ืืื ืืขืจ ืขืจืฉื ืื ืืคึผื ืกืขืืึทืคึผ. ืก 'ืืื ืืื. ื ืึธืจ ืืืืคื ืื ืืึทืคึฟืขื ืืืืืขืจ.
ืฆื ืืขืืืึทื ืก ืงืฉืื:
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 ืืึทืืึทืืืืก, ืงืขื ืขื ืืืื ืืขืคึฟืื ืขื ืืื ืืขืจ ืืึทืึทืืืขืจ ืืึทืงืืืืขื ืืืืฉืึทื ืคึฟืึทืจ
# apt-get install mysql-server
# apt-get update
(ืขืก ืืืึธืื ื ืืฉื ืฉืึทืื ืฆื ืงืึธื ืืจืึธืืืจื ืื ืืขืจืืืึทื ืืืงืื ืืขื ืืืืืขืจ)
ืื ืกืืึทืืืจื LinOTP ืืื ื ืึธื ืืึทืืืฉืืื:
# apt-get install linotp
ืืืจ ืขื ืืคึฟืขืจื ืื ืคึฟืจืืื ืคืื ืื ืื ืกืืึทืืืขืจ:
ื ืืฆื Apache2: ืืึธ
ืฉืึทืคึฟื ืึท ืคึผืึทืจืึธื ืคึฟืึทืจ ืึทืืืื ืืื ืึธืืคึผ: "ืืืื ืคึผืึทืจืึธื"
ืืืฉืขื ืขืจืืื ืืื-ืืขืืชืืขื ืืึทืืืืึทืื?: ืืึธ
ื ืืฆื 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 ืืื ืคึฟืึทืจืืื ืืื ื ืขืก ืืื ืืื ืึธืืคึผ.
ืื ืกืืึทืืืจื 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
ืืืจ ืจืขืืึทืืืจื ืื ืืขืงืข, ืืึธืื ืจืึทืืืืก ืึทื ืืืจ ืืืขืื ื ืืฆื ืคึผืขืจื ืคึฟืึทืจ ืึธืืขื ืืึทืงืืืฉืึทื.
# 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
ืืื ืืืขื ืืืื ืืื ืึท ืืืกื ืืขืจ ืืขืืึทื ืืึธ ืืืืึทื ืขืก ืืื ืืืืืืืง:
ืืึทื ืฅ ืืึทืฉืจืืึทืืื ื ืคืื ืืขืจ ืืขืงืข ืืื ืืึทืืขืจืงืื ืืขื:
# IP ืคืื ืื LinOTP ืกืขืจืืืขืจ (IP ืึทืืจืขืก ืคืื ืืื ืืืขืจ LinOTP ืกืขืจืืืขืจ)
URL = https://172.17.14.103/validate/simplecheck
# ืืื ืืืขืจ ืืขืื ื ืืืึธืก ืืืจ ืืืขืื ืฉืึทืคึฟื ืืื ืื LinOTP ืืืขื ืฆืืืื ื.)
REALM=rearm1
# ื ืึธืืขื ืคืื ืื ืืึทื ืืฆืขืจ ืืจืืคึผืข ืืืึธืก ืืื ืืืฉืืคื ืืื ืื LinOTP ืืืขื ืคึผืืกืง.
RESCONF = ืคืืึทื_ืืขืงืข
# ืึทืคึผืฉืึทื ืึทื: ืืึทืืขืจืงืื ื ืืืื ืึทืืฅ ืืืื ื ืฆื ืึทืจืืขืื ืคืืึทื
ืืขืืื = ืืืช
# ืึทืคึผืฉืึทื ืึทื: ื ืืฆื ืืขื ืืืื ืืืจ ืืึธื ืืื-ืืขืฉืจืืื ืกืขืจืืืคืืงืึทืฅ, ืึทื ืืขืจืฉ ืืึทืืขืจืงืื ื (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, ืึธืืขืจ ืืืืข ื ืืฆืขืจืก ืคืื ืื ืคืืึทืืคืืืข ืกืืกืืขื.
ืคึผืืึธืืืืจื ืื ืคืืจืืื ืื ืคืขืืืขืจ.
ืืืืึทืืขืจ ืืืจ ืืึทืื 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, ืืึทื ืง ืฆื ืืื ืคึฟืึทืจ ืืขื!):
ืกืขืจืืืขืจ ืืื ืึธืืคึผ {
ืืขืจื {
ืืคึผืึทืืืจ = *
ืคึผืึธืจื = 1812
ืืืคึผ = ืึทืืื
}
ืืขืจื {
ืืคึผืึทืืืจ = *
ืคึผืึธืจื = 1813
ืืืคึผ = ืึทืงื
}
ืืขืจืืืืื {
ืคึผืจืืคึผืจืึธืกืขืก
ืืขืจืืืึทื ืืืงื {
&control:Auth-Type := ืคึผืขืจื
}
}
ืึธืืขื ืืืคืืฆืืจื {
ืึธื-ืืืคึผ ืคึผืขืจื {
ืคึผืขืจื
}
}
ืืฉืืื {
ืืื ืืงืก
}
}
ืจืขืืึทืืืจื /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
ืงืืืขื ื ืกืขืจืืืขืจืก {
ืืคึผืึทืืืจ = 192.168.188.0/24
ืกืื = ืืืื ืคึผืึทืจืึธื
}
ืืืฆื ืืึธืื ืืื ืื ืจืืืืืง ื ืึทื ืึธ /etc/linotp2/rlm_perl.ini
ืืืจ ืคึผืึทืคึผ ืื ืืขืืืข ืงืึธื ืืึธืจื ืืื ืืืขื ืื ืกืืึธืืื ื ืืืืฃ ืืขืืืึทื 8 (ืืืกืงืจืืืื ืืืืื)
ืืึธืก ืืื ืึทืืฅ ืืืืื ืืขืืึทื ืง. (ื ืืฉื ืืขืกืืขื ื ืึธื)
ืืื ืืืขื ืืึธืื ืืื ืื ืึท ืืืกื ืคึฟืึทืจืืื ืืื ืืขื ืืืขืื ืืึทืฉืืขืืืงื ืกืืกืืขืืขื ืืืึธืก ืึธืคื ืืึทืจืคึฟื ืฆื ืืืื ืคึผืจืึธืืขืงืืขื ืืื ืฆืืืื-ืคืึทืงืืึธืจ ืึธืืขื ืืึทืงืืืฉืึทื:
ืืึทืฉืืขืืืงื ืฆืืืื-ืคืึทืงืืึธืจ ืึธืืขื ืืึทืงืืืฉืึทื ืืื
Customize
ืืืื, ืื ืงืืก ืคืื ืคืืืข ืืืืืืขื ืฉืืืฆื ืฆืืืื-ืคืึทืงืืึธืจ ืึธืืขื ืืึทืงืืืฉืึทื (ืคึฟืึทืจ ืืืึธืจืืคึผืจืขืกืก, LinOTP ืืคืืื ืืื ืืืื ืืืืืขื ืข ืกืคึผืขืฆืืขื ืืึธืืืืข ืคึฟืึทืจ
ืืืืืืืง ืคืึทืงื! ืื ืืืืกื ื ืืฉื ืงืึธื ืืจืึธืืืจื ืื "ืืืื ืึธืืขื ืืืคืืงืึทืืึธืจ" ืงืขืกืื ืฆื ื ืืฆื Google ืึทืืืืขื ืืืงืึทืืึธืจ! ืืขืจ QR ืงืึธื ืืื ื ืืฉื ืืืื ืขืืืืืง ืืขืืึธืื ... (ืืึธืื ืข ืคืึทืงื)
ืฆื ืฉืจืืึทืื ืืขื ืึทืจืืืงื, ืืื ืคึฟืึธืจืืึทืฆืืข ืคืื โโืื ืคืืืืขื ืืข ืึทืจืืืงืืขื ืืื ืืขื ืืฆื:
ืืึทื ืง ืฆื ืื ืืืืจืื.
ืืงืืจ: www.habr.com