OpenVPNサーバーを構築する その2

OpenVPN OpenVPN

前回に続きOpenVPNのセットアップを行います。

ファイアウォールのインストールと設定

未導入の場合、ufwをインストールします。

sudo apt install ufw

インストールが終わったら「全ての通信を拒否する」→「通す通信を登録する」→「ufwを有効化する」の順で作業します。まずは「全ての通信を拒否する」から行います。

sandambara@srv001:~/easy-rsa/easyrsa3$ sudo ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

続いて「通す通信を登録する」はこのように行います。

ufw allow ポート番号(/プロトコル)

たとえばhttpを通す場合はこのようになります。ポート番号ではなくアプリケーション名でも指定できます。

sudo ufw allow 80/tcp(またはsudo ufw allow http)

前回の記事のserver.confで指定したポート番号(規定値であればudp 1194)をここで登録します。他にもSSHやhttpにhttps、メール関連のプロトコルやRDPも登録しておきましょう。ここまでできたらufwを有効にします・・・その前に!リモートで作業している場合はリモート関連のプロトコルを確実に登録したことをここでもう一度確認しておきましょう。最悪の場合マシンの設置場所まで直行しないといけなくなりますので(リモートから締め出されてしまいローカルで作業するしかなくなります)。

sandambara@srv001:~/easy-rsa/easyrsa3$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

設定の確認コマンドはこちらです。末尾の「numbered」はルールの先頭にルール番号を表示させるオプションですので無くても構いません。但し、ルールを削除するときはこのルール番号が必要になりますので覚えておきましょう。

sandambara@srv001:~/easy-rsa/easyrsa3$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 1400/udp                   ALLOW IN    Anywhere
[ 2] 443/tcp                    ALLOW IN    Anywhere
[ 3] 22                         ALLOW IN    Anywhere

たとえば1番のudp 1400番のルールを削除するにはこうします。

sudo ufw delete 1

ファイアウォールはログがあってこそ活きるので、ロギングを有効化しておきましょう。

sudo ufw logging on

ロギングのレベルはlow、medium、high、fullとあり規定値はmediumです。ログの確認コマンドはこちらです。

sudo cat /var/log/ufw.log

次にOpenVPNサーバーがクライアントから受け取ったパケットがインターネットへ出ていけるようIPフォワーディングを有効にします。2か所変更します。

sudo nano /etc/default/ufw

#DEFAULT_FORWARD_POLICY="DROP"
DEFAULT_FORWARD_POLICY="ACCEPT"
sudo nano /etc/ufw/sysctl.conf

# もともとコメントアウトされているのでコメントを外す
net/ipv4/ip_forward=1

ここまでできたら現在利用しているインターフェースを調べます。ifconfig(今はip aでしょうか)を実行し「inetが割り当たっており、かつ、ループバックでないインターフェース」を見つけ、そのインターフェースのIPマスカレードを有効にします。下記の例ではインターフェース名はeth0です。

sudo nano /etc/ufw/before.rules

# 最下行のCOMMITの下に追記します
# POSTROUTING -sに続くネットワークはserver.confに記述したものと同一にします
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT

ファイアウォールを再起動します。

sudo ufw reload

OpenVPN起動

OpenVPNを起動します!

sudo systemctl start openvpn

起動したらプロセスがいることを確認しましょう。

ps -ef | grep openvpn | grep -v grep

注意点として、起動確認はsystemctl status openvpnでは不可ということが挙げられます。必ずプロセスの有無を確認し、プロセスが無い場合やエラーが出たときはログを確認します。

sudo cat /var/log/openvpn.log

server.confとufwの設定を見直しても起動できないときはopenvpnではなくopenvpn@serverで起動できるか確認してみましょう。私も初めて構築したときはopenvpn@serverでないと動きませんでした。

sudo systemctl stop openvpn
sudo systemctl start openvpn@server
ps -ef | grep openvpn | grep -v grep

こちらで動けばそれで問題ありません。その場合はサーバー再起動時に備え下記コマンドを実行しておきましょう。

sudo systemctl disable openvpn
sudo systemctl enable openvpn@server

次回はクライアント証明書の作成とクライアントの設定ファイルについて書きます。あと一息ですよ。

コメント