OpenVPN用にufw(複雑でないファイアウォール)を構成したい。
接続はOpenVPNを介してのみ許可されます。それ以外はすべてブロックする必要があります。 OpenVPNが切断されている場合->インターネットがありません!このスクリプトをオンラインで見つけたので、それで十分かどうか知りたいです。または、さらにルールを追加する必要がありますか?
#!/bin/bash
###########################################
# Created by Thomas Butz #
# E-Mail: btom1990(at)googlemail.com #
# Feel free to copy & share this script #
###########################################
# Adapt this value to your config!
VPN_DST_PORT=3478
# Don't change anything beyond this point
###########################################
# Check for root priviliges
if [[ $EUID -ne 0 ]]; then
printf "Please run as root:\nsudo %s\n" "${0}"
exit 1
fi
# Reset the ufw config
ufw --force reset
# let all incoming traffic pass
ufw default allow incoming
# and block outgoing by default
ufw default deny outgoing
# Every communiction via VPN is considered to be safe
ufw allow out on tun0
# Don't block the creation of the VPN tunnel
ufw allow out $VPN_DST_PORT
# Don't block DNS queries
ufw allow out 53
# Allow local IPv4 connections
ufw allow out to 10.0.0.0/8
ufw allow out to 172.16.0.0/12
ufw allow out to 192.168.0.0/16
# Allow IPv4 local multicasts
ufw allow out to 224.0.0.0/24
ufw allow out to 239.0.0.0/8
# Allow local IPv6 connections
ufw allow out to fe80::/64
# Allow IPv6 link-local multicasts
ufw allow out to ff01::/16
# Allow IPv6 site-local multicasts
ufw allow out to ff02::/16
ufw allow out to ff05::/16
# Enable the firewall
ufw enable
構成はより制限することができます
ufw --force reset
ufw default deny incoming # Use the VPN tunnel for all traffic
ufw default deny outgoing
ufw allow out on tun0
ufw allow in on tun0
ufw allow out $port/$protocol # e.g. 1234/udp, depending on your OpenVPN client config
# Prefer resolved hosts to connect to your VPN, enable only if your VPN provider doesn't give you that option
#ufw allow out 53
# Allow local IPv4 connections, enable as needed, set specific IPs or tighter subnet masks if possible
#ufw allow out to 10.0.0.0/8
#ufw allow out to 172.16.0.0/12
#ufw allow out to 192.168.0.0/16
# Allow IPv4 local multicasts
#ufw allow out to 224.0.0.0/24
#ufw allow out to 239.0.0.0/8
# Allow local IPv6 connections
#ufw allow out to fe80::/64
# Allow IPv6 link-local multicasts
#ufw allow out to ff01::/16
# Allow IPv6 site-local multicasts
#ufw allow out to ff02::/16
#ufw allow out to ff05::/16
# Enable the firewall
ufw enable
これらの2つのコマンドを使用しないことを強く推奨します:
ufw allow incoming
ufw default allow in on tun0
ファイアウォールを使用する目的を無効にすることを許可します。戻りパケットを受信するために「tun0で許可」する必要があるのは正しくありません。あなたは、世界全体があなたに接続できるようにするのではなく、あなたが求めた接続だけを受け取りたいです。許可するとこれが行われます。以下の提案された構成をテストして確認してください。
ファイアウォールで使用する一連のUFWコマンドの例を次に示します。
Sudo ufw enable
Sudo ufw --force reset
Sudo ufw default deny incoming
Sudo ufw default deny outgoing
Sudo ufw allow out on tun0
Sudo ufw allow out on eth0 to any port 53,1197 proto udp
Sudo ufw allow out on wlan0 to any port 53,1197 proto udp
Sudo ufw status verbose
結果の例:
Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
Anywhere ALLOW OUT Anywhere on tun0
53,1197/udp ALLOW OUT Anywhere on eth0
53,1197/udp ALLOW OUT Anywhere on wlan0
Anywhere (v6) ALLOW OUT Anywhere (v6) on tun0
53,1197/udp (v6) ALLOW OUT Anywhere (v6) on eth0
53,1197/udp (v6) ALLOW OUT Anywhere (v6) on wlan0
注:-インターフェイスは異なる場合があります。たとえば、ubuntu 16.12はeno1とwlp3s0b1を使用します。コマンド「ifconfig」を使用して、実際のインターフェースを確認します。 -1197 UDPはかなりデフォルトですが、VPN(443 TCPなど)に合わせて変更する必要がある場合があります。 -通常ipv6を削除します(Sudo ufw delete 4、x3を繰り返します)
これが何をするのか:-VPNトンネルを介したアウトバウンド接続を許可し、VPNトンネルとイーサネット/ wifi上のDNS接続以外をすべてブロックします。 DNSの問題に関する以下の警告。
警告:この例では、openvpn(vpn.somevpnprovider.comなど)がIPアドレスを要求して接続を確立できるように、53でDNS要求を許可します。トレードオフは、DNSリークの可能性です。 dnsleaktest.comを使用して、VPN設定がDNS要求をトンネリングするようにします。注意深い/妄想的な場合は、53での許可をスキップし、代わりにファイアウォールをオフに切り替えて接続し、接続したら再びオンにします。私のVPNの理由により、ファイアウォールを完全に忘れてしまう可能性が高いため(たとえば、openvpnの設定が間違っているとDNSがリークする可能性があるため)、そうしないことを選択します。