แแฆแแก แแกแฃแ แก แแแแแแแแ แแ แ แแแแ แแแแแงแแแแ แแ แคแแฅแขแแ แแแแ แแแขแแ แแแแชแแแก แกแแ แแแ แ แแฅแแแแ แแแ แแแ แแขแแฃแแ แฅแกแแแแก, แแแแกแแแขแแแแก, แกแแ แแแกแแแแก, 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 แแแงแแแแแ. แฒงแแแแแคแแ แ แแแ แแแแแ. แฃแแ แแแแ แแแแแ แแแฃแจแแแ แแ แซแแแแแ.
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 แแแแแชแแแแ แแแแแก แฎแแแแฎแแแ แแแแคแแแฃแ แแชแแ, แจแแแแซแแแแ แแฎแแแแ แแคแแชแแแแฃแ แแแแฃแแแแขแแชแแแจแ
# apt-get install mysql-server
# apt-get update
(แแแแแฎแแแแแแแก แฎแแแแฎแแ แแแแแแแฌแแแแ แแ แแฅแแแแ แชแฃแแ)
แแแแแแกแขแแแแ แแ LinOTP แแ แแแแแขแแแแแ แแแแฃแแแแ:
# apt-get install linotp
แฉแแแ แแแแกแฃแฎแแแ แแแกแขแแแแ แแก แแแแฎแแแแก:
แแแแแแงแแแแ Apache2: แแแแฎ
แจแแฅแแแแแ แแแ แแแ แแแแแแแกแขแ แแขแแ แแกแแแแก Linotp: "แแฅแแแแ แแแ แแแ"
แแแแแ แฎแแแแแฌแแ แแแ แกแแ แแแคแแแแขแแก แแแแแ แแ แแแ?: แแ
แแแแแแงแแแแ MySQL?: แแแแฎ
แกแแ แแแแแแ แแแแก แแแแแชแแแแ แแแแ: localhost
แจแแฅแแแแแ LinOTP แแแแแชแแแแ แแแแ (แแแแแก แกแแฎแแแ) แกแแ แแแ แแ: LinOTP2
แจแแฅแแแแแ แชแแแแ แแแแฎแแแ แแแแแ แแแแแชแแแแ แแแแแกแแแแก: LinOTP2
แฉแแแ แแแแแงแแแแ แแแ แแแ แแแแฎแแแ แแแแแกแแแแก: "แแฅแแแแ แแแ แแแ"
แแฎแแแแ แจแแแฅแแแ แแแแแชแแแแ แแแแ? (แ แแฆแแช "แแแ แฌแแฃแแแแฃแแ แฎแแ , แ แแ แแแแแ..."): แแแแฎ
แจแแแงแแแแแ MySQL root แแแ แแแ, แ แแแแแแช แจแแฅแแแแแ แแแกแ แแแกแขแแแแชแแแกแแก: โ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 แแแ muzzle-แจแ.
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
แแแ แแแแ แแ แแแแแ แ แแแแฃแกแแก แแแแฃแแแกแฎแแแ แกแแแขแแแก, แแแแ แแ แแฃ แแแแญแแ แแแแแ, แจแแแแซแแแแ แแ แจแแชแแแแแ แแแแ แแแแคแแแฃแ แแชแแ แแ แแแแแ แแแ แแกแแแ.
# 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) แแ แแแแแแแแแแก root แแแ แแแแก แแแงแแแแแแก, แ แ แแฅแแ แฃแแแ, แจแแแแซแแแแ แแแขแแแแ แแแ แชแแ แแแแ, แแแแ แแ แแฃ แแฎแแ แแแแแแก แฌแแแแแแฎแแแ, แแก แซแแแแแ แฎแจแแ แแ แแฌแแแแก "epic fails", แแแแขแแ แฉแแแ แแแแแงแแแแแ แแแก แแแแแช)
# 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-Type Perl {
perl
}
}
แแฆแ แแชแฎแแ {
unix
}
}
แ แแแแฅแขแแ แแแ /etc/freeradius/3.0/mods-enabled/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-แแ แแแกแขแแแแชแแแกแแก (แแแแแ แแฆแฌแแ แแแ)
แแก แงแแแแแคแแ แ แแแแแก แแแฎแแแแแ. (แฏแแ แแ แแ แแก แแแแแชแแแแ)
แฅแแแแแ แแแแขแแแแ แ แแแแแแแแ แแแฃแแก แกแแกแขแแแแแแก แแแงแแแแแแก แจแแกแแฎแแ, แ แแแแแแแช แงแแแแแแ แฎแจแแ แแ แฃแแแ แแงแแก แแแชแฃแแ แแ แคแแฅแขแแ แแแแ แแแแแแขแแคแแแแชแแแ:
แแ แคแแฅแขแแ แแแแ แแแแแแขแแคแแแแชแแแก แแแงแแแแแ
แ แแแฃแแแ แแแ
แแกแแแ, แแ แแแแแ แกแแแขแแก cms แแฎแแ แก แฃแญแแ แก แแ แคแแฅแขแแ แแแ แแแแแแขแแคแแแแชแแแก (WordPres-แแกแแแแก LinOTP-แก แแฅแแก แกแแแฃแแแ แ แกแแแชแแแแฃแ แ แแแแฃแแแช แแ.
แแแแจแแแแแแแแแ แคแแฅแขแ! แแ แแแแแจแแแ โGoogle autenteficatorโ แแแแ Google Authenticator-แแก แแแแแกแแงแแแแแแแ! QR แแแแ แแ แแแแแฎแแแ แแแจแแ... (แฃแชแแแฃแ แ แคแแฅแขแ)
แแ แกแขแแขแแแก แแแกแแฌแแ แแ แแแแแงแแแแแฃแแ แแฅแแ แแแคแแ แแแชแแ แจแแแแแแ แกแขแแขแแแแแแแ:
แแแแแแแ แแแขแแ แแแก.
แฌแงแแ แ: www.habr.com