Ubuntu 12.04에서 OpenVPN 시스템을 사용하고 있으며 보안을 강화하기 위해 Google OTP를 추가하고 싶습니다.
이것은 현재 openvpn 구성입니다.
데브 툰 프로토 udp 포트 1096 ca ubuserv04-ca.crt 인증서 ubuserv04.crt 키 ubuserv04.key dh dh1024.pem 서버 10.10.0.0 255.255.255.0 "redirect-gateway def1"푸시 "경로 192.168.0.0 255.255.255.0"을 누릅니다. "dhcp-option DNS 8.8.8.8"을 누릅니다. "dhcp-option DNS 8.8.4.4"를 누릅니다. 흙손 log-append /var/log/openvpn-otp-1096-status.log
(이것은 테스트 설정 일 뿐이며 특정 측면을 변경해야하지만 지금은 작동합니다.)
클라이언트에서 나는 가지고있다 :
데브 툰 고객 프로토 udp 원격 my.server.fqdn 1096 재시도 무한 재시도 ca ubuserv04-ca.crt cert user1.crt 키 user1.key 동사 3
위의 설정은 오류없이 빠르고 안정적입니다.
Google OTP를 실행하기 위해 몇 가지 방법을 시도했지만 매번 해당 기사의 문제를 해결했습니다. 서버의 로컬 사용자 / 비밀번호 데이터베이스에 대해 인증하고 싶지 않습니다. 이미 설치 한 시스템과 Google OTP가 있습니다.
Google OTP가 실행 중입니다. apt-get install libpam-google-authenticator를 사용하여 설치하고 ssh 세션을 인증하기 전에 사용했습니다. 그것은 잘 작동했지만 이제는 테스트 서버 일 뿐이며 특정 테스트가 완료되었으므로 비활성화했습니다.
구체적으로 설명하십시오. 내 서버의 ovpn 구성에 플러그인을 추가 하고 /etc/pam.d/openvpn 에 무언가 를 추가해야한다는 것을 알고 있지만 정확히 무엇입니까?
어떤 도움이라도 대단히 감사하겠습니다!
/ 추가 정보
나는이 기사를 따랐다 : http://www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubuntu
소스에서 컴파일하는 대신 apt로 Google OTP를 설치했습니다. libpam-google-authenticator를 설치하십시오. 또한이 기사에서는 읽지 않았지만이 기사에서는 사용하지 않았습니다 : http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/ 및 http : //zcentric.com/2012/10/09/google-authenticator-with-openvpn-for-2-factor-auth/ . 그리고 제안 된대로 PAM을 읽었습니다.)
자, 여기 흥미로운 개발자들이 있습니다.
/etc/pam.d/openvpn에는 다음이 있습니다.
account [성공 = 2 new_authtok_reqd = 완료 기본값 = 무시] pam_unix.so 계정 [성공 = 1 new_authtok_reqd = 완료 기본값 = 무시] pam_winbind.so 계정 요구 사항 pam_deny.so 필요한 계정 pam_permit.so 인증 필수 pam_google_authenticator.so
하우투에 따라 /etc/pam.d/common-account에서 원본을 복사하고 마지막 줄을 추가했습니다. 마지막 줄을 주석 처리하면 OpenVPN 연결이 성공합니다. 그러나 마지막 행을 주석 처리하지 않으면 /var/log/auth.log가 다음을 기록합니다.
PAM이 dlopen (pam_google_authenticator.so)을 실행할 수 없음 : /lib/security/pam_google_authenticator.so : 정의되지 않은 기호 : pam_get_item PAM 결함 모듈 추가 : pam_google_authenticator.so
/var/log/openvpn-otp-1096.log는 다음을 기록합니다.
PLUGIN_CALL : 플러그인 함수 PLUGIN_AUTH_USER_PASS_VERIFY가 상태 1에서 실패했습니다. /usr/lib/openvpn/openvpn-auth-pam.so TLS 인증 오류 : 피어의 인증 사용자 이름 / 암호 확인에 실패했습니다 SSL / TLS 컨텍스트 사용 AUTH-PAM : 배경 : 사용자 'martin'을 인증하지 못했습니다 : 모듈을 알 수 없습니다
문제는 PAM과 Google OTP 사이에있는 것 같습니다.
Google은 다른 플러그인의 문제를 나열하지만 실제로는 Google OTP와 관련된 정보를 찾을 수 없습니다.
답변
좋아, 구글은 내 친구 야.
나는 이걸했다:
# apt-get purge libpam-google-authenticator # 다운로드 https://code.google.com/p/google-authenticator/downloads/list # apt-get 설치 libpam-dev
라이센스 바로 다음에 이것을 Makefile에 추가하십시오.
LDFLAGS = "-lpam"
그때
# 만들기 # 설치하다 # 서비스 openvpn 재시작
또한 /home/username/.google_authenticator에 사용할 사용자에 대한 읽기 권한을 제외하고는 전혀 권한이 없는지 확인하십시오.
이제 서버의 로컬 사용자 이름 인 내 사용자 이름 (내 쉘 계정)을 OpenVPN 사용자 이름으로, Google OTP 6 자리 코드를 암호로 입력해야합니다.
이제 작동합니다.
시간 내 주셔서 감사합니다 🙂
(이 게시물을 해결 된 것으로 표시하려면 어떻게해야합니까? 주제 제목 만 편집합니까?)
답변
OpenVPN에 OTP 인증을 원할 경우 기본 OTP OpenVPN 플러그인을 사용할 수 있습니다. Google OTP 비밀 키와 호환됩니다. 모든 비밀은 단일 텍스트 파일로 저장되며 PAM을 구성하거나 사용자 디렉토리를 만들 필요가 없습니다.