Dè ma tha dearbhadh dà-fhactaraidh an dà chuid ion-mhiannaichte agus dòrainneach, ach chan eil airgead ann airson comharran bathar-cruaidh agus san fharsaingeachd tha iad a’ tabhann fuireach ann an deagh shunnd.
Chan eil am fuasgladh seo rudeigin fìor thùsail, ach measgachadh de dhiofar fhuasglaidhean a lorgar air an eadar-lìn.
Mar sin air a thoirt seachad
Ainm Domain Active Directory.
Luchd-cleachdaidh fearainn ag obair tro VPN, mar a tha mòran an-diugh.
Ag obair mar gheata VPN Daingnich.
Tha sàbhaladh am facal-faire airson neach-dèiligidh VPN air a thoirmeasg le poileasaidh tèarainteachd.
Poilitigs Fortinet a thaobh na comharran agad fhèin, chan urrainn dhut nas lugha na zhlob a ghairm - tha uimhir ri 10 comharran an-asgaidh, an còrr - aig prìs gu math neo-kosher. Cha do bheachdaich mi air RSASecureID, Duo agus an leithid, oir tha mi ag iarraidh stòr fosgailte.
Ro-ghoireasan: aoigheachd * nix le stèidhichte saor-radius, ssd - a-steach don àrainn, faodaidh luchd-cleachdaidh fearainn dearbhadh gu furasta air.
Pacaidean a bharrachd: bogsa sligean, figead, freeradius-ldap, cruth-clò reubaltach.tlf bhon stòr
Anns an eisimpleir agam - CentOS 7.8.
Tha còir aig loidsig na h-obrach a bhith mar a leanas: nuair a cheanglas e ri VPN, feumaidh an neach-cleachdaidh logadh a-steach fearainn agus OTP a chuir a-steach an àite facal-faire.
Suidheachadh seirbheisean
В /etc/raddb/radiusd.conf chan eil ach an neach-cleachdaidh agus a’ bhuidheann às a leth a’ tòiseachadh saor-radius, bhon t-seirbheis radiusd bu chòir dha a bhith comasach air faidhlichean a leughadh anns a h-uile fo-eòlaire / dachaigh /.
user = root
group = root
Airson a bhith comasach air buidhnean a chleachdadh ann an roghainnean Daingnich, feumar a thar-chuir Feartan sònraichte an neach-reic. Gus seo a dhèanamh, anns an eòlaire radb/policy.d Bidh mi a’ cruthachadh faidhle leis an t-susbaint a leanas:
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
}
}
An dèidh an stàladh freeradius-ldap anns an eòlaire raddb/mods-ri fhaighinn faidhle air a chruthachadh ldap.
Feum air ceangal samhlachail a chruthachadh ris an eòlaire raddb/mods-comas.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
Bheir mi a shusbaint chun fhoirm seo:
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'
}
}
Ann am faidhlichean raddb/làraich-comas/bunaiteach и raddb/làraich-comas/tunail a-staigh ann an earrann ùghdarrachadh Cuiridh mi ainm a’ phoileasaidh a tha ri chleachdadh - group_authorization. Puing chudromach - chan eil ainm a 'phoileasaidh air a dhearbhadh le ainm an fhaidhle san eòlaire poileasaidh.d, ach le stiùireadh taobh a-staigh an fhaidhle mus tig na cromagan lùbach.
Anns an earrainn ceartachadh anns na h-aon fhaidhlichean feumaidh tu an loidhne a thoirt às Pam.
Ann am faidhle luchd-dèiligidh.conf òrdaich na crìochan leis am bi e ceangailte Daingnich:
client fortigate {
ipaddr = 192.168.1.200
secret = testing123
require_message_authenticator = no
nas_type = other
}
Rèiteachadh modal 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
Roghainnean buileachaidh pasgan bunaiteach saor-radius с dearbhadair google iarraidh air an neach-cleachdaidh teisteanasan a chuir a-steach san fhòrmat: ainm-cleachdaidh/facal-faire+OTP.
Le bhith a 'smaoineachadh air an àireamh de mhallachdan a bhios a' tuiteam air a 'cheann, ann an cùis a bhith a' cleachdadh a 'bhundle bunaiteach saor-radius с Google Authenticator, chaidh co-dhùnadh an rèiteachadh modal a chleachdadh Pam gus nach tèid ach an tòcan a sgrùdadh Google Authenticator.
Nuair a bhios neach-cleachdaidh a 'ceangal, bidh na leanas a' tachairt:
- Bidh Freeradius a’ sgrùdadh a bheil an neach-cleachdaidh san raon agus ann am buidheann sònraichte agus, ma bhios e soirbheachail, thoir sùil air an tòcan OTP.
Bha a h-uile dad a’ coimhead math gu leòr gus an àm a smaoinich mi “Ciamar as urrainn dhomh OTP a chlàradh airson 300+ neach-cleachdaidh?”
Feumaidh an neach-cleachdaidh logadh a-steach don fhrithealaiche le saor-radius agus bho bhith fon chunntas agad agus ruith an tagradh Dearbhadair Google, a ghineas còd QR airson an tagradh airson an neach-cleachdaidh. Seo far a bheil cuideachadh a’ tighinn a-steach. bogsa sligean ann an co-bhonn ri .bash_profile.
[root@freeradius ~]# yum install -y shellinabox
Tha am faidhle rèiteachaidh daemon suidhichte aig /etc/sysconfig/shellinabox.
Bidh mi a 'sònrachadh port 443 an sin agus faodaidh tu an teisteanas agad a shònrachadh.
[root@freeradius ~]#systemctl enable --now shellinaboxd
Chan fheum an neach-cleachdaidh ach an ceangal a leantainn, cuir a-steach creideasan fearainn agus faigh còd QR airson an tagraidh.
Tha an algorithm mar a leanas:
- Bidh an neach-cleachdaidh a’ logadh a-steach don inneal tro bhrobhsair.
- Co-dhiù an tèid cleachdaiche an àrainn a sgrùdadh. Mura h-eil, chan eil gnìomh sam bith air a dhèanamh.
- Ma tha an neach-cleachdaidh na neach-cleachdaidh fearainn, thèid ballrachd sa bhuidheann Rianairean a sgrùdadh.
- Mura h-e rianaire a th’ ann, nì e sgrùdadh a bheil Google Authenticator air a rèiteachadh. Mura h-eil, an uairsin thèid còd QR agus logadh a-mach neach-cleachdaidh a chruthachadh.
- Mura h-eil rianaire agus Google Authenticator air an rèiteachadh, dìreach dèan logadh a-mach.
- Ma tha thu nad rianaire, thoir sùil air Google Authenticator a-rithist. Mura h-eil e air a rèiteachadh, thèid còd QR a chruthachadh.
Tha a h-uile loidsig air a dhèanamh a 'cleachdadh /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
Cuir stad air suidheachadh:
- Bidh sinn a 'cruthachadh radius-fhrithealaiche
- Bidh sinn a 'cruthachadh na buidhnean riatanach, ma tha sin riatanach, smachd ruigsinneachd le buidhnean. Ainm na buidhne air adhart Daingnich feumaidh iad a bhith co-ionnan ris a' bhuidheann a chaidh a-steach Feartan sònraichte an neach-reic Fortinet-Ainm-buidhne.
- A 'deasachadh na tha riatanach SSL- portals.
- A' cur buidhnean ri poileasaidhean.
Buannachdan an fhuasglaidh seo:
- Tha e comasach dearbhadh le OTP air Daingnich fuasgladh stòr fosgailte.
- Cha chuir an neach-cleachdaidh a-steach facal-faire fearainn nuair a bhios e a’ ceangal tro VPN, a nì beagan sìmpleachadh air a’ phròiseas ceangail. Tha e nas fhasa am facal-faire 6-fhigearach a chuir a-steach na am fear a thug am poileasaidh tèarainteachd seachad. Mar thoradh air an sin, tha an àireamh de thiogaidean leis a’ chuspair: “Chan urrainn dhomh ceangal ris an VPN” a’ dol sìos.
PS Tha sinn an dùil am fuasgladh seo ùrachadh gu dearbhadh dà-fhactaraidh làn-chuimseach le freagairt-dùbhlain.
update:
Mar a chaidh a ghealltainn, chuir mi a-steach e don roghainn freagairt dùbhlan.
Mar sin:
Ann am faidhle /etc/raddb/sites-enabled/default earrann ùghdarrachadh coltas mar seo:
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
}
Earrann ceartachadh a-nis tha e coltach ri seo:
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
}
A-nis tha dearbhadh cleachdaiche a’ tachairt a rèir an algairim a leanas:
- Bidh an neach-cleachdaidh a’ dol a-steach do chreideasan fearainn anns a’ chleachdaiche VPN.
- Bidh Freeradius a’ sgrùdadh dligheachd a’ chunntais agus am facal-faire
- Ma tha am facal-faire ceart, thèid iarrtas airson tòcan a chuir.
- Thathas a’ dearbhadh an tòcan.
- prothaid).
Source: www.habr.com