ubuntu-server-14-04:openvpn
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
ubuntu-server-14-04:openvpn [2016/02/08 18:29] – 作成 admin | ubuntu-server-14-04:openvpn [2016/05/16 14:29] (現在) – [ファイアフォールの設定] admin | ||
---|---|---|---|
行 10: | 行 10: | ||
==== インストール前の環境 ==== | ==== インストール前の環境 ==== | ||
- | * Ubuntu 14.04.1 LTS 64bit | + | * Ubuntu 14.04.3 LTS 64bit |
^ パッケージ名 ^ バージョン ^ | ^ パッケージ名 ^ バージョン ^ | ||
- | | apache2 | + | | openvpn |
- | | mysql-server | + | | easy-rsa | 2.2.2-1 | |
- | | libapache2-mod-php5 | 5.5.9+dfsg-1ubuntu4.5 | | + | |
- | | rvm | 1.26.9 | + | |
- | Apache2、MySQL、PHP は Ubuntu をインストールした際に、ついでにインストール済み。 | ||
- | RVM で選択されているデフォルトの Ruby のバージョンは、" | + | ===== インストール ===== |
- | ==== インストールするパッケージ等 ==== | ||
+ | < | ||
+ | $ sudo apt-get install openvpn easy-rsa | ||
+ | </ | ||
- | ===== インストールと設定 | + | ===== 公開鍵基盤の作成 |
- | ==== 前準備 | + | ==== CA(認証局)の作成 |
- | インストール前に / | + | CA のテンプレートをコピーする。今回は |
- | まずはソフトウェアのリストをアップデートする。 | + | < |
+ | $ sudo mkdir / | ||
+ | $ sudo chown user:user / | ||
+ | $ cp -r / | ||
+ | </ | ||
+ | 変数ファイルを編集する。 | ||
< | < | ||
- | $ sudo apt-get update | + | $ vim / |
</ | </ | ||
+ | |||
+ | < | ||
+ | export KEY_COUNTRY=" | ||
+ | export KEY_PROVINCE=" | ||
+ | export KEY_CITY=" | ||
+ | export KEY_ORG=" | ||
+ | export KEY_EMAIL=" | ||
+ | export KEY_OU=" | ||
+ | |||
+ | export KEY_ALTNAMES=" | ||
+ | |||
+ | export KEY_NAME=" | ||
+ | export KEY_CN=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | <note important> | ||
- | ==== MySQL のインストール ==== | ||
+ | CA 用のファイルを作成する。 | ||
- | MySQL をインストールしていない場合はここでインストール。 | ||
< | < | ||
- | $ sudo apt-get install software-properties-common mysql-server mysql-client mysql-common | + | $ cd / |
+ | $ source vars | ||
+ | $ ./clean-all | ||
+ | $ ./build-ca | ||
</ | </ | ||
- | ==== データベースの作成 ==== | ||
- | データベースを作成する前に、AppArmor に邪魔されないように、MySQL に対する監視モードを変更する。 | + | 鍵生成中に国コードや、組織名等の変数で設定した内容を変更できる。通常はエンターキー連打で OK。 |
- | MySQL サーバに root として接続する。 | + | ==== サーバ用の鍵を作成 ==== |
+ | |||
+ | myservername は鍵のファイル名として使用される。 | ||
< | < | ||
- | $ mysql -u root -p | + | $ ./build-key-server myservername |
</ | </ | ||
+ | |||
+ | CA 作成時と同じくエンターキー連打。 | ||
+ | |||
+ | 最後の2つの質問は、CA 作成時にはないがこれもエンターキーで OK。 | ||
< | < | ||
- | > CREATE DATABASE redminedb character SET utf8; | + | Certificate is to be certified until Feb 5 10:40:34 2026 GMT (3650 days) |
- | > CREATE USER ' | + | Sign the certificate? |
- | > GRANT ALL PRIVILEGES ON redminedb.* TO ' | + | |
- | > FLUSH PRIVILEGES; | + | |
- | > exit; | + | |
</ | </ | ||
+ | y を入力して、先ほど作成した CA の秘密鍵で、サーバ用の公開鍵に署名する。 | ||
- | * redmine: Redmine で使用するデータベースのユーザ名 | + | < |
- | * password: user のパスワード | + | 1 out of 1 certificate requests certified, commit? [y/n] |
- | * redminedb: 作成するデータベース名 | + | </code> |
- | + | ||
- | <note important> | + | |
+ | y を入力して、CA のデータベースに登録する。 | ||
- | ==== Redmine をダウンロード ==== | + | Diffie Hellman パラメータが必要になるので生成する。 |
- | 今回は / | ||
< | < | ||
- | $ sudo mkdir / | + | $ ./build-dh |
- | $ cd / | + | |
- | $ sudo chown $USER: | + | |
- | $ wget "http:// | + | |
- | $ tar -xzvf ./ | + | |
- | $ rm ./ | + | |
</ | </ | ||
- | < | ||
- | 必要なディレクトリを作成し、パーミッションを修正する。 | + | CA と サーバ用の鍵、証明書を OpenVPN のディレクトリにコピーする。 |
< | < | ||
- | $ cd /var/ | + | $ cd ./keys |
- | $ mkdir -p tmp tmp/pdf public/ | + | $ sudo cp myservername.crt myservername.key ca.crt dh2048.pem |
- | $ sudo chown -R www-data: | + | |
- | $ sudo chmod -R 775 files log tmp public/plugin_assets | + | |
</ | </ | ||
- | ==== Redmine | + | ==== クライアント用の鍵を作成 |
- | 設定ファイルをコピーする。 | ||
< | < | ||
- | $ cd /var/www/redmine | + | $ cd /etc/openvpn/easy-rsa |
- | $ cp ./ | + | $ source vars |
- | $ cp ./config/ | + | $ ./build-key client1 |
</ | </ | ||
- | データベースの設定を変更する。 | + | また鍵情報の入力があるが、エンターキーを連打。 |
- | < | + | y を入力し、署名してデータベースへ登録する。 |
- | $ vi ./ | + | |
- | </ | + | |
- | 以下の production セクションを変更。 | ||
- | < | + | 以下のファイルは、クライアント側へ安全な方法でコピーする。(scp等) |
- | production: | + | |
- | adapter: mysql2 | + | |
- | database: redminedb | + | |
- | host: localhost | + | |
- | username: redmine | + | |
- | password: " | + | |
- | encoding: utf8 | + | |
- | </ | + | |
- | * database: 作成したデータベースの名前 | + | * / |
- | * username: 作成したユーザのユーザネーム | + | * / |
- | * password: 設定したパスワード | + | * / |
- | ==== Bundler をインストール ==== | ||
- | Bundler をインストールする。 | + | ===== OpenVPN サーバの設定 ===== |
+ | |||
+ | サーバの設定ファイルをコピーする。 | ||
< | < | ||
- | $ gem install bundler | + | $ sudo cp / |
+ | $ sudo gzip -d / | ||
</ | </ | ||
- | ==== Redmine の実行環境を構築 ==== | + | / |
- | + | ||
- | インストール時に必要になるパッケージを先にインストールする。 | + | |
< | < | ||
- | $ sudo apt-get install libmysqlclient-dev imagemagick libmagickwand-dev | + | $ sudo vim / |
</ | </ | ||
- | Bundler で Redmine | + | 以下の証明書と鍵ファイル名を確認する。特に dh2048.pem を確認。 |
< | < | ||
- | $ cd / | + | ca ca.crt |
- | $ bundle install --without development test | + | cert myservername.crt |
+ | key myservername.key | ||
+ | dh dh2048.pem | ||
</ | </ | ||
- | + | 以下のコメントを解除。 | |
- | + | ||
- | ==== セッションストアのトークンを生成 ==== | + | |
- | + | ||
- | セッションストアのトークンを生成する。 | + | |
< | < | ||
- | $ bundle exec rake generate_secret_token | + | user nobody |
+ | group nogroup | ||
</ | </ | ||
- | ==== データベースの初期化 | + | ==== ネットワークの設定 |
- | Redmine で使うデータをデータベースに格納する。 | + | / |
< | < | ||
- | $ bundle exec rake db:migrate RAILS_ENV=production | + | $ sudo vim / |
- | $ bundle exec rake redmine: | + | |
</ | </ | ||
- | 途中言語の選択があるので好きな言語を選択する。 | + | 以下のコメントを解除して、IPv4 |
- | 以下のエラーが出たが、www-data ユーザ以外で実行したため。実際の運用では www-data が実行ユーザになるので問題ない。 | + | < |
+ | net.ipv4.ip_forward=1 | ||
+ | </ | ||
+ | |||
+ | ネットワークの設定をリロードする。 | ||
< | < | ||
- | Rails Error: Unable to access log file. Please ensure that /var/www/ | + | $ sudo sysctl -p /etc/sysctl.conf |
</ | </ | ||
- | ==== Phusion Passenger のインストール ==== | + | ==== OpenVPN サーバを起動 |
- | Phusion Passenger のインストールに必要になるパッケージを先にインストールする。 | ||
< | < | ||
- | $ sudo apt-get install libcurl4-openssl-dev apache2-threaded-dev libapr1-dev libaprutil1-dev | + | $ sudo service openvpn start |
</ | </ | ||
+ | < | ||
+ | * Starting virtual private network daemon(s)... | ||
+ | | ||
+ | </ | ||
- | Phusion Passenger をインストールする。 | + | 仮想ポートが作成されているかを確認。 |
< | < | ||
- | $ gem install passenger | + | $ ifconfig tun0 |
- | $ passenger-install-apache2-module | + | |
</ | </ | ||
- | 対話式に質問してくるので答えていく。 | ||
- | * Which languages are you interested in?: Ruby のみを選択 | + | ===== ファイアフォールの設定 ===== |
- | 以下のエラーが発生した。 | + | ファイアフォールを以下のコマンドで設定する。 |
< | < | ||
- | AH00526: Syntax error on line 33 of / | + | $ sudo ufw status |
- | SSLCertificateKeyFile: | + | $ sudo ufw enable |
+ | $ sudo ufw default deny incoming | ||
+ | $ sudo ufw default allow outgoing | ||
</ | </ | ||
- | 一般ユーザで Phusion Passenger のインストールを実行しているため、root にしか権限がない秘密鍵へアクセスできないためらしい。 | + | OpenVPN サーバへの接続を許可。 |
- | + | ||
- | 一時的に該当の行をコメントアウトして再度インストールする。 | + | |
< | < | ||
- | $ passenger-install-apache2-module | + | $ sudo ufw allow 1194/udp |
</ | </ | ||
- | うまく騙せた。コメントアウトした行を元に戻す。 | ||
- | 最後に Apache2 の設定方法が表示されるのでコピーしておく。 | + | ファイアウォールのデフォルトルールを変更。 |
+ | < | ||
+ | $ sudo vim / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | DEFAULT_FORWARD_POLICY=" | ||
+ | </ | ||
- | ==== Apache2 の設定 ==== | ||
- | Phusion Passenger のインストールの最後に、以下のような設定例が出力されるので、指示に従って Apache2 の設定を変更する。 | ||
< | < | ||
- | | + | $ sudo vim /etc/ufw/before.rules |
- | < | + | |
- | | + | |
- | | + | |
- | </ | + | |
</ | </ | ||
+ | |||
+ | 以下のルールを “*filter” の直前に入力する。 | ||
< | < | ||
- | < | + | # START OPENVPN RULES |
- | | + | # NAT table rules |
- | | + | *nat |
- | | + | : |
- | < | + | # Allow traffic from OpenVPN client |
- | # This relaxes Apache security settings. | + | -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE |
- | | + | -A POSTROUTING -s 10.8.0.0/8 -o wlan0 -j MASQUERADE |
- | # MultiViews must be turned off. | + | COMMIT |
- | | + | # END OPENVPN RULES |
- | # Uncomment this if you're on Apache >= 2.4: | + | |
- | | + | |
- | </ | + | |
- | </ | + | |
</ | </ | ||
- | 最終的に、以下の内容を稼働中のサイトの < | ||
- | Passenger の設定については [[http:// | + | ufw を再起動する。 |
< | < | ||
- | ### for Redmine | + | $ sudo ufw disable && sudo ufw enable |
- | LoadModule passenger_module | + | </code> |
- | < | + | |
- | PassengerRoot / | + | |
- | PassengerDefaultRuby / | + | |
- | ## Passenger Configuration | + | ===== クライアントの設定 ===== |
- | ## Details at http:// | + | |
- | PassengerMinInstances 6 | + | |
- | PassengerMaxPoolSize 20 | + | |
- | RailsBaseURI /redmine | + | |
- | PassengerAppRoot / | + | |
- | RailsSpawnMethod smart | ||
- | PassengerPoolIdleTime 1000 | ||
- | RailsAppSpawnerIdleTime 3600 | ||
- | PassengerMaxPreloaderIdleTime 0 | ||
- | PassengerMaxRequests 5000 | ||
- | PassengerStatThrottleRate 5 | ||
- | PassengerUser www-data | + | 自分は Mac で Tunnelblick |
- | PassengerGroup www-data | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | Apache2 | + | |
< | < | ||
- | $ sudo service apache2 restart | + | # sample client.ovpn for Tunnelblick |
+ | client | ||
+ | remote blue.example.com | ||
+ | port 1194 | ||
+ | proto udp | ||
+ | dev tun | ||
+ | dev-type tun | ||
+ | ns-cert-type server | ||
+ | reneg-sec 86400 | ||
+ | auth-nocache | ||
+ | auth-retry interact | ||
+ | comp-lzo yes | ||
+ | verb 3 | ||
+ | ca ca.crt | ||
+ | cert client1.crt | ||
+ | key client1.key | ||
</ | </ | ||
- | |||
- | |||
- | https:// | ||
行 305: | 行 302: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |
ubuntu-server-14-04/openvpn.1454923783.txt.gz · 最終更新: 2016/02/08 18:29 by admin