UFW для OpenVPN


17

Я хочу налаштувати ufw (нескладний брандмауер) для OpenVPN.

Підключення дозволено лише через 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

2
Ви завжди повинні заперечувати вхідні з'єднання за замовчуванням ...
n00dl3

Цей сценарій чітко створений для спільного використання файлів. Відмова від вхідних з'єднань перемагає мету. Це дає вам поведінку "killswitch" комерційних VPN-додатків - не більше, не менше.
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

Ви все ще намагаєтесь зрозуміти лінгво брандмауера, але хіба ви гіпотетично не хочете ввімкнути в tun0якості засобу блокування вхідних з'єднань від VPN? Як у ufw deny in on tun0,?
Метт

@MattBorja якщо ви ufw default deny incomingі ufw deny in on tun0ви не будете отримувати всі вхідні з'єднання. Деякий інтерфейс повинен дозволяти вхідному трафіку, в цьому випадку ми хочемо, щоб він був VPN tun0.
берб

Ти маєш рацію, я якось цього не бачив. Без уваги :)
Метт

Власне, це виглядає так, як я "допитувався" ufw allow in on tun0.
Метт

7

Настійна рекомендація полягає в тому, що НЕ використовуйте ці дві команди :

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-тунель та DNS-з'єднання на ethernet / wifi. Попередження нижче щодо проблеми DNS.

Попередження: Цей приклад дозволяє використовувати 53 для запитів DNS, щоб openvpn (наприклад, vpn.somevpnprovider.com) міг запитувати IP-адресу та встановити з'єднання. Компроміс - це потенціал витоку DNS. Використовуйте dnsleaktest.com, щоб забезпечити тунель налаштувань VPN для ваших запитів DNS. Для обережних / параноїдальних даних пропустіть вимкнення на 53, а замість цього вимкніть брандмауер для підключення, а потім знову ввімкнувши його. З моїх причин VPN я не хочу цього робити, оскільки швидше за все я забуду брандмауер повністю (наприклад, DNS все одно просочиться, якщо openvpn не налаштований).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.