ubutu

ubuntuの操作メモ

2994 views

はじめに

お仕事でちょっとVPN環境を作ってという依頼があり、VPN環境を作ってみましたが、ちょくちょくハマってしまったので、
手順やポイントなどをまとめておきます。

やりたいこと

  • AWS上にubuntu16.04のインスタンスを作成し、openvpnでVPNサーバにする(ubuntu18.04で本手順は失敗します)
  • CAはeasyrsaで簡易的な認証局をVPNサーバー上に作成する
  • クライアント(Windows)にもopenvpnをインストールして複数台接続する
  • VPNサーバに接続したクライアント同士で通信できる
  • ユーザ名とパスワードじゃなくてクライアント証明書で認証する
  • VPNサーバはどうしてもubuntuでやりたい

ようするに下の絵のようなことがやりたい。

対象とする読者

  • VPNの仕組みは知っているが、openvpnを使ったことはない
  • AWSでLinuxインスタンスは作れる
  • AWSのLinuxにログインはできる

AWSに認証局を作ろう

OSはubuntu16.04です。CentOSでも似たようなものなので参考にはなるかと思いますが、適宜コマンドは置き換えて読んでください。
認証局を作るといってもなんちゃって認証局(easy-rsa)です。
作業はほとんどrootでやるので、sudo -iでroot化し、ライブラリをインストールしましょう。

sudo -i
apt-get update
apt-get install openvpn libssl-dev openssl easy-rsa

インストールできたら認証局用のディレクトリを作成します。

make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa

上記を実行したあとlsコマンドを実行すると、varsというファイルが出来上がります。
varsファイルを編集します。これは証明書を作成するときのCA自体の情報になります。
viエディタなどで編集します。

vi vars

varsファイルの以下の部分をそれらしい情報に編集します。なんちゃって証明書の元になるだけなので適当でOKです。

export KEY_COUNTRY="JP"              #国
export KEY_PROVINCE="KANAGAWA"       #都道府県
export KEY_CITY="EBINA"              #市
export KEY_ORG="KONISHI"             #組織(会社?)
export KEY_EMAIL="konishi@mail.com"  #メアド
export KEY_OU="MyOrganizationalUnit" #部署名?

編集できたら、シェルに設定内容を反映します。

source ./vars
./clean-all

CAの鍵と証明書を作成します。

./pkitool --initca

実行し、[手順7]のような出力が出れば成功です。

Using CA Common Name: KONISHI CA
Generating a 2048 bit RSA private key
................................................+++
....................+++
writing new private key to 'ca.key'

次にDHパラメーターを作成します。

./build-dh

実行し、正常に動作した場合は以下のような出力が確認できます。

実行後、/etc/openvpn/easy-rsa/keysの下に以下のファイルが作成されているはずです。

ls /etc/openvpn/easy-rsa/keys
ca.crt  ca.key  dh2048.pem  index.txt  serial

これで認証局の設定は完了です。

VPNサーバとVPNクライアントの証明書や鍵を作ろう

認証局にVPNのサーバ証明書や鍵を作ってもらいます。

./pkitool --server server

実行すると、/etc/openvpn/easy-rsa/keysの下に以下のファイルが作成されます。

  • server.crt
  • server.key

静的共有鍵もいるらしいので、[SC手順2]を実行してキーを生成します。

openvpn --genkey --secret ta.key

実行すると、/etc/openvpn/easy-rsaの下にta.keyが作成されます。
これでサーバー側に必要なキーと証明書が作成されたことになります。

VPNサーバの設定をしよう

CAに作ってもらったサーバの鍵をopenvpnのパスに配置します。

cd /etc/openvpn/easy-rsa/keys
cp ca.crt server.crt server.key dh2048.pem /etc/openvpn
cd /etc/openvpn/easy-rsa
cp ta.key /etc/openvpn

VPNサーバの設定を行います。まず、サーバの設定ファイルを用意します。

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

/etc/openvpn/server.confを編集します。変更箇所に★をつけています。

port 1194★

# TCP or UDP server?
proto tcp ★
;proto udp ★

dev tap ★
;dev tun ★
;dev-node MyTap

ca ca.crt
cert server.crt
key server.key  # This file should be kept secret

dh dh2048.pem
;server 10.8.0.0 255.255.255.0 ★
ifconfig-pool-persist ipp.txt

server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 ★
;server-bridge
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248

;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
;learn-address ./script
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
client-to-client ★
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret  ★
;cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
cipher AES-256-CBC ★
comp-lzo
;max-clients 100
;user nobody
;group nogroup
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log ★
;log-append  openvpn.log
verb 3
;mute 20

ファイアウォールの設定

本設定ではSSLのポート番号を使用してVPN接続を行います。
AWSのセキュリティグループ、ubuntu自体のファイアウォールでポート1194を通過できるように設定します。

AWSでの設定

インスタンスに該当するセキュリティグループを選択し、以下のようにインバウンドの設定で1194を通過できるようにします。
図は443を開けていますが、1194に変更したほうがよいっぽいです。

ubuntuでの設定

ubuntuの場合、デフォルトではファイアウォールは無効なはずですが、AWSのインスタンスは有効になっているものもある?みたいです。
以下のコマンドを実行してinactiveになっている場合は設定不要です。

ufw status

activeだった場合は次のようにして1194を通過できるようにします。

ufw allow 1194
ufw reload
ufw status

openvpnの起動

以下のコマンドでopenvpnを起動します。

service openvpn@server start

/etc/openvpn/openvpn.logにログが出力されます。次のコマンドを実行して
ログを確認してください。

cat /etc/openvpn/openvpn.log

以下のメッセージが出力されていれば起動できています。

Sun Aug 12 11:32:29 2018 Initialization Sequence Completed

VPNクライアントの設定をしよう

openvpnをダウンロードします。
ダウンロード先はここのURLです。
https://openvpn.net/index.php/open-source/downloads.html
以下の赤枠で囲んでいるopenvpn_install-2.4.6-1602.exeをダウンロードします。

インストールはインストーラーが表示するデフォルトを選択していけばOKです。

インストールが完了したら、VPNサーバでクライアント認証用のキーと証明書を作成します。
TeraTermなどでVPNサーバにログインし、次のコマンドを実行します。

sudo -i
cd /etc/openvpn/easy-rsa
./pkitool mycli1(1台目のクライアントのキーと証明書作成)
./pkitool mycli2(2台目のクライアントのキーと証明書作成)

クライアントのopenvpnに必要な認証ファイル、キーファイルは以下です。

  • ca.crt
  • mycli1.crt(1台目の場合)
  • mycli1.key(1台目の場合)
  • mycli2.crt(2台目の場合)
  • mycli2.key(2台目の場合)
  • ta.key

これらのファイルをVPNサーバからWindowsにダウンロードします。 ダウンロードする際、ファイルのパーミッションが足りず、ダウンロードできないファイルがあるので 次のようにファイルをホームディレクトリにコピーし、こちらをダウンロードします。

cp /etc/openvpn/easy-rsa/keys/ca.crt /home/ubuntu
cp /etc/openvpn/easy-rsa/keys/mycli1.crt /home/ubuntu
cp /etc/openvpn/easy-rsa/keys/mucli1.key /home/ubuntu
cp /etc/openvpn/easy-rsa/keys/mycli2.crt /home/ubuntu
cp /etc/openvpn/easy-rsa/keys/mucli2.key /home/ubuntu
cp /etc/openvpn/easy-rsa/ta.key /home/ubuntu
chmod 777 /home/ubuntu/ca.crt
chmod 777 /home/ubuntu/mycli1.crt
chmod 777 /home/ubuntu/mycli1.key
chmod 777 /home/ubuntu/mycli2.crt
chmod 777 /home/ubuntu/mycli2.key
chmod 777 /home/ubuntu/ta.key

TermTermを使用する場合、[ファイル]→[SSH_SCP]を使用してファイルをダウンロードできます(下図参照)。

[SSH_SCP]をクリックすると下図のダイアログが表示されるので、赤枠の部分にファイル名を入力してダウンロードします。

ダウンロードができたら以下のファイルは削除します。

rm /home/ubuntu/ca.crt
rm /home/ubuntu/mycli1.crt
rm /home/ubuntu/mycli1.key
rm /home/ubuntu/mycli2.crt
rm /home/ubuntu/mycli2.key
rm /home/ubuntu/ta.key

C:\Users\<ユーザー名>\OpenVPN\configに次のファイルを配置しましょう。
PCごとにクライアントのキーと証明書は異なる必要があります。
(同じにしてしまうと、本設定ではみんな同じIPアドレスが割り当たってしまう)

[1台目のPC]

ca.crt
mycli1.crt
mycli1.key
ta.key

[2台目のPC]

ca.crt
mycli2.crt
mycli2.key
ta.key

次にC:\Program Files\OpenVPN\sample-config\client.ovpnファイルを
C:\Users\<ユーザー名>\OpenVPN\configにコピーし、編集します。
変更するパラメーターを以下に記します。

dev tap
;dev tun
proto tcp
;proto udp
remote ec2-xx-xx-xx-xx.compute-1.amazonaws.com 1194 ★xx-xx-xx-xxはAWSのホスト名
cert mycli1.crt
key mycli1.key
comp-lzo

編集終了後、デスクトップに表示されるopenvpnのアイコンを[右クリック]→[管理者として実行]を選択して起動します。
下図参照。

タスクバーにopenvpnのアイコンが表示されます。
openvpnのアイコンをダブルクリックするか、右クリックしたあと、「接続」を選択するとつながります。

Page 2 of 9.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

マッスル

自己紹介

本サイトの作成者。
趣味:プログラム/水耕栽培/仮想通貨/激辛好き
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
仮想通貨はNEMが好き。
水耕栽培は激辛好きが高じて、キャロライナ・リーパーの栽培にチャレンジ中。

サイト/ブログ

https://www.osumoi-stdio.com/pyarticle/

ツイッター

@darkimpact0626