เชถเซเช เชเซ เชฆเซเชตเชฟ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซเชเชฐเชฃ เชฌเชเชจเซ เชเชเซเชเชจเซเชฏ เช เชจเซ เชเชพเชเชเชพเชฆเชพเชฐ เชนเซเชฏ, เชชเชฐเชเชคเซ เชนเชพเชฐเซเชกเชตเซเชฐ เชเซเชเชจเซเชธ เชฎเชพเชเซ เชชเซเชธเชพ เชจเชฅเซ เช เชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชคเซเช เชธเชพเชฐเชพ เชฎเซเชกเชฎเชพเช เชฐเชนเซเชตเชพเชจเซ เชเชซเชฐ เชเชฐเซ เชเซ.
เช เชธเซเชฒเซเชฏเซเชถเชจ เชเชเช เชธเซเชชเชฐ เชเชฐเชฟเชเชฟเชจเชฒ เชจเชฅเซ, เชชเชฐเชเชคเซ เชเชจเซเชเชฐเชจเซเช เชชเชฐ เชเซเชตเชพ เชฎเชณเชคเชพ เชตเชฟเชตเชฟเชง เชเชเซเชฒเซเชจเซเช เชฎเชฟเชถเซเชฐเชฃ เชเซ.
เชคเซเชฅเซ เชเชชเชตเชพเชฎเชพเช เชเชตเซ เชเซ
เชกเซเชฎเซเชจ เชธเชเซเชฐเชฟเชฏ เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชจ.
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 เชตเชฟเชญเชพเชเชฎเชพเช เช
เชงเชฟเชเซเชค เชนเซเช เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซเชจเซ เชจเซเชคเชฟเชจเซเช เชจเชพเชฎ เชเชฎเซเชฐเซเช เชเซเช - เชเซเชฅ_เช
เชงเชฟเชเซเชคเชคเชพ. เชเช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชฎเซเชฆเซเชฆเซ - เชจเซเชคเชฟเชจเซเช เชจเชพเชฎ เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เชซเชพเชเชฒเชจเชพ เชจเชพเชฎ เชฆเซเชตเชพเชฐเชพ เชจเชเซเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเชคเซเช เชจเชฅเซ เชจเซเชคเชฟ.เชกเซ, เชชเชฐเชเชคเซ เชตเชพเชเชเชกเชฟเชฏเชพ เชเซเชเชธ เชชเชนเซเชฒเชพเช เชซเชพเชเชฒเชจเซ เช
เชเชฆเชฐเชจเชพ เชจเชฟเชฐเซเชฆเซเชถ เชฆเซเชตเชพเชฐเชพ.
เชตเชฟเชญเชพเชเชฎเชพเช เชชเซเชฐเชฎเชพเชฃเชฟเชค เชเชฐเชตเซเช เชธเชฎเชพเชจ เชซเชพเชเชฒเซเชฎเชพเช เชคเชฎเชพเชฐเซ เชฒเชพเชเชจเชจเซ เช
เชจเชเซเชฎเซเชจเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชชเซ
เชฎ.
เชซเชพเชเชฒเชฎเชพเช 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 เชชเซเชฐเชฎเชพเชฃเชเชฐเซเชคเชพ.
เชเซเชฏเชพเชฐเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเชจเซเชเซเช เชเชฐเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชจเซเชเซ เชฎเซเชเชฌ เชฅเชพเชฏ เชเซ:
- เชซเซเชฐเซเชฐเซเชกเชฟเชฏเชธ เชคเชชเชพเชธ เชเชฐเซ เชเซ เชเซ เชถเซเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชกเซเชฎเซเชจเชฎเชพเช เชเซ เช เชจเซ เชเซเชเซเชเชธ เชเซเชฅเชฎเชพเช เชเซ เช เชจเซ, เชเซ เชธเชซเชณ เชฅเชพเชฏ เชเซ, เชคเซ OTP เชเซเชเชจ เชคเชชเชพเชธเซ เชเซ.
เชเซเชฏเชพเชฐเซ เชฎเซเช เชตเชฟเชเชพเชฐเซเชฏเซเช เชเซ "เชนเซเช 300+ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชฎเชพเชเซ OTP เชเซเชตเซ เชฐเซเชคเซ เชฐเชเซเชธเซเชเชฐ เชเชฐเซ เชถเชเซเช?"
เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ เชฒเซเชเชฟเชจ เชเชฐเชตเซเช เชเชตเชถเซเชฏเช เชเซ เชซเซเชฐเซเชฐเซเชกเชฟเชฏเชธ เช เชจเซ เชคเชฎเชพเชฐเชพ เชเชพเชคเชพเชจเซ เชจเซเชเซเชฅเซ เช เชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชฒเชพเชตเซ เชเซเชเชฒ เชเชฅเซเชจเซเชเซเชเซเชเชฐ, เชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชฎเชพเชเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซ QR เชเซเชก เชเชจเชฐเซเช เชเชฐเชถเซ. เช เชคเซ เชเซ เชเซเชฏเชพเช เชฎเชฆเชฆ เชเชตเซ เชเซ. เชถเซเชฒเชฟเชจเชพ เชฌเซเชเซเชธ เชธเชพเชฅเซ เชธเชเชฏเซเชเชจเชฎเชพเช .bash_profile.
[root@freeradius ~]# yum install -y shellinabox
เชกเชฟเชฎเชจ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒ เชชเชฐ เชธเซเชฅเชฟเชค เชฅเชฏเซเชฒ เชเซ /etc/sysconfig/shellinabox.
เชนเซเช เชคเซเชฏเชพเช เชชเซเชฐเซเช 443 เชจเซ เชเชฒเซเชฒเซเช เชเชฐเซเช เชเซเช เช
เชจเซ เชคเชฎเซ เชคเชฎเชพเชฐเซเช เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชธเซเชชเชทเซเช เชเชฐเซ เชถเชเซ เชเซ.
[root@freeradius ~]#systemctl enable --now shellinaboxd
เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชซเชเซเชค เชฒเชฟเชเชเชจเซ เช เชจเซเชธเชฐเชตเชพเชจเซ, เชกเซเชฎเซเชจ เชเซเชฐเซเชกเชฟเชเซเชธ เชฆเชพเชเชฒ เชเชฐเชตเชพเชจเซ เช เชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซ QR เชเซเชก เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เช เชฒเซเชเซเชฐเชฟเชงเชฎ เชจเซเชเซ เชฎเซเชเชฌ เชเซ:
- เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชฌเซเชฐเชพเชเชเชฐ เชฆเซเชตเชพเชฐเชพ เชฎเชถเซเชจเชฎเชพเช เชฒเซเช เชเชจ เชเชฐเซ เชเซ.
- เชกเซเชฎเซเชจ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชคเชชเชพเชธเซเชฒ เชเซ เชเซ เชเซเชฎ. เชเซ เชจเชนเซเช, เชคเซ เชชเชเซ เชเซเช เชเชพเชฐเซเชฏเชตเชพเชนเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเชคเซ เชจเชฅเซ.
- เชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชกเซเชฎเซเชจ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเซ, เชคเซ เชธเชเชเชพเชฒเช เชเซเชฅเชฎเชพเช เชธเชญเซเชฏเชชเชฆ เชคเชชเชพเชธเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
- เชเซ เชเชกเชฎเชฟเชจ เชจเชฅเซ, เชคเซ เชคเซ เชคเชชเชพเชธเซ เชเซ เชเซ Google เชชเซเชฐเชฎเชพเชฃเชเชฐเซเชคเชพ เชเซเช เชตเซเชฒ เชเซ เชเซ เชเซเชฎ. เชเซ เชจเชนเซเช, เชคเซ QR เชเซเชก เช เชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชฒเซเชเชเชเช เชเชจเชฐเซเช เชฅเชพเชฏ เชเซ.
- เชเซ เชเชกเชฎเชฟเชจ เชจเชฅเซ เช เชจเซ Google เชชเซเชฐเชฎเชพเชฃเชเชฐเซเชคเชพ เชเซเช เชตเซเชฒ เชเซ, เชคเซ เชชเชเซ เชซเชเซเชค เชฒเซเชเชเชเช เชเชฐเซ.
- เชเซ เชเชกเชฎเชฟเชจ เชนเซเชฏ, เชคเซ เชชเชเซ เชซเชฐเซเชฅเซ Google เชชเซเชฐเชฎเชพเชฃเชเชฐเซเชคเชพ เชคเชชเชพเชธเซ. เชเซ เชเซเช เชตเซเชฒ เชจ เชนเซเชฏ, เชคเซ 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-เชชเซเชฐเซเชเชฒ.
- เชจเซเชคเชฟเชเชฎเชพเช เชเซเชฅเซ เชเชฎเซเชฐเชตเชพ.
เช เชธเซเชฒเซเชฏเซเชถเชจเชจเชพ เชซเชพเชฏเชฆเชพ:
- เชเชเซเชชเซ เชเชจ เชเชฐเซเชจเซ เชเชฅเซเชจเซเชเชฟเชเซเชถเชจ เชถเชเซเชฏ เชเซ เชซเซเชฐเซเชเชฟเชเซเช เชเชชเชจ เชธเซเชฐเซเชธ เชธเซเชฒเซเชฏเซเชถเชจ.
- 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 เชเซเชฒเชพเชฏเชเชเชฎเชพเช เชกเซเชฎเซเชจ เชเซเชฐเซเชกเชฟเช เชฆเชพเชเชฒ เชเชฐเซ เชเซ.
- เชซเซเชฐเซเชฐเซเชกเชฟเชฏเชธ เชเชเชพเชเชจเซเช เช เชจเซ เชชเชพเชธเชตเชฐเซเชกเชจเซ เชฎเชพเชจเซเชฏเชคเชพ เชคเชชเชพเชธเซ เชเซ
- เชเซ เชชเชพเชธเชตเชฐเซเชก เชธเชพเชเซ เชนเซเชฏ, เชคเซ เชเซเชเชจ เชฎเชพเชเซ เชตเชฟเชจเชเชคเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
- เชเซเชเชจ เชเชเชพเชธเชตเชพเชฎเชพเช เชเชตเซ เชฐเชนเซเชฏเซเช เชเซ.
- เชจเชซเซ).
เชธเซเชฐเซเชธ: www.habr.com