рдЬрд░ рджреНрд╡рд┐-рдШрдЯрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рджреЛрдиреНрд╣реА рдЗрд╖реНрдЯ рдЖрдгрд┐ рдХрд╛рдЯреЗрд░реА рдЕрд╕реЗрд▓, рдкрд░рдВрддреБ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдЯреЛрдХрдирд╕рд╛рдареА рдкреИрд╕реЗ рдирд╛рд╣реАрдд рдЖрдгрд┐ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рддреЗ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдореВрдбрдордзреНрдпреЗ рд░рд╛рд╣рдгреНрдпрд╛рдЪреА рдСрдлрд░ рджреЗрддрд╛рдд.
рд╣реЗ рд╕реЛрд▓реНрдпреВрд╢рди рдХрд╛рд╣реА рд╕реБрдкрд░ рдУрд░рд┐рдЬрд┐рдирд▓ рдирд╛рд╣реА, рддрд░ рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░ рдорд┐рд│рдгрд╛рд▒реНрдпрд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╕реЛрд▓реНрдпреВрд╢рдиреНрд╕рдЪреЗ рдорд┐рд╢реНрд░рдг рдЖрд╣реЗ.
рдореНрд╣рдгреВрди рджрд┐рд▓реЗ
рдбреЛрдореЗрди рдЪрд╛рд▓реВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛.
VPN рджреНрд╡рд╛рд░реЗ рдХрд╛рдо рдХрд░рдгрд╛рд░реЗ рдбреЛрдореЗрди рд╡рд╛рдкрд░рдХрд░реНрддреЗ, рдЬрд╕реЗ рдЖрдЬ рдЕрдиреЗрдХ.
VPN рдЧреЗрдЯрд╡реЗ рдореНрд╣рдгреВрди рдХрд╛рд░реНрдп рдХрд░рддреЗ рдХрд┐рд▓реНрд▓рд╛.
VPN рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА рдкрд╛рд╕рд╡рд░реНрдб рдЬрддрди рдХрд░рдгреЗ рд╕реБрд░рдХреНрд╖рд╛ рдзреЛрд░рдгрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЖрд╣реЗ.
рд░рд╛рдЬрдХрд╛рд░рдг рдлреЙрд░реНрдЯреАрдиреЗрдЯ рддреБрдордЪреНрдпрд╛ рд╕реНрд╡рдд:рдЪреНрдпрд╛ рдЯреЛрдХрдиреНрд╕рдЪреНрдпрд╛ рд╕рдВрдмрдВрдзрд╛рдд, рддреБрдореНрд╣реА рдпрд╛рд▓рд╛ рдЭреНрд▓реЙрдмрдкреЗрдХреНрд╖рд╛ рдХрдореА рдореНрд╣рдгреВ рд╢рдХрдд рдирд╛рд╣реА - рддреЗрдереЗ 10 рдореЛрдлрдд рдЯреЛрдХрди рдЖрд╣реЗрдд, рдмрд╛рдХреАрдЪреА - рдЕрдЧрджреА рдиреЙрди-рдХреЛрд╢рд░ рдХрд┐рдорддреАрдд. рдореА RSASecureID, Duo рдЖрдгрд┐ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдВрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдирд╛рд╣реА, рдХрд╛рд░рдг рдорд▓рд╛ рдореБрдХреНрдд рд╕реНрд░реЛрдд рд╣рд╡рд╛ рдЖрд╣реЗ.
рдкреВрд░реНрд╡рддрдпрд╛рд░реА: рд╣реЛрд╕реНрдЯ * рдирд┐рдХреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рд╕рд╣ рдореБрдХреНрдд рддреНрд░рд┐рдЬреНрдпрд╛, рдПрд╕рдПрд╕рдбреА - рдбреЛрдореЗрдирдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдбреЛрдореЗрди рд╡рд╛рдкрд░рдХрд░реНрддреЗ рддреНрдпрд╛рд╡рд░ рд╕рд╣рдЬрдкрдгреЗ рдкреНрд░рдорд╛рдгреАрдХреГрдд рдХрд░реВ рд╢рдХрддрд╛рдд.
рдЕрддрд┐рд░рд┐рдХреНрдд рдкреЕрдХреЗрдЬреЗрд╕: рд╢реЗрд▓рд┐рдирд╛ рдмреЙрдХреНрд╕, рдЕрдВрдЬреАрд░, freeradius-ldap, рдлреЙрдиреНрдЯ 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
}
}
рд╕реНрдерд╛рдкрдирд╛ рдирдВрддрд░ freeradius-ldap рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд raddb/mods-рдЙрдкрд▓рдмреНрдз рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХреЗрд▓реА рдЖрд╣реЗ ldap.
рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрд╕рд╛рдареА рдкреНрд░рддреАрдХрд╛рддреНрдордХ рджреБрд╡рд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ 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/sites-enabled/inner-tunnel рд╡рд┐рднрд╛рдЧрд╛рдд рдЕрдзрд┐рдХреГрдд рдХрд░рдгреЗ рдореА рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдкреЙрд▓рд┐рд╕реАрдЪреЗ рдирд╛рд╡ рдЬреЛрдбрддреЛ - group_authorization. рдПрдХ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдореБрджреНрджрд╛ - рдкреЙрд▓рд┐рд╕реАрдЪреЗ рдирд╛рд╡ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрддреАрд▓ рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рдирд╛рд╡рд╛рд╡рд░реВрди рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдд рдирд╛рд╣реА рдкреЙрд▓рд┐рд╕реА.рдбреА, рдкрд░рдВрддреБ рдХрд░реНрд▓реА рдмреНрд░реЗрд╕реЗрд╕рдЪреНрдпрд╛ рдЖрдзреА рдлрд╛рдИрд▓рдЪреНрдпрд╛ рдЖрдд рдирд┐рд░реНрджреЗрд╢рд╛рдиреБрд╕рд╛рд░.
рд╡рд┐рднрд╛рдЧрд╛рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддреНрдпрд╛рдЪ рдлрд╛рдпрд▓реАрдВрдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рд╛рдЗрди рдЕрдирдХрдореЗрдВрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдкрд╛рдо.
рдлрд╛рдИрд▓рдордзреНрдпреЗ 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
рдбреАрдлреЙрд▓реНрдЯ рдмрдВрдбрд▓ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдкрд░реНрдпрд╛рдп рдореБрдХреНрдд рддреНрд░рд┐рдЬреНрдпрд╛ ╤Б рдЧреВрдЧрд▓ рдкреНрд░рдорд╛рдгрд┐рдХ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓реНрд╕ рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдПрдВрдЯрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ: рд╡рд╛рдкрд░рдгрд╛рд░реНрдпрд╛рдЪреЗ рдирд╛рд╡ рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╢рдмреНрдж+OTP.
рдбрд┐рдлреЙрд▓реНрдЯ рдмрдВрдбрд▓ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдбреЛрдХреНрдпрд╛рд╡рд░ рдХрд┐рддреА рд╢рд╛рдк рдкрдбрддреАрд▓ рдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдХрд░реВрди рдореБрдХреНрдд рддреНрд░рд┐рдЬреНрдпрд╛ ╤Б Google рдкреНрд░рдорд╛рдгрдХрд░реНрддрд╛, рдореЙрдбреНрдпреВрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрдгреНрдпрд╛рдд рдЖрд▓рд╛ рдкрд╛рдо рдЬреЗрдгреЗрдХрд░реВрди рдлрдХреНрдд рдЯреЛрдХрди рддрдкрд╛рд╕рддрд╛ рдпреЗрдИрд▓ Google рдкреНрд░рдорд╛рдгрдХрд░реНрддрд╛.
рдЬреЗрд╡реНрд╣рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЛ рддреЗрд╡реНрд╣рд╛ рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рдШрдбрддрд╛рдд:
- Freeradius рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдбреЛрдореЗрди рдЖрдгрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрдЯрд╛рдд рдЖрд╣реЗ рдХрд╛ рддреЗ рддрдкрд╛рд╕рддреЗ рдЖрдгрд┐ рдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реНрдпрд╛рд╕, OTP рдЯреЛрдХрди рддрдкрд╛рд╕рддреЗ.
"рдореА 300+ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА OTP рдХрд╢реА рдиреЛрдВрджрд╡реВ?"
рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд▓реЙрдЧ рдЗрди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдореБрдХреНрдд рддреНрд░рд┐рдЬреНрдпрд╛ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдЦрд╛рддреНрдпрд╛рдЦрд╛рд▓реАрд▓ рдЖрдгрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд╛ Google рдкреНрд░рдорд╛рдгрдХ, рдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рдПрдХ QR рдХреЛрдб рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░реЗрд▓. рдЗрдереЗрдЪ рдорджрдд рдорд┐рд│рддреЗ. рд╢реЗрд▓рд┐рдирд╛ рдмреЙрдХреНрд╕ рд╕рд╣ рд╕рдВрдпреЛрдЬрдирд╛рдд .bash_profile.
[root@freeradius ~]# yum install -y shellinabox
рдбрд┐рдорди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓ рдпреЗрдереЗ рд╕реНрдерд┐рдд рдЖрд╣реЗ /etc/sysconfig/shellinabox.
рдореА рддреЗрдереЗ рдкреЛрд░реНрдЯ 443 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЛ рдЖрдгрд┐ рдЖрдкрдг рдЖрдкрд▓реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛.
[root@freeradius ~]#systemctl enable --now shellinaboxd
рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рдлрдХреНрдд рджреБрд╡реНрдпрд╛рдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рдгреЗ, рдбреЛрдореЗрди рдХреНрд░реЗрдбрд┐рдЯреНрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрдгрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА QR рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдЖрд╣реЗ:
- рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдмреНрд░рд╛рдЙрдЭрд░рджреНрд╡рд╛рд░реЗ рдорд╢реАрдирдордзреНрдпреЗ рд▓реЙрдЧ рдЗрди рдХрд░рддреЛ.
- рдбреЛрдореЗрди рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рддрдкрд╛рд╕рд▓рд╛ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА. рддрд╕реЗ рди рдХреЗрд▓реНрдпрд╛рд╕ рдХрд╛рд░рд╡рд╛рдИ рд╣реЛрдд рдирд╛рд╣реА.
- рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдбреЛрдореЗрди рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдкреНрд░рд╢рд╛рд╕рдХ рдЧрдЯрд╛рддреАрд▓ рд╕рджрд╕реНрдпрддреНрд╡ рддрдкрд╛рд╕рд▓реЗ рдЬрд╛рддреЗ.
- рдкреНрд░рд╢рд╛рд╕рдХ рдирд╕рд▓реНрдпрд╛рд╕, рддреЗ 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
рдлреЛрд░реНрдЯрд┐рдЧреЗрдЯ рд╕реЗрдЯрдЕрдк:
- рдЖрдореНрд╣реА рддрдпрд╛рд░ рдХрд░рддреЛ рддреНрд░рд┐рдЬреНрдпрд╛-рд╕рд░реНрд╡реНрд╣рд░
- рдЖрдореНрд╣реА рдЖрд╡рд╢реНрдпрдХ рдЧрдЯ рддрдпрд╛рд░ рдХрд░рддреЛ, рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЧрдЯрд╛рдВрджреНрд╡рд╛рд░реЗ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдг. рдЧрдЯрд╛рдЪреЗ рдирд╛рд╡ рдЪрд╛рд▓реВ рдЖрд╣реЗ рдХрд┐рд▓реНрд▓рд╛ рдкрд╛рд╕ рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдЧрдЯрд╛рд╢реА рдЬреБрд│рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рд╡рд┐рдХреНрд░реЗрддрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдгрдзрд░реНрдо 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 рдЦрд╛рддреЗ рдЖрдгрд┐ рдкрд╛рд╕рд╡рд░реНрдбрдЪреА рд╡реИрдзрддрд╛ рддрдкрд╛рд╕рддреЗ
- рдкрд╛рд╕рд╡рд░реНрдб рдмрд░реЛрдмрд░ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЯреЛрдХрдирд╕рд╛рдареА рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рд┐рд▓реА рдЬрд╛рддреЗ.
- рдЯреЛрдХрдирдЪреА рдкрдбрддрд╛рд│рдгреА рдХреЗрд▓реА рдЬрд╛рдд рдЖрд╣реЗ.
- рдирдлрд╛).
рд╕реНрддреНрд░реЛрдд: www.habr.com