前回の記事では、自前でVPNサーバーを構築するためにConoha VPSのVPSを選んで、契約したことを紹介しました。
本日は、実際にVPNサーバーの設定をしてみた、というお話です。
2019年10月22日追記
より簡単にVPNサーバーを設定できる方法が見つかりました。最新情報はこちらをご覧ください。
Conoha VPSでは、サーバーの申込みをする際に、同時にインストールするOSを選択することができます。
このため、深いこと考えず、とっととCentOS7.5のインストールが完了しましたので、さっそくVPNサーバを作っていきます。
ちなみに、私サーバ構築の経験ゼロ、コマンドとかもたぶんほとんど分かっていません。そんなんでできるのかしら、と思いながら、試行錯誤で進んでいきました。
なお、こちらに書いてあることは、私の環境では、うまくいきましたよ、というケースをメモしたものです。設定等については、あくまでも自己責任ということでご容赦くださいませ。
とりあえず写経じゃ!
とはいえ、あれですね。私自身、Linuxのことなど本当に分かっていないし、自分でどうにかして何かできる、というレベルにはほど遠いので、当然、ネットの情報を参考にさせていただきました。いや、参考にした、というよりそのまんま実践したって感じ。
具体的には、ツール タロウさんのqiitaのサイトにありましたこちらの情報を参考にさせていただきました。
こちらに書いてあることを、意味も分からずイチからやっていきましたらできました。本当に役に立ちました。ツール タロウさん、この場を借りてお礼を申し上げます。
繰り返しますが、私、本当にコマンドとか基本的なこと以外さっぱり分かっていないので、ホント、上に書いてあった内容を、仏典を写経する新米の小僧みたいに、意味わかんないまま次々と実行してみました。
そしたら、Voila! できちゃうのね。感動!
Viエディタを初めて使う
ちなみに、どんだけ分かってないかといえば、設定ファイル等を変更するには、SSH経由で接続してコマンド打つ必要があるのですが、vi エディタの使い方も今回初めて知りました。
コマンドはこちらのサイトを参考にしました。ありがとうございます。
SSH接続はRloginにて
なお、SSH接続は、Rloginというアプリを利用しました。
これまでSSH接続はPuttyでおこなっていて、Rloginは今回初めて使用しました。このRlogin、何気に良いです。使いやすい!
SSH接続する一方で、SFTPでファイルのローカルへのダウンロードもできるのが気に入っています。
追加で行った設定その1 複数の端末で利用
さらに、自分の使用する環境にあわせて、いくつか追加設定を行いました。
まず、一連のKeyファイルたちを複数の端末で利用するための設定です。セキュリティ的にはあまり推奨されていないのかもしれませんが、スマホも含めた複数の端末で同一ファイルを使いこなせると楽ですのでね。実際、巷の業者のVPNサービスも一つのアカウントで複数端末で使う仕様になっていますし…。
具体的には、server.confに1行書き加えます。
duplicate-cn
これをどこにでも良いので、1行書き加えました。
ちなみに、server.confの内容ですが、上のツール タロウさんのqiitaのサイトにある内容をそのまま書いておけば動くのですが、サンプルファイルも存在しますので、そちらの場所もメモしておきます。
サンプルファイルの場所
/usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf
こちらのサンプルファイルを書き換えて、設定することもできます。
追加で行った設定その2 ovpnファイルの作成
さらに、スマホやタブレットといったAndroid端末からアクセスするために、ovpnファイルを作成しました。
ovpnファイルは、下記にサンプルファイルが用意されています。
/usr/share/doc/openvpn-2.4.6/sample/sample-config-files/client.conf
このファイルを、コピーしてローカルにダウンロードしまして、拡張子をovpn、つまり、client.ovpnにして使います(ただし、client.confのままでも、後述するOpenVPN for Androidのアプリではインポート可能です)。
client.opvnに書いた内容は、基本的に、先のserver.confに書いたことに合わせてます。
client dev tun proto udp remote XXXXXXXX 1194 # XXXXXXには、接続するサーバーのIPアドレスを入れる resolv-retry infinite nobind user nobody group nobody persist-key persist-tun ca ca.crt cert XXXXX.crt # クライアント名のcrtファイル key XXXXX.key # クライアント名のkeyファイル cipher AES-256-CBC comp-lzo verb 3 fragment 1280 mssfix 1280 link-mtu 1400
スマホでのOpen VPN設定
client.ovpnを作成したら、先に作成した
ca.crt ユーザ名.crt ユーザ名.key
と共に、スマホ端末に保存しておきます。ファイルのやり取りは、DropboxやGoogle Drive、One Driveなどのクラウドサービスを使ってESファイルエクスプローラーのアプリ経由で行なうのが楽ちんです。
そして、スマホでのOpen VPNは、「OpenVPN for Android」というアプリが簡単に設定できます。
具体的には、アプリのインストールが完了したら、トップ画面から「追加ボタン+」をクリックして、「プロファイルの追加」が表示されたら「インポート」をクリックして、コピーしてきたclient.ovpnを選択します。
プロファイル名には好きなお名前を付けられます。クライアント証明書、クライアント証明書のキー、CA証明書の選択の部分で、それぞれコピーしてきた「ユーザー名.crt」、「ユーザー名.key」、「ca.crt」のファイルを選択して設定します。
ファイルの選択が終わったら、いったん、トップページに戻って、鉛筆マークをクリックして…。
ユーザー向けに設定した秘密鍵のパスワードを追加しておきます。
こうして、スマホからもOpenVPN接続ができるようになりました。
追加で行った設定 その3 SSHログインのセキュリティ強化
こうしてとりあえず、パソコンおよびスマホからVPS上のVPNに接続できるようになりました。
とはいえ、少し不安があったのが、誰でもログインできてしまうSSH部分です。
まずは、参考にさせていただいたツール タロウさんのqiitaのサイトにもあったように、rootでのsshログインの無効化の設定を行ないました。これで、不審者がログインIDをrootにして片っ端からパスワードを入力する、という攻撃を防ぐことはできそうです。
それでも、毎回ログインするたびに、223 failed login attempts since the last successful loginといったメッセージが出てくるのが気になったので、さらに公開鍵のみでログインできるようにしました。
公開鍵でのログインに参考させていただいたのが、上村崇さんのこちらの記事です。
書いてあるとおりに行ないましたらできました。この場を借りてお礼申し上げます!(^^)!
公開鍵でのログインの設定をしたら、XXX failed login attemptsといったメッセージは出なくなりました。
課題
というわけで、見事、VPN接続が果たされたわけですが、いくつか気になっている部分もあるといえばあります。これは今後の課題ですね。いちおう書いておきます。
TLSの認証ができない(解決済)
スマホのOpenVPNでの接続時にメッセージが出てくるのが気になり、TLS認証を追加したいのですが、どうも上手くできません。
基本的には、ta.keyというのを追加するために、
openvpn --genkey --secret /etc/openvpn/ta.key
とコマンドを打って、さらにserver.confに「tls-auth ta.key 0 」、client.ovpnに「remote-cert-tls server(改行)tls-auth ta.key 1」と追加し、スマホ側でTLS認証を設定する際に、コピーしてきたta.keyを設定していればできる…。
はずなのですが、どうしてもエラーが出てきてしまって、接続に失敗してしまいます。なので、今のところ、TLS認証は行なっていませんが、本当はできた方がいいのかなぁ、どうなんだろうと思ったりしています。
2019年3月 追記)
その後、解決しました。どうやら、/etc/openvpn/ta.key、と作成したキーをいったん、ユーザーのフォルダに移動してから、SFTPでダウンロードをしてクライアント側に持ってきたのですが、ユーザーのフォルダに移動する際に、
$ cp /etc/openvpn/easyrsa3/pki/private/ta.key /home/sshuser/ $ chown sshuser:sshuser /home/sshuser/ta.key
とファイルの所有者の変更をしなかったからじゃないかと思います(上のsshuserというのはユーザー名です。実際は各自自分のユーザー名を入れます)。違うかもしれませんが、やったら、できていたので…。素人で分かってなくて、ごめんなさい!ですが、2019年3月時点で、私はTLS認証で使用できるようになりました(1からやり直していますが(^^;)。
その他、Open VPNログのメッセージ
その他、スマホのOpen VPNの接続時に出てくるログのメッセージでいくつか気になることはあります。細かい部分はまだ、よくわかっていないので、これからのんびり、各ログのメッセージがどういう意味なのか見ていきたいと思います。
まとめ
以上、Linuxのこととかほとんど分かっていない私が、見よう見まねで、VPSを契約して、自分でVPNサーバーを作ってみました。
現時点で、インターネットにアクセスした際には、自分のアクセスするIPアドレスがVPSのIPアドレスに変わっていますし、いちおう上手くいっているのかなと思っています。
当初の目的であった日本のAmazonプライムやTverにもVPN経由で接続できております(ただし、Huluはダメでした)。ただ、当方まだ日本におりますので、来週、スペインに戻ってからも果たして、問題なく利用し続けられるのか、確認してみたいと思っています。
コメント