NEWS ABOUT Solution WORKS TEAM BLOG お問い合わせ JP EN

VPNを使ってみませんか?

こんにちは

エンジニアの神谷です。

 

早いものです。 もう2回目のブログとなってしまいました。

今回は、前回のブログでシステムチームが担当していることを少々書きましたので、

それに付随する形で、システムチームが担当していることを書こうかなと思います。

ちょっと難しくなるかもしれませんが、飽きずに読んでいただければと。

 

で、何を書くかといいますと「VPNについて」です。

 

なぜ、この題材を選んだかといいますと、

昨今、社内での作業だけでなく、社外(遠隔地)から社内のPCに接続をして、

業務を行うことが増えています。

かくいう、弊社も遠隔地から社内のネットワークに接続をして作業をしている社員もいるため、

VPNを導入しております。

そこで、

1.VPNとはなにか

2.VPNのソフトウェア「OpenVPN」について

3.OpenVPNの設定方法

についてを、ざっとお答えできればと思います。

 

■1.VPNとはなにか

VPNとは、Virtual Private Networkの頭文字をとった言葉です。

 

Virtual Private Networkです。と言われても、縁のない方からしたら、なんのことだかさっぱりわからないと思います。

もうちょっとわかりやすい言葉で言いますと、「仮想的な組織内ネットワーク」となります。

ただ、「仮想的な組織内ネットワーク」と言われても、イメージがつかないと思います。

簡単にいえば

離れた場所で作業をしている人が、同じエリア内で、一緒に作業をしているようなもの

です。

いや~、一緒に作業できるっていうことは便利な世の中ですね~。

ただ、ひとつ問題が

 

それは・・・・・

 

離れた場所で作業している人が、同じエリアで作業するといっても、メールのように、ただ単にアカウントを発行すればいいというものではありません。

 

という点です。(ですが、アカウントの発行は必要となりますので、決してお忘れなく!!

 

そこで、必要となってくるのが、次節でお話します「OpenVPN」といったソフトウェアになります。

 

 

■2.VPNのソフトウェア「OpenVPN」について

前節でVPNとはなにかについてご説明しました。(本当に説明をしようとすれば、もっと複雑で、更に訳の分からないものになります。

では次に、VPNへ接続するためのソフトウェアについてです。

ソフトウェアといっても、いろいろなソフトがあります。

有償のものでは

・PacketX VPN

無償のものでは

・OpenVPN

です。※VPNのソフトウェアとして、代表的なものです。

 

で、この節では、OpenVPNについてお話できればと思います。

読んでいる人からすれば、なぜ、OpenVPNでの話をするのかと疑問に思う人も出てくるかもしれません。

なので、その疑問を、一言で、かつ端的に、お答えしようと思います。

 

それは・・・・・・

 

弊社でも使用しているからです!!

 

話がそれるといけないので、OpenVPNについて、少々細かくご説明いたします。

OpenVPNとは、オープンソースのVPNとして、

公式サイト:OpenVPN

日本語化サイト:OpenVPN.JP

より、公開されています。

 

OpenVPNの特長として

・オープンソース

・多種なOSで利用可能

・比較的簡単に構築をすることが可能

・堅牢なセキュリティ、安定性を兼ね備えている

ということです。

 

オープンソースということは、自由にアプリケーションを公式サイトからダウンロード、利用することができるため

費用がかかりません。そのため、初期費用を抑えることが出来ます。

多種なOSで利用可能ということは、Windowsのみでしか利用できないとかMac、Linuxのみといった、

特定のOSのみでしか利用できないわけではなく

Windows、Mac、Linuxへの移植がされているため、汎用性がもたらされております。

また、iOSやAndroidといった、スマートフォン、タブレット用のOSにも対応しています。

更に、汎用性がもたらされているため、異なるOS間でも接続が可能となります。

例)サーバ:Linux クライアントPC:Windows

比較的簡単に構築することができるため、サーバなどのネットワークに接続されているPCが1台あれば、

VPNのサーバとして利用することが可能です。

セキュリティに関しては、重大な脆弱性を受けたことがなく、世界中の様々な環境下で使用されています。

 

上記の点を踏まえると、OpenVPNの凄さがわかると思います。

では、次節で、OpenVPNの設定方法について、簡単にご説明します。

 

 

■3.OpenVPNの設定方法

OpenVPNの設定は、2種類あります。

それは、”サーバ側の設定”と”クライアント側の設定”です。

まずは、サーバ側の設定から始めます。

 

3-1.サーバ側の設定

3-1-1.サーバ環境

OS:CentOS5

 

3-1-2.サーバサイドの設定ファイル群

・/etc/openvpn/easy-rsa/

・vars : OpenVPNの環境変数ファイル

・/etc/openvpn/

・server.key  : OpenVPNサーバ秘密鍵、サーバ側で常に保存する

・server.crt     : OpenVPNサーバ証明書、サーバ側で常に保存する

・dh1024.pem: OpenVPN用DHパラメータファイル、サーバ側で常に保存する

・crl.pem    : OpenVPNダミーの証明書廃止リストファイル

・server.conf :  OpenVPNサーバ設定ファイル

・ta.key     : TLS認証鍵

・openvpn-shutdown : OpenVPN停止時実行スクリプト

・openvpn-startup :     OpenVPN起動時実行スクリプト

・/etc/logrotate.d/

・openvpn   : openvpnログローテーション設定ファイル

 

3-1-3.サーバへのOpenVPNをインストール

# yum install openvpn

 

3-1-4.設定

①:CA証明書・秘密鍵作成

# cp -r /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/ /etc/openvpn/easy-rsa
# cd /etc/openvpn/easy-rsa/
# chmod +x *
# vi vars
=====================/etc/openvpn/easy-rsa/vars===============
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
・・・・

の箇所を変更
export KEY_COUNTRY="国"
export KEY_PROVINCE="都市"
export KEY_CITY="市区町村"
export KEY_ORG="会社名"
export KEY_EMAIL="管理者のメールアドレス"
export KEY_CN="VPNを設定するサーバ名"
=====================/etc/openvpn/easy-rsa/vars===============
# source vars
# ./clean-all
# ./build-ca
# cp keys/ca.crt /etc/openvpn

 

②:サーバ証明書・秘密鍵作成

# ./build-key-server server
・全てenterでよい
# cp keys/server.crt /etc/openvpn/
# cp keys/server.key /etc/openvpn/

 

③:DHパラメータ作成

# ./build-dh
# cp keys/dh1024.pem /etc/openvpn/
 

 

④:証明書廃止リスト作成

# ./build-key dmy
・全てenterでよい
# vi openssl-1.0.0.cnf
最後の6行をコメントアウト
# ./revoke-full dmy
# cp keys/crl.pem /etc/openvpn/
# cd

 

⑤:OpenVPN設定

# openvpn --genkey --secret /etc/openvpn/ta.key  => TLS認証鍵を作成
# cp /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/
# vi /etc/openvpn/server.conf
dev tun //VPNインターフェースとしてTUNを指定
server 10.8.0.0 255.255.255.0 //VPNとして割り当てる範囲
tls-auth ta.key 0 # This file is secret
user nobody
group nobody
log-append  /var/log/openvpn.log
management localhost 7505
crl-verify crl.pem

 

⑥:VPNインターフェース用ファイアウォール自動設定

# vi /etc/openvpn/openvpn-startup ← OpenVPN起動時実行スクリプト新規作成
=====================/etc/openvpn/openvpn-startup===============
#!/bin/bash

# VPNインタフェースiptablesルール削除スクリプト実行※必須
/etc/openvpn/openvpn-shutdown

# VPNサーバーからの送信を許可※必須
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT

# VPNクライアントからVPNサーバーへのアクセスを許可する場合
iptables -I INPUT -i tun+ -j ACCEPT
=====================/etc/openvpn/openvpn-startup===============
# chmod +x /etc/openvpn/openvpn-startup

 

⑦:VPNインタフェース用ファイアウォール自動設定解除

# vi /etc/openvpn/openvpn-shutdown
=====================/etc/openvpn/openvpn-shutdown===============
#!/bin/bash

# VPNインタフェース(tun+)用iptablesルール削除関数
delete() {
    rule_number=`iptables -L $target --line-numbers -n -v|grep tun.|awk '{print $1}'|sort -r`
    for num in $rule_number
    do
        iptables -D $target $num
    done
}

# VPNインタフェース(tun+)用iptables受信ルール削除
target='INPUT'
delete

# VPNインタフェース(tun+)用iptables転送ルール削除
target='FORWARD'
delete

# VPNインタフェース(tun+)用iptables送信ルール削除
target='OUTPUT'
delete
=====================/etc/openvpn/openvpn-shutdown===============
# chmod +x /etc/openvpn/openvpn-shutdown

 

⑧:ログローテーション設定

#vi /etc/logrotate.d/openvpn
=====================/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
}
=====================/etc/logrotate.d/openvpn===============

 

3-2.サーバ起動!!

# vi /etc/init.d/openvpn
-A RH-Firewall-1-INPUT -p udp -m udp --dport 1194 -j ACCEPT ← ポートへのアクセス付与

3-3.クライアント側の設定

3-3-1.OpenVPNのインストール

 windows:  MacOS: Android: iOS:

3-3-2.OpenVPNクライアントユーザ作成

今回、OpenVPNに接続するユーザを hoge とします。

# cd /etc/openvpn/easy-rsa/
# ./build-key-pass hoge

入力後、パスワードを入力

3-3-3.証明書等、サーバから取得

/etc/openvpn/ca.crt

/etc/openvpn/easy-rsa/keys/hoge.crt

/etc/openvpn/easy-rsa/keys/hoge.key

/etc/openvpn/ta.key

3-3-4.設定ファイルを修正

C:\Program Files\OpenVPN\sample-configにあるサンプルファイル(client.ovpn)を

設定ファイルを格納するフォルダ(C:\Program Files\OpenVPN\config)へコピー

===========C:\Program Files\OpenVPN\config\client.ovpn===============
remote my-server-1 1194 → remote 123.123.123.123 1194(VPNサーバー名を指定)

cert client.crt → cert hoge.crt(クライアント証明書ファイル名を指定)

key client.key → key hoge.key(クライアント秘密鍵ファイル名を指定)

ns-cert-type server ← 行頭の;を削除してコメント解除("Man-in-the-Middle"攻撃対策)

tls-auth ta.key 1 ← 行頭の;を削除してコメント解除(TLS認証有効化)
===========C:\Program Files\OpenVPN\config\client.ovpn===============

3-4.OpenVPN起動

OpenVPNを起動し、

タスクバーにできた  から接続を選択

パスワードの入力を促す画面が表示されたら

クライアントの設定ファイルを作成する際に入力したパスワードを入力すれば、接続完了

※OpenVPNを起動する場合は、管理者権限でないと、接続ができないので、必ず管理者権限で起動するように

接続が完了すると

タスクバーに表示されている  のアイコンが  に変わります。

アイコンが変わった部分をよく見ると、「clientに接続しました。割り当てられたIP:10.*.*.*」と記載されています。

このようにIPが割り振られることによって、VPNによりサーバへのアクセスが可能となります。

 

ざっとの流れで、「VPNとはなにか」から「OpenVPNの設定」までをお話しました。

導入するまでに、色々と手順を踏まないといけないということはありますが、

導入をしてしまえば、今後、新しいクライアントのアカウントを発行するだけになりますので、

面倒なこともなくなると思います。

 

VPNを導入することにより、一つの場所で作業をするだけでなく、いろいろな場所で作業をすることができるようになります。

作業方針を変える第一歩として、”VPN“を導入してみてはいかがですか?