Hướng Dẫn Cài Đặt OpenVPN Với OTP Google Authenticator

Giới Thiệu.

VPN ( Virtual Private Network ) chắc mọi người đã quá quen thuộc với khái niệm này rồi.

Hiện nay, với nhu cầu bảo mật thông, liên kết các mạng lại với nhau hoặc đơn giản là làm việc tại nhà trong thời buổi dịch bệnh nhưng vẫn truy cập được vào các tài nguyên của công ty mà với mạng Internet thông thường sẽ không truy cập được thì VPN càng ngày được sử dụng càng nhiều.

OpenVPN là một trong số những giải pháp VPN phổ biến nhất hiện nay, OpenVPN cho phép người dùng tự cài đặt lên VPS/Server, sau đó sử dụng một phần mềm là OpenClient trên máy tính của Client để kết nối VPN.

Thông thường, OpenVPN cho phép cấu hình sử dụng tài khoản, mật khẩu trên Client để đăng nhập vào OpenVPN. Đây là một bước bảo mật rất tốt và cần thiết, tuy nhiên ta có thể tăng mức độ bảo mật lên cao hơn bằng cách cấu hình cho Client sử dụng OTP cho mỗi lần đăng nhập ( Mật khẩu sử dụng một lần ).

Ở bài viết này thì mình sẽ hướng dẫn cài đặt OpenVPN với Plugin OpenVPN-OTP và Google Authenticator.

Cài Đặt.

Chuẩn Bị.

Một VPS/Server sử dụng hệ điều hành Ubuntu 18.04 LTS.

User Root hoặc có quyền Root của VPS/Server trên.

Cài Đặt OpenVPN.

Để cài đặt OpenVPN, mọi người có thể tham khảo bài viết hướng dẫn sau nhé :

Hướng dẫn tạo VPN trên VPS Linux

Cài Đặt Plugin OpenVPN-OTP.

Đầu tiên, ta sẽ cài đặt các Package mà Plugin yêu cầu.

apt-get install autoconf make libssl-dev libtool git -y

Cài đặt tiếp Google Authenticator.

apt install libpam-google-authenticator -y 

Sau đó tiến hành download Plugin Openvpn-Otp.

git clone https://github.com/evgeny-gridasov/openvpn-otp

Truy cập vào thư mục chứa source code Plugin.

cd openvpn-otp/

Tiến hành tạo Configuration và Makefiles.

./autogen.sh

Build và cài đặt Plugin OpenVPN-OTP.

./configure --prefix=/usr && make install

Sau khi hoàn tất cài đặt thì thông thường OpenVPN-OTP sẽ được install tại “/usr/lib/openvpn”.

Kế tiếp ta sẽ tiến hành cài đặt cho OpenVPN sử dụng Plugin OpenVPN-OTP.

Truy cập vào vào file cấu hình của OpenVPN.

vi /etc/openvpn/server/server.conf

Do cứ mỗi 3600s mặc định Open ta sẽ cần nhập lại thông tin nên ta thêm dòng sau để tắt tính năng này đi.

# disable username/password renegotiation
reneg-sec 0

Tiếp đến, ta cấu hình OpenVPN sử dụng Plugin OpenVPN-OTP.

Đối với phiên bản OpenVPN bằng hoặc thấp hơn 2.3.x

plugin /usr/lib64/openvpn/plugins/openvpn-otp.so
Đối với phiên bản OpenVPN bằng hoặc cao hơn 2.4.x

plugin "/usr/lib64/openvpn/plugins/openvpn-otp.so"

Sau đó lưu lại và khởi động lại OpenVPN để cấu hình được lưu.

systemctl restart openvpn-server@server.service

Tiến hành tạo file chứa cấu hình User và OTP, mặc định thì OpenVPN-OTP sẽ sử dụng file sau /etc/ppp/otp-secrets .

mkdir /etc/ppp && touch /etc/ppp/otp-secrets

Nội dung file otp-secrets sẽ có mẫu như sau:

username SERVER_HOSTNAME totp:sha1:base32:Google_Authenticator_Key::xxx *

Ví dụ OTP và có mã Pin đơn giản.

# use sha1/base32 for Google Authenticator with a simple pin
test1 demo totp:sha1:base32:K7BYLIU5D2V33X6S:1234:xxx *

Ví dụ OTP và có mã Pin phức tạp.

# use sha1/base32 for Google Authenticator with a strong pin
test2 demo totp:sha1:base32:46HV5FIYE33TKWYP:5uP3rH4x0r:xxx *

Ví dụ OTP và không có mã Pin.

# use sha1/base32 for Google Authenticator without a pin
test3 demo totp:sha1:base32:LJYHR64TUI7IL3RD::xxx *

Hiện tại, ta sẽ cần sử dụng Google Authenticator đã được cài đặt ở trên để tạo key.

Câu lệnh mẫu để tạo sẽ như sau.

google-authenticator --time-based --disallow-reuse --force --rate-limit=3 --rate-time=30 --window-size=17 --issuer=foocorp --label=user@hostname --secret=/root/.user.google_authenticator > /root/user.auth

Mình sẽ tạo User test với hostname hiện tại của VPS là demo thì câu lệnh sẽ là :

google-authenticator --time-based --disallow-reuse --force --rate-limit=3 --rate-time=30 --window-size=17 --issuer=foocorp --label=test@demo --secret=/root/.test.google_authenticator > /root/test.auth

Tiếp đến kiểm tra file test.auth để lấy key và đường link truy cập để quét mã QR tương ứng với key bằng App Google Authenticator.

Như hình trên Key sẽ là XV4LORIPUZKTZX6IFGKSTBT4ZQ.

Và đường link dùng để quét mã QR trên điện thoại bằng App Google Authenticator là :

https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/test@demo%3Fsecret%3DXV4LORIPUZKTZX6IFGKSTBT4ZQ%26issuer%3Dfoocorp

Sau khi quét mã QR trên điện thoại bằng App Google Authenticator, ta sẽ có được mật khẩu OTP mỗi 30s tương ứng với key ở trên.

Hiện tại, ta đã có key và mã OTP, ta sẽ là cấu hình cho OpenVPN-OTP sử dụng key.

vi /etc/ppp/otp-secrets

Nội dung file otp-secrets.

# use sha1/base32 for Google Authenticator without a pin
test demo totp:sha1:base32:XV4LORIPUZKTZX6IFGKSTBT4ZQ::xxx *

Như vậy, tới đây đã coi như hoàn tất việc cài đặt cấu hình OpenVPN với Plugin OpenVPN-OTP trên VPS/Server.

Hiện tại, ta chỉ cần thêm một số cấu hình vào file cấu hình trên client, cụ thể ta sẽ thêm những dòng sau vào file client.opvn

# use username/password authentication
auth-user-pass
# do not cache auth info
auth-nocache
# disable username/password renegotiation
reneg-sec 0

File client.ovpn sẽ có nội dung như hình sau.

Sau đó, sử dụng file client.ovpn và App OpenVPN trên Windows để kết nối, thì sẽ xuất hiện bảng hỏi mật khẩu và tài khoản.

Tài khoản sẽ là tài khoản mọi người tạo.

Mật khẩu sẽ là mã OTP trên điện thoại, hoặc mã Pin + OTP

Lời Cuối.

Như vậy là bài viết về việc cài đặt OpenVPN với OTP Google Authenticator đã hết, cảm ơn mọi người đã đọc đến đây.

Mọi người có thể tham khảo thêm về Plugin OpenVPN – OTP tại đây.

Chúc mọi người thành công trong việc cài đặt OpenVPN với OTP Google Authenticator.

Tagged:

Rate This Article