無料で構築するVPN(OpenVPN) Part.3

2013年5月10日

Part.2の続きです。

VPNインタフェース用ファイアウォール自動設定

OpenVPN起動時実行スクリプト新規作成

規制方法は色々あるので試してみると良い。
基本はiptablesで規制を行う。

# vi /etc/openvpn/openvpn-startup
----------------------------------------------------------------------------
#!/bin/bash
# VPNインタフェースiptablesルール削除スクリプト実行※必須
/etc/openvpn/openvpn-shutdown
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -I INPUT -p tcp --dport 7505 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m limit --limit 1/sec -m icmp --icmp-type 8 -j ACCEPT

# VPNサーバーからの送信を許可※必須
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT

# VPNクライアントからVPNサーバーへのアクセスを許可する場合
#iptables -I INPUT -i tun+ -j ACCEPT
iptables -I INPUT -p udp --dport 1194 -j ACCEPT

# 外部ネットワークにアクセスする場合はマスカレードが必要
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

# VPNクライアントからLANへのアクセスを許可する場合
# (例としてVPNクライアントから192.168.1.0/24へのアクセスを許可する場合)
# ※192.168.1.0/24側のファイアウォール等でVPNクライアント(10.8.0.0/24)からのアクセスを許可すること
#iptables -I FORWARD -i tun+ -d 192.168.1.0/24 -j ACCEPT

# VPNクライアントからLAN内特定マシンのみへのアクセスを許可する場合
# (例としてVPNクライアントから192.168.1.10へのアクセスを許可する場合)
# ※192.168.1.0/24側のファイアウォール等でVPNクライアント(10.8.0.0/24)からのアクセスを許可すること
#iptables -I FORWARD -i tun+ -d 192.168.1.10 -j ACCEPT

 OpenVPN起動時実行スクリプトへ実行権限付加

# chmod +x /etc/openvpn/openvpn-startup

VPNインタフェース用ファイアウォール自動設定解除

OpenVPN停止時実行スクリプト新規作成

停止の際の挙動は色々あるが、とりあえず標準のIPtablesを止めると着信されなくなるので、以下としている。

#!/bin/bash
/etc/init.d/iptables stop

OpenVPN停止時実行スクリプトへ実行権限付加

# chmod +x /etc/openvpn/openvpn-shutdown

 OpenVPNログローテーション設定

OpenVPNログローテーション設定ファイル新規作成 

# vi /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
}
---------------------------------------------------------
# vi /etc/logrotate.d/openvpn-status
---------------------------------------------------------
/var/log/openvpn-status.log {
        missingok
        notifempty
        sharedscripts
        postrotate
                /etc/rc.d/init.d/openvpn restart 2>&1 > /dev/null || true
        endscript
}
---------------------------------------------------------

OpenVPN起動

OpenVPN起動スクリプト編集

# vi /etc/init.d/openvpn
---------------------------------------------------------
echo 1 > /proc/sys/net/ipv4/ip_forward  ←行頭の#を削除してコメント解除(パケット転送有効化)
---------------------------------------------------------

OpenVPN起動

# /etc/init.d/openvpn start

FWポリシー設定

上位にFWが存在する場合、許可設定を行う

・OpenVPNサーバに対しUDP/1194を通過するように設定。
・10.8.0.0/24の通信は192.168.1.10を通過する様にルーティング設定。

 

 Part.4へ続きます。次回で最後です。