UFW untuk OpenVPN

17

Saya ingin mengkonfigurasi ufw (firewall tidak rumit) untuk OpenVPN.

Koneksi hanya diizinkan melalui OpenVPN. Segala sesuatu yang lain harus diblokir. Jadi jika OpenVPN terputus -> tidak ada internet! Saya menemukan skrip ini secara online dan saya ingin tahu apakah itu cukup baik. Atau apakah saya harus menambahkan lebih banyak aturan?

#!/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

Sumber: http://pastebin.com/AUHh6KnV

Alex M.
sumber
Terlihat baik-baik saja! Coba saja dan lihat apakah itu berhasil, ada masalah yang Anda selalu dapat menonaktifkan ufwmenggunakan sudo ufw disabledan menghapus semua aturan firewall menggunakan sudo ufw --force reset. Apa yang mungkin salah? ;-)
ntninja
2
Saya mungkin menghindari mengizinkan semua lalu lintas masuk, karena itu saja akan memungkinkan openvpn berfungsi.
JVE999
2
Anda harus selalu menolak koneksi masuk secara default ...
n00dl3
Script ini jelas dibuat untuk keperluan filesharing. Menolak koneksi yang masuk mengalahkan tujuan. Ini memberi Anda perilaku "killswitch" aplikasi VPN komersial - tidak lebih, tidak kurang.
emk2203
@ emk2203 tidak, ini menyangkal lalu lintas masuk di luar terowongan.
berbt

Jawaban:

8

Konfigurasi bisa lebih ketat

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
berbt
sumber
Masih mencoba memahami istilah firewall, tetapi apakah Anda secara hipotetis tidak ingin mengizinkan tun0sebagai cara untuk memblokir koneksi masuk dari VPN? Seperti di ufw deny in on tun0,?
Mat
@MattBorja jika Anda ufw default deny incomingdan ufw deny in on tun0, Anda tidak akan mendapatkan koneksi masuk. Beberapa antarmuka harus memungkinkan lalu lintas masuk, dalam hal ini kami menginginkannya menjadi VPN tun0.
berbt
Anda benar, saya entah bagaimana tidak melihatnya. Abaikan :)
Matt
Sebenarnya, sepertinya apa yang saya "tanyakan" adalah ufw allow in on tun0kalimatnya.
Matt
7

Rekomendasi kuat adalah bahwa Anda TIDAK menggunakan dua perintah ini :

ufw allow incoming
ufw default allow in on tun0

Mengizinkan dalam kekalahan tujuan memiliki firewall. Tidak benar bahwa Anda perlu "mengizinkan masuk" untuk menerima paket kembali. Anda hanya ingin menerima koneksi yang Anda minta, dibandingkan membiarkan seluruh dunia terhubung dengan Anda. Membiarkan keluar akan melakukan ini. Uji konfigurasi yang diusulkan di bawah ini dan lihat.

Berikut adalah contoh untuk serangkaian perintah UFW untuk digunakan dengan firewall:

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

Hasil Contoh:

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

CATATAN: Antarmuka Anda mungkin berbeda, misalnya ubuntu 16.12 menggunakan eno1 dan wlp3s0b1. Gunakan perintah "ifconfig" untuk melihat antarmuka Anda yang sebenarnya. -1197 UDP cukup standar, tetapi Anda mungkin perlu mengubahnya untuk VPN Anda (misalnya 443 TCP). -Saya biasanya menghapus ipv6 (sudo ufw delete 4, repeat x3)

Kegunaannya: -Ini memungkinkan koneksi keluar melalui terowongan VPN, sementara memblokir semuanya kecuali terowongan VPN dan koneksi DNS pada ethernet / wifi. Peringatan di bawah tentang masalah DNS.

Peringatan: Contoh ini memungkinkan pada 53 untuk permintaan DNS sehingga openvpn (mis. Vpn.somevpnprovider.com) dapat meminta alamat IP dan membuat koneksi. Imbalannya adalah potensi kebocoran DNS. Gunakan dnsleaktest.com untuk memastikan pengaturan VPN Anda mengirimkan permintaan DNS Anda. Untuk yang berhati-hati / paranoid, lewati mengizinkan pada 53 dan alih-alih matikan firewall Anda untuk terhubung, lalu hidupkan kembali setelah terhubung. Untuk alasan VPN saya, saya memilih untuk tidak melakukannya karena kemungkinan besar saya akan melupakan firewall sepenuhnya (misalnya DNS akan bocor jika openvpn salah konfigurasi).

MARACA_MAGICIAN
sumber