OpenVPNのUFW


17

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

ソース:http : //pastebin.com/AUHh6KnV


元気そう!それが機能するかどうかを試してみてください。ufw使用sudo ufw disableを常に無効にして、すべてのファイアウォールルールを削除できる問題がありますsudo ufw --force reset。何が間違っている可能性がありますか?;-)
ntninja

2
それだけでopenvpnが機能するので、すべての着信トラフィックを許可しないようにするかもしれません。
JVE999 14

2
デフォルトで着信接続を常に拒否する必要があります
...-n00dl3

このスクリプトは、ファイル共有の目的のために作成されています。着信接続を拒否すると、目的が失われます。商用VPNアプリケーションの「killswitch」動作を提供します-それ以上でもそれ以下でもありません。
emk2203

@ emk2203いいえ、トンネル外の着信トラフィックを拒否します。
berbt

回答:


8

構成はより制限することができます

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

ファイアウォールの用語を理解しようとしています、VPN からtun0インバウンド接続をブロックする手段として仮想的に許可したくないでしょうか?のように、?ufw deny in on tun0
マット

@MattBorjaを使用するufw default deny incomingufw deny in on tun0、着信接続を取得できません。一部のインターフェイスは着信トラフィックを許可する必要がありますtun0。この場合、VPNにする必要があります。
ベルバート

あなたは正しい、私はどういうわけかそれを見なかった。無視:)
マット

実際、私が「疑問視」していたのはそのufw allow in on tun0ラインだったようです。
マット

7

次の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アドレスを要求して接続を確立できるように、DNS要求で53を許可します。トレードオフは、DNSリークの可能性です。dnsleaktest.comを使用して、VPN設定がDNS要求をトンネリングするようにします。用心深い/妄想の場合は、53での許可をスキップし、代わりにファイアウォールをオフに切り替えて接続し、接続したら再びオンにします。私のVPNの理由により、ファイアウォールを完全に忘れてしまう可能性が高いため(たとえば、openvpnの設定が間違っているとDNSがリークする可能性が高いため)、そうしないことを選択します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.