.Ovpn dosya tabanlı openVPN erişimi için Google Şifrematik kullanarak 2 faktörlü yetkilendirmeyi nasıl etkinleştiririm?


11

Kullanıcıların openVPN çalıştıran Debian VM'de kabuk hesapları olmadığı bir openVPN kurulumum var. Google’da Google Authenticator’ı klasik bir * nix kullanıcısı için ayarlama talimatlarını (örneğin kullanıcının ana dizininde Authenticator ikili dosyasını yürütmesi gerekir) içerir.

Yalnızca .ovpnistemci tarafında kullanılan dosyalara dayalı olarak kimlik doğrulaması yapan openvpn sunucuları için Google Şifrematik'in nasıl entegre edileceğini açıklayan bir doküman var mı ?

Https://github.com/evgeny-gridasov/openvpn-otp adresine baktım , ancak yine de Google Şifrematik'i yapılandırmayı gerektiriyor.


Sorun, Google kimlik doğrulayıcının kaydı mı yoksa şifre girme ihtiyacı mı?
cornelinux

Yanıtlar:


4

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.


1

Kurulum: Ubuntu Sunucusu üzerinde 2FA (Google Şifrematik) ile OpenVPN Sunucusu 18.04.4 Ahududu Pi Donanımı için LTS Donanımı: Raspberry Pi 3 Model B + Rev 1.3

  • aktif 2FA giriş kurulumu olmayan bir linux kullanıcısı ile giriş yapmalısınız (benim durumum bazı kullanıcı)
  • aşağıdaki komutları girin
sudo apt install libqrencode3 libpam-google-authenticator
google-authenticator
sudo mv /home/someuser/.google_authenticator /etc/google-auth/someuser
sudo chown -R root /etc/google-auth
  • aşağıdaki dosyayı openvpn yapılandırma dosyanızı ekleyin (benim durumumda /etc/openvpn/server/server.conf)
plugin /usr/lib/aarch64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so  openvpn
  • /etc/pam.d/openvpn dosyasını oluşturun ve aşağıdaki içerikle doldurun
# Google Authenticator
auth    requisite       /lib/aarch64-linux-gnu/security/pam_google_authenticator.so secret=/etc/google-auth/someuser user=root
account    required     pam_permit.so
  • openvpn istemci dosyanıza aşağıdaki 3 satırı ekleyin
auth-user-pass
auth-nocache
reneg-sec 0
  • openvpn hizmetini yeniden başlatın ve bir test çalıştırın
systemctl restart openvpn@server
  • OpenVPN istemcisiyle bağlantı kurduğunuzda (Windows 10'da) ek bir giriş alırsınız (Kullanıcı: bazı kullanıcı / Şifre: 'Google Şifrematik'ten OTP')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.