OpenVPNで ID/パスワード認証する

VPNサーバ OpenVPNで、Linuxサーバ上のユーザID/パスワードで認証する方法です。
OpenVPN の解説では、クライアント証明書を使用して接続する方法が多く、ユーザID/パスワード認証の説明があまり無いようです。

また、ここでは、必要な証明書の作成や操作では、OpenVPN の説明でよく使用される easy-rsa ツールを使っていません。
opensslコマンドの使用だけでも済むのと、下の記事のように証明書の作成で対応が必要な場合、opensslコマンドでの方が対処しやすいからです。

SHA-2証明書の作成方法・サーバ証明書がSHA-2証明書になっているかの確認方法 パソコン鳥のブログ/ウェブリブログ



以下、サーバ側での作業です。


OpenVPN をインストールします。

CentOS6では、まず下記記事に従って EPELリポジトリの設定をします。

CentOS6でEPEL リポジトリを利用する設定 パソコン鳥のブログ/ウェブリブログ

設定後、次のコマンドで OpenVPN をインストールします。

yum -y --enablerepo=epel install openvpn




必要なファイルを用意します。

OpenVPN では「サーバ秘密鍵」、「サーバ証明書」、「サーバ証明書を発行した認証局のCA証明書」が必要です。
各ファイルを次の箇所に置きます。以降、このファイル名で説明します。

サーバ秘密鍵:/etc/openvpn/server.key
サーバ証明書:/etc/openvpn/server.crt
サーバ証明書を発行した認証局のCA証明書:/etc/openvpn/ca.crt


下記記事の「プライベート認証局(オレオレ認証局)による作成方法」の手順に従って作成した証明書も使用できます。
作成したファイル ca.crt , server.crt , server.key は /etc/openvpn に置いてください。
その他、ca.csr , ca.key , server.csr等も出来ますが、OpenVPNの設定では指定しません。

CentOS6/CentOS7/Ubuntu14.04 でのサーバ証明書の作成方法 パソコン鳥のブログ/ウェブリブログ



次に dh2048.pem を作成します。


openssl dhparam -out /etc/openvpn/dh2048.pem 2048


次に ta.key を作成します。


openvpn --genkey --secret /etc/openvpn/ta.key



必要なファイルがそろったら、OpenVPN の設定を行います。
サンプルをコピーして、設定ファイルを /etc/openvpn/server.conf に用意します。


cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/server.conf



server.conf 中の次のオプションを設定します。

/etc/openvpn/server.conf

port 1194
proto udp

ca ca.crt
cert server.crt
key server.key
dh dh2048.pem

server 10.8.0.0 255.255.255.0

tls-auth ta.key 0

user nobody
group nobody
log-append /var/log/openvpn.log

plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name



port 1194
OpenVPN で使用するポート番号です。
このポートを iptables等のファイアウォールでブロックしないようにする必要があります。


proto udp
OpenVPN で使用するプロトコルを tcp / udp いずれかで指定します。
VPNサーバ、接続するクライアントが共に日本国内ならば、udp の指定で問題ないと思います。


ca ca.crt
cert server.crt
key server.key
「サーバ秘密鍵」、「サーバ証明書」、「サーバ証明書を発行した認証局のCA証明書」を指定します。
これらのファイルは /etc/openvpn に置く必要があります。


dh dh2048.pem
Diffie Hellmanパラメータを含むファイルを指定します。
dh2048.pem は /etc/openvpn に置きます。


server 10.8.0.0 255.255.255.0
VPN で使用されるネットワークアドレスを指定します。
接続してきたVPNクライアントのアドレスは、この範囲から割り当てられます。
VPNサーバ自身は 10.8.0.1 になります。


tls-auth ta.key 0
この機能はオプションなので、指定しなくても OpenVPN は動作しますが、DoS攻撃対策として設定することをお勧めします。
ta.key は /etc/openvpn に置きます。
詳細は以下を参照して下さい。
How To | OpenVPN.JP
OpenVPN TLS-Auth とは? « yamata::memo


user nobody
group nobody
OpenVPN が動作するユーザ・グループを指定します。


log-append /var/log/openvpn.log
ログ出力先を指定します。
なお、この設定ではログに延々出力されますので、ログローテートの設定をしておいた方が良いです。
ログローテートの設定は以降で記載しています。


plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name
サーバ上のユーザID/パスワード認証する為には、この3行が必要です。
pluginオプションで、openvpn-auth-pam.so へのパスを指定します。
CentOS6 ではこのパスになります。
また login と指定していますが、これは認証モジュール login を指定しています。
/etc/pam.d/login が存在することを確認しておいて下さい。



ログのローテートの設定を行います。

/etc/logrotate.d/openvpn

/var/log/openvpn.log {
missingok
notifempty
sharedscripts
postrotate
/etc/rc.d/init.d/openvpn restart 2>&1 > /dev/null || true
endscript
}



OpenVPNを起動します。

/etc/init.d/openvpn start



次回以降、OS起動時にOpenVPN が起動するようにしておきます。

/sbin/chkconfig openvpn on



これで、OpenVPN をサーバ上のユーザID/パスワード認証で使うことが出来ます。


次回、クライアント側の設定を紹介します。
ソフトとして Windows版OpenVPN , vpnux Client を説明します。

Community Downloads
vpnux Client - 窓の杜ライブラリ


参考


Setup PAM authentication with OpenVPN’s auth-pam module

OpenVPN 2.0 HOWTO Japanese Translation

VPNサーバ機の設定 < 拠点間VPNの設定 < OpenVPNの設定 | 無料で拠点間VPN - OpenVPN on Devil Linux -

VPNサーバー構築(OpenVPN) - CentOSで自宅サーバー構築



VPN構築術?OpenVPNによるVirtual Private Network (I・O BOOKS)
工学社
一条 博

ユーザレビュー:

amazon.co.jpで買う
Amazonアソシエイト by VPN構築術?OpenVPNによるVirtual Private Network (I・O BOOKS) の詳しい情報を見る / ウェブリブログ商品ポータル

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック

  • OpenVPNで ID/パスワード認証する為のクライアントの設定方法

    Excerpt: 下記記事で説明したOpenVPNサーバへ、Windowsから接続するクライアントソフト vpnux Client と OpenVPN の設定方法を紹介します。 Weblog: パソコン鳥のブログ racked: 2015-04-05 23:37
  • OpenVPNで通信が遅い場合

    Excerpt: OpenVPNで通信が遅い場合、次の設定をして下さい。 特に、samba では以下が無いと、アクセスがかなり遅くなります。 Weblog: パソコン鳥のブログ racked: 2015-04-20 22:42
  • OpenVPNの設定(通信をVPNサーバ経由にする設定も)

    Excerpt: OpenVPNの設定です。 以前にOpenVPNの設定について説明しましたが、現在、パソコン鳥の管理しているサーバの設定内容です。 また、クライアントのネット接続が、OpenVPNサーバを経由する.. Weblog: パソコン鳥のブログ racked: 2017-05-29 21:48
  • VPN(L2TP/IPsec)サーバの設定

    Excerpt: VPN(L2TP/IPsec)サーバの構築方法です。 OpenVPN の場合は、次の記事です。 Weblog: パソコン鳥のブログ racked: 2018-03-27 20:48
  • UbuntuでのVPN(L2TP/IPsec)サーバの設定

    Excerpt: Ubuntu18.04 での VPN(L2TP/IPsec)サーバの構築方法です。 Weblog: パソコン鳥のブログ racked: 2019-01-22 22:11