Чӣ мешавад, агар аутентификатсияи ду-омил ҳам матлуб ва ҳам ҷолиб бошад, аммо барои токенҳои сахтафзор пул нест ва дар маҷмӯъ онҳо пешниҳод мекунанд, ки дар рӯҳияи хуб бимонанд.
Ин ҳалли як чизи олиҷаноб нест, балки омехтаи қарорҳои гуногун дар Интернет аст.
Ҳамин тавр дода шудааст
Номи домени Рӯйхати фаъол.
Истифодабарандагони доменҳо тавассути VPN кор мекунанд, мисли бисёре аз имрӯз.
Ҳамчун дарвозаи VPN амал мекунад Фигат.
Нигоҳ доштани парол барои муштарии VPN тибқи сиёсати амният манъ аст.
Сиёсат Fortinet дар робита ба аломатҳои шахсии худ, шумо наметавонед онро камтар аз zhlob номид - то 10 токенҳои ройгон мавҷуданд, боқимонда - бо нархи хеле ғайрикошер. Ман RSASecureID, Duo ва монанди инҳоро баррасӣ накардаам, зеро ман манбаи кушода мехоҳам.
Талабот: мизбон * nix бо насбшуда радиуси озод, ssd - ба домен ворид шуда, корбарони домен метавонанд ба осонӣ дар он аутентификатсия кунанд.
Бастаҳои иловагӣ: қуттии шеллин, фиглет, озод-лдап, шрифт rebel.tlf аз анбор
Дар мисоли ман - CentOS 7.8.
Мантиқи кор бояд чунин бошад: ҳангоми пайвастшавӣ ба VPN корбар бояд ба ҷои парол логини домен ва OTP ворид кунад.
Танзими хидматҳо
В /etc/raddb/radiusd.conf танҳо корбар ва гурӯҳе, ки аз номи онҳо оғоз мешавад радиуси озод, аз замони хидмат радиусд бояд файлҳоро дар ҳама зеркаталогҳо хонда тавонанд / хона /.
user = root
group = root
Барои истифода бурдани гурӯҳҳо дар танзимот Фигат, бояд интиқол дода шавад Хусусияти мушаххаси фурӯшанда. Барои ин, дар директория raddb/policy.d Ман файлеро бо мундариҷаи зерин эҷод мекунам:
group_authorization {
if (&LDAP-Group[*] == "CN=vpn_admins,OU=vpn-groups,DC=domain,DC=local") {
update reply {
&Fortinet-Group-Name = "vpn_admins" }
update control {
&Auth-Type := PAM
&Reply-Message := "Welcome Admin"
}
}
else {
update reply {
&Reply-Message := "Not authorized for vpn"
}
reject
}
}
Баъд аз насб озод-лдап дар директория raddb/mods-дастрас файл сохта мешавад лдап.
Ба феҳрист пайванди рамзӣ эҷод кардан лозим аст raddb/mods-фаъол.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
Ман мундариҷаи онро ба ин шакл меоварам:
ldap {
server = 'domain.local'
identity = 'CN=freerad_user,OU=users,DC=domain,DC=local'
password = "SupeSecretP@ssword"
base_dn = 'dc=domain,dc=local'
sasl {
}
user {
base_dn = "${..base_dn}"
filter = "(sAMAccountname=%{%{Stripped-User-Name}:-%{User-Name}})"
sasl {
}
scope = 'sub'
}
group {
base_dn = "${..base_dn}"
filter = '(objectClass=Group)'
scope = 'sub'
name_attribute = cn
membership_filter = "(|(member=%{control:Ldap-UserDn})(memberUid=%{%{Stripped-User-Name}:-%{User-Name}}))"
membership_attribute = 'memberOf'
}
}
Дар файлҳо raddb/sites-enabled/default и raddb / сайтҳо фаъол / нақби дохилӣ дар бахш иҷозат диҳед Ман номи сиёсатеро, ки истифода мешавад, илова мекунам - group_authorization. Як нуктаи муҳим - номи сиёсат бо номи файл дар директория муайян карда намешавад сиёсат.д, балки аз рӯи дастуре дар дохили файл пеш аз қавсҳои ҷингила.
Дар бахш аслӣ дар ҳамон файлҳо ба шумо лозим аст, ки сатрро шарҳ диҳед PAM.
Дар файл clients.conf параметрҳоеро, ки бо онҳо пайваст мешавад, муқаррар кунед Фигат:
client fortigate {
ipaddr = 192.168.1.200
secret = testing123
require_message_authenticator = no
nas_type = other
}
Танзимоти модул pam.d/radiusd:
#%PAM-1.0
auth sufficient pam_google_authenticator.so
auth include password-auth
account required pam_nologin.so
account include password-auth
password include password-auth
session include password-auth
Вариантҳои татбиқи бастаи пешфарз радиуси озод с аутентифики гугл аз корбар талаб кардани маълумоти эътимоднома дар формати: номи корбар / парол+БРСММ.
Бо тасаввур кардани шумораи лаънатҳое, ки ба сари онҳо хоҳанд афтод, дар сурати истифодаи бастаи пешфарз радиуси озод с Authenticator Google, қарор дода шуд, ки конфигуратсияи модул истифода шавад PAM то ки танҳо нишона санҷида шавад Authenticator Google.
Вақте ки корбар пайваст мешавад, инҳо рӯй медиҳанд:
- Freeradius месанҷад, ки оё корбар дар домен ва дар гурӯҳи муайян қарор дорад ва агар муваффақ бошад, аломати OTP -ро месанҷад.
То он даме, ки ман фикр мекардам, ки "Чӣ гуна метавонам OTP-ро барои 300+ корбар сабти ном кунам?" Ҳама чиз ба қадри кофӣ хуб менамуд.
Истифодабаранда бояд бо сервер ворид шавад радиуси озод ва аз зери ҳисоби худ ва барномаро иҷро кунед Google Authenticator, ки рамзи QR-ро барои барнома барои корбар тавлид мекунад. Ин аст, ки кӯмак дар ин ҷо меояд. қуттии шеллин дар якҷоягӣ бо .bash_profile.
[root@freeradius ~]# yum install -y shellinabox
Файли конфигуратсияи демон дар /etc/sysconfig/shellinabox.
Ман дар он ҷо порти 443-ро муайян мекунам ва шумо метавонед сертификати худро муайян кунед.
[root@freeradius ~]#systemctl enable --now shellinaboxd
Истифодабаранда танҳо бояд истинодро пайгирӣ кунад, кредитҳои домениро ворид кунад ва рамзи QR-ро барои барнома қабул кунад.
Алгоритм чунин аст:
- Корбар тавассути браузер ба мошин ворид мешавад.
- Оё корбари домен тафтиш карда мешавад. Агар не, пас чорае дида намешавад.
- Агар корбар корбари домен бошад, узвият дар гурӯҳи Administrators тафтиш карда мешавад.
- Агар администратор набошад, он тафтиш мекунад, ки оё Google Authenticator танзим шудааст. Агар не, пас рамзи QR ва баромади корбар тавлид мешавад.
- Агар администратор набошад ва Google Authenticator танзим карда шуда бошад, пас танҳо аз система хориҷ шавед.
- Агар администратор, пас Google Authenticator-ро бори дигар тафтиш кунед. Агар танзим нашуда бошад, рамзи QR тавлид мешавад.
Ҳама мантиқ бо истифода аз он анҷом дода мешавад /etc/skel/.bash_profile.
cat /etc/skel/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
# Make several commands available from user shell
if [[ -z $(id $USER | grep "admins") || -z $(cat /etc/passwd | grep $USER) ]]
then
[[ ! -d $HOME/bin ]] && mkdir $HOME/bin
[[ ! -f $HOME/bin/id ]] && ln -s /usr/bin/id $HOME/bin/id
[[ ! -f $HOME/bin/google-auth ]] && ln -s /usr/bin/google-authenticator $HOME/bin/google-auth
[[ ! -f $HOME/bin/grep ]] && ln -s /usr/bin/grep $HOME/bin/grep
[[ ! -f $HOME/bin/figlet ]] && ln -s /usr/bin/figlet $HOME/bin/figlet
[[ ! -f $HOME/bin/rebel.tlf ]] && ln -s /usr/share/figlet/rebel.tlf $HOME/bin/rebel.tlf
[[ ! -f $HOME/bin/sleep ]] && ln -s /usr/bin/sleep $HOME/bin/sleep
# Set PATH env to <home user directory>/bin
PATH=$HOME/bin
export PATH
else
PATH=PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
fi
if [[ -n $(id $USER | grep "domain users") ]]
then
if [[ ! -e $HOME/.google_authenticator ]]
then
if [[ -n $(id $USER | grep "admins") ]]
then
figlet -t -f $HOME/bin/rebel.tlf "Welcome to Company GAuth setup portal"
sleep 1.5
echo "Please, run any of these software on your device, where you would like to setup OTP:
Google Autheticator:
AppStore - https://apps.apple.com/us/app/google-authenticator/id388497605
Play Market - https://play.google.com/stor/apps/details?id=com.google.android.apps.authenticator2&hl=en
FreeOTP:
AppStore - https://apps.apple.com/us/app/freeotp-authenticator/id872559395
Play Market - https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp&hl=en
And prepare to scan QR code.
"
sleep 5
google-auth -f -t -w 3 -r 3 -R 30 -d -e 1
echo "Congratulations, now you can use an OTP token from application as a password connecting to VPN."
else
figlet -t -f $HOME/bin/rebel.tlf "Welcome to Company GAuth setup portal"
sleep 1.5
echo "Please, run any of these software on your device, where you would like to setup OTP:
Google Autheticator:
AppStore - https://apps.apple.com/us/app/google-authenticator/id388497605
Play Market - https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en
FreeOTP:
AppStore - https://apps.apple.com/us/app/freeotp-authenticator/id872559395
Play Market - https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp&hl=en
And prepare to scan QR code.
"
sleep 5
google-auth -f -t -w 3 -r 3 -R 30 -d -e 1
echo "Congratulations, now you can use an OTP token from application as a password to VPN."
logout
fi
else
echo "You have already setup a Google Authenticator"
if [[ -z $(id $USER | grep "admins") ]]
then
logout
fi
fi
else
echo "You don't need to set up a Google Authenticator"
fi
Танзимоти Fortigate:
- Мо эҷод мекунем радиус-сервер
- Мо гурӯҳҳои заруриро эҷод мекунем, агар лозим бошад, назорати дастрасӣ аз ҷониби гурӯҳҳо. Номи гурӯҳ Фигат бояд ба гурӯҳе, ки ба он дохил мешавад, мувофиқат кунад Хусусияти мушаххаси фурӯшанда Fortinet-Группа-Номи.
- Таҳрири зарурӣ SSL-порталҳо.
- Илова кардани гурӯҳҳо ба сиёсатҳо.
Афзалиятҳои ин ҳалли:
- Ин мумкин аст, ки ба аутентификатсия тавассути OTP оид ба Фигат ҳалли кушодаасос.
- Ҳангоми пайвастшавӣ тавассути VPN корбар пароли доменро ворид намекунад, ки раванди пайвастшавиро то андозае содда мекунад. Ворид кардани пароли 6-рақама нисбат ба гузарвожае, ки сиёсати амният пешниҳод кардааст, осонтар аст. Дар натиҷа, шумораи чиптаҳо бо мавзӯи: "Ман ба VPN пайваст шуда наметавонам" кам мешавад.
PS Мо нақша дорем, ки ин ҳалли худро ба аутентификатсияи мукаммали ду-омилӣ бо мушкилот-ҷавоб такмил диҳем.
навсозии:
Тавре ваъда дода шуда буд, ман онро ба варианти даъват-ҷавоб иваз кардам.
Пас,
Дар файл /etc/raddb/sites-enabled/default ҷудокунӣ иҷозат диҳед чунин мешуморам:
authorize {
filter_username
preprocess
auth_log
chap
mschap
suffix
eap {
ok = return
}
files
-sql
#-ldap
expiration
logintime
if (!State) {
if (&User-Password) {
# If !State and User-Password (PAP), then force LDAP:
update control {
Ldap-UserDN := "%{User-Name}"
Auth-Type := LDAP
}
}
else {
reject
}
}
else {
# If State, then proxy request:
group_authorization
}
pap
}
Фасли аслӣ ҳоло чунин менамояд:
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
mschap
digest
# Attempt authentication with a direct LDAP bind:
Auth-Type LDAP {
ldap
if (ok) {
update reply {
# Create a random State attribute:
State := "%{randstr:aaaaaaaaaaaaaaaa}"
Reply-Message := "Please enter OTP"
}
# Return Access-Challenge:
challenge
}
}
pam
eap
}
Ҳоло санҷиши корбар мувофиқи алгоритми зерин сурат мегирад:
- Истифодабаранда кредитҳои домениро ба муштарии VPN ворид мекунад.
- Freeradius дурустии ҳисоб ва паролро тафтиш мекунад
- Агар парол дуруст бошад, пас дархост барои нишона фиристода мешавад.
- Токен тасдиқ карда мешавад.
- фоида).
Манбаъ: will.com