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のインストール
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“を導入してみてはいかがですか?