Hayýr. Elbette bunu yapamazsýn. Bu 2FA'nın amacını yener. Sunucunuzun kullanıcı kimlik bilgilerini doğrulamanın bir yolu olmalıdır ve bu bilgiler ağ üzerinden gönderilmemelidir (yani yalnızca client.ovpn dosyasını kullanamazsınız).
Unix kullanıcıları oluşturmak zorunda olmasanız da, kullanıcılarınızın doğrulama kodlarını sunucuya yüklemelerine izin vermelisiniz. Sftp'yi önceden verilmiş sertifikalarını, istemci tarafı (karşılıklı) yetkilendirmeli https, CIFS (samba) veya TLS uzantılı iyi eski ftp veya sunucunun kullanıcılar tarafından oluşturulan doğrulama kodlarını bilmesini sağlayan diğer herhangi bir yolu kullanarak sanal kullanıcılarla kullanabilirsiniz. . İletişim kanalı güvenli olmalıdır (şifreli || yerel).
Doğal olarak, kullanıcılarınız kendi dosyalarını yüklerse, openvpn-otp tarafından kullanılan toplu dosya tabanlı kimlik bilgilerini kullanamazsınız. Neyse ki linux mükemmel güvenlik modülü pam kullanarak başka (ve çok daha iyi) bir seçeneğimiz var.
Her şeyden önce, google-authenticator tarafından oluşturulan kullanıcı dosyalarını bir dizinde yukarıda belirtilen yöntemlerden biriyle toplamalısınız. Bizim durumumuzda / etc / google-auth olacaktır.
Sen gerekir gerçek kullanıcıların olmadığından, burada tüm dosyalar için tek kullanıcı kimliği zorlamak. O olsun openvpn . İzinler 0400 (-r --------) olmalıdır. Pam dünya / grup tarafından okunabilir kimlik bilgilerini sevmez (kesinlikle). Bunu samba, apache, ftp veya en kötü durumda bir cron sekmesi kullanarak kolayca uygulayabilirsiniz (önerilmez).
Test amacıyla şunları yapın:
mkdir /etc/google-auth
apt-get install libpam-google-authenticator
google-authenticator
# set up as you wish, save image and/or codes
mv ~/.google_authenticator /etc/google-auth/some_username
chown -R openvpn /etc/google-auth
Bundan sonra openvpn'den kendi google kimlik doğrulama modülüne sahip libpam'e karşı kimlik doğrulaması yapmasını istersiniz. Bunu openvpn sunucu dosyanıza ekleyin:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
Bu, pam kimlik doğrulama yöntemini pam auth id openvpn ile kullanacağımızı söylüyor .
Şimdi, openvpn için pam kurulumunu oluşturun. /Etc/pam.d/openvpn Düzenle:
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
Burada, başarılı google kimlik doğrulaması olmadan hemen başarısız olduğumuzu (zorunlu), varsayılan $ HOME / .google_authenticator (gizli =) yerine özel bir gizli dosya kullandığımızı ve ilişkili gerçek bir kullanıcı kimliği olmadığından dosyalara kullanıcı openvpn olarak eriştiğimizi söylüyoruz. kullanıcılarımız ile. Bir sonraki satırda, başarılı kimlik doğrulamasından sonra herkesin bağlantı kurmasına izin verdiğimizi söylüyoruz. Tabii ki burada kendi izin politikanızı uygulamalısınız. İzin verilen kullanıcıları ilgili pam modülleriyle dosya, mysql db veya ldap ile kontrol edebilirsiniz.
Bunu openvpn istemci dosyanıza ekleyin
auth-user-pass
auth-nocache
reneg-sec 0
Openvpn istemcisinin kullanıcı adı ve şifre istemesine izin vermek için auth-user-pass kullanıyoruz. Önbelleğe almayı sevmiyoruz ("şifre" değişiyor) ve periyodik yeniden ihmal aynı nedenden dolayı bizim için kötü.
Bundan sonra openvpn-otp olmadan bağlanabilmelisiniz. İsterseniz pam kontrol dosyalarına çok karmaşık kurallar uygulayabileceğiniz için lütfen bunun çok daha esnek bir yöntem olduğunu düşünün. Örneğin, bu sertifikalara dokunmadan kullanıcıları mysql veya ldap dizininize göre etkinleştirebilir / devre dışı bırakabilirsiniz.