안녕하세요! 🤗
이전 포스팅에 이어서, 이번 포스팅은 "무료버전 OpenVPN에 MFA 설정하기!" 입니다.
이전 포스팅에서는 OpenVPN을 설정하고, 접속 테스트 까지 완료 했는데요,
이번 포스팅에서는 사용자에게 MFA를 사용하도록 하겠습니다.
1. OpenVPN 서버 설정 변경
먼저, Openvpn 관리자페이지에 접속해봅시다.
관리자 페이지는 https://<EC2 IP>:943/admin 입니다.
관리페이지 접속 후, 왼쪽 네비게이션 바 Authentication > General 을 클릭하고
Google Authenticator Multi-Factor Authentication 을 Yes로 변경합니다. 이후 반드시 Save Settings를 클릭합니다.
설정이 변경되면, 서버에 반영시켜줘야하는데,
아래와 같은페이지가 나오면 반드시 "Update Running Server"를 클릭해줍니다.
2. 사용자별 MFA 토큰 생성
시작하기 전, user01 사용자 프로필을 확인해봅시다.
openvpnas@ip-172-31-0-18:~$ sudo su
root@ip-172-31-0-18:/home/openvpnas# cd /usr/local/openvpn_as/scripts/
root@ip-172-31-0-18:/usr/local/openvpn_as/scripts#
root@ip-172-31-0-18:/usr/local/openvpn_as/scripts# ./sacli --pfilt user01 UserPropGet
{
"user01": {
"pvt_password_digest": "0e44ce7308af2b3de5232e4616403ce7d49ba2aec83f79c196409556422a4927",
"type": "user_connect"
}
}
이제 아래 명령어 순서대로 진행여 MFA를 할당합니다.
1) 모든 유저/그룹에 Google Authenticator 사용하도록 할당
root@ip-172-31-0-18:/usr/local/openvpn_as/scripts# ./sacli --key "vpn.server.google_auth.enable" --value "true" ConfigPut
[True, {}]
root@ip-172-31-0-18:/usr/local/openvpn_as/scripts# ./sacli --user user01 --key "prop_google_auth_autologin" --value "true" UserPropPut
[True, {}]
root@ip-172-31-0-18:/usr/local/openvpn_as/scripts# ./sacli start
RunStart warm None
{
"active_profile": "Default",
"errors": {},
"last_restarted": "Mon Aug 30 05:50:47 2021",
"service_status": {
"api": "on",
"auth": "on",
"bridge": "on",
"client_query": "on",
"crl": "on",
"daemon_pre": "on",
"db_push": "on",
"ip6tables_live": "on",
"ip6tables_openvpn": "on",
"iptables_live": "on",
"iptables_openvpn": "on",
"iptables_web": "on",
"log": "on",
"openvpn_0": "on",
"openvpn_1": "on",
"openvpn_2": "on",
"openvpn_3": "on",
"subscription": "on",
"user": "on",
"web": "on"
}
}
2) user01 사용자 Token 생성
root@ip-172-31-0-18:/usr/local/openvpn_as/scripts# ./sacli --user user01 --lock 0 GoogleAuthRegen
['GLTZFWKVLIYZCDZR', 'otpauth://totp/OpenVPN:user01@3.36.120.182?secret=GLTZFWKVLIYZCDZR&issuer=OpenVPN']
3) user01 사용자 프로필 확인
root@ip-172-31-0-18:/usr/local/openvpn_as/scripts# ./sacli --pfilt user01 UserPropGet
{
"user01": {
"prop_google_auth": "true",
"prop_google_auth_autologin": "true",
"pvt_google_auth_secret": "GLTZFWKVLIYZCDZR",
"pvt_google_auth_secret_locked": "false",
"pvt_password_digest": "0e44ce7308af2b3de5232e4616403ce7d49ba2aec83f79c196409556422a4927",
"type": "user_connect"
}
}
4) OpenVPN 로그인 시도
Client 프로그램으로 OpenVPN에 접속하려고 하면, 아래와 같이 오류가 팝업됩니다.
MFA를 설정해줘야 합니다.
3. MFA 토큰 등록
사용자URL로 접속해서 로그인합니다.
아까는 볼수 없었던 MFA토큰값(QR코드)이 나오는데, 이 토큰값을 Google Authenticator에 등록합니다.
등록 후 나오는 6개의 숫자를 아래 박스에 작성하고 Confirm Code를 눌러 연결해줍시다.
이제 정말 완료 되었습니다.
MFA로그인 성공입니다!
🤗🎉😊🎉🎉🎉
* OpenVPN 설치 가이드
https://openvpn.net/vpn-server-resources/amazon-web-services-ec2-byol-appliance-quick-start-guide/
* OpenVPN MFA 설치 가이드 (google authenticator)
https://openvpn.net/vpn-server-resources/google-authenticator-multi-factor-authentication/